为了实现时间同步,我们就需要用NTP(Network Time Protocol)这个协议。
简单地说,NTP是用来使系统和一个精确的时间源保持时间同步的协议。
我们需要建立一个能提供精确时间的服务器,局域网内的所有电脑统一通过这台时间服务器进行时间同步、校准。
如何设置Linux Time Zone:
/usr/share/zoneinfo:这是个目录,在这个目录下是规定了各主要时区的时间设定文件,例如中国大陆地区的时区设置文件是 /usr/share/zoneinfo/Asia/Shanghai 。
如果我们想查看对于每个time zone当前的时间我们可以用zdump命令。
例如:分别查看日本、上海和纽约时间。
当输入date命令查看时间时,我们所在的time zone是哪个,就显示哪个时间,可以通过在/usr/share/zoneinfo下找到我们的time zone文件然后拷贝去到/etc/localtimezone(或者做个symbolic link)来更改所在时区
例如:把time zone改成纽约所在时区,再通过date查看当前时间。
把time zone改成日本所在时区,再通过date查看当前时间。
把time zone改成上海所在时区,再通过date查看当前时间。
NTP服务端的设置:
编辑ntp的配置文件 /etc/ntp.conf
关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,主要的语法为:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
notrap:不提供trap远程登录功能,trap服务是一种远程时间日志服务
nopeer:提供时间服务,但不作为对等体
kod:向不安全的访问者发送Kiss-Of-Death报文
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
上级时间服务器的设定 :
由于我们配置的NTP 服务器需要网络上面时间比较准确的NTP服务器来更新自己的时间,所以在我们的 NTP 服务器上面要配置一部上级时间服务器来进行校准
用server这个参数设定上级时间服务器,语法为:
server + IP地址或域名 [prefer]
IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。
解决NTP服务器校准时间时的传送延迟 :
使用driftfile参数设置:
driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内。
注意: driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。
NTP客户端的使用:
Linux系统:
执行 ntpdate:
ntpdate 10.1.3.51 其中10.1.3.51是NTP服务器的IP
不要忘了使用hwclock命令,把时间写入bios
hwclock -w
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:
30 8 * * * root /usr/sbin/ntpdate 10.1.3.51; /sbin/hwclock -w 其中 10.1.3.51是NTP服务器的IP地址
然后重启crond服务
systemctl restart crond
这样,每天 8:30 Linux 系统就会自动的进行网络时间校准。
Windows 系统:
- 打开组策略编辑器,命令是:gpedit.msc
- 在计算机策略对话框中,打开如下路径:计算机配置/管理模板/系统/Windows时间服务/时间提供程序。
- 双击右边配置Windows NTP客户端。将Ntp Server项,输入将要同步到的时间服务器IP地址。在类型项,选择NTP。
- 双击启动NTP客户端,启用NTP客户端,点击应用,确定按钮;
- 执行命令:gpupdate /force,更新组策略
- 执行命令:Services.msc,找到Windows Time服务,检查W32Time服务是否启动,启动类型是否是 自动启动,如下图:
- 在右下角时间和日期中,设置同步地址并勾选自动同步即可,如下图