Networking
從 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
請注意,我自己的 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)