知識庫
對于企業用戶,在Web服務器安全搭建時,如果您網內所有計算機都通過互聯網同步時間,在速度和精度上都有一定的折扣,并且對互聯網出口帶寬也有一定的影響,對于這類用戶,我們建議通過自己搭建ntp服務為內部用戶提供時間同步服務。
它是用來同步網絡中各個計算機的時間的協議。在計算機的世界里,對時間的統一性和準確性要求就非常地高,是按照A這臺計算機的時間,還是按照B這臺計算機的時間?NTP就是用來解決這個問題的,NTP(Network Time Protocol,網絡時間協議)是用來使網絡中的各個計算機時間同步的一種協議。它的用途是把計算機的時鐘同步到世界協調時UTC,其精度在局域網內可達0.1ms,在互聯網上絕大多數的地方其精度可以達到1-50ms。
它可以使計算機對其服務器或時鐘源(如石英鐘,GPS等等)進行時間同步,它可以提供高精準度的時間校正,而且可以使用加密確認的方式來防止惡毒的協議攻擊。0層的服務器采用的是原子鐘、GPS鐘等物理設備,stratum 1與stratum 0 是直接相連的,往后的stratum與上一層stratum通過網絡相連,同一層的server也可以交互。
在Linux系統下搭建ntp服務是非常簡單的,即便你對Linux不熟悉,只需要簡單的幾個操作就夠用了,下面是幾個必要的步驟:
1、安裝你熟悉的操作系統(這里假設你安裝的是CentOS 6)。
2、查看是否已經安裝ntp程序,在終端上運行如下命令:
#rpm -qa | grep ntpntp-4.2.4p8-2.el6.centos.x86_64ntpdate-4.2.4p8-2.el6.centos.x86_64
如果看到這兩個軟件包,說明已經安裝好了ntp程序。
否則通過如下命令安裝
yum install ntp
3、修改/etc/ntp.conf文件,增加如下服務器地址:
server ntp.neu.edu.cn maxpoll 6server time.hko.hk maxpoll 6server 133.243.238.163 maxpoll 6server 193.190.230.65 maxpoll 6server 220.231.55.106 maxpoll 6server 210.72.145.44 maxpoll 6server ntp.openxid.com maxpoll 6server ntp.zyhyt.orgmaxpoll 6server time.tju.edu.cn maxpoll 6
啟動ntpd程序,并讓系統下次啟動時默認啟動ntpd程序:
chkconfig ntpd onservice ntpd start
4、修改防火墻規則
iptables -I INPUT -m udp -p udp --dport 123 -j ACCEPTip6tables -I INPUT -m udp -p udp --dport 123 -j ACCEPTservice iptables saveservice ip6tables save
經過一段時間的同步,你就可以通過如下命令來測試你機器是否可以正常服務了
ntpdate -q SERVER_IP
1、no server suitable for synchronization found
原因:ntpd啟動過程需要5分鐘左右!(或者ntpd根本沒有啟動)
在ntp server上重新啟動ntp服務后,ntp server自身或者與其server的同步的需要一個時間段,這個過程可能是5分鐘,在這個時間之內在客戶端運行ntpdate命令時會產生no server suitable for synchronization found的錯誤。
那么如何知道何時ntp server完成了和自身同步的過程呢?
在ntp server上使用命令:
watch ntpq
出現畫面:
**注意**LOCAL的這個就是與自身同步的ntp server,而reach這個值,在啟動ntp server服務后,就從0開始不斷增加,當增加到17的時候,從0到17是5次的變更,每一次是poll的值的秒數,是64秒*5=320秒的時間。
如果之后從ntp客戶端同步ntp server還失敗的話,用ntpdate –d來查詢詳細錯誤信息,再做判斷。
2、Server dropped: strata too high”的錯誤,并且顯示“stratum 16”
修改fudge server的stratum為0~15
3、Server dropped: no data
從客戶端執行ntpdate –d server_ip(debug模式)時有錯誤信息: Server dropped: no data.
ntp服務器出現這個問題的原因可能有2種:
(1) 檢查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定義中使用了notrust的話,會導致以上錯誤(版本差異),解決方法是把notrust去掉。
# ntpq -c version
(2) 檢查ntp server的防火墻,可能是server的防火墻屏蔽了upd 123端口。可以用下面命令來關掉iptables服務后再嘗試從ntp客戶端的同步,如果成功,證明是防火墻的問題,需要更改iptables的設置。
#service iptables stop