
ipv6.google.com을 성공적으로 핑할 수 있는 간단한 VM을 Google Cloud Platform에 설정하려고 합니다. 저는 다음을 포함하여 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
[참고: 사용된 전체 명령을 제공하도록 편집/업데이트되었습니다.]
다음은 간단하고 반복 가능한 개념 증명입니다.
- 프로젝트 내에서 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 지원을 통한 로드 밸런싱.