-
1 # 使用者5307206385142
-
2 # 使用者1228436877168
Linux自帶了ntp服務 -- /etc/init.d/ntpd,這個服務不僅可以設定讓本機和某臺/某些機器做時間同步,他本身還可以扮演一個time server的角色,讓其他機器和他同步時間。
配置檔案就是/etc/ntp.conf。
為了測試,設定讓node2 -- 192.168.1.102和node1 -- 192.168.1.101做時間同步。
第一步,
node1做time server,node1本身不和其他機器時間同步,就是取本地時間。
所以,先把node1機器的時間調準了:
[root@node1 ~]date -s 08/03/2011
[root@node1 ~]date -s 11:12:00
[root@node1 ~]clock -w
[root@node1 ~]hwclock --systohc
後兩個命令是把設定的時間寫到硬體時間中去(也就是CMOS裡面的時間)。
第二步,
然後將node1配置成一個time server,修改/etc/ntp.conf,
[root@node1 ~]vi /etc/ntp.conf
其他的配置不怎麼需要改,只需要關注restrict的配置:
1. 註釋掉原來的restrict default ignore這一行,這一行本身是不響應任何的ntp更新請求,其實也就是禁用了本機的ntp server的功能,所以需要註釋掉。
2. 加入:restrict 192.168.1.0 mask 255.255.255.0 -- 讓192.168.1.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中可以查到這個埠。
第三步,
這樣node1就成為一臺time server了,現在我們配置node2這臺機器,也是修改/etc/ntp.conf ,
[root@node2 ~]vi /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.1.101這行,和node1機器同步。
這樣就OK了。看看時間,已經和node1同步了。往後預設配置好像是5分鐘和time server同步一次。ntpdate命令是顯式的和某臺機器做時間同步,以前將ntpdate放到crontab中定期同步也是可以的,但是既然ntpd本身就可以做這個時間
第四步,將ntpdate放到crontab中定期步也是可以的
[root@node2 ~]#vi ntpupdate.sh
/usr/sbin/ntpdate 192.168.1.101
[root@node2 ~]#chmod 755 ntpupdate.sh
[root@node2 ~]#crontab -e
*/1 * * * * /root/ntpupdate.sh
[root@node2 ~]#/etc/init.d/crond restart
回覆列表
基本上在任何時候都不應該使用 ntpdate。大多數應用場景中,使用ntpd的-g引數令其在啟動時允許大步長同步就足夠了(除此之外還可以在配置中使用 iburst 來讓加速同步)。使用 ntpd 唯一需要注意的是在配置時應配置 ACL,以免成為攻擊跳板。有些人會爭辯,在啟動 ntpd 之前執行一次ntpdate 的好處是 ntpdate 退出時,系統的時間已經調到了比較接近正確的時間。不過, ntp 作者已經在文件中明確表示未來 ntpdate 會變成一個shell指令碼(透過 ntpd -g -q 來實現),事實上,現在也可以在啟動時用 ntpq -c rv 來檢查 ntpd 的狀態了,對於精度要求比較高的應用,系統時間和時鐘快慢同等重要,如果不高,也沒有太大必要去另外執行 ntpdate 了。定時執行 ntpdate 的系統很容易受到這樣的攻擊:如果有人故意調整了某個 ntp 伺服器的時間,所有使用 ntpdate 的系統都將跟隨其設定。舉例來說,假如已知某家公司的系統每天凌晨3點會執行某項非常耗時的任務,同時每4個小時會做一次ntpdate,那麼攻陷這臺伺服器並令其一直返回 凌晨 2:59,就可以很容易地實現四兩撥千斤的槓桿式攻擊了,而且,由於系統時間也會影響日誌,因此觀察日誌的人員也比較容易受其誤導。與此相反,ntpd 通常會配置為使用多個參考伺服器,在執行時會參考多個伺服器的時間,並排除明顯異常的伺服器。而監控多個 ntp 伺服器相對來說要容易得多。用 cron 或類似的任務計劃去做 ntpdate 還有個問題是如果系統時間比較準的話,每到某個整點(或者特定的時間)的同步操作就變成了一次對 NTP 伺服器的 DDoS。機器多的話,這種放大效應對於叢集本身和提供 NTP 服務的機器都是不利的。