一 概述:
本文主要目的是簡單介紹如何在局域網上設置一台Linux時間服務器與互聯網上的時間服務器同步並且如何使局域網上其它Linux及Windows客戶向該Linux時間服務器同步。
二 服務器設置
首先說明我們如何設置LAN上的時間服務器同互聯網上的第一或者第二級時間服務器同步來保證精確的時間。
1. 如何讓LAN的時間服務器(第三級)與互聯網上的時間服務器(第一或者第二級)同步
a. XNTP包,包含在大多數Linux CD裡面。 主頁在http://www.eecis.udel.edu/~ntp/ 你只需要在/etc/ntp.conf中設置server和driftfile兩項參數即可,server項你可以從上面的主頁中找公共的時間服務器域名。例如
server rackety.udel.edu
server umd1.umd.edu
server lilben.tn.cornell.edu
driftfile /etc/ntp/drift
然後啟動XNTPD後台程序
#/etc/rc.d/init.d/xntpd start
b. getdate,隨Slackware而來的小程序,推薦使用,大多數時候,我們對時間的精確性要求不是非常的苛刻,所以這個程序完全夠用而且很方便。下載:ftp://metalab.unc.edu/pub/Linux/system/network/misc/getdate_rfc868-1.2.tar.gz然後設置下面的scripts 取名為/usr/local/sbin/get-date.sh
#!/bin/sh
timehosts=otc2.psu.edu wwvb.erg.sri.com ntp.nasa.gov
if /usr/local/bin/getdate -adjust 10 200 $timehosts /dev/null; then
/sbin/clock --systohc
fi
現在可以設置cronjob每小時進行同步
0 0-23 * * * /usr/local/sbin/get-date.sh
2. 如何使得LAN上其它linux/windows客戶與該台服務器同步
a. 如果該台時間服務器也是局域網上的Samba服務器,則對Windows來說,不需要安裝任何時間同步軟件,因為windows客戶可以用 net time \timeserver /set /yes來與之同步。可以放該命令在startup 中自次啟動windows時自動同步。net time 命令利用Netbios over TCP/IP協議來同步時間,但僅對Windows客戶有效,Linux客戶無法使用。
b. 如果服務器運行NTP後台服務程序,例如前面講的XNTPD,則對Windows可以安裝下面的兩個免費軟件與服務器同步:http://home.att.net/~Tom.Horsley/ntptime.html (ntptime) 單一的後台程序,自動尋找LAN上的NTP服務器,可在控制面板中設置同步條件, http://nettime.sourceforge.net/ (Nettime)。支持NTP(udp/123) , time(udp/37), time(tcp/37)。Linux: 則可以用ntpdate(隨XNTPD而來)運行作為cronjob 與 該局域網上的時間服務器同步。
c. 如果該台服務器使用getdate與互聯網上時間服務器同步,則你可以設置/etc/inetd.conf,打開time udp和time tcp服務,讓linux/windows客戶與之同步。對windows,你可以使用象上面介紹的Nettime軟件。對Linux客戶,你可以用rdate -s 運行作為cronjob 與之同步:
time stream tcp nowait root internal
time dgram udp wait.200 root internal
Linux下的rdate -s 命令使用time (37/tcp) , Nettime 你可以指定37/tcp或者37/udp
三 FAQ
1. 怎樣確定net time用的是Netbios over TCP/IP?
在Samba服務器上運行tcpdump
# /usr/sbin/tcpdump host 192.168.1.3
(192.168.1.3是windows客戶端的IP地址)
2. 怎樣確定windows NTP客戶ntptime正在後台與Linux NTP時間服務器同步?
在NTP服務器上運行
# tcpdump udp port 123
查看輸出
默認是每五分鐘ntptime向NTP服務器查詢一次,你可以從主頁上下載控制面板中的控制條件設置程序。