我正在尝试将系统时钟同步设置为是。即使在尝试了各种不同的端点之后,我仍然不断看到“等待来自 [端点:123] 的回复超时”。
scanlon@ogserver:~$ timedatectl 当地时间: 星期五 2021-01-08 02:37:45 UTC 世界时间: 星期五 2021-01-08 02:37:45 UTC RTC 时间:2021-01-08 星期五 02:37:45 时区:Etc/UTC(UTC,+0000) 系统时钟同步:否 NTP服务:活动 本地 TZ 中的 RTC:否 scanlon@ogserver:~$ systemctl status systemd-timesyncd ● systemd-timesyncd.service - 网络时间同步 已加载:已加载(/lib/systemd/system/systemd-timesyncd.service;已启用;供应商预设:e 活跃:自 2021-01-08 星期五 01:44:49 UTC;50 分钟前开始活跃(运行) 文档:man:systemd-timesyncd.service(8) 主 PID:4799(systemd-timesyn) 状态:“空闲。” 任务:2(限制:38041) 内存:1.6M CGroup:/system.slice/systemd-timesyncd.service └─4799 /lib/systemd/systemd-timesyncd
1 月 8 日 02:28:15 ogserver systemd-timesyncd[4799]: 等待来自 192.168.0.1:123 (192.168.0.1) 的回复超时。
我的 UFW 在端口 123 上打开 行动来自 -- ------ ---- [ 1] 2222/tcp 允许任何地方 [ 2] 22/tcp 任何地方拒绝 [ 3] 30303 允许进入任何地方 [ 4] 1300/tcp 允许任何地方 [ 5] 1200/udp 允许任何地方 [ 6] 123/tcp 允许任何地方进入 [ 7] 123/udp 允许任何地方 [ 8] 2222/tcp (v6) 允许任何地方 (v6) [ 9] 22/tcp (v6) 任意位置拒绝接入 (v6) [10] 30303 (v6) 允许在任何地方进入 (v6) [11] 1300/tcp (v6) 允许任何地方 (v6) [12] 1200/udp (v6) 允许任何地方 (v6) [13] 123/tcp (v6) 允许任何地方 (v6) [14] 123/udp (v6) 允许任何地方 (v6) 我的路由器的防火墙在 123 上打开。 我在配置中尝试了多个 NTP 端点,包括: 默认 谷歌的 一些 .us 一 我的路由器状态页面上显示的 NTP 服务器 本地网关地址,希望我的路由器可以处理它。
一般来说,我的防火墙非常严格,但我的理解是 NTP 只需要 123 即可成功。
关于如何防止超时停止或将同步设置为是,有什么建议吗?我已经在每个端点上等待了几个小时,看看它是否只是需要时间来处理,但总是回到不同步和日志中更多的超时。
答案1
我的路由器有一个防火墙部分,您可以通过端口允许流量进入/流出/同时流向“所有地址”。它还具有端口转发功能。我只完成了前者,显然我需要两者。NTP 协议通信是否真的从 NTP 服务器初始化?我本以为你自己的设备(在防火墙后面)会询问现在几点,然后 NTP 服务器将被允许通过防火墙回复。事实并非如此?
答案2
这是一篇旧帖子,但我想分享我如何修复它。是的,当 NTP 客户端发送同步请求(出站流量)时,它应该允许来自 NTP 服务器的入站响应,只要防火墙是有状态的并且出站端口 123 到所有目标 IPv4/IPv6(如果 fw 支持,最好使用主机名 ntp.ubuntu.com) 被允许。
注意:我们只能使用 ntpd 或 systemd-timesyncd 服务,但不能同时使用两者,建议使用 systemd-timesyncd。
就我而言,我必须首先修复时区设置,添加防火墙规则,然后停止并启动 timedatectl 服务以强制时间同步。
date
timedatectl list-timezones | grep US
timedatectl set-timezone US/Eastern //更改时区
date
timedatectl status //系统时钟同步:没有
systemctl status systemd-timesyncd //它显示正在启动与 NTP 的通信
将出站 UDP 端口 123 的防火墙设置更改为所有 ipv4,然后...
systemctl status systemd-timesyncd //现在显示理想并且超时
timedatectl status //仍然系统时钟同步:否
然后我停止并启动服务,然后时间同步成功。
date
timedatectl status
systemctl status systemd-timesyncd
systemctl stop systemd-timesyncd
systemctl start systemd-timesyncd
systemctl status systemd-timesyncd //现在它显示理想并尝试同步
date
timedatectl status //现在系统时钟已同步:是
我希望这有帮助。
谢谢,