IPv4の代わりにIPv6アドレスを使用するNTP

IPv4の代わりにIPv6アドレスを使用するNTP

Linuxバージョン(3.12)を実行しているノートブックがあります。 ntpdをインストールし、time.google.comと同期するように設定しました。私が持っている問題は、IPV4アドレスのみを提供するネットワークに接続すると、ntp用のDNSがipv6アドレスを使用することです。

    root@Node00b01973d6cc:~# ntpq -pn                                                                                           
     remote           refid      st t when poll reach   delay   offset  jitter                                              
==============================================================================                                              
 127.127.1.0     .LOCL.          10 l    7   64    1    0.000    0.000   0.002                                              
 ff0e::101       .MCST.          16 M    -   64    0    0.000    0.000   0.002                                              
 2001:4860:4806: .INIT.          16 u    -   64    0    0.000    0.000   0.000  

ntpdが-4オプションでIPv4 DNSのみを使用するように強制すると、すべてがうまく機能します。

root@Node00b01973d6cc:~# ntpq -pn 172.16.17.111                                                                             
     remote           refid      st t when poll reach   delay   offset  jitter                                              
==============================================================================                                              
 127.127.1.0     .LOCL.          10 l   60   64    1    0.000    0.000   0.002                                              
 216.239.35.12   .GOOG.           1 u   57   64    1   29.278  341.883   0.002     

しかし、IPv6アドレスだけを提供するネットワークに入ると失敗するので、そうしたくありません。私のインターフェイスに実際にそのファミリのIPアドレスがある場合は、IPv4(またはIPv6)のみを使用するようにNTPを設定できますか?

ntpdのバージョンは4.2.8p12です。これはntp.confファイルです:

tinker panic 0                                                              
                                                            
driftfile /usr/local/etc/ntp.drift                                          
disable auth                                                                   
                                                                         
# Update the realtime clock and override its default                         
# stratum of 0.                                                                   
server time.google.com prefer #Real Time Clock                             
server 127.127.1.0 #Real Time Clock                           
server 127.127.1.0 #Real Time Clock                                         
fudge 127.127.1.0 stratum 10                                      
broadcast ff0e::101 iburst ttl 7              

なぜこれが起こるのか、根本的な原因を見つけました。私は最近私のシステムでIPv6転送を無効にしました。 IPv6 転送を再びオンにすると、NTP は予想どおり IPv4 アドレスの使用を開始しました。

IPv6転送が有効になると、なぜこれが起こりますか?

デフォルトでは、システム起動時にIPv6転送は無効になっています。これをオンにするには、起動スクリプトの1つに次の行があります。

sysctl -w net.ipv6.conf.all.forwarding=1

ベストアンサー1

この質問は2年前のものですが、このトピックは確かにそうではありません。

~によるとRFC-3484:IPv6のベースアドレスの選択 オペレーティングシステムは自動的に最良のIPアドレスであるIPv6またはIPv4を選択します。

変更されておらず、/etc/gai.confDNSが正しく機能している場合、Linux(および他の多くのオペレーティングシステム)はIPv6アドレスを好みます。それ以外の場合は、たとえば time.google.com に接続する IPv4 を選択します。

で確認できますgetent ahosts time.google.com。各ソフトウェアは、このリストのすべてのIPアドレスを上記から順番に試す必要があります。

Linuxはどこからタイムサーバーを取得しますか? DHCPの場合、オペレーティングシステムはFQDNではなくIPv4 IPアドレスを取得するため、選択肢はありません。 NTPクライアントは、実際に構成されたNTPサーバー「名前」の代わりにIPアドレスの逆方向DNSホストを表示できます。

/edit:openSUSE 15.2とCentOS 7でntpd 4.2.8p15とntpd 4.2.6p5を試しました。 ntpdはRFC 6742(3484)に準拠していません。しかし、クロニドはそうです。

/edit2: IPv6 を介して NTP サーバーに接続できない場合、chronyd(3.4) は v4 アドレスの使用に時間がかかるようです。

おすすめ記事