Networking

從 Amazon VPC 中排除“網路無法訪問”問題

  • July 6, 2015

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

請注意,我自己的 VPC 內的 AWS Route 53 dns 伺服器正在解析 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

有問題的 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)

引用自:https://serverfault.com/questions/703849