Linux
為什麼 ntpd 監聽這麼多埠/地址?
我已經註意到了一段時間,但對我來說從來沒有任何意義:
為什麼
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_ANY
0.0.0.0
地址,部分原因是出於安全原因,部分原因是出於身份驗證原因。第一個埠 123,低於 1024,因此被認為是特權埠,只有 root 可以綁定到該埠。Ntp 通常設置為在啟動後放棄特權。根據我從郵件列表中了解到的情況,一旦刪除權限,文章就無法打開套接字以從正確的源埠 123 回复,因此 ntp 在刪除權限之前為每個分配的地址打開套接字。
從我讀到的一些 ntp 身份驗證機制基本上要求源埠和目標埠為 123,僅此而已。
事情並不完全清楚。請參閱有關萬用字元地址
0.0.0.0
的部分,它是由 ntpd 出於某種原因打開的,但從評論中看,不應該實際使用,除非在一些特殊的極少數情況下可能,開發人員並不完全確定,但是,他們沒有不想卸下插座,以防萬一他們弄壞了東西。請注意,通常 ntpd 不應接受萬用字元地址上的數據包,因為如果這樣做會出現許多問題,包括在與發件人請求的地址不同的地址上發送返回數據包。丹尼邁爾 - 2009 年 4 月 27 日
我認為您問題的主要答案在上面的評論中。