如何用linux一台服务器时间去同步其他服务器的时间

如何用linux一台服务器时间去同步其他服务器的时间,第1张

至少需要两台linux服务器,其中一台是NTP Server, 另一台是NTP client

Linux NTP配置详解 (Network Time Protocol)

LINUX绝大多数的发行版本都已经自带了NTP程序,只须按以下配置即可。

相关配置文件

/etc/ntpconf

NTP服务的主要配置文件,所有的更改全部在这里。

/usr/share/zoneinfo

由 tzdata 所提供,规定了各主要时区的时间设定文件,例如中国的时区设置文件是/usr/share/zoneinfo/Asia/Chongqing。

/etc/sysconfig/clock

Linux的主要时区设定文件。每次启动后Linux操作系统会自动读取这个文件来设定系统预设要显示的时间。如这个文件内容为”ZONE=Asia/Chongqing”,则表示Linux操作系统的时间设定使用/usr/share/zoneinfo/Asia/Chongqing这个文件。

/etc/localtime

本地系统的时间设定文件,如果clock文件中规定了使用的时间设定文件为/usr/share/zoneinfo/Asia/Chongqing,Linux操作系统就会将Chongqing那个文件复制一份为/etc/localtime,所以系统的时间显示就会以Chongqing那个时间设定文件为准。

相关的命令

/bin/date

这个我们最经常使用了,更改及输出日期与时间命令。

/sbin/hwclock

使用hwclock才能将修改过后的时间写入BIOS 。

/usr/sbin/ntpd

NTP服务的守护进程,配置文件为/etc/ntpconf 。

/usr/sbin/ntpdate

用来连接NTP服务器命令,比如ntpdate 192168651 。

/usr/sbin/ntpq

NTP查询命令。

设置NTP服务器

就如前边说的NTP配置文档只有一个 /etc/ntpconf,看看我的ntpconf

#红字的是我添加的,其它为默认!

grep -Ev '^$|^#' /etc/ntpconf

restrict default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

restrict 13110713100 //允许该NTP服务器进入

restrict 11480811 //没有任何何参数的话,这表示『该 IP或网段不受任何限制』

restrict 2021181199

restrict 127001

restrict -6 ::1

restrict 19216800 mask 25525500 nomodify //该网段可以进行校时

restrict 0000 mask 0000 notrust //拒绝没有认证的用户端

server time-nwnistgov prefer //prefer 该服务器优先

server 0rhelpoolntporg

server 1rhelpoolntporg

server 2rhelpoolntporg

fudge 12712710 stratum 10

driftfile /var/lib/ntp/drift

keys /etc/ntp/keys

别忘了启动NTP服务器

/etc/initd/ntp start

客户端测试

对了客户端只需要是用ntpdate命令即可,192168651 为ntp 服务器ip 地址,就这么就简单!

相关命令

ntpstat //列出我们的NTP 服务器是否与上层连接。

synchronised to NTP server (13110713100) at stratum 2

time correct to within 461 ms

polling server every 64 s

ntpq -p //列出目前我们的NTP服务器 与上层NTP服务器 的状态, 代表目前正在使用的上层 NTP服务器

remote refid st t when poll reach delay offset jitter

==============================================================================

13110713100 ACTS 1 u 30 64 67 237165 1539 20382

2021181199 20211231197 2 u 33 64 63 163526 91844 10208

上边只是简单设置,没有考虑安全方面如认证等等,如需更详细请参考这里。

权限管理使用 restrict 公式如下:

restrict IP mask [参数] / restrict 19216800 mask 25525500 nomodify

其中参数主要有底下这些:

ignore:拒绝所有类型的NTP的连线;

nomodfiy:用户端不能使用NTPC与ntpq这两支程式来修改伺服器的时间参数,但使用者端仍可透过这部主机来进行网路校时的;

noquery:用户端不能够使用ntpq,NTPC等指令来查询发表伺服器,等于不提供的NTP的网路校时幂;

notrap:不提供陷阱这个远端事件邮箱(远程事件日志)的功能。

notrust:拒绝没有认证的用户端。

一、搭建时间服务器

1、在一台linux服务器安装ntp server

2、修改ntpconf配置文件

vi /etc/ntpconf

restrict default nomodify

(允许任何IP的客户机都可以进行时间同步,如果是只允许某个网段的客户机进行时间同步可以这样写restrict 1058260 mask 2552552550 nomodify)

3、以守护进程启动ntpd

#/etc/rcd/initd/ntpd -c /etc/ntpconf -p /tmp/ntpdpid

#/etc/rcd/initd/ntpd start

二、配置时间同步客户机

ntpdate 101281425

hwclock -w

使用cron 定时同步

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

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

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何用linux一台服务器时间去同步其他服务器的时间

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情