ntpd odmawia otwarcia portu 123 na adresie wildcardowym IPv6 ::

Bartosz Lis bartoszl w ics.p.lodz.pl
Pon, 12 Paź 2009, 18:28:48 CEST


Witam,

Testuję jądro 2.6.31.2-0.1. Mam problemy z serwerem ntp:


# /usr/sbin/ntpd -dd -c /etc/ntp/ntp.conf
ntpd 4.2.4p7 w 1.1607-o Mon Oct 12 11:43:33 UTC 2009 (1)
addto_syslog: Attemping to register mDNS
*** WARNING *** The program 'ntpd' uses the Apple Bonjour compatibility layer 
of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-
compat?s=libdns_sd&e=ntpd>
addto_syslog: Unable to register mDNS
addto_syslog: signal_no_reset: signal 13 had flags 14000000
addto_syslog: set_process_priority: Leave priority alone: priority_done is <2>
addto_syslog: precision = 0.978 usec
create_sockets(123)
addto_syslog: ntp_io: estimated max descriptors: 1024, initial socket 
boundary: 16
addto_syslog: Listening on interface #0 wildcard, 0.0.0.0#123 Disabled
addto_syslog: bind() fd 17, family AF_INET6, port 123, scope 0, addr ::, 
mcast=0 flags=0x81 fails: Address already in use
addto_syslog: unable to bind to wildcard socket address :: - another process 
may be running - EXITING

Rzecz jasna, przed zawracaniem komukolwiek głowy sprawdziłem, że nic innego 
nie chodzi na udp123. Wygląda to tak, jakby przy otwarciu przez proces portu 
123 na wildcardowym adresie IP 0.0.0.0 jądro nieproszone otwierało mu także 
ten port na wildcardowym adresie IPv6 :: . Kiedy w następnym kroku proces 
otwiera sobie "własnoręcznie" port 123 na adresie IPv6 :: otrzymuje informację 
że ktoś mu ten adres wcześniej zajął.

Problem ten nie występuje w dowolnej kombinacji:

dystrybucja: th

architektury: x86_64, i686

jądro: kernel-2.6.31.1-0.1 (zbudowane samodzielnie z CVSa), 
kernel-2.6.31.2-0.1 (pobrany z test)

ntp: ntp-4.2.4p6-2 (z dystrybucji), ntp-4.2.4p7-2 (zbudowane samodzielnie z 
CVSa),

glibc: glibc-2.10.1-14

Problem nie występuje dla jądra 2.6.28.10-3. Testowane były te same 
architektury i wersje ntp oraz cała reszta konfiguracji komputerów testowych. 
Marudzenie o apple bonjour to stara sprawa, która w niczym nie przeszkadza.

Co ciekawe, netstat wywołany osobno z opcją --inet i osobno z opcją inet6 przy 
jądrze 2.6.28.10-3 wypisuje osobno otwarte porty na TCP/UDP oraz osobno 
TCPv6/UDPv6. W przypadku jądra 2.6.31.2-0.1, której bym opcji nie użył zawsze 
dostaję listę wszystkich otwartych portów v4 i v6.

Podejrzewam więc, że problem pojawił się w którymś z jąder 2.6.29-31

Na listach dyskusyjnych poświęconych ntp sugerowano:
echo 1 > /proc/sys/net/ipv6/bindv6only
- nie pomaga.

Będę już zadowolony, jeśli ktoś mi podpowie jak wyłączyć IPv6 (którego nie 
używam) nie rekompilując jądra. Jest spora szansa, że to załatwi problem.

Pozdrawiam,

-- 
Bartosz Lis @ Institute of Comp. Science, Technical University of Lodz, Poland
   bartoszl @ ics.p.lodz.pl


Więcej informacji o liście dyskusyjnej pld-users-pl