萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> Linux系統下NTP協議的超級配置攻略

Linux系統下NTP協議的超級配置攻略

   在Linux系統中,為了避免主機時間因為在長時間運行下所導致的時間偏差,進行時間同步(synchronize)的工作是非常必要的。Linux系統下,一般使用ntp服務來同步不同機器的時間。NTP 是網絡時間協議(Network Time Protocol)的簡稱,干嘛用的呢?就是通過網絡協議使計算機之間的時間同步化。

  安裝NTP包

  檢查是否安裝了ntp相關包。如果沒有安裝ntp相關包,使用rpm或yum安裝,安裝也非常簡單方便。

  復制代碼

  代碼如下:

  [root@localhost ~]# rpm -qa | grep

  ntpntpdate-4.2.6p5-1.el6.x86_64

  fontpackages-filesystem-1.41-1.1.el6.noarch

  ntp-4.2.6p5-1.el6.x86_64

  NTP的配置

  A: 配置/etc/ntp.conf

  NTP Server的主要配置文件為/etc/ntp.conf ,沒有修改過的ntp.conf文件內容如下所示,配置選項都有相關注釋信息(Linux 版本為Red Hat Enterprise Linux Server release 6.6 )

  復制代碼

  代碼如下:

  [root@localhost ~]# more /etc/ntp.conf

  # For more information about this file, see the man pages

  # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

  driftfile /var/lib/ntp/drift

  # Permit time synchronization with our time source, but do not

  # permit the source to query or modify the service on this system.

  restrict default kod nomodify notrap nopeer noquery

  restrict -6 default kod nomodify notrap nopeer noquery

  # Permit all access over the loopback interface. This could

  # be tightened as well, but to do so would effect some of

  # the administrative functions.

  restrict 127.0.0.1

  restrict -6 ::1

  # Hosts on local network are less restricted.

  #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

  # Use public servers from the pool.ntp.org project.

  # Please consider joining the pool (http://www.pool.ntp.org/join.html).

  server 0.rhel.pool.ntp.org iburst

  server 1.rhel.pool.ntp.org iburst

  server 2.rhel.pool.ntp.org iburst

  server 3.rhel.pool.ntp.org iburst

  #broadcast 192.168.1.255 autokey # broadcast server

  #broadcastclient # broadcast client

  #broadcast 224.0.1.1 autokey # multicast server

  #multicastclient 224.0.1.1 # multicast client

  #manycastserver 239.255.254.254 # manycast server

  #manycastclient 239.255.254.254 autokey # manycast client

  # Enable public key cryptography.

  #crypto

  includefile /etc/ntp/crypto/pw

  # Key file containing the keys and key identifiers used when operating

  # with symmetric key cryptography.

  keys /etc/ntp/keys

  # Specify the key identifiers which are trusted.

  #trustedkey 4 8 42

  # Specify the key identifier to use with the ntpdc utility.

  #requestkey 8

  # Specify the key identifier to use with the ntpq utility.

  #controlkey 8

  # Enable writing of statistics records.

  #statistics clockstats cryptostats loopstats peerstats

  [root@localhost ~]# more /etc/ntp.conf

  # For more information about this file, see the man pages

  # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

  driftfile /var/lib/ntp/drift

  # Permit time synchronization with our time source, but do not

  # permit the source to query or modify the service on this system.

  restrict default kod nomodify notrap nopeer noquery

  restrict -6 default kod nomodify notrap nopeer noquery

  # Permit all access over the loopback interface. This could

  # be tightened as well, but to do so would effect some of

  # the administrative functions.

  restrict 127.0.0.1

  restrict -6 ::1

  # Hosts on local network are less restricted.

  #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

  # Use public servers from the pool.ntp.org project.

  # Please consider joining the pool (http://www.pool.ntp.org/join.html).

  server 0.rhel.pool.ntp.org iburst

  server 1.rhel.pool.ntp.org iburst

  server 2.rhel.pool.ntp.org iburst

  server 3.rhel.pool.ntp.org iburst

  #broadcast 192.168.1.255 autokey # broadcast server

  #broadcastclient # broadcast client

  #broadcast 224.0.1.1 autokey # multicast server

  #multicastclient 224.0.1.1 # multicast client

  #manycastserver 239.255.254.254 # manycast server

  #manycastclient 239.255.254.254 autokey # manycast client

  # Enable public key cryptography.

  #crypto

  includefile /etc/ntp/crypto/pw

  # Key file containing the keys and key identifiers used when operating

  # with symmetric key cryptography.

  keys /etc/ntp/keys

  # Specify the key identifiers which are trusted.

  #trustedkey 4 8 42

  # Specify the key identifier to use with the ntpdc utility.

  #requestkey 8

  # Specify the key identifier to use with the ntpq utility.

  #controlkey 8

  # Enable writing of statistics records.

  #statistics clockstats cryptostats loopstats peerstats

  各個選項信息:

  #系統時間與BIOS事件的偏差記錄

  driftfile /etc/ntp/drift

  restrict 控制相關權限。

  語法為: restrict IP地址 mask 子網掩碼 參數

  其中IP地址也可以是default ,default 就是指所有的IP

  參數有以下幾個:

  ignore :關閉所有的 NTP 聯機服務

  nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時。

  notrust :客戶端除非通過認證,否則該客戶端來源將被視為不信任子網

  noquery :不提供客戶端的時間查詢:用戶端不能使用ntpq,ntpc等命令來查詢ntp服務器

  notrap :不提供trap遠端登陸:拒絕為匹配的主機提供模式 6 控制消息陷阱服務。陷阱服務是 ntpdq 控制消息協議的子系統,用於遠程事件日志記錄程序。

  nopeer :用於阻止主機嘗試與服務器對等,並允許欺詐性服務器控制時鐘

  kod : 訪問違規時發送 KoD 包。

  restrict -6 表示IPV6地址的權限設置。

  1:設定NTP主機來源(其中prefer表示優先主機),192.168.7.49是本地的NTP服務器,所以優先指定從該主機同步時間。

  復制代碼

  代碼如下:

  server 192.168.7.49 prefer

  server 0.rhel.pool.ntp.org iburst

  server 1.rhel.pool.ntp.org iburst

  server 2.rhel.pool.ntp.org iburst

  server 3.rhel.pool.ntp.org iburst

  2:限制你允許的這些服務器的訪問類型,在這個例子中的服務器是不容許修改運行時配置或查詢您的Linux NTP服務器

  復制代碼

  代碼如下:

  restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap

  在上例中,掩碼地址擴展為255,因此從192.168.0.1-192.168.0.254的服務器都可以使用我們的NTP服務器來同步時間

  復制代碼

  代碼如下:

  #此時表示限制向從192.168.0.1-192.168.0.254這些IP段的服務器提供NTP服務。

  restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap noquery

  #設置默認策略為允許任何主機進行時間同步

  restrict default ignore

  3:確保localhost(這個常用的IP地址用來指Linux服務器本身)有足夠權限.使用沒有任何限制關鍵詞的語法:

  復制代碼

  代碼如下:

  restrict 127.0.0.1

  restrict -6 ::1

  B:配置/etc/ntp/stpe-tickers文件

  修改/etc/ntp/stpe-tickers文件,內容如下(當ntpd服務啟動時,會自動與該文件中記錄的上層NTP服務進行時間校對)

  復制代碼

  代碼如下:

  [root@localhost ntp]# more /etc/ntp/step-tickers

  # List of servers used for initial synchronization.

  [root@localhost ntp]# vi /etc/ntp/step-tickers

  # List of servers used for initial synchronization.

  server 192.168.7.49 prefer

  server 0.rhel.pool.ntp.org

  server 1.rhel.pool.ntp.org

  server 2.rhel.pool.ntp.org

  server 3.rhel.pool.ntp.org

  C:配置/etc/sysconfig/ntpd文件

  ntp服務,默認只會同步系統時間。如果想要讓ntp同時同步硬件時間,可以設置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 這樣,就可以讓硬件時間與系統時間一起同步。

  復制代碼

  代碼如下:

  #允許BIOS與系統時間同步,也可以通過hwclock -w 命令

  SYNC_HWCLOCK=yes

  IPTABLES 配置

  由於NTP服務需要使用到UDP端口號123,所以當系統的防火牆(Iptables)啟動的情況下,必須開放UDP端口號123。

  復制代碼

  代碼如下:

  [root@localhost ~]# /etc/init.d/iptables status

  Table: filter

  Chain INPUT (policy ACCEPT)

  num target prot opt source destination

  1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

  2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0

  3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

  4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22

  5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

  Chain FORWARD (policy ACCEPT)

  num target prot opt source destination

  1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

  Chain OUTPUT (policy ACCEPT)

  num target prot opt source destination

  [root@localhost ~]# /sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT

  [root@localhost ~]# /etc/init.d/iptables status

  Table: filter

  Chain INPUT (policy ACCEPT)

  num target prot opt source destination

  1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:123

  2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

  3 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0

  4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

  5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22

  6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

  Chain FORWARD (policy ACCEPT)

  num target prot opt source destination

  1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

  Chain OUTPUT (policy ACCEPT)

  num target prot opt source destination

  [root@localhost ~]#

  如果防火牆沒有開放UDP端口號123,有可能出現下面情況。

  復制代碼

  代碼如下:

  [root@localhost ~]# /usr/sbin/ntpq -c rv | grep stratum

  stratum=16, precision=-24, rootdelay=0.000, rootdisp=3.525, refid=INIT,

  [root@localhost~]#

  A stratum level of 16 indicates that NTP is not synchronizing correctly.If a stratum level of 16 is detected, wait 15 minutes and issue the command again. It may take this long for the NTP server to stabilize.If NTP continues to detect a stratum level of 16, verify that the NTP port (UDP Port 123) is open on all firewalls between the cluster and the remote machine you are attempting to synchronize to.

  啟動NTP服務

  復制代碼

  代碼如下:

  [root@localhost ~]# service ntpd status

  ntpd is stopped

  [root@localhost ~]# service ntpd start

  Starting ntpd: [ OK ]

  [root@localhost ~]#

  service ntpd status #查看ntpd服務狀態

  service ntpd start #啟動ntpd服務

  service ntpd stop #停止ntpd服務

  service ntpd restart #重啟ntpd服務

  檢查ntp服務是否開機啟動,將其設置為開機啟動。

  [root@localhost ~]# chkconfig --list ntpd

  ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

  [root@localhost ~]# runlevel

  N 3

  [root@localhost ~]# chkconfig ntpd on #在運行級別2、3、4、5上設置為自動運行

  [root@localhost ~]# chkconfig --list ntpd

  ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

  [root@localhost ~]#

  如果要設置在運行級別上自動運行,可以使用下面命令

  復制代碼

  代碼如下:

  chkconfig --level 345 ntpd on

  可以用下面命令檢測NTP服務是否運行

  復制代碼

  代碼如下:

  [root@localhost ~]# pgrep ntpd

  2639

  2641

  [root@localhost ~]# netstat -tlunp | grep ntp #如果看到123端口,說明ntp服務成功啟動。

  udp 0 0 192.168.7.224:123 0.0.0.0:* 2639/ntpd

  udp 0 0 127.0.0.1:123 0.0.0.0:* 2639/ntpd

  udp 0 0 0.0.0.0:123 0.0.0.0:* 2639/ntpd

  udp 0 0 fe80::250:56ff:feb3:b5:123 :::* 2639/ntpd

  udp 0 0 ::1:123 :::* 2639/ntpd

  udp 0 0 :::123 :::* 2639/ntpd

  [root@localhost ~]#

  查看ntp服務器有無和上層ntp連通

  復制代碼

  代碼如下:

  [root@localhost ~]# ntpstat

  synchronised to NTP server (192.168.7.49) at stratum 6

  time correct to within 440 ms

  polling server every 128 s

  [root@localhost ~]#

  查看ntp服務器與上層ntp的狀態

  remote - 本機和上層ntp的ip或主機名,“+”表示優先,“*”表示次優先

  refid - 參考上一層ntp主機地址

  st - stratum階層

  when - 多少秒前曾經同步過時間

  poll - 下次更新在多少秒後

  reach - 已經向上層ntp服務器要求更新的次數

  delay - 網絡延遲

  offset - 時間補償

  jitter - 系統時間與bios時間差

  要查看 ntpd 進程的狀態,請運行以下命令,按 Ctrl+C 停止查看進程。

  remote - 本機和上層ntp的ip或主機名,“+”表示優先,“*”表示次優先

  refid - 參考上一層ntp主機地址

  st - stratum階層

  when - 多少秒前曾經同步過時間

  poll - 下次更新在多少秒後

  reach - 已經向上層ntp服務器要求更新的次數

  delay - 網絡延遲

  offset - 時間補償

  jitter - 系統時間與bios時間差

  要查看 ntpd 進程的狀態,請運行以下命令,按 Ctrl+C 停止查看進程。

copyright © 萬盛學電腦網 all rights reserved