Linux下配置NTP服务器
一、前言:
Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
中国大概能用的NTP服务器地址 http://www.pool.ntp.org 是NTP的官方网站,在这上面我们可以找到离我们城市最近的NTP Server. NTP建议我们为了保障时间的准确性,最少找两个个NTP Server
默认NTP服务端口:
UDP/123
本文配置的NTP工作模式:
使用client/server方式,该方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层用户。
二、配置方法:
设置时区
根据不同系统有所不同,centos里面只有上海,设置如下:
cp /usr/share/zoneinfo/Asia/Chongqing /etc/localtime #设置时区为重庆
1、ntp服务安装
NTP服务在CentOS6.x中式默认安装的软件包,可用rpm -qa |grep ntp检查是否安装,如果未安装可使用如下命令安装与删除NTP服务器软件包
# rpm -qa|grep ntp
ntpdate-4.2.6p5-1.el6.centos.x86_64
ntp-4.2.6p5-1.el6.centos.x86_64
确认是否安装NTP软件包,如果没有请使用
#yum -y install ntp
2、ntp服务配置
ntp服务安装完成后,需要修改ntp服务配置文件/etc/ntp.conf
2.1 ntp服务的启动、暂停
NTP属于system V服务,其启动、暂停相关命令如下:
#启动
service ntpd start
#停止
Service ntpd stop
#重新加载
service ntpd reload
#查看当前启动状态
service ntpd status
2.2 ntp服务自动加载
设置ntp服务下一次开机运行状态可通过命令配置
#在运行级别2、3、4、5上设置为自动运行
chkconfig ntpd on
#在运行级别2、3、4、5上设置为不自动运行
chkconfig ntpd off
#在运行级别3、5上设置为自动运行
chkconfig ntpd --level 35 on
#在运行级别3、5上设置为不自动运行
chkconfig ntpd --level 35 off
2.3 配置信息
运行一个NTP Server不需要占用很多的系统资源,所以也不用专门配置独立的服务器,就可以给许多client提供时间同步服务, 但是一些基本的安全设置还是很有必要的
那么这里一个很简单的思路就是第一我们只允许局域网内一部分的用户连接到我们的服务器. 第二个就是这些client不能修改我们服务器上的时间。
关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
在/etc/ntp.conf文件中我们可以用restrict关键字来配置上面的要求
# cat /etc/ntp.conf //查看ntp.conf配置文件如下:
1) 修改/etc/ntp.conf文件
系统默认去掉#号配置/etc/ntp.conf如下:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 202.120.2.101 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
自行设置权限
restrict default kod nomodify notrap nopeer noquery //首先我们对于默认的client拒绝所有的操作
restrict default ignore //设置默认策略为不允许任何主机进行时间同步
restrict 127.0.0.1 //然后允许本机地址一切的操作
restrict 192.168.108.0 mask 255.255.255.0 nomodify //最后我们允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap //允许任何主机跟进行时间同步
restrict 202.120.2.101 //允许202.120.2.101主机跟进行时间同步
ntp.conf设置例子
#设置访问权限
driftfile /etc/ntp/drift //记录上次的NTP server与上层NTP server联接所花费的时间
restrict 192.168.108.31 mask 255.255.255.0 nomodify
restrict 192.168.108.32 mask 255.255.255.0 nomodify
restrict 192.168.108.33 mask 255.255.255.0 nomodify
restrict 192.168.108.36 mask 255.255.255.0 nomodify
#Internet上的时间服务器作为内部标准时间来源
restrict 202.112.31.197 nomodify notrap noquery
server dns.sjtu.edu.cn prefer //设置此服务器同上层服务器做时间同步的IP地址,prefer意味着首选IP地址
server 202.112.31.197 //设置上层服务器做同步ip地址
server 127.0.0.1 local clock //local地址
fudge 127.0.0.1 stratum 10 //这行是时间服务器的层次。设为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0
keys /etc/ntp/keys
#指定NTP服务器日志文件
设置ntp日志的path
statsdir /var/log
logfile /var/log/ntp.log
2)修改/etc/ntp/step-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对)
202.112.31.197
3)修改/etc/sysconfig/ntpd文件,内容如下:
#允许BIOS与系统时间同步,也可以通过hwclock -w 命令
SYNC_HWCLOCK=yes
4)在配置完成并重新启动服务后,可通过ntpstat 命令显示本机上一次与上层ntp服务器同步时间的情况,也可以使用ntpq -p 查看本机与上层ntp服务器通信情况
2.4 图形界面配置NTP
图形界面下直接用system-config-date, 在“Network Time Protocol”选项页指定NTP服务器后勾选“Synchronize system clock before starting service”,将ntpd服务设置为自动运行即可。
2.5 客户端访问
1)Linux客户端可通过图形界面进行配置,也可以通过ntpdate命令立即与NTP服务器及你行时间校对,或者配置ntp.conf
ntpdate 192.168.0.10
2)Windows客户端,只需双击任务栏右下角的时钟,选择“Internet时间”选项页,输入NTP服务IP地址或FQDN,并勾选“自动与Internet时间服务器同步”即可。
Windows默认7天自动更新一次,可通过修改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 默认单位为妙,修改后重新启动即可生效
----管理命令
ntpq –p #查看本机和上层服务器的时间同步结果
ntptrace #可以用來追踪某台时间服务器的时间对应关系
ntpdate IP #客户端要和NTP server进行时钟同步。
/var/log/ntp/ntp.log #查看ntp日志
ntpstat # 也可以查看一些同步状态
watch ntpq -p #监测服务器的运行查NTP源
# watch ntpq -p //监测服务器的运行查NTP源
Every 2.0s: ntpq -p Sun Dec 2 00:05:31 2012
remote refid st t when poll reach delay offset jitter
dns.sjtu.edu.cn 202.112.31.197 3 u 4 64 77 14.668 1907019 8528448
dns2.synet.edu. .INIT. 16 u - 64 0 0.000 0.000 0.000
现在我就来解释一下其中的含义
remote: 它指的就是本地机器所连接的远程NTP服务器
refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
st: 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
t: 这个.....我也不知道啥意思^_^
when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
delay: 从本地机发送同步要求到服务器的round trip time
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确
4.配置客户端
1.LINUX客户端: (局域网内对时间有要求的机器)
echo “00 */1 * * * root /usr/sbin/ntpdate 192.168.200.240;/sbin/hwclock -w”>>/etc/crontab
每小时同NTP server进行一次时钟同步,并写入本机BIOS