wiki:TipAndDoc/network/ntp

Version 10 (modified by mitty, 15 years ago) (diff)

--

ntpdate

ntpd

  • /etc/ntp.conf

refer local clock

server に 127.127.1.0 を指定すると、NTPサーバが時間を合わせる基準として 自分自身のローカルクロック(システム時刻)を使用します。 127.127.1.0は、時間を取得するデバイスを指定するためのNTP独自の表現で 127.127.1.0を指定するとシステム時刻から時間を取得するようになります。 IPアドレスと同じ形式のため紛らわしいですが、このままの数字を記入して下さい。

  • ntp.conf
    server 127.127.1.0
    
  • ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
     LOCAL(0)        .LOCL.           5 l    -   64    0    0.000    0.000   0.001
    
  • fudge文で、stratumを詐称(?)出来る模様。(CentOS:/usr/share/doc/ntp-*にドキュメントがある模様(未読))
    • ntp.conf
      server 127.127.1.0
      fudge   127.127.1.0 stratum 10
      
           remote           refid      st t when poll reach   delay   offset  jitter
       LOCAL(0)        .LOCL.          10 l   15   64    1    0.000    0.000   0.001
      

hardware clockのsyncについて

CentOS 5

起動時

  • /etc/sysconfig/ntpd
    # Set to 'yes' to sync hw clock after successful ntpdate
    SYNC_HWCLOCK=yes
    
  • /etc/ntp/step-tickers
    • このファイルにホストが羅列されている場合、ntpd起動前にntpdateでupdateする
  • /etc/init.d/ntpd
    • boot時に実行されるスクリプトでは、以下のような流れになっている
      echo -n $"$prog: Synchronizing with time server: "
      /usr/sbin/ntpdate $dropstr -s -b $NTPDATE_OPTIONS $tickers &>/dev/null
      
      [ "$SYNC_HWCLOCK" = "yes" ] && sync_hwclock
      
    • sync_hwclock() は以下のようになっている
      action $"Syncing hardware clock to system time" /sbin/hwclock $CLOCKFLAGS
      
    • $CLOCKFLAGSは「--systohc」の他、環境に合わせてUTCなどを指定する引数がセットされている。
ログ
  • 以下のようなログが画面に表示される
    ntpd: Synchronizing with time server:                      [  OK  ]
    Syncing hardware clock to system time                      [  OK  ]
    Starting ntpd:                                             [  OK  ]
    
  • attachment:CentOS5-boot.png

終了時

  • shutdown/rebootともに、以下のスクリプトで同期
    • /etc/init.d/halt
      [ -x /sbin/hwclock ] && action $"Syncing hardware clock to system time" /sbin/hwclock $CLOCKFLAGS
      
    • $CLOCKFLAGSは「/etc/init.d/ntpd」と同じく、「--systohc」の他、環境に合わせてUTCなどを指定する引数がセットされている。

Ubuntu

起動時

  • 以下の二つのスクリプトがまず呼ばれる
    • /etc/rcS.d/S08hwclockfirst.sh
    • /etc/rcS.d/S11hwclock.sh
    • 中身は以下を除いてほぼ同一
      FIRST=yes	# debian/rules sets this to 'yes' when creating hwclockfirst.sh
      
    • boot時は、以下のコマンドにより「H/W clockからSystem clockへ」時刻がコピーされる
      if /sbin/hwclock --hctosys $GMT $HWCLOCKPARS $BADYEAR $NOADJ; then
      
  • その後、「/etc/rcS.d/S40networking」ででeth0などが起動されるが、この際以下のスクリプトが実行される。
    • /etc/network/if-up.d/ntpdate
      invoke-rc.d --quiet ntp stop || true
      /usr/sbin/ntpdate-debian -s $OPTS 2>/dev/null
      invoke-rc.d --quiet ntp start || true
      
    • このため、rcSののちにランレベル毎のスクリプトである「/etc/rc3.d/S23ntp」とは別にntpdがstart stopされる。このスクリプトはntpdパッケージとは別になっている。
      $ dpkg -S /etc/network/if-up.d/ntpdate
      ntpdate: /etc/network/if-up.d/ntpdate
      
    • また、「/etc/rc3.d/S23ntp」ではntpdが起動される以上のことは行われない
ログ
  • 以下のようなログが画面に表示される
     * Setting the system clock
    
    ...
    
     * Configuring network interfaces...
    
     * Stopping NTP server ntpd
     * Starting NTP server ntpd
    
    ...
    
     * Starting NTP server ntpd
    

終了時

  • shutdown/reboot時は、/etc/rc0.d/K25hwclock.sh(あるいは/rc6.d/)によって、H/W clockがSystem clockによって上書きされる。
    if /sbin/hwclock --systohc $GMT $HWCLOCKPARS $BADYEAR; then
    

misc

  • restrict default ignore と設定すると、ntpdが別のntpサーバへ同期するクライアントとしての動作も当然阻害される。従って、配布をせず時刻合わせのクライアントとしてのみ使う場合でも、defaultはignoreしつつ以下のように特定のサーバとは同期は出来るようにしておくこと。
    server 192.168.100.254
    restrict 192.168.100.254 mask 255.255.255.255 nomodify notrap noquery
    
    • これを忘れると、いつまで経っても同期先サーバのstratumが16と表示されて同期されない。

Attachments (5)

Download all attachments as: .zip