首先,在终端中更新你的包列表,然后安装NTP。输入下面的命令:
sudo apt update
sudo apt install ntp
编辑NTP的配置文件,这里我们使用nano文本编辑器,但你也可以使用你喜欢的其他编辑器。
sudo nano /etc/ntp.conf
在此文件中,找到以"pool"开头的行,它们定义了NTP将与之同步的服务器。你可以保留默认值,或者根据需要添加/更改。例如:
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst
iburst
选项表示如果服务器没有响应,客户端将发送一串数据包。
保存并关闭配置文件。然后重启NTP服务,以便更改生效。
sudo systemctl restart ntp
你可以使用以下命令来检查NTP服务的状态。
sudo systemctl status ntp
ntpq -p
检查本地ntp服务是否正常通过运行以下命令,可以查看服务器是否正在与其它NTP服务器进行同步。
ntpq -p
上述ntpq -p
命令的输出结果显示了NTP服务器正在与多个远程服务器同步。在’remote’列中,每行的开头字符有特殊含义:
从这个列表中可以看到,NTP服务器正常工作,并且已经选择了一个同步源(*dns2.synet.edu.)。此外,还有几个候选源(+36.110.235.196和+36.110.233.85)。
如果希望让服务器只在内网中服务,需要检查/etc/ntp.conf
配置文件,确保只有内部时间源被列为server或pool,同时注释掉或删除其他外部服务器的配置。
例如,需要将/etc/ntp.conf
文件中的以下行注释掉或删除:
0.ubuntu.pool.ntp.org
1.ubuntu.pool.ntp.org
2.ubuntu.pool.ntp.org
3.ubuntu.pool.ntp.org
并添加内部时间源,如果没有的话就使用本地的硬件时钟:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
然后重启NTP服务:
sudo systemctl restart ntp
再次运行ntpq -p
,应该只能看到内部服务器或者本地时钟。
ntpdate -q xxx
查询ntp服务器时间我在我另一台主机192.168.1.140
上执行ntpdate -q 192.168.1.134
(134是我ntp服务器所在主机):
解释:
上述命令 ntpdate -q 192.168.1.134
的 -q
参数代表 query(查询),即查询并不真正设置系统时间。这里正在查询 IP 地址为 192.168.1.134 的 NTP 服务器的时间。
输出结果中的各部分意义如下:
server 192.168.1.134, stratum 2, offset 12.812453, delay 0.02638
:这一行显示了NTP服务器的信息。stratum 是指服务器在 NTP 层级中的位置,数字越小表示越接近参考源,其值为2。offset 是指您的系统时间相对于NTP服务器的时间差,以秒为单位,这里是 12.812453 秒。delay 是从您的系统到NTP服务器的往返延迟时间,这里是 0.02638 秒。
25 Sep 16:06:12 ntpdate[21820]: step time server 192.168.1.134 offset 12.812453 sec
:这一行是实际执行更新操作的日志记录。但由于 -q
参数只进行查询而不执行更新,所以这个操作并没有真变系统时间。如果没有 -q
参数,系统会试图根据这个 offset 调整系统时间。
这个命令和结果显示了你的机器与指定的 NTP 服务器相比,系统时间有约 12.812453 秒的差距。
(反正执行这个命令能获取到时间,说明我们部署没啥问题)