Amazon-Web-Services

Amazon VPC 上的 IPv6:Ubuntu 中缺少預設路由

  • May 14, 2020

現在Amazon 已將 VPC 的 IPv6支持擴展到包括 eu-west-1 在內的大部分全球區域,我正在嘗試連接我的實例。不幸的是,我無法讓路由工作。

我已按照遷移指南中的步驟進行操作,即我已將 IPv6 CIDR 關聯到我們的 VPC,將其中的一部分分配給我們的“公共”子網,更新了 VPC 路由表以::/0通過 igw(網際網路網關)發送,確保將路由表分配給公有子網,並從控制台將 IPv6 地址分配給一些新的 Ubuntu 16.04 實例。

然後,我將 Ubuntu 配置為通過 DHCPv6 獲取分配的地址,如此處所述,通過添加iface eth0 inet6 dhcp到網路設置並重新啟動。

當我重新啟動實例時,啟動需要幾分鐘,但最終我可以登錄並ip a s顯示配置的 IPv4 和全域 IPv6 地址。

但是,v6 網路不起作用:

# ping6 www.google.com
connect: Network is unreachable

路由表確實缺少預設路由:

# ip -6 route
2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256  mtu 9001

手動添加預設 v6 路由,通過ip -6 route add default dev eth0導致看起來正確的路由表:

# ip -6 route
2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256  mtu 9001
default dev eth0  metric 1024

不幸的是,這會導致另一個錯誤:

# ping6 www.google.com
PING www.google.com(dh-in-x6a.1e100.net) 56 data bytes
From dh-in-x6a.1e100.net icmp_seq=1 Destination unreachable: Address unreachable
From dh-in-x6a.1e100.net icmp_seq=2 Destination unreachable: Address unreachable
From dh-in-x6a.1e100.net icmp_seq=3 Destination unreachable: Address unreachable

DHCPv6 客戶端不應該負責添加預設路由嗎?為什麼即使那樣我也無法到達外面的世界?

原來我錯過了遷移指南中的一步。

在現有 VPC 上啟用 IPv6 時,如果您對預設設置進行了修改,則必須手動更新路由表和安全組等某些內容。

我已經更新了我們的路由表(根據http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-routes>)和安全組(根據<http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-sg-rules),但忘記更新我們的網路 ACL,如上所述同一頁。

因此,我有效地為所有 IPv6 流量設置了防火牆。添加入站和出站 ALLOW 規則以::/0修復我的Ubuntu 16.04問題。

對於Ubuntu 14.04,亞馬遜的遷移指南中實際上存在一個錯誤,該錯誤已得到修復。iface eth0 inet6 dhcp添加的建議/etc/networking/interfaces.d/eth0.cfg不起作用,導致配置了 IPv6 地址,但缺少預設路由。

相反,當界面出現時,我必須啟動 dhcp-client,如下所示up dhclient -6:我最終在/etc/networking/interfaces.d/eth0.cfg文件中得到了以下工作配置:

# The primary network interface
auto eth0
iface eth0 inet dhcp
   up dhclient -6 -v -pf /run/dhclient6.$IFACE.pid -lf /var/lib/dhcp/dhclient6.$IFACE.leases $IFACE

亞馬遜似乎已經更新了他們的遷移指南,說了類似的話(http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#ipv6-dhcpv6-ubuntu-14)。

您的路由表看起來不正確。這條線看起來很錯誤:

default dev eth0  metric 1024

該行表示整個網際網路直接連接到您的eth0介面,無需通過任何中間路由器。這將導致您的系統為它試圖到達的每個主機向 LAN 發送鄰居發現請求。如果該主機沒有直接連接到您的 LAN,它將看不到鄰居發現請求。

因此,您不能真正期望任何東西都可以與該路由表一起使用。對於某些路由器,可以配置相鄰路由器來解決您的錯誤配置。但你不應該指望它。相反,您應該找出正確的網關地址並進行配置。

以下是具有功能連接的特定機器上的路由表條目的範例:

default via fe80::1 dev eth0  metric 1024  advmss 1220

via fe80::1部分是你缺少的部分。您應該使用的地址可能與 不同fe80::1,如果他們沒有告訴您,您需要詢問您的提供商要使用的網關地址。我經常看到提供商選擇解決其網關的兩種方法是fe80::1或者是/64前綴::1,在您的情況下將變為2001:DB8:1234:1234::1.

advmss 1220部分不是絕對必要的,但我將其包括在內,因為它可以解決一些 MTU 問題。

修復路由表條目後,接下來的測試步驟是驗證路由器是否顯示在您的鄰居記憶體中。然後使用traceroute6ormtr查看在封包遺失之前您可以獲取多遠的數據包。

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