原始问题:
请参阅下面的更新。
我希望能得到一些帮助来解决我在 Ubuntu 服务器上遇到的问题。我正在运行 16.04 桌面版作为服务器,偶尔我注意到系统时间不同步/停止更新。通常,这会导致远程访问完全丢失,需要重新启动才能修复。以下是 systemctl status systemd-timesyncd.service 的输出:
systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled;
vendor preset: enabled
Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Fri 2018-10-19 00:17:02 PDT; 2 days ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 642 (systemd-timesyn)
Status: "Synchronized to time server 91.189.91.157:123
(ntp.ubuntu.com)."
CGroup: /system.slice/systemd-timesyncd.service
└─642 /lib/systemd/systemd-timesyncd
Oct 19 00:17:02 eric-SFF systemd[1]: Starting Network Time
Synchronization...
Oct 19 00:17:02 eric-SFF systemd[1]: Started Network Time
Synchronization.
Oct 19 00:37:24 eric-SFF systemd-timesyncd[642]: Synchronized to time
server 91.189.94.4:123 (ntp
Oct 19 10:19:00 eric-SFF systemd-timesyncd[642]: Timed out waiting for
reply from 91.189.94.4:123
Oct 19 10:19:00 eric-SFF systemd-timesyncd[642]: Synchronized to time
server 91.189.91.157:123 (n
以下是 timedatectl 的输出:
~$ timedatectl
Failed to query server: Connection timed out
此时系统时间大约偏差 12 小时(报告时间为昨天下午 7 点,实际时间为第二天上午 11 点)。时区正确。
我还注意到,当这种情况发生时,我的 cron 作业会停止运行,因为我有一个 cron 作业会定期检查互联网连接并将其输出报告到日志文件。此日志文件在时间不同步时停止更新。我还有一个 cron 作业会备份某些目录,而这些备份不是最新的。
如果任何其他信息有帮助,请告诉我。我对 Ubuntu 还是个新手。
谢谢!!
更新:
@Damocles 感谢您的建议。是的,计算机具有有效的网络连接。我没有设置任何防火墙规则来允许 NTP(端口 123)通过 UFW 或我的 Ubiquiti 路由器上的防火墙。但是,它仍然可以工作一段时间(有时一次几周),然后才会出现问题。这仍然是防火墙问题吗?
我继续添加了 ufw 规则,并在路由器中添加了防火墙例外和 NAT 转换,然后重新启动了服务器。目前同步成功,但我的防火墙似乎没有妨碍,因为该规则的流量计数没有增加。
还有其他什么因素会阻止此连接吗?也许某些因素一开始可以让它工作,但最终会导致 NTP 访问中断/被阻止?
我还发现此命令可以检查时间同步状态,但它返回未知的操作错误:
:~$ timedatectl timesync-status
Unknown operation timesync-status
新更新 11/1/18
我按照建议安装了 chrony,但在 24 小时内仍然遇到同样的问题。肯定出了问题。在全新启动和安装 chrony 后约 16 小时,以下是一些 chrony 命令的输出:
:~$ chronyc sources
210 Number of sources = 11
MS Name/IP address Stratum Poll Reach LastRx Last sample
===========================================================================
^? up2.com 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? 216-228-47-167.midrivers. 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? blue.1e400.net 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? 12.167.151.1 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? lithium.constant.com 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? clock.xmission.com 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? ha81.smatwebdesign.com 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? srcf-ntp.stanford.edu 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? time1.plumdev.net 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? SunSITE.icm.edu.pl 0 6 377 10y +0ns[ +0ns] +/-
0ns
^? time.no-such-agency.net 0 6 377 10y +0ns[ +0ns] +/-
0ns
:~$ chronyc sourcestats
210 Number of sources = 11
Name/IP Address NP NR Span Frequency Freq Skew Offset Std
Dev
============================================================================
up2.com 0 0 0 +0.000 2000.000 +0ns
4000ms
216-228-47-167.midrivers. 0 0 0 +0.000 2000.000 +0ns
4000ms
blue.1e400.net 0 0 0 +0.000 2000.000 +0ns
4000ms
12.167.151.1 0 0 0 +0.000 2000.000 +0ns
4000ms
lithium.constant.com 0 0 0 +0.000 2000.000 +0ns
4000ms
clock.xmission.com 0 0 0 +0.000 2000.000 +0ns
4000ms
ha81.smatwebdesign.com 0 0 0 +0.000 2000.000 +0ns
4000ms
srcf-ntp.stanford.edu 0 0 0 +0.000 2000.000 +0ns
4000ms
time1.plumdev.net 0 0 0 +0.000 2000.000 +0ns
4000ms
SunSITE.icm.edu.pl 0 0 0 +0.000 2000.000 +0ns
4000ms
time.no-such-agency.net 0 0 0 +0.000 2000.000 +0ns
4000ms
我认为“Reach”不为零意味着它通过了防火墙,所以我认为这不是问题所在。此外,这些命令最初返回了正常输出。
答案1
我假设您有一个有效的网络连接。timedatectl 的日志表明它无法连接到 91.189.94.4:123 的默认 ubuntu 时间服务器并且超时。这很可能是您这边的防火墙问题,要做的第一件事是检查 UFW(Ubuntu 的防火墙)是否允许 NTP 通过端口 123。
sudo ufw 允许 ntp
这将允许端口 123 上的流量进出,如果此后您仍然从服务器收到超时,我建议使用该命令暂时禁用 UFW 进行测试。
sudo Ufw禁用
然后检查状态,看看是否仍然超时。确保在此测试后重新启用 ufw。
如果此操作失败,则可能是您的流量被网络上的路由器阻止了。如果您有权访问此路由器,请查阅有关如何将端口列入白名单的文档或询问您的系统管理员。网络阻止除专用内部 NTP 服务器之外的所有 NTP 流量出入的情况并不少见。