Linux-Networking

GCP,Linux VM 實例的基本 IPv6 設置

  • July 28, 2021

我正在嘗試在 Google Cloud Platform 中設置一個可以成功 ping ipv6.google.com 的簡單 VM。我正在使用這些關於 IPv6 支持的 GCP 文件,包括:

$$ NOTE: Edited/updated to provide full commands used $$

這是我的簡單且可重複的概念證明:

  1. 在一個項目中,創建一個 VPC 網路
$ gcloud config set project my-test-project

$ gcloud compute networks create targetnet \
  --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
  1. 創建支持 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
  1. 創建支持 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 
  1. 添加防火牆規則以授予對實例的 SSH 訪問權限
$ gcloud compute firewall-rules create target-ssh-home \
  --network targetnet --allow tcp:22 --source-ranges <my IPv4 addr>
  1. 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
  1. 嘗試 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 支持結合起來。

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