怎么测试linux下搭建的ntp服务器
三、什么是NTP
为了实现时间同步,我们就需要用户NTP(Network Time Protocol)这个协议。如图1所示。简单地说,NTP是用来使系统和一个精确的时间源保持时间同步的协议。笔者建议管理员最好在自己管理的网络中建立至少一台时间服务器来同步本地时间。
如 果在一个公司的局域网中,如果让每个员工通过手动的方式每隔一段时间去校准时间,不但不利于管理,而且校准目标时间源也不一定准确。公司局域网络中不同计 算机的时间偏差尤其是客户机/服务器之间的时间偏差,就会对一些要求时间同步的服务产生影响。比如,为了管理方便,服务器设置了一到下班时间便 账号过期,用户无法访问Internet网络。而如果你的电脑时间与服务器的时间不同步,当你为你下班时间未到,正准备发送邮件时,或许在服务器的时间 上,你的账号便过期了,从而导到无法发送邮件。解决这种问题的方法很简单,就是建立一个能提供精确时间的服务器,局域网内的所有电脑统一通过这台时间服务 器进行时间同步、校准。
四、NTP服务器安装
现在,我们就来介绍一下,如何在Linux系统下,建立一个NTP服务器吧。在本文中,我们采用的是Fedora 2操作系统作为例子 (其它版本Linux也可以,系统的配置类似)。
使用 RPM 安装
首先输入如下指令
rpm -q ntp
查询本机是否安装了NTP软件包。如果没有安装的话,找到您的 Linux 的安装光盘,mount 上后,查找以NTP开头的软件包名,然后安装上去,就可以了!
rpm –ivh ntp-412-5i386rpm
五、NTP服务的设置
1.NTP软件包的结构
NTP服务的配置文件:
/etc/ntpconf :这个是 NTP 服务的主要配置文件,不同的Linux版本文件所在的目录可能会不同!
与NTP服务有关的Linux 系统文件及目录:
/usr/share/zoneinfo:这是个目录,在这个目录下是规定了各主要时区的时间设定文件,例如中国大陆地区的时区设置文件是 /usr/share/zoneinfo/Asia/Shanghai 。
/etc /sysconfig/clock:这个文件是Linux 的主要时区设定文件。每次启动后,Linux 会自动读取这个文件来设定系统预设要显示的时间!比如这个文件内容为“ZONE=Asia/Shanghai”,这表示我们的时间设定使用 /usr/share/zoneinfo/Asia/Shanghai 这个文件!
/etc/localtime:这个文件是本地系 统的时间设定文件! 假设clock 文件里面规定了使用的时间设定文件为 /usr/share/zoneinfo/Asia/Shanghai, Linux 系统就会将 Shanghai那个文件复制一份为 /etc/localtime ,所以系统的时间显示就会以 Shanghai 那个时间设定文件为准。假设这台主机到了美国纽约,您只要将 /etc/sysconfig/clock 里面的ZONE 设定成为ZONE="America/New_York" 并且将/usr/share/zoneinfo/America/New_York复制成为 /etc/localtime ,其它什么设置都不需要改动,系统的显示时间就是美国纽约当地的时间了!
与 NTP 及系统时间有关的执行文件:
/bin/date: Linux 系统上面的日期与时间修改及输出命令。
/sbin /hwclock:因为主机的 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,只是调整了linux的系统时间,还需要使用 hwclock 才能将修改过后的时间写入 BIOS。这个命令必须root用户才能执行 。
/usr/sbin/ntpd:NTP服务的守护进程文件,需要启动它才能提供NTP服务。
/usr/sbin/ntpdate:NTP客户端用来连接NTP服务器命令文件。
2.NTP服务端的设置
编辑 /etc/ntpconf 文件
关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
上级时间服务器的设定
由于我们配置的NTP 服务器需要网络上面时间比较准确的NTP服务器来更新自己的时间,所以在我们的 NTP 服务器上面要配置一部上级时间服务器来进行校准!在 Internet 上面提供了许多时间服务器,从下面地址找一个离你最近的
http://wwweecisudeledu/~mills/ntp/clock1ahtml
用server这个参数设定上级时间服务器,语法为:
server IP地址或域名 [prefer]
IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。
解决NTP服务器校准时间时的传送延迟
使用driftfile参数设置:
driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内。
注意: driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。
ntpconf文件举例:
设置要求:不对 Internet 提供服务,仅对内部子网 19216800/24 提供服务,NTP 服务器的上级时间主机为:clockncfukuoka-uacjp和ntpnasagov,内部子网的客户端不能修改NTP服务器的时间参数。
在ntpconf中增加以下内容:
restrict default ignore # 关闭所有的 NTP 要求封包
restrict 127001 # 开启内部递归网络接口 lo
restrict 19216800 mask 2552552550 nomodify #在内部子网里面的客户端可以 进行网络校时,但不能修改NTP服务器的时间参数。
server 13310092 prefer #用13310092做上级时间服务器
server 19812330132 #19812330132作为上级时间服务器参考
restrict 13310092 #开放server 访问我们ntp服务的权限
restrict 19812330132
driftfile /var/lib/ntp/drift
保存退出后。启动NTP服务
service ntpd start
如果想每次系统启动,NTP服务自动启动,请输入下面命令: chkconfig -level 35 ntpd on 注意:
1NTP服务的端口是123,使用的是udp协议,所以NTP服务器的防火墙必须对外开放udp 123这个端口。
2Ntpd启动的时候通常需要一段时间进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,最长大概有5分钟吧,如果超过了这个时间请检查一下您的配置文件。
六、NTP客户端的使用
Linux系统
在Linux 上面进行网络校时非常简单,执行 ntpdate 即可:
ntpdate 19216801 #19216801是NTP服务器的IP
不要忘了使用hwclock命令,把时间写入bios
hwclock -w
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:
30 8 root /usr/sbin/ntpdate 19216801; /sbin/hwclock -w #19216801是NTP服务器的IP地址
然后重启crond服务
service crond restart
这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。
Windows 系统
在 Windows XP上面使用NTP进行时间校准也很简单:
双击桌面任务栏上的时间,弹出“日期和时间”属性窗口,如图所示:
选择Internet时间,在服务器中填入你的NTP服务器的IP地址或者域名,然后点击立即更新,您的系统时间就会立即更新。如果想定时更新,把左上角的自动与Internet时间服务器同步选中,然后点击右下角的应用即可。
yy-2-3tif
如 果不是Windows XP系统,但是NTP服务器同时也是samba服务器的话,则对Windows来说,不需要安装任何时间同步软件,因为Windows客户端可以用net time\\时间服务器IP或服务器netbios名/set/yes来同步。可以把该命令放在开始菜单的启动项中,启动windows时自动同步。
由于net time命令是利用Netbios over TCP/IP协议来同步时间,所以NTP服务器不同时是samba 服务器的话,就需要Windows客户端安装时间同步软件。这方面的软件很多,使用也很简单,读者可以上网查找一下。
一、搭建时间服务器
1、在一台linux服务器安装ntp server
tar zxvf ntp-426targz
cd ntp-426
/configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
make && make install
2、修改ntpconf配置文件
vi /etc/ntpconf
# 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 default nomodify
(允许任何IP的客户机都可以进行时间同步,如果是只允许某个网段的客户机进行时间同步可以这样写
restrict 1058260 mask 2552552550 nomodify)
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 127001
restrict -6 ::1
# Hosts on local network are less restricted
#restrict 19216810 mask 2552552550 nomodify notrap
# Use public servers from the poolntporg project
# Please consider joining the pool
#server 0rhelpoolntporg(默认时间服务器)
#server 1rhelpoolntporg(默认时间服务器)
#server 2rhelpoolntporg(默认时间服务器)
server 101281425 (手工设置的时间服务器)
(如果是可以直连外网,可以使用LINUX默认提供的三组标准时间服务器,否则可以自己指定一个同步时间源)
#broadcast 1921681255 key 42 # broadcast server
#broadcastclient # broadcast client
#broadcast 224011 key 42 # multicast server
#multicastclient 224011 # multicast client
#manycastserver 239255254254 # manycast server
#manycastclient 239255254254 key 42 # manycast client
# Undisciplined Local Clock This is a fake driver intended for backup
# and when no outside source of synchronized time is available
server 12712710 # local clock
fudge 12712710 stratum 10
3、以守护进程启动ntpd
#/etc/rcd/initd/ntpd -c /etc/ntpconf -p /tmp/ntpdpid
#/etc/rcd/initd/ntpd start
#ps -ef|grep ntpd
4、
在ntp server上启动ntp服务后,ntp
server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令进行同步时会产生
no server suitable for synchronization found的错误。
下面命令可以知道何时ntp server完成了和自身同步的过程
在ntp server上使用命令:
# watch ntpq -p
注意LOCAL的这个就是与自身同步的ntp server。
注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒5=320秒的时间。
二、配置时间同步客户机
vi /var/spool/cron/root(或crontab -e)
增加一行,在每天的1点10分、9点10分、17点10分与时间同步服务器进行同步并写入BIOS
10 1 ,9,17 root /usr/sbin/ntpdate 101281425; /sbin/hwclock -w
如果同步不正常,可以加输出日志或看系统日志
输出日志的方法:
10 1 ,9,17 root /usr/sbin/ntpdate 101281425>>/tmp/1txt; /sbin/hwclock -w
在1txt中可查看时间同步时的输出结果。
或者看/var/mail/root系统日志
Subject: Cron <root@tyzssq8> /usr/sbin/ntpdate 101281425;/sbin/hwclock -w
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20121127103001076FF2090E@tyzssq8site>
Date: Tue, 27 Nov 2012 18:30:01 +0800 (CST)
27 Nov 18:29:59 ntpdate[6917]: step time server 101281425 offset -1361968 sec
可以看到同步成功了,如果未成功会报出错误。
三、无法同步的问题
检查ntp server主机的防火墙。可能是ntp server的防火墙屏蔽了upd 123端口。
可以用命令
#service iptables stop
一:NTP是网络时间同步协议,就是用来同步网络中各个计算机的时间的协议。
二:NTP服务端配置
21、检查系统是否安装了NTP包(linux系统一般自带NTP42),没有安装我们直接使用yum命令在线安装: yum install ntp
22、NTP服务端配置文件编辑: vim /etc/ntpconf
结果:
# @3新增-权限配置restrict 12712710restrict 192168310 mask 2552552550 nomodify notrap# @3改动-注释掉上级时间服务器地址#server 0centospoolntporg iburst#server 1centospoolntporg iburst#server 2centospoolntporg iburst#server 3centospoolntporg iburst# @4新增-上级时间服务器server 12712710 # local clockfudge 12712710 stratum 10
23、启动NTP时间服务器:service ntpd start
24、设置NTP开机自动启动:chkconfig ntpd on
25、查看NTP是否正常运行:netstat -tlunp | grep ntp
26、配置防火墙过滤规则:/sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT
如何配置:/etc/sysconfig/iptables 文件内配置开放udp 123端口: -A INPUT -p udp --destination-port 123 -j ACCEPT
A服务端配置文件解释
①:设定NTP主机来源(其中prefer表示优先主机),19216831134是本地的NTP服务器,所以优先指定从该主机同步时间。
server 192168749 prefer
server 0rhelpoolntporg
server 1rhelpoolntporg
server 2rhelpoolntporg
server 3rhelpoolntporg
②:限制你允许的这些服务器的访问类型,在这个例子中的服务器是不容许修改运行时配置或查询您的Linux NTP服务器
restrict 19216800 mask 2552552550 notrust nomodify notrap
在上例中,掩码地址扩展为255,因此从19216801-1921680254的服务器都可以使用我们的NTP服务器来同步时间
#此时表示限制向从19216801-1921680254这些IP段的服务器提供NTP服务。
restrict 19216800 mask 2552552550 notrust nomodify notrap noquery
#设置默认策略为允许任何主机进行时间同步
restrict default ignore
三:NTP客户端配置31、检查安装NTP服务有没有安装,未安装请自行安装
32、NTP客户端配置文件编辑: vim /etc/ntpconf
# @1新增-权限配置restrict 192168310 mask 2552552550 nomodify notrap# Use public servers from the poolntporg project# Please consider joining the pool (http://wwwpoolntporg/joinhtml)# 注释掉原来的实际服务器地址#server 0centospoolntporg iburst#server 1centospoolntporg iburst#server 2centospoolntporg iburst#server 3centospoolntporg iburst# @2新增-自己的时间服务器地址server 19216831223 prefer <==以这部主机为最优先#broadcast 1921681255 autokey # broadcast server#broadcastclient # broadcast client#broadcast 224011 autokey # multicast server#multicastclient 224011 # multicast client#manycastserver 239255254254 # manycast server#manycastclient 239255254254 autokey # manycast client
33、手动同步一次时间:/usr/sbin/ntpdate19216831134 (服务端主机IP,这里需要先关闭NTP服务哦)
34、启动NTP服务:service ntpd start
35、观察时间同步状况:ntpq -p
结果:
[root@localhost hct]# ntpq -p remote refid st t when poll reach delay offset jitter==============================================================================19216831134 LOCAL(0) 11 u 64 128 377 0202 73980 412834
⑥查看时间同步结果:ntpstat
[root@hct ~]# ntpstat
unsynchronised
polling server every 8 s
同步失败,同步也需要时间,需等待5-10分钟再次查询:
Every 20s: ntpstat Tue Jul 11 16:55:57 2017synchronised to NTP server (101011247) at stratum 12 time correct to within 605 ms polling server every 128 s
时间同步完成,date一下看是不是和服务器主机时间一致
B客户端配置文件详解
修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对
C系统时间与硬件时间同步
如果主从服务时间超过1000秒则不再进行同步了,这时候要手动同步,即:/usr/sbin/ntpdate命令,如果怕服务器时差会经常变动比较大可以再Linux中添加计划任务,例如:
10 5 root /usr/sbin/ntpdate 19216831223 && /sbin/hwclock -w
ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。
拓展内容ntpq -p各个选项相关信息
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地址的权限设置。
root@www ~]# vim /etc/ntpconf# 1 先处理权限方面的问题,包括放行上层伺服器以及开放区网用户来源:restrict default kod nomodify notrap nopeer noquery <==拒绝 IPv4 的用户restrict -6 default kod nomodify notrap nopeer noquery <==拒绝 IPv6 的用户restrict 22013015871 <==放行 tockstdtimegovtw 进入本 NTP 伺服器restrict 5912419683 <==放行 tickstdtimegovtw 进入本 NTP 伺服器restrict 5912419684 <==放行 timestdtimegovtw 进入本 NTP 伺服器restrict 127001 <==底下两个是预设值,放行本机来源restrict -6 ::1restrict 1921681000 mask 2552552550 nomodify <==放行区网来源# 2 设定主机来源,请先将原本的 [0|1|2]centospoolntporg 的设定注解掉:server 22013015871 prefer <==以这部主机为最优先server 5912419683server 5912419684# 3预设时间差异分析档案与暂不用到的 keys 等,不需要更动它:driftfile /var/lib/ntp/driftkeys /etc/ntp/keys
ntpd、ntpdate的区别
下面是网上关于ntpd与ntpdate区别的相关资料。如下所示所示:
使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。
时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:
第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。
第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。
第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。
NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。
执行ntpdate xxxxxxxxxxxx(ntp服务器地址)。
Linux下配置NTP服务器
配置方法:
1、ntp服务安装
NTP服务在RHEL5x中式默认安装的软件包,可用rpm -qa |grep
ntp检查是否安装,如果未安装可使用如下命令安装与删除NTP服务器软件包
#使用rpm方式安装
rpm -ivh ntp-422p1-8el5i386rmp
#使用yum方式安装
yum -y install ntpi
#使用rpm方式删除
rpm -e ntp-422pl-8el5i386rpm
#使用yum方式删除
yum -y remove ntpi
2、ntp服务配置
在ntp服务安装完成后,需要修改ntp服务配置文件。ntp服务主配置文件/etc/ntpconf
21 ntp服务的启动、暂停
NTP属于system
V服务,其启动、暂停相关命令如下:
#启动
service ntpd
start
#停止
Service ntpd
stop
#重新加载
service ntpd
reload
#查看当前启动状态
service ntpd
status
22 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
23 配置信息
配置ntp,将Internet上的时间服务器作为内部标准时间来源,过程如下
1)修改/etc/ntpconf文件
restrict default kod nomodify notrap nopeer noquery
restrict 127001
restrict -6::1
restrict 19216800 mask 2552552550 nomodify notrap
restrict 19216810 mask 2552552550 nomodify notrap
#指定Internet上的时间服务器
restrict 20746232182 mask 255255255255 nomodify notrap noquery
server 20746232182
server 12712710
fudge 12712710 stratum 10
keys /etc/ntp/keys
#指定NTP服务器日志文件
logfile /var/log/ntp
2)修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对)
20746232182
12712710
3)修改/etc/sysconfig/ntpd文件,内容如下:
#允许BIOS与系统时间同步,也可以通过hwclock -w 命令
SYNC_HWCLOCK=yes
4)在配置完成并重新启动服务后,可通过ntpstat
命令显示本机上一次与上层ntp服务器同步时间的情况,也可以使用ntpq -p 查看本机与上层ntp服务器通信情况,
24 图形界面配置NTP
图形界面下直接用system-config-date, 在“Network Time Protocol”选项页指定NTP服务器后勾选“Synchronize system clock before startingservice”,将ntpd服务设置为自动运行即可。
25 客户端访问
1)Linux客户端可通过图形界面进行配置,也可以通过ntpdate命令立即与NTP服务器及行时间校对。
ntpdate 192168010
2)Windows客户端,只需双击任务栏右下角的时钟,选择“Internet时间”选项页,输入NTP服务IP地址或FQDN,并勾选“自动与Internet时间服务器同步”即可。
Windows默认7天自动更新一次,可通过修改注册表HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 默认单位为妙,修改后重新启动即可生效。
0条评论