从 Amazon VPC 中排除“网络无法访问”故障

从 Amazon VPC 中排除“网络无法访问”故障

EC2 实例在 VPC 中的公共子网中运行 Amazon Linux。

以下是其安全组的出站规则:

ALLOW TCP on port 80 to 0.0.0.0/0
ALLOW TCP on port 443 to 0.0.0.0/0
ALLOW ICMP to 0.0.0.0/0

首先我通过 SSH 进入实例。然后,我尝试向外部互联网发出一个简单的请求:

[ec2-user@nat1 ~]$ curl -v wikipedia.org/
*   Trying 208.80.154.224...
*   Trying 2620:0:861:ed1a::1...
* Immediate connect fail for 2620:0:861:ed1a::1: Network is unreachable

请注意,DNS 由 VPC 内我自己的 AWS Route 53 DNS 服务器解析,因此这并不能证明外部连接。

我看不到Trying 208.80.154.224...有关失败的详细信息——有什么方法可以获取更多信息吗?

下一步看起来像是尝试将该地址转换为 IPv6,但格式不正确。这是线索吗?还是 IPv4 失败时的自动补救措施?

最终的错误“网络无法访问”似乎可能是指 IPv6 网络的整体故障 - 这对于我现在的目的来说没问题。因此,我仍然需要寻找有关第一次尝试正确的 IPv4 地址失败的更多详细信息。

现在,这是此 EC2 实例的网络接口的子网流日志中的条目,仅过滤了 IP 地址208.80.154.224。我看到的所有行都以ACCEPT OK这样的结尾:

Event Data
2 027141088039 eni-66c1933c 10.0.17.220 208.80.154.224 60761 80 6 2 120 1436199193 1436199253 ACCEPT OK

答案1

有问题的 EC2 实例没有公共 IPv4 地址因此无法参与互联网。

只需为实例分配一个公共 IP 地址,然后:

[ec2-user@nat1 ~]$ curl -v wikipedia.org/
*   Trying 208.80.154.224...
* Connected to wikipedia.org (208.80.154.224) port 80 (#0)

相关内容