Linux內建了ntp服務 -- /etc/init.d/ntpd,這個服務不僅可以設定讓本機和某台/某些機器做時間同步,他本身還可以扮演一個time server的角色,讓其他機器和他同步時間。設定檔就是/etc/ntp.conf。
為了測試,在公司設定讓sales -- 192.168.0.3和router -- 192.168.0.1做時間同步。router做time server,router本身不和其他機器時間同步,就是取本地時間。所以,我先把router機器的時間調準了:
date "2008-05-15 cst"
date "09:59"
clock -w
hwclock --systohc
後兩個命令是把設定的時間寫到硬體時間中去(也就是CMOS裡面的時間)。然後將router配置成一個time server,修改/etc/ntp.conf,其他的配置不怎麼需要改,只需要關注restrict的配置:
1. 注釋掉原來的restrict default ignore這一行,這一行本身是不響應任何的ntp更新要求,其實也就是禁用了原生ntp server的功能,所以需要注釋掉。
2. 加入:restrict 192.168.0.0 mask 255.255.255.0 -- 讓192.168.0.0/24網段上的機器能和本機做時間同步
3. 這樣就可以了,記得下面的:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
這兩行需要,這是讓原生ntpd和本地硬體時間同步。
當然,我們也可以添加server xxx.xxx.xxx.xxx,讓他和其他的time server時間同步。
4. /etc/init.d/ntpd restart
5. chkconfig ntpd on
6. 修改iptables配置,將tcp和udp 123連接埠開放,這是ntp需要的連接埠,在/etc/services中可以查到這個連接埠。
這樣router就成為一台time server了,現在我們配置sales這台機器,也是修改/etc/ntp.conf
1. restrict default ignore這行保留為非注釋狀態,因為sales不需要做time server
2. 注釋掉server 127.127.1.0, fudge 127.127.1.0 stratum 10這兩行,因為這台機器不需要和本地硬體時鐘同步了。
3. 加入server 192.168.0.1這行,和router機器同步。
4. /etc/init.d/ntpd restart
5. chkconfig ntpd on
這樣就OK了。看看時間,已經和router同步了。往後預設配置好像是5分鐘和time server同步一次。ntpupdate命令是顯式的和某台機器做時間同步,以前將ntpupdate放到crontab中定期同步也是可以的,但是既然ntpd本身就可以做這個時間,所以現在看來使用ntpupdate就有點太土了。
附上參考資料: linux下ntpd安裝配置筆記
概述: ntp能與互連網上的時鐘保持同步,而且本身也是一台NTP伺服器,可以為區域網路電腦提供校對時間服務
安裝: redhat內建
設定檔: /etc/ntp.conf
附:我的設定檔
#restrict default ignore
restrict 127.0.0.1
restrict 192.168.3.20
restrict 192.168.0.0 mask 255.255.255.0
restrict 192.168.2.0 mask 255.255.255.0
restrict 192.168.4.0 mask 255.255.255.0
server 210.72.145.44 prefer #National Time Service Center
server 195.13.1.153
server 194.137.39.67
server 127.127.1.0 # local clock
restrict 210.72.145.44
restrict 195.13.1.153
restrict 194.137.39.67
driftfile /var/lib/ntp/drift
附:相關配置參數說明
# restrict許可權控制文法為:
# restrict IP mask netmask_IP parameter
# 其中 IP 可以是軟體地址,也可以是 default ,default 就類似 0.0.0.0 咯!
# 至於 paramter 則有:
# ignore :關閉所有的 NTP 線上服務
# nomodify:表示 Client 端不能更改 Server 端的時間參數,不過,
# Client 端仍然可以透過 Server 端來進行網路校時。
# notrust :該 Client 除非通過認證,否則該 Client 來源將被視為不信任網域
# noquery :不提供 Client 端的時間查詢
# 如果 paramter 完全沒有設定,那就表示該 IP (或網域) 『沒有任何限制!』
# 設定上層主機主要以 server這個參數來設定,文法為:
# server [IP|FQDN] [prefer]
# Server 後面接的就是我們上層 Time Server ??《?綣 Server 參數
# 後面加上 perfer 的話,那表示我們的 NTP 主機主要以該部主機來作為
# 時間校正的對應。另外,為瞭解決更新時間封包的傳送延遲動作,