Linux-Networking
GCP,Linux VM 實例的基本 IPv6 設置
我正在嘗試在 Google Cloud Platform 中設置一個可以成功 ping ipv6.google.com 的簡單 VM。我正在使用這些關於 IPv6 支持的 GCP 文件,包括:
- https://cloud.google.com/vpc/docs/vpc#ipv6-addresses
- https://cloud.google.com/vpc/docs/using-vpc#subnet-enable-ipv6
- https://cloud.google.com/compute/docs/ip-addresses/configure-ipv6-address
$$ NOTE: Edited/updated to provide full commands used $$
這是我的簡單且可重複的概念證明:
- 在一個項目中,創建一個 VPC 網路
$ gcloud config set project my-test-project $ gcloud compute networks create targetnet \ --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
- 創建支持 IPv6 的子網
$ gcloud compute networks subnets create targetnet-1 \ --network=targetnet --range=10.9.9.0/24 \ --stack-type=IPV4_IPV6 --ipv6-access-type=EXTERNAL \ --region=us-west2
- 創建支持 IPv6 的實例
$ gcloud compute instances create test-1 \ --stack-type=IPV4_IPV6 --ipv6-network-tier=PREMIUM \ --subnet=targetnet-1 --zone=us-west2-a \ --image-family=debian-10 --image-project=debian-cloud \ --machine-type=e2-micro
- 添加防火牆規則以授予對實例的 SSH 訪問權限
$ gcloud compute firewall-rules create target-ssh-home \ --network targetnet --allow tcp:22 --source-ranges <my IPv4 addr>
- SSH 到實例,查看網路地址和路由:
$ ip -6 addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 state UP qlen 1000 inet6 2600:1900:xxxx:xxxx:0:1::/128 scope global valid_lft forever preferred_lft forever inet6 fe80::4001:aff:fe04:2d2/64 scope link valid_lft forever preferred_lft forever $ ip -6 route ::1 dev lo proto kernel metric 256 pref medium 2600:1900:xxxx:xxxx:0:1:: dev ens4 proto kernel metric 256 pref medium fe80::/64 dev ens4 proto kernel metric 256 pref medium default via fe80::4001:aff:fe04:201 dev ens4 proto ra metric 1024 expires 85sec pref medium
- 嘗試 ping 外部 IPv6 資源:
$ ping6 ipv6.google.com PING ipv6.google.com(lax31s01-in-x0e.1e100.net (2607:f8b0:4007:80e::200e)) 56 data bytes From fe80::4001:ff:fe00:0%ens4 (fe80::4001:ff:fe00:0%ens4): icmp_seq=1 Destination unreachable: No route
文件表明防火牆預設值應允許傳出 ICMP。儘管如此,我還嘗試添加防火牆規則以允許各種形式的 ICMP(和每個)服務,看看是否有幫助。這並沒有改變結果。此外,我確認 GCP 為網路添加了預設 IPv6 路由。(::/0)。
根據文件,GCP 將提供 /64 並且應該為 NIC 分配該範圍內的第一個地址。我在這裡看不到。我需要在主機上做些什麼來獲得它嗎?還是我錯過了 GCP 中需要的東西?
目前不支持通過外部 IPv6 地址從 VPC 連接到 Google API 和服務。通過 IPv6 從 Cloud VM ping ‘ipv6.google.com’ 的努力通常會導致目標無法訪問 ICMP 響應。
我已經使用您提到的步驟複製了您的設置,並且在嘗試 ping ipv6.google.com 時也遇到了相同的“無法訪問的目標:無路由”錯誤,但是我能夠 ping 其他 IPv6 站點,例如“wikipedia.org”相當成功。
此外,為了最好地使用具有 IPv6 網路的 VM,您可能更願意將 GCP負載平衡與 IPv6 支持結合起來。