Linux

為什麼 ntpd 監聽這麼多埠/地址?

  • August 28, 2018

我已經註意到了一段時間,但對我來說從來沒有任何意義:

為什麼ntpd需要監聽這麼多地址?

例如,Debian 機器:

$ 網路統計
原始本地地址 外國地址 程序名稱
UDP 0.0.0.0:123 0.0.0.0:* ntpd
UDP 127.0.0.1:123 0.0.0.0:* ntpd
udp [區域網路]:123 0.0.0.0:* ntpd
udp [IPv4]:123 0.0.0.0:* ntpd
udp6 :::123 :::* ntpd
udp6 ::1:123 :::* ntpd
udp6 [連結本地] :::* ntpd
udp6 [IPv6] :::* ntpd

此(已編輯)netstat列表顯示nptd偵聽 IPv4 和 IPv6 的廣播、本地、LAN 和全域地址。

為何ntpd如此雜亂無章?

從我對這個頁面的閱讀來看,ntp 似乎並沒有完全使用 INADDR_ANY0.0.0.0地址,部分原因是出於安全原因,部分原因是出於身份驗證原因。

第一個埠 123,低於 1024,因此被認為是特權埠,只有 root 可以綁定到該埠。Ntp 通常設置為在啟動後放棄特權。根據我從郵件列表中了解到的情況,一旦刪除權限,文章就無法打開套接字以從正確的源埠 123 回复,因此 ntp 在刪除權限之前為每個分配的地址打開套接字。

從我讀到的一些 ntp 身份驗證機制基本上要求源埠和目標埠為 123,僅此而已。

事情並不完全清楚。請參閱有關萬用字元地址 0.0.0.0的部分,它是由 ntpd 出於某種原因打開的,但從評論中看,不應該實際使用,除非在一些特殊的極少數情況下可能,開發人員並不完全確定,但是,他們沒有不想卸下插座,以防萬一他們弄壞了東西。

請注意,通常 ntpd 不應接受萬用字元地址上的數據包,因為如果這樣做會出現許多問題,包括在與發件人請求的地址不同的地址上發送返回數據包。丹尼邁爾 - 2009 年 4 月 27 日

我認為您問題的主要答案在上面的評論中。

引用自:https://serverfault.com/questions/462615