
Google Cloud Platform で、ipv6.google.com に正常に ping できるシンプルな VM をセットアップしようとしています。IPv6 サポートに関する以下の GCP ドキュメントを使用しています:
- https://cloud.google.com/vpc/docs/vpc#ipv6-addresses
- https://cloud.google.com/vpc/docs/using-vpc#サブネットを有効にする-ipv6
- https://cloud.google.com/compute/docs/ip-addresses/configure-ipv6-address
[注記: 使用されたコマンド全体を提供するために編集/更新されました]
ここに、シンプルで繰り返し可能な概念実証を示します。
- プロジェクト内で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
- 外部 IPv6 リソースへの ping を試みます:
$ 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 で必要なのに私が見逃している何かがありますか?
答え1
外部 IPv6 アドレス経由で VPC から Google API およびサービスに接続することは、現在サポートされていません。IPv6 経由で Cloud VM から「ipv6.google.com」に ping しようとすると、宛先に到達できない ICMP 応答が返されることがよくあります。
おっしゃった手順で設定を再現しましたが、ipv6.google.com に ping しようとしたときに同じ「宛先に到達できません: ルートがありません」というエラーが表示されました。ただし、「wikipedia.org」などの他の IPv6 サイトには問題なく ping できました。
さらに、IPv6ネットワークでVMを最大限に活用するには、GCPを組み込むことをお勧めします。IPv6 対応の負荷分散。