以RHCE實驗室為準,一個簡單的NTP時間伺服器标準配置如下:
伺服器端:
首先修正下系統時間,并将系統時間寫進硬體時間裡
date MMDDhhmmYYYY.ss;hwclock -w
vim /etc/ntp.conf
restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 0
客戶機端:
server 192.168.1.2
vim /etc/ntp/step-ticker
192.168.1.2
用戶端重新開機ntpd服務即可看到效果 service ntpd restart
※在授課過程發現,虛拟的linux的時間比真實機越走越慢,具體原因分析如下:
Linux 2.6核心裡把系統計時器的頻率加高到1000 Hz ,VMware沒辦法真的每隔1ms就報一次訊号給guestOS,是以guestOS裡的Linux 2.6無法确實接到計時器的訊号。本來這也不應該造成問題,不過2.6核心處理這個"tick loss"的程式有問題,以緻于guestOS裡的Linux 2.6系統時間走一秒會慢一秒;外面過了兩秒裡面隻過了一秒。具體解決方案也有:可以修改核心及安裝vmware-tools軟體包,均麻煩。
下面是我家裡的vmware5.5虛拟機(如果不能上外網的話,可以選擇内部ntp時間伺服器)
①直接用腳本解決不能對時的問題,腳本如下: /root/ntptime.sh
#!/bin/bash
while :
do
/usr/sbin/ntpdate ntp.api.bz >/dev/null 2>&1
sleep 30
done
放入背景執行 nohup sh ntptime.sh &
②當然還是crontab出馬了,在這裡注意下腳本與crontab的差別,腳本可以控制到秒,而crontab隻能到分 vim /etc/crontab
*/1 * * * * root /usr/sbin/ntpdate ntp.api.bz >/dev/null 2>&1
效果很明顯,每隔一分鐘,系統自動對時,呵呵。
[root@ltos mail]# tcpdump -v host 192.168.0.154 and 221.130.196.230
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:16:02.359384 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto: UDP (17), length: 76) yuhongchun027.com.ntp > 221.130.196.230.ntp: NTPv4, length 48
Client, Leap indicator: clock unsynchronized (192), Stratum 0, poll 4s, precision -6
Root Delay: 1.000000, Root dispersion: 1.000000, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 0.000000000
Receive Timestamp: 0.000000000
Transmit Timestamp: 3464918162.358386999 (2009/10/19 13:16:02)
Originator - Receive Timestamp: 0.000000000
Originator - Transmit Timestamp: 3464918162.358386999 (2009/10/19 13:16:02)
13:16:02.511502 IP (tos 0x0, ttl 49, id 5224, offset 0, flags [none], proto: UDP (17), length: 76) 221.130.196.230.ntp > yuhongchun027.com.ntp: NTPv4, length 48
Server, Leap indicator: (0), Stratum 2, poll 4s, precision -18
Root Delay: 0.158142, Root dispersion: 0.027862, Reference-ID: clock.fmt.he.net
Reference Timestamp: 3464917189.288964740 (2009/10/19 12:59:49)
Originator Timestamp: 3464918162.358386999 (2009/10/19 13:16:02)
Receive Timestamp: 3464918182.209876791 (2009/10/19 13:16:22)
Transmit Timestamp: 3464918182.209906405 (2009/10/19 13:16:22)
Originator - Receive Timestamp: +19.851489782
Originator - Transmit Timestamp: +19.851519405
13:16:02.512579 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto: UDP (17), length: 76) yuhongchun027.com.ntp > 221.130.196.230.ntp: NTPv4, length 48
Transmit Timestamp: 3464918162.512529999 (2009/10/19 13:16:02)
Originator - Transmit Timestamp: 3464918162.512529999 (2009/10/19 13:16:02)
13:16:02.688528 IP (tos 0x0, ttl 49, id 5242, offset 0, flags [none], proto: UDP (17), length: 76) 221.130.196.230.ntp > yuhongchun027.com.ntp: NTPv4, length 48
※另外值得注意的是,盡管時間是一件很麻煩的事(還有UTC與GMT、系統時間與硬體時間的差別),但其實在生産環境中,這件事很簡單--伺服器投入運作之前必須用crontab對時;如果時間不同步的話是件很麻煩的事,我維護的dovecot伺服器經常因為時間問題出問題,還有FreeBSD下的jail虛拟機。是以時間的同步是linux/unix一件非常重要的事情,希望大家注意。
本文轉自 撫琴煮酒 51CTO部落格,原文連結:http://blog.51cto.com/yuhongchun/502119,如需轉載請自行聯系原作者