ntpdate与ntpd两种时间同步方式

ntpdate与ntpd两种时间同步方式,第1张

同步时间,可以使用ntpdate命令,也可以使用ntpd服务。

ntpdate时间同步命令很简单

但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果cpu tick有问题,只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加:

这样,会在每天的12点整,同步一次时间。ntp服务器为19216801。

使用ntpd服务,要好于ntpdate加cron的组合。

因为,ntpdate同步时间,会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响。比 如sleep,timer等。而且,ntpd服务可以在修正时间的同时,修正cpu tick。

理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

 保持时钟同步,是一个网络稳定、可靠运行的前提,比如SDH(同步数字体系)网络中必须要精确的做到时钟同步,才有可能保证网间数据的准确传输,但是这些运行在网络底层的规范对一般用户来说太遥远了,对于局域网用户来说,最常用的时间同步 *** 作就是“自动与Internet时间服务器同步”
那么我们在局域网中设置时间同步有什么意义呢又是如何实现的呢内外网中时间服务器的设置又有何区别下面我们结合实际局域网中设置实例来详细说明一下。
一、局域网内由于时间不同步造成的问题
作为网络管理员,既要保证网络设备的稳定运行,又要及时处理网络中随时出现的故障,而如果无法实现时间同步,就会增加处理故障的难度,比如:
(一)有时候需要设置CISCO交换机设备定时重启,但每次执行该 *** 作前都要先对时,这样才能保证执行reload命令时的准确性,更要命的是重启后以后,交换机的时间又变回默认的1994年了。
(二)局域内有几十台交换机,虽然大多可以实现远程网管,但由于时间不一致,造成无法准备网络故障发生的确切时间。
(三)最近单位实现指纹机考勤了,同事们也习惯于看电脑上的时间去按指纹,但微机上的时间老不准,结果往往赞成不是去早了就是去晚了,还有在进行文件传输时,不准确的时间信息也影响了检索结果,甚至会引起不必要的误会。
那么如何在局域网内实现时间同步呢
二、时间同步的方法
(一)外网(办公局域网)时间同步的方法
外网,也就是办公局域网,这个局域网的网络设备都可以接入互联网,一个简化的网络拓扑
外网使用了一台CISCO3550交换机作为核心交换机,下面级联了若干台CISCO的29系列交换机,局域网内还有多台微机。
在这种网络模式中,我们不能保证每台网络设备都可以快速的与互联网上时间服务器进行时间同步(比如由于网速或是时间服务器本身的问题),能够保证的是局域网内有一个比较稳定可靠的网络质量,这样的话,我们就选定了CISCO3550作为局域网内的时间服务器,CISCO3550交换机肩负着两个作用,一、它要与互联网上的时间服务器进行同步(保证自身时钟准确),二、它要将时钟信息在局域内广播出去,从而使得局域网内的网络设备(交换机、PC机)都可以与它进行时钟同步,从而保证全网内的时钟同步,下面我分别说明一下实现步骤。
1、设置CISCO3550交换机与互联网上的时间服务器进行同步
3550#conf t
Enter configuration commands, one per line End with CNTL/Z
3550(config)#ntp peer 2107214544 (peer的含义为本设备既可以接受时钟同步,也可以给远端设备提供时钟,双向 2107214544是中科院国家授时中心的IP地址 )
clock timezone gmt 8 (即设置为北京时区)
是的,只需在CISCO3550交换机中敲这么简单的两条命令,过一段时间(前提是CISCO3550交换机可以访问互联网),就可以实现与与互联网上的时间服务器同步了,用直观的感受可以用show clock命令看出来,如下所示:
3550#show clock
22:18:45667 gmt Sat May 23 2009
也就是说明本机的时间已经与互联网上的时间服务器同步了。
小提示
为了更好的理解以上的两步设置,还是有一些知识是需要了解的
(1) 如何得到互联网上的时间服务器的地址
很多方法可以得到,一是XP自身就带了两个时间服务器:timewindowscom和timenistgov,我们只需要DOS模式下执行一下ping *** 作,就可以得到它们对应的IP地址,分别为20746232182和1924324418,二是中科院有一个标准的授时服务器,地址为2107214544,三可以从网上查,可以得到更为丰富的信息,比如我们访问>一. 常见命令 1 修改当前计算机时间 使用time命令,同时会要求您重设时间 如果不需要设置时间,则直接回车即可 这个命令仅限于粗糙的时间调整。 2 获取当前计算机的日期及时间信息 在Windows HyperV中,用户无法看到图形界面的日期与时间信息,但可以通 过以下命令进行查看: a) 在命令行中输入timedatecpl, 系统自动d出日期,时间设置窗口,可 以在此位置进行设置 b) 在命令行中输入net time \\IP地址或计算机名称,此命令还可以查看 其他计算机的当前时间,例如: net time \\3242107129, 如果是域 内计算机,想查看当前域的整体时间 net time /domain:shinseifin 3 显示时区 a) Timedatecpl b) W32tm /tz 显示本地计算机时区设置 4 很多时间我们想知道, 当前域内的计算机是从哪个服务器同步的时间,可 以用如下命令: W32tm /monitor /computers:计算机名称 或者w32tm /monitor /domain:域名 结果如下 这样如果发现域内时间异常,直接更改此对应PDC的计算机时间即可。 5 更改完时间后,我们希望让一台计算机立即进行同步 W32tm /resync /computer:计算机名称 6 设置本地时间 上面提到直接使用time命令即可 7 设置一台与另外计算机时间同步 使用net time 命令。格式如下 net time [\\computername|/domain[:domainname] | /rtsdomain[:domainname]] [/set] net time [\\computername] [/querysntp] | [/setsntp[:ntp server list]] 参数说明: ◆ 无参数,显示被指派为本地计算机的Windows服务器域时间服务器的当前时 间。 ◆ \\computername,指定要检查或与之同步的服务器的名称。 ◆ /domain[:domainname],指定要同步时间的域。 ◆ /rtsdomain[:domainname],指定要与之同步的可信时间服务器所在的域。 ◆ /set,使计算机的时钟与指定的计算机或域的时间同步。

1、在电脑桌面的bai右下角du点击时间,dzhi出系统时间界面。在此界dao面左下角点击“更改日期和zhuan时间设置”,进入日期和时间界面。XP系统需要双击时间,Win7系统中直接左键单击即可。
2、在“日期和时间”属性界面,单击“Internet时间”,进入“Internet时间”选项卡。在“Internet时间”选项卡中,单击右侧的“更改设置”按钮,进入更改界面进行设置。
3、在“Internet时间设置”界面中,在“与Internet时间服务器同步”前面挑勾。之后在服务器中输入更新服务器的IP地址。在局域网中,IP地址为你需要同步的服务器IP地址。
4、启动时间同步服务。可以点击界面的“立即更新”启动时间同步服务。如果不启动时间同步服务,将无法与你设置的同步服务器进行时间更新。
5、在“Internet时间设置”选项界面中,如果时间同步服务已经成功启动,则在此界面会显示系统下一次同步时间。如果不显示,则需求手动启动时间同步服务,否则无法实现该功能。
6、在时间设置界面,同时可以显示两个时区。日期和时间-附加时钟,选择好时区后,在“显示此时钟”前面挑勾,既可以将此时钟在时间中显示。

一,用ntpdate从时间服务器更新时间
如果你的linux系统根本没有ntpdate这个命令
yum install ntp
安装完了之后,你不要做什么配置,也不需要,直接测试一下
[root@localhost ~]# ntpdate timenistgov
22 Oct 21:11:43 ntpdate[5014]: adjust time server 20720081113 offset -0018788 sec
如果出去上面的内容说明,同步成功了。然后在crontab里面加上以下内容。
/10 ntpdate timenistgov #域名或IP
每隔十分钟同步一次。推荐几个时间服务器。
timenistgov
timenurinet
asiapoolntporg
asiapoolntporg
asiapoolntporg
asiapoolntporg
二,用ntp搭建自己的时间服务器
上面我们是利用别人的时间服务器来同步时间,这些时间服务器都是比较权威的。当我们自己搭建时间服务器就不用crontab来定时去跑。
1,安装时间服务器ntp
yum install ntp
2,配置ntp
查看复制打印
[root@localhost ~]# cat /etc/ntpconf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
restrict default ignore //默认不允许修改或者查询ntp,并且不接收特殊封包
restrict 127001 //给于本机所有权限
restrict 19216810 mask 2552552550 notrap nomodify //给于局域网机的机器有同步时间的权限
server timenistgov prefer //设置时间服务器,加prefer表示优先
server 0asiapoolntporg
server 1asiapoolntporg
server 2asiapoolntporg
server 12712710 # local clock
fudge 12712710 stratum 10
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
3,启动 ntp
[root@localhost ~]# /etc/initd/ntpd start
4,查看并测试
[root@localhost ~]# netstat -upnl |grep ntpd //查看时程
[root@localhost ~]# ntpq -pn //查看同步的服务器IP
remote refid st t when poll reach delay offset jitter
==============================================================================
5077217185 INIT 16 u - 64 0 0000 0000 0000
202901584 INIT 16 u - 64 0 0000 0000 0000
2027110089 INIT 16 u - 64 0 0000 0000 0000
202134110 INIT 16 u - 64 0 0000 0000 0000
12712710 LOCL 10 l 18 64 377 0000 0000 0001
[root@localhost ~]# ntpstat //同步的结果
synchronised to local net at stratum 11
time correct to within 12 ms
polling server every 512 s
remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由“+”则代表目前正在作用钟的上层NTP,如果是“”则表示也有连上线,不过是作为次要联机的NTP主机。
refid:参考的上一层NTP主机的地址
st:即stratum阶层
when:几秒前曾做过时间同步更新的 *** 作
poll:下次更新在几秒之后
reach:已经向上层NTP服务器要求更新的次数
delay:网络传输过程钟延迟的时间
offset:时间补偿的结果
jitter:Linux系统时间与BIOS硬件时间的差异时间

工具/原料:

Debian

ntpdate

1使用root用户登录Debian系统,然后使用“apt-cache search ntpdate”查看本地源中是否包含ntpdate软件。如果包含可以进行下一步,如果不包含,请跟换其他的源地址并重新更新源。重新搜索确认ntpdate是否存在。

2使用“apt-get install ntpdate”命令,安装ntpdate软件。如果出现下图所示结果即表示安装成功。

3对于Debian的系统时间与NTP服务器时间同步,必须要有一个NTP服务器的IP地址。以下截图为国内常用NTP服务器IP地址。

4使用“ntpdate ntpsjtueducn ”和“ntpdate 2021202101”命令,都可以同步NTP服务器时间,并且两个命令代表同一台服务器。

5由于Debian系统长时间运行,经常性导致系统时间变慢,因此可以使用命名“crontab -e ”,并在文件中添加如下一行“/30 /usr/sbin/ntpdate timecuiteducn ”,表示没30分钟,系统自动同步一次时间。

6使用命令“date”查看系统当前时间,看看ntpdate命令是否生效。

Linux自带了ntp服务 -- /etc/initd/ntpd,这个服务不仅可以设置让本机和某台/某些机器做时间同步,他本身还可以扮演一个time server的角色,让其他机器和他同步时间。
配置文件就是/etc/ntpconf。
为了测试,设置让node2 -- 1921681102和node1 -- 1921681101做时间同步。
第一步,
node1做time server,node1本身不和其他机器时间同步,就是取本地时间。
所以,先把node1机器的时间调准了:
[root@node1 ~]date -s 08/03/2011 
[root@node1 ~]date -s 11:12:00
[root@node1 ~]clock -w
[root@node1 ~]hwclock --systohc
后两个命令是把设置的时间写到硬件时间中去(也就是CMOS里面的时间)。
第二步,
然后将node1配置成一个time server,修改/etc/ntpconf,
[root@node1 ~]vi /etc/ntpconf
其他的配置不怎么需要改,只需要关注restrict的配置:
1 注释掉原来的restrict default ignore这一行,这一行本身是不响应任何的ntp更新请求,其实也就是禁用了本机的ntp server的功能,所以需要注释掉。
2 加入:restrict 19216810 mask 2552552550 -- 让19216810/24网段上的机器能和本机做时间同步
3 这样就可以了,记得下面的:
server 12712710 # local clock
fudge 12712710 stratum 10
这两行需要,这是让本机的ntpd和本地硬件时间同步。
当然,我们也可以添加server xxxxxxxxxxxx,让他和其他的time server时间同步。
4 /etc/initd/ntpd restart
5 chkconfig ntpd on
6 修改iptables配置,将tcp和udp 123端口开放,这是ntp需要的端口,在/etc/services中可以查到这个端口。
第三步,
这样node1就成为一台time server了,现在我们配置node2这台机器,也是修改/etc/ntpconf ,
[root@node2 ~]vi /etc/ntpconf
1 restrict default ignore这行保留为注释状态,因为sales不需要做time server
2 注释掉server 12712710, fudge 12712710 stratum 10这两行,因为这台机器不需要和本地硬件时钟同步了。
3 加入server 1921681101这行,和node1机器同步。
这样就OK了。看看时间,已经和node1同步了。往后默认配置好像是5分钟和time server同步一次。ntpdate命令是显式的和某台机器做时间同步,以前将ntpdate放到crontab中定期同步也是可以的,但是既然ntpd本身就可以做这个时间
第四步,将ntpdate放到crontab中定期步也是可以的
[root@node2 ~]#vi ntpupdatesh
/usr/sbin/ntpdate 1921681101
[root@node2 ~]#chmod 755 ntpupdatesh
[root@node2 ~]#crontab -e
/1 /root/ntpupdatesh
[root@node2 ~]#/etc/initd/crond restart


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13261879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-28
下一篇 2023-06-28

发表评论

登录后才能评论

评论列表(0条)

保存