Ntpd neden bu kadar çok bağlantı noktasını / adresi dinliyor?


18

Bunu bir süredir fark ettim ve benim için hiçbir zaman mantıklı değil:

Neden bu ntpdkadar çok adresi dinlemeniz gerekiyor?

Örneğin, bir Debian makinesi:

$ netstat
Proto Yerel Adres Yabancı Adres Program adı
udp 0.0.0.0:123 0.0.0.0:* ntpd
udp 127.0.0.1:123 0.0.0.0:* ntpd
udp [LAN]: 123 0.0.0.0:* ntpd
udp [IPv4]: 123 0.0.0.0:* ntpd
udp6 ::: 123 ::: * ntpd
udp6 :: 1: 123 ::: * ntpd
udp6 [bağlantı-yerel] ::: * ntpd
udp6 [IPv6] ::: * ntpd

Bu (düzeltilmiş) netstatliste, nptdIPv4 ve IPv6 için yayın, yerel, LAN ve genel adresleri dinlemeyi gösterir .

Neden bu ntpdkadar karışık?

Yanıtlar:


15

Benim itibaren bu sayfanın okunması , ntp INADDR_ANY kullanmaz görünür 0.0.0.0güvenlik nedeniyle sadece kısmen adresini ve kısmen doğrulama nedenlerle.

Birinci bağlantı noktası 123, 1024'ün altındadır ve bu nedenle ayrıcalıklı bir bağlantı noktası olarak kabul edilir ve bu bağlantı noktasına yalnızca kök bağlanabilir. Ntp genellikle başlatıldıktan sonra ayrıcalıkları bırakmak için ayarlanır. Posta listelerinden anladıklarımdan ve ayrıcalıklar bırakıldıktan sonra, 123 doğru kaynak bağlantı noktasından yanıt vermek için bir yuva açamaz, bu nedenle ntp ayrıcalıkları bırakmadan önce atanan her adres için yuva açar.

Ne ntp için kimlik doğrulama mekanizmalarının bazılarını okudum itibaren temelde kaynak ve hedef bağlantı noktası 123 ve başka bir şey olmasını gerektirir.

Mesele tamamen açık değil. Joker adres hakkındaki bölüme bakın, 0.0.0.0ntpd tarafından bir nedenden dolayı açılır, ancak bazı özel nadir durumlarda, geliştiricilerin tamamen emin olmadığı durumlar dışında, yorumlardan hiçbir zaman gerçekten kullanılmamalıdır, ancak Bir şeyleri kırmaları ihtimaline karşı soketi çıkarmak istemiyorum.

Normalde ntpd'nin, joker karakter adreslerinde paketleri kabul etmemesi gerektiğini unutmayın, çünkü gönderenin istediği adresten farklı bir adrese iade paketleri göndermek de dahil olmak üzere bir dizi sorun vardır. DannyMayer - 27 Nisan 2009

Sorunuzun ana cevabının yukarıdaki yorumda olduğunu düşünüyorum.


16

Hiç de karışık değil. Sadece IPv4 ve ipv6 protokollerinde arayüz IP adreslerine ve localhost'a bağlanıyor. Bunlardan bazılarını dinlememesi gerektiğini düşünüyorsanız, listenyapılandırmayı kılavuzda açıklandığı gibi değiştirin (bu, kullandığınız farklı bir sürüm için olabilir):

 listen on address
         Specify a local IP address or a hostname the ntpd(8) daemon
         should listen on. If it appears multiple times, ntpd(8) will
         listen on each given address. If the exact string '*' is given as
         an address, ntpd(8) will listen on all local addresses. Other-
         wise, address can be followed by an asterisk ('*') and a UDP port
         number to listen on instead of the default 123. ntpd(8) does not
         listen on any address by default. For example:

               listen on *
               listen on 127.0.0.1
               listen on ::1

Diğer bazı versiyonlarında için seçenekleri değiştirmek gerekecektir ntpddinlemek ne protokolleri / arayüzleri üzerinde değişikliğe cini kendisi (seçenekler gibi -4, -6, -I)


1
Ano Novo Feliz!
user9517

1
Bunun soruyu gerçekten cevapladığını sanmıyorum. Bence soru temelde neden INADDR_ANYneredeyse diğer tüm protokoller gibi kullanılmadığını soruyor . Cevabımda bağlantı verdiğim makale, kısmen bir güvenlik özelliği olduğunu ve kısmen protokolün 123 numaralı bağlantı noktasında yanıt beklemek için tasarlandığı yolu açıklığa kavuşturuyor gibi görünüyor.
Zoredache

Bu bilmek istediğim çok faydalı bir bilgi ve bunun için teşekkür ederim, ama @ Zoredache'nin cevabı aslında sorduğum soruya cevap verdi, bu yüzden cevap olarak işaretledim. Ancak, her yerde upvotes. ;)
Abraham Vegh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.