linux服务管理之ntp时间服务器配置
一、ntp相关知识什么是时间同步服务器?Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(L
一、ntp相关知识
什么是时间同步服务器?
Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。
在linux中,时间同步在真实环境中使用较多,不同机器时间不一致,向同一台数据库服务器写数据会出问题。这仅仅只是一个应用。
先了解linux系统中与时间相关的的一些linux命令:
什么是时间同步服务器?
Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。
在linux中,时间同步在真实环境中使用较多,不同机器时间不一致,向同一台数据库服务器写数据会出问题。这仅仅只是一个应用。
先了解linux系统中与时间相关的的一些linux命令:
- #查看时间
- [root@serv01 ~]# date
- Wed Aug 7 17:47:44 CST 2013
- [root@serv01 ~]# date -s ""
- #查看时区
- [root@larrywen /]# cat /etc/sysconfig/clock
- # The time zone of the system is defined bythe contents of /etc/localtime.
- # This file is only for evaluation bysystem-config-date, do not rely on its
- # contents elsewhere.
- ZONE="Asia/Chongqing"
- #可以重新设置时区
- [root@larrywen /]# system-config-date
- #查看不同地区的时区信息
- [root@larrywen /]# ls /usr/share/zoneinfo/
- Africa Australia Cuba Etc GMT0 Iceland Japan MST Poland right Universal Zulu
- America Brazil EET Europe GMT-0 Indian Kwajalein MST7MDT Portugal ROC US
- Antarctica Canada Egypt Factory GMT+0 Iran Libya Navajo posix ROK UTC
- Arctic CET Eire GB Greenwich iso3166.tab MET NZ posixrules Singapore WET
- Asia Chile EST GB-Eire Hongkong Israel Mexico NZ-CHAT PRC Turkey W-SU
- Atlantic CST6CDT EST5EDT GMT HST Jamaica Mideast Pacific PST8PDT UCT zone.tab
- #设置时区不重要,重要的是不同机器之间的时间同步起来
- [root@serv01 ~]# cat /etc/sysconfig/clock
- ZONE="Asia/Chongqing"
- [root@serv01 ~]# date
- Wed Aug 7 09:52:31 CST 2013
- #修改时区
- [root@serv01 ~]# date
- Wed Aug 7 09:52:31 CST 2013
- #修改成日本时区
- [root@serv01 ~]# vim /etc/sysconfig/clock
- [root@serv01 ~]# cat /etc/sysconfig/clock
- ZONE="Asia/Tokyo"
- #拷贝内容
- [root@serv01 ~]# cp/usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- cp: overwrite `/etc/localtime'? Y
- #查看时间,发现立即改变,不需要重启
- [root@serv01 ~]# date
- Wed Aug 7 10:55:44 JST 2013
- #使用工具修改时间
- #安装工具
- [root@serv01 ~]# yum install/usr/bin/system-config-date -y
- [root@serv01 ~]# yum installsystem-config-date -y
- #安装system-config-date的时候会把ntp服务器安装上
- #支持X Window的形式登录
- [root@larrywen 0807]# ssh 192.168.1.11 -X
- root@192.168.1.11's password:
- Last login: Wed Aug 7 18:19:30 2013 from 192.168.1.1
- /usr/bin/xauth: creating new authority file /root/.Xauthority
- #修改时间,改成重庆时区
- [root@serv01 ~]# system-config-date
- Gtk-Message: Failed to load module"pk-gtk-module": libpk-gtk-module.so: cannot open shared object file:No such file or directory
- [root@serv01 ~]# cat /etc/localtime
- [root@serv01 ~]# date
- Wed Aug 7 10:03:22 CST 2013
2)、硬件时钟和软件时钟
linux将时钟分为系统时钟(systemclock)和硬件(real time clock,简称rtc)时钟两种。
系统时间是指当前linux kernel中的时钟,也就是软件时钟。(脚本学堂 www.jbxue.com 整理)
而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在bios的“standard bios feture”项中进行设置。
- #同步硬件时钟和软件时钟
- [root@serv01 ~]# clock --help
- hwclock - query and set the hardware clock(RTC)
- Usage: hwclock [function] [options...]
- Functions:
- -s | --hctosys set the system time from the hardware clock
- -w | --systohc set the hardware clock to the currentsystem time
- #ntp:Network TimeProtocal
二、ntp同步时间
- #第一步,安装ntp
- [root@serv01 ~]# yum install ntp* -y
- #查询安装的RPM包
- [root@serv01 ~]# rpm -qa|grep ntp
- ntp-4.2.4p8-2.el6.x86_64
- ntpdate-4.2.4p8-2.el6.x86_64
- fontpackages-filesystem-1.41-1.1.el6.noarch
- [root@serv01 ~]# chkconfig|grep ntp
- ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- [root@serv01 ~]# ls /etc/ntp.conf
- /etc/ntp.conf
- [root@serv01 ~]# rpm -ql ntp
- <span style="color:#ff0000">#第二步,修改配置文件</span>
- [root@serv01 ~]# vim /etc/ntp.conf
- [root@serv01 ~]# man 5 ntp.conf
- [root@serv01 ~]# vim /etc/ntp.conf
- [root@serv01 ~]# cat /etc/ntp.conf
- #配置如下
- restrict 192.168.1.0 mask 255.255.255.0nomodify notrap
- #注释上一级时间同步服务器
- #server 0.rhel.pool.ntp.org
- #server 1.rhel.pool.ntp.org
- #server 2.rhel.pool.ntp.org
- #取消注释
- server 127.127.1.0 # local clock
- fudge 127.127.1.0stratum 10
- #第三步,启动服务
- [root@serv01 ~]# /etc/init.d/ntpd start
- Starting ntpd: [ OK ]
- #重启后生效
- [root@serv01 ~]# chkconfig ntpd on
- [root@serv01 ~]# chkconfig|grep ntpd
- ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- [root@serv01 ~]#
- #serv02的配置
- [root@serv02 ~]# vim /etc/ntp.conf
- [root@serv02 ~]# cat /etc/ntp.conf
- server 192.168.1.11
- [root@serv02 ~]# vim /etc/ntp/step-tickers
- [root@serv02 ~]# cat /etc/ntp/step-tickers
- # List of servers used for initialsynchronization.
- 192.168.1.11
- [root@serv02 ~]# date
- Wed Aug 7 18:30:18 CST 2013
- [root@serv02 ~]# /etc/init.d/ntpdate start
- ntpdate: Synchronizing with time server: [ OK ]
- [root@serv02 ~]# date
- Wed Aug 7 10:29:39 CST 2013
三、ssh双向等效性验证时间同步服务器
- #serv01
- [root@serv01 ~]# ssh-keygen
- [root@serv01 ~]# ssh-copy-id -i~/.ssh/id_rsa.pub 192.168.1.12
- [root@serv01 ~]# ssh-copy-id -i~/.ssh/id_rsa.pub 192.168.1.11
- #serv02
- [root@serv02 ~]# ssh-keygen
- [root@serv02 ~]# ssh-copy-id -i~/.ssh/id_rsa.pub 192.168.1.11
- #可以查看同步的时间
- [root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date;
- Wed Aug 7 10:34:50 CST 2013
- Wed Aug 7 10:34:50 CST 2013
- #修改时间
- [root@serv01 ~]# date -s"10:38:00"
- Wed Aug 7 10:38:00 CST 2013
- #查看serv02的时间
- [root@serv02 ~]# date
- Wed Aug 7 10:35:42 CST 2013
- #关闭服务
- [root@serv02 ~]# /etc/init.d/ntpdate stop
- #开启服务
- [root@serv02 ~]# /etc/init.d/ntpdate start
- ntpdate: Synchronizing with timeserver: [ OK ]
- #可以看到已经同步了
- [root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date
- Wed Aug 7 10:38:57 CST 2013
- Wed Aug 7 10:38:57 CST 2013
- [root@serv02 ~]# ntpq -p 192.168.1.11
- remote refid st t when poll reach delay offset jitter
- ==============================================================================
- *LOCAL(0) .LOCL. 10 l 33 64 377 0.000 0.000 0.000
- #使用命令同步,并将同步命令做成死循环
- [root@serv02 ~]# ntpdate 192.168.1.11
- 7Aug 23:02:44 ntpdate[1342]: adjust time server 192.168.1.11 offset 0.000041 sec
- #可以看到已经同步了
- [root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date
- Wed Aug 7 23:02:53 CST 2013
- Wed Aug 7 23:02:53 CST 2013
- [root@serv01 ~]# date -s "10:50"
- Wed Aug 7 10:50:00 CST 2013
- [root@serv02 ~]# ntpdate 192.168.1.11
- 7Aug 10:51:10 ntpdate[1372]: step time server 192.168.1.11 offset -43989.248450sec
- [root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date
- Wed Aug 7 10:51:15 CST 2013
- Wed Aug 7 10:51:15 CST 2013
- #写成死循环
- [root@serv02 ~]# while :; do ntpdate192.168.1.11; sleep 3; done
- 7Aug 10:53:27 ntpdate[1380]: adjust time server 192.168.1.11 offset -0.000066sec
- 7Aug 10:53:31 ntpdate[1382]: adjust time server 192.168.1.11 offset 0.000133 sec
- [root@serv01 ~]# date -s "10:57"
- Wed Aug 7 10:57:00 CST 2013
- [root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date
- Wed Aug 7 10:57:12 CST 2013
- Wed Aug 7 10:57:13 CST 2013
- #可以放到后台执行
- [root@serv02 ~]# while :; do ntpdate192.168.1.11; sleep 3; done > /dev/null 2>&1 &
- #写到配置文件,下次启动自动执行
- [root@serv02 ~]# vim /etc/rc.local
- [root@serv02 ~]# tail -n1 /etc/rc.local
- while :; do ntpdate 192.168.1.11; sleep 3;done >/dev/null 2>&1 &
- #另外一种方式(不安全:在同一网段的任何人都可以使用)
- serv01
- [root@serv01 ~]# chkconfig xinetd on
- [root@serv01 ~]# vim /etc/xinetd.d/
- chargen-dgram daytime-dgram discard-dgram echo-dgram tcpmux-server time-stream
- chargen-stream daytime-stream discard-stream echo-stream time-dgram
- #将disbale由yes改为no
- [root@serv01 ~]# vim/etc/xinetd.d/time-stream
- #将disbale由yes改为no
- [root@serv01 ~]# vim/etc/xinetd.d/time-dgram
- #也可以这样打开
- [root@serv01 ~]# chkconfig time-stream on
- [root@serv01 ~]# chkconfig time-dgram on
- #启动xinetd服务
- [root@serv01 ~]# /etc/init.d/xinetd start
- Starting xinetd: [ OK ]
- #安装openssh-clients
- [root@serv01 ~]# yum installopenssh-clients -y
- #制作公钥
- [root@serv01 ~]# ssh-keygen
- #拷贝到本机
- [root@serv01 ~]# ssh-copy-id -i.ssh/id_rsa.pub 192.168.1.11
- #拷贝到serv02
- [root@serv01 ~]# ssh-copy-id -i.ssh/id_rsa.pub 192.168.1.12
- #设置时间
- [root@serv01 ~]# date -s"11:36:00"
- Wed Aug 7 11:36:00 CST 2013
- #安装rdate
- [root@serv02 /]# yum install rdate -y
- #同步时间
- [root@serv02 /]# rdate -s 192.168.1.11
- [root@serv01 ~]# ssh 192.168.1.11 date; ssh192.168.1.12 date;
- Wed Aug 7 11:36:29 CST 2013
- Wed Aug 7 11:36:28 CST 2013
- #可以写死循环
- [root@serv02 ~]# while :; do rdate -s192.168.1.11; sleep 3; done >/dev/null 2>&1 &^C
- [root@serv02 ~]# vi /etc/rc.local
- [root@serv02 ~]# tail -n1 /etc/rc.local
- while :; do rdate -s 192.168.1.11; sleep 3;done >/dev/null 2>&1 &
以上就是linux下ntp服务的安装与配置方法,希望对大家有所帮助。