如何用linux一台服务器时间去同步其他服务器的时间
至少需要两台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
0条评论