我已经有了我的 Ubuntu EC2 机器上的时间准确性存在一些严重问题,漂移时间超过 60 秒。
一种可能的解决方案是运行ntpdate
或ntp
,但我无法让它们在 EC2 上运行:
$ sudo ntpdate ntp.nasa.gov time-b.nist.gov
23 Jun 07:17:23 ntpdate[3878]: no server suitable for synchronization found
我尝试过什么:
- 我正在测试的特定机器上的端口对 TCP 和 UDP 、入站和出站开放(见下文)。
- 我已经在多台机器上测试了这种行为。
- 我尝试过不同的时间服务器。
- 我已经尝试过
ntpdate
和ntp
。
知道如何同步我的机器上的时间吗?
安全组
详细日志
$ sudo ntpdate -vd ntp.nasa.gov time-b.nist.gov
23 Jun 07:24:08 ntpdate[3890]: ntpdate [email protected] Wed Oct 9 19:08:07 UTC 2013 (1)
Looking for host ntp.nasa.gov and service ntp
host found : ntp-nasa.arc.nasa.gov
Looking for host time-b.nist.gov and service ntp
host found : time-b.nist.gov
transmit(198.123.30.132)
transmit(129.6.15.29)
transmit(198.123.30.132)
transmit(129.6.15.29)
transmit(198.123.30.132)
transmit(129.6.15.29)
transmit(198.123.30.132)
transmit(129.6.15.29)
transmit(198.123.30.132)
transmit(129.6.15.29)
198.123.30.132: Server dropped: no data
129.6.15.29: Server dropped: no data
server 198.123.30.132, port 123
stratum 0, precision 0, leap 00, trust 000
refid [198.123.30.132], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time: 00000000.00000000 Mon, Jan 1 1900 0:00:00.000
originate timestamp: 00000000.00000000 Mon, Jan 1 1900 0:00:00.000
transmit timestamp: d752549e.e0fc7517 Mon, Jun 23 2014 7:24:14.878
filter delay: 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
server 129.6.15.29, port 123
stratum 0, precision 0, leap 00, trust 000
refid [129.6.15.29], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time: 00000000.00000000 Mon, Jan 1 1900 0:00:00.000
originate timestamp: 00000000.00000000 Mon, Jan 1 1900 0:00:00.000
transmit timestamp: d752549f.142f86b3 Mon, Jun 23 2014 7:24:15.078
filter delay: 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
23 Jun 07:24:17 ntpdate[3890]: no server suitable for synchronization found
答案1
您的安全组看起来像 VPC 版本,如果是这样的话,我必须在我的网络 ACL 上打开 UDP123/UDP* 才能使其正常工作。VPC 有两层数据包过滤,网络 ACL 后面是安全组。SG 是有状态的(首次连接时不需要入站规则),但 NACL 是无状态的(需要规则来接收数据包)。一旦我添加了适当的配置行,NTP 就可以完美运行。
我仅将该行添加到运行我的服务实例的外部 NACL 中,以便它们可以访问外部 NTP,然后它们为我的网络的其余部分运行 NTP 代理。
祝你好运!
答案2
在 EC2 中,该-u
标志是必需的:
$ sudo ntpdate -u ntp.nasa.gov time-b.nist.gov
24 Jun 11:16:33 ntpdate[27714]: adjust time server 129.6.15.29 offset 0.047272 sec
来自手册:
-u Direct ntpdate to use an unprivileged port for outgoing packets. This is most useful when behind a firewall that blocks incoming traffic to
privileged ports, and you want to synchronise with hosts beyond the firewall. Note that the -d option always uses unprivileged ports.
答案3
亚马逊提供Amazon 时间同步服务这消除了您遇到的时间漂移。每个 EC2 实例上要执行的总体步骤如下:
- 使用以下方式删除 NTP
sudo apt-get remove ntp
- 使用安装 Chrony
sudo apt install chrony
- 用于
sudo vim /etc/chrony/chrony.conf
编辑要包含的文件server 169.254.169.123 prefer iburst
- 使用以下方法重启 Chrony
sudo /etc/init.d/chrony restart
- 验证 Chrony 是否使用了正确的 IP
chronyc sources -v
,并验证输出是否包含“^* 169.254.169.123” - 通过浏览目录来确定最佳使用城市
ls /usr/share/zoneinfo/
- 使用上一步中的路径从 UTC 更新时区,例如
sudo timedatectl set-timezone /usr/share/zoneinfo/America/Chicago