NTP - 網路校時
Network Time Protocol (NTP) 主要的用途是拿來做網路校時,這個名詞凍仁還是學生時就在計算機概論一課程聽過,卻不知其重要性,直到吃了大虧才知道很多情況下是不容許時間有誤差的,尤其是具有唯一性的時候,索性幫公司架設了台 NTP Server 並讓區網內所有的 Server 都與它校時,這樣一來可與上層校時,二來也可讓區網內部的 Server 時間具有一致性。
不能說從此就高枕無憂了,但狀況能少一個是一個,而且老舊的機器多少有些狀況,CMOS 換了也不見得有作用,既然可以靠軟體來解決就不必手軟了。
1.1.1.1. 查詢套件名稱。
1.1.1.2. 安裝套件
1.1.2.1. 查詢套件名稱 (此範例環境為 32 位元的 CentOS)。
1.1.2.2. 安裝套件。
1.1.2.3. 開機自動啟動 NTP 服務。
校時的 Server 不能亂選,一般只能使用 Level 3 以下的機器,除非真有那麼個本事管到 Lv 2 以上。
1.3.1. 允許 NTP 服務(udp)進入防火牆。
1.3.2. 察看有無傾聽(listen) 123 埠口(Port)。
1.4.1. 察看同步狀態 (不適用於 Debian 6)。
1.4.2. 察看與上層的同步狀態,各項說明請參考 鳥哥的 Linux 私房菜。
2.1. 校時成功。
2.2. 校時失敗時,請檢查防火牆是否有開啟。
2.3. 若不使用自家 NTP Server,在 Debian/Ubuntu 還有 ntpdate-debian 命令可用。
2.4. 寫入 BIOS。
一切都搞定以後我們還可以將 client 端的校時工作丟到排程裡,這下就大功告成了!
在 master, slave 或與金流有關的架構下請一定要定時做 NTP 校時,否則日後會很難追查 log。
不能說從此就高枕無憂了,但狀況能少一個是一個,而且老舊的機器多少有些狀況,CMOS 換了也不見得有作用,既然可以靠軟體來解決就不必手軟了。
1. Server
1.1. 安裝 NTP 服務
1.1.1. Debian / Ubuntu
1.1.1.1. 查詢套件名稱。
[ jonny@debian-server ~ ]
$ sudo aptitude search ntp [Enter]
[sudo] password for jonny: p chntpw - NT SAM password recovery utility p cyrus-nntpd-2.2 - Cyrus mail system (NNTP support) v cyrus21-nntpd - v cyrus22-nntpd - p libnet-ntp-perl - Perl module to query NTP servers p libnews-nntpclient-perl - Perl module to access NNTP servers p libxfontp-dev - X11 font rasterisation library with Xprint support (development p libxfontp1 - X11 font rasterisation library with Xprint support p libxfontp1-dbg - X11 font rasterisation library with Xprint support (debug packag p mountpy - script for quick mounting of removable devices p ntp - Network Time Protocol daemon and utility programs p ntp-doc - Network Time Protocol documentation i ntpdate - client for setting system time from NTP servers p sinntp - tiny non-interactive NNTP client
1.1.1.2. 安裝套件
[ jonny@debian-server ~ ]
$ sudo aptitude install ntp [Enter]
1.1.2. Redhat / CentOS
1.1.2.1. 查詢套件名稱 (此範例環境為 32 位元的 CentOS)。
[ jonny@centos-server ~ ]
$ yum search ntp [Enter]
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.tc.edu.tw * extras: ftp.tc.edu.tw * updates: ftp.tc.edu.tw ====================================== Matched: ntp ====================================== adjtimex.i386 : A utility for adjusting kernel time variables. chkfontpath.i386 : Simple interface for editing the font path for the X font server. cyrus-imapd.i386 : A high-performance mail server with IMAP, POP3, NNTP and SIEVE support inn.i386 : The InterNetNews (INN) system, an Usenet news server. ntp.i386 : Synchronizes system time using the Network Time Protocol (NTP). system-config-date.noarch : A graphical interface for modifying system date and time xfce4-fsguard-plugin.i386 : Filesystem-Guard plugin for the Xfce panel
1.1.2.2. 安裝套件。
[ jonny@centos-server ~ ]
$ yum install ntp [Enter]
1.1.2.3. 開機自動啟動 NTP 服務。
[ jonny@centos-server ~ ]
$ chkconfig ntpd on [Enter]
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
1.2. 環境設定
校時的 Server 不能亂選,一般只能使用 Level 3 以下的機器,除非真有那麼個本事管到 Lv 2 以上。
[ jonny@server ~ ]
$ sudo vi /etc/ntp.conf [Enter]
# = 上層校時伺服器設定 =
# - Debian 預設的校時伺服器。
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
# - RHEL 預設的校時伺服器。
#server 0.rhel.pool.ntp.org
#server 1.rhel.pool.ntp.org
#server 2.rhel.pool.ntp.org
# - CentOS 預設的校時伺服器。
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
# - Microsoft Windows 預設的校時伺服器。
server time.windows.com prefer # 主要校時的上層 NTP Server。
# - 台灣常用的校時伺服器。
server time.stdtime.gov.tw
server clock.stdtime.gov.tw
server watch.stdtime.gov.tw
# - 日本常用的校時伺服器。
#server 0.jp.pool.ntp.org
#server 1.jp.pool.ntp.org
#server 2.jp.pool.ntp.org
#server 3.jp.pool.ntp.org
# AWS 的校時伺服器。
#server 0.amazon.pool.ntp.org iburst
#server 1.amazon.pool.ntp.org iburst
#server 2.amazon.pool.ntp.org iburst
#server 3.amazon.pool.ntp.org iburst
# = 權限設定 =
# - 預設允許本機使用。
restrict 127.0.0.1
restrict -6 ::1
# - 允許 192.168.11.0/24 網段。
restrict 192.168.11.0 mask 255.255.255.0 nomodify
1.3. 防火牆及埠口
1.3.1. 允許 NTP 服務(udp)進入防火牆。
[ jonny@server ~ ]
$ sudo iptables -A INPUT -m udp -p udp --sport 123 -d 0/0 --dport 123 -j ACCEPT [Enter]
[ jonny@server ~ ]
$sudo iptables -A FORWARD -m udp -p udp --sport 123 -d 0/0 --dport 123 -j ACCEPT
1.3.2. 察看有無傾聽(listen) 123 埠口(Port)。
[ jonny@server ~ ]
$ sudo netstat -nlp | grep ntp [Enter]
udp 0 0 10.150.85.145:123 0.0.0.0:* 15748/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 15748/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 15748/ntpd udp6 0 0 fe80::1031:43ff:fe0:123 :::* 15748/ntpd udp6 0 0 ::1:123 :::* 15748/ntpd udp6 0 0 :::123 :::* 15748/ntpd
1.4. 檢測 NTP 服務
1.4.1. 察看同步狀態 (不適用於 Debian 6)。
[ jonny@server ~ ]
$ ntpstat [Enter]
synchronised to NTP server (65.55.21.17) at stratum 3
time correct to within 105 ms
polling server every 1024 s
1.4.2. 察看與上層的同步狀態,各項說明請參考 鳥哥的 Linux 私房菜。
[ jonny@server ~ ]
$ ntpq -p [Enter]
remote refid st t when poll reach delay offset jitter ============================================================================== *wwwco1test12.mi 64.236.96.53 2 u 30 64 377 170.141 -3.533 18.675 +59-124-196-84.H 59.124.196.86 2 u 23 64 377 36.023 20.247 15.053 +clock.stdtime.g 220.130.158.70 2 u 20 64 377 40.096 -4.748 17.998 +59-124-196-85.H 59.124.196.86 2 u 25 64 377 34.366 17.730 10.913
2. Client
2.1. 校時成功。
[ jonny@client ~ ]
$ sudo /usr/sbin/ntpdate $HOST [Enter]
6 Apr 12:24:44 ntpdate[12172]: adjust time server $HOST offset 0.057422 sec
2.2. 校時失敗時,請檢查防火牆是否有開啟。
[ jonny@client ~ ]
$ sudo /usr/sbin/ntpdate $HOST [Enter]
6 Apr 12:23:36 ntpdate[12157]: no server suitable for synchronization found
2.3. 若不使用自家 NTP Server,在 Debian/Ubuntu 還有 ntpdate-debian 命令可用。
[ jonny@debian ~ ]
$ sudo ntpdate-debian [Enter]
16 Apr 22:01:17 ntpdate[20857]: adjust time server 91.189.94.4 offset 0.284967 sec
2.4. 寫入 BIOS。
[ jonny@debian ~ ]
$ sudo hwclock -w [Enter]
3. Cron Job
一切都搞定以後我們還可以將 client 端的校時工作丟到排程裡,這下就大功告成了!
[ jonny@debian ~ ]
$ sudo crontab -e [Enter]
[...]
* 1 * * * /usr/sbin/ntpdate $HOST &> /var/log/ntpdate.log
在 master, slave 或與金流有關的架構下請一定要定時做 NTP 校時,否則日後會很難追查 log。
延伸閱讀:
★IPTables-Linux Firewall - 不自量力 の Weithenn
相關連結:
★How do I synchronise my single Debian Linux desktop clock to network?
★[備忘錄]Ubuntu 網路校時 @ 酒中狂士的狐狸窩 :: 痞客邦 PIXNET ::
資料來源:
★鳥哥的 Linux 私房菜 -- NTP 時間伺服器
★Debian / Ubuntu Linux Install NTPD To Synchronism Clock With Internet Standard Time Servers
手上還有一些 time server 列表
回覆刪除不過有些不是台灣的
tick.stdtime.gov.tw
tock.stdtime.gov.tw
stdtime.sinica.edu.tw
time-a.nist.gov
time-b.nist.gov
tick.usno.navy.mil
tock.usno.navy.mil
感謝 @日落 提供,記得校時的 Server 是不能亂選,一般都只能用 Level 3 以下的,有空在補上詳細的說明文章了。
刪除補上 Google+ 上的相關討論。
回覆刪除