本文介绍了时间服务器常用的二种协议:SNTP 和 TIME,并就局域网环境下 Linux 时间服务的设置进行了说明,最终实现整个局域网环境下所有电脑时钟的同步与校准。
1、什么是网络时间服务
网络时间服务 Net Time Service 与网络文件下载服务 FTP、网络浏览服务 WWW 等一样,是一种网络服务,提供网络时间服务的电脑叫网络时间服务器。当然有些时间服务器是纯硬件结构的,通过 GPS 卫星信息来获取时间,其外观与一台交换机相似,不在文本介绍之列。本文主要介绍一台电脑如何通过网络获取上级时间服务器提供的标准时间,再服务于本单位的局域网,使一个单位的所有电脑都能与标准时间保持同步,时间误差一般小于 0.5 秒。
TCP/IP 协议中,用于同步时间的协议为 NTP 协议,它是由美国德拉瓦大学的 David L. Mills 教授于 1985 年提出,除了可以估算封包在网络上的往返延迟外,还可独立地估算计算机时钟偏差,从而实现在网络上的高精准度计算机校时,它是设计用来在 Internet 上使不同的机器能维持相同时间的一种通讯协议。时间服务器(timeserver)是利用 NTP 的一种服务器,通过它可以使网络中的电脑保持时间同步。
NTP 是一个跨越广域网或局域网的复杂的同步时间协议,它通常可获得毫秒级的精度。
SNTP(Simple Network Time Protocol)是 NTP 的一个子集,目的是为了那些不需要 NTP 实现复杂性网络时间同步的主机。通常用于局域网上的若干台主机通过互联网与其他的 NTP 主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。SNTP 一般使用 UDP 的 123 端号,Linux 系统和 Windows 系统都支持它,是现在架设网络时间服务器的主流协议。
Time Protocol (RFC-868)协议是一种较简单的协议。此协议提供了一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是从 1900 年 1 月 1 日午夜到现在的秒数。该协议通过 TCP 或 UDP 的 37 端口提供服务。Linux 下的 TIME 服务提供该服务,Windows 系统中较少使用。
现在网上的许多时间校准软件,有些支持 SNTP 协议、有些支持 TIME 协议,有些二者都支持,我们在选择时要特别注意。另外在 Windows 系统的对等网中,还有使用 “net time 机器名 /set /yes”命令使用 netbios 协议进行时间校准,由于这种方法不支持混合网络和跨网段网络,本文也不特别介绍。
2、时间服务器有何用
也许有人认为电脑的时钟有点误差影响不大,其实这是非常错误的。电脑系统中的文件保存、文件传输、电子邮箱中的时间戳都是以电脑时钟为准的。如果今后我们想进行文件查找、日志查询,如果系统时钟不准,或同一网络中的电脑时间不同步,将给后续工作带有许多麻烦。现在许多备份软件、编译软件、FTP 工具都是以文件保存时间为依据进行比较的,如果时间不统一,将使这些软件难以正常工作。
3、需要做服务器时间同步的各种情况:
3.1、服务器可连接外网时时间同步:
一般企业中,能连接外网的服务器不多,但是如果能连接到外网,我们那可以比较简单的实现时间同步:
# crontab -e
加入一行:
*/1 * * * * ntpdate 210.72.145.44
210.72.145.44 为中国国家授时中心服务器地址,这样该机每隔 1 分重就可以与国家授时中心进行同步了。
注意: 在使用 ntpdate 命令时, ntpd 服务必须是关闭的, 否则会报 the NTP socket is in use, exiting 错误。
关闭 ntpd 服务命令如下:
[root@node2 init.d]# /etc/init.d/ntpd stop
Shutting down ntpd: [ OK ]
建议启动 NTP 服务后,先用 date 命令手工校正一下时间,以后系统会自动与互联网上的主时间服务器保持同步。ntp 服务还有一个好处,如果当前系统的时间与标准时间有所误差,它不是马上把时间校正,而是逐步缩小与标准时间的误差,以免系统内部出现时间突变。
3.2、服务器不可以连接外网时时间同步
以下分 Linux 为例介绍,而且只介绍 sntp 服务的架设,timeserver 服务和 netbios 对时服务由于应用很少,不做介绍。
3.2.1、安装 ntp 对应 rpm
检查是否已经安装有 ntp 软件包。输入“rpm -qa|grep ntp”,如果已经安装应该显示“ntp-4.1.2-0.rc1”。
[root@rac1 ~]# rpm -qa|grep ntp
ntp-4.2.2p1-9.el5_4.1
安如果没有装 ntp 软件,从 linux 安装盘的 Server 文件夹中找 rpm 包,输入“rpm -ivh ntp-xxx.rpm”执行安装。
或者通过 yum 直接安装,更方便。
3.2.2、配置 ntp.conf 文件 搭建内网时间服务器
配置 ntp 服务。备份原/etc/ntp.conf 文件,vi /etc/ntp.conf:
①、第一种配置:允许任何 IP 的客户机都可以进行时间同步
#restrict default kod nomodify notrap nopeer noquery
restrict default modify notrap
②、第二种配置:只允许 192.168.2.0 网段的客户机进行时间同步
在 restrict default nomodify notrap noquery(表示默认拒绝所有 IP 的时间同步)之后增加一行:
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
在最后添加如下内容
server 127.127.1.0 # local clock
server 192.168.0.100 #这是本机的 ip 地址,所有本机房内的服务器都可以 ping 通这个机器,来做时间同步。
3.2.3、启动 ntp 服务:
输入“service ntpd restart”。
为了保证以后 Linux 机启动后 ntp 服务能自动启动,还要输入“chkconfig ntpd on”。
ntpd 启动后,客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable forsynchronization found”错误。
3.2.4、客户机与时间服务器同步:
其实在上面介绍 Linux 系统中的 ntp 服务时,已经提到 ntp 时间服务时同时也是一个时间服务的客户端,只要把/etc/ntp.conf 文件中的 “server pool.ntp.org”改为“server 内部时间服务器 IP 地址”即可。如不想使用 ntp 服务,也可使用 ntp 软件包中带来的 ntpdate 命令,只要手工执行“ntpdate 时间服务器 IP 地址”即可。如想每天自动对时,可以把这条命令放在 cron 中,注意在同一台电脑上 ntp 服务与 ntpdate 命令不能同时使用。
# ntpdate -u 192.168.0.100
直接执行此命令做同步,可以通过 crontab 设置定时计划,每分钟同步一次:
*/1 * * * * ntpdate -u 192.168.0.100
附:
启动/关闭/重启 NTP 的命令:
# /etc/init.d/ntpd start
# /etc/init.d/ntpd stop
# /etc/init.d/ntpd restart
#service ntpd restart
将同步好的时间写到 CMOS 里
vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
每次修改了配置文件后都需要重新启动服务来使配置生效。
可以使用下面的命令来检查 NTP 服务是否启动,你应该可以得到一个进程 ID 号:
# pgrep ntpd
使用下面的命令检查时间服务器同步的状态:
# ntpq -p
用 ntpstat 也可以查看一些同步状态,用 netstat -ntlup 查看端口使用情况!
安装完毕客户端需过 5-10 分钟才能从服务器端更新时间!
相关配置参数说明:
# restrict 权限控制语法为:
# restrict IP mask netmask_IP parameter
# 其中 IP 可以是软件地址,也可以是 default ,default 就类似 0.0.0.0 咯!
# 至于 paramter 则有:
# ignore :关闭所有的 NTP 联机服务
# nomodify:表示 Client 端不能更改 Server 端的时间参数,不过,
# Client 端仍然可以透过 Server 端来进行网络校时。
# notrust :该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域
# noquery :不提供 Client 端的时间查询
# 如果 paramter 完全没有设定,那就表示该 IP (或网域) 『没有任何限制!』
# 设定上层主机主要以 server 这个参数来设定,语法为:
# server [IP|FQDN] [prefer]
# Server 后面接的就是我们上层 Time Server 啰!而如果 Server 参数
# 后面加上 perfer 的话,那表示我们的 NTP 主机主要以该部主机来作为
# 时间校正的对应。另外,为了解决更新时间封包的传送延迟动作,
原文始发于:NTP 服务介绍和配置时间同步
相关文章
- ThinkPad x13 Gen1傲腾H10重装系统的麻烦(0)
- Win10系统电脑进入安全模式的四种方法,让你轻松应对各种问题(0)
- 使用Jetson_benchmark进行性能测试(0)
- 【Python】修改Windows中 pip 的缓存位置与删除 pip 缓存(1)
- ‘%s=%s’ % (k, v) for k, v in params.items(), ^ SyntaxError: Generator expression must be parent(0)