我只是尝试在EC2实例上与NTP服务器同步时间:
服务器 0.amazon.pool.ntp.org iburst
服务器 1.amazon.pool.ntp.org iburst
服务器 2.amazon.pool.ntp.org iburst
服务器 3.amazon.pool.ntp.org iburst
不幸的是,我无法与NTP服务器同步。我的问题是:
- 我们是否应该在安全组中打开端口以允许 NTP 服务器连接到 EC2 实例?
- 如果是,那么我们如何知道哪个IP amazon.pool.ntp.org(它随着时间的推移而变化),并且我们无法打开所有流量
提前感谢,
东安道
您需要允许安全组上端口 123 上的出站流量为 0.0.0.0/0,NTP 才能正常工作。
如果您的 EC2 实例位于公有子网中,则您只需在安全组上允许此操作。
但是,如果您的 EC2 实例位于私有子网中,则需要允许端口 123 上的入站和出站流量,以便您的 NAT 传递请求和响应。您的 EC2 实例(而不是全球)需要入站。
根据AWS的文档
默认情况下,在 Amazon Linux 实例上配置网络时间协议 (NTP);但是,实例需要访问互联网才能使用标准 NTP 配置。实例的安全组还必须允许端口 123 (NTP)
上的出站 UDP 流量 来源: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html
因此,我们需要允许出站流量到安全组上端口 123 上的 0.0.0.0/0,以便 NTP 正常工作
对于最近访问的任何人,AWS 现在都有自己的时间服务器:https://aws.amazon.com/blogs/aws/keeping-time-with-amazon-time-sync-service/(也只是为了重申:您确实需要在 AWS VM 上进行时间同步,否则它们会在几个月后出现明显的偏移量)。
要使用它们,您需要将 NTP 服务器(ntpd 或 chronyd)配置为使用服务器169.254.169.123
。这个神奇的 IP 位于 AWS 内,因此不会从 VPC 或互联网上消失。根据@Rolo787的评论,不需要更改安全组,因为它是"本地链接"(请参阅 https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)。
请注意,通常包括多个服务器,并让您的客户端计算出所有服务器的时间。在 AWS 案例中,即使它只是一个 IP,您也要与多个服务器通信,因此不需要特别使用多个 IP。如果您被允许使用互联网 NTP 服务器以及 AWS 服务器,那么配置多个服务器(也许在 AWS 服务器上使用prefer
选项)并没有什么坏处。
无需为 NTP 打开入站流量,只需要出站访问。只要您的实例可以访问互联网,就可以解析 ntp 池地址。
因此,请打开您的出站地址/端口,并确保您的实例可以直接或通过 NAT 或其他方式访问互联网。