尽管 GCP 文档声称在制定防火墙规则时支持 IPv6 地址(https://cloud.google.com/vpc/docs/firewalls)我似乎无法实现它。来自此文档:
- 防火墙规则支持 IPv4 连接。启用 IPv6 的 VPC 网络中也支持 IPv6 连接。通过地址指定入站规则的源或出站规则的目标时,您可以以 CIDR 表示法指定 IPv4 或 IPv6 地址或块。
- 每个防火墙规则可以包含 IPv4 或 IPv6 范围,但不能同时包含两者。
但是,当我尝试使用 IPv6 地址创建防火墙规则时,出现错误,并且不允许我保存它,如下面的屏幕截图所示。
上面的示例显示了我尝试过的两个示例,但我尝试过使用单个地址、有和没有 CIDR 块等。它们都被拒绝了。我已确认 VPC 子网已启用 IPv6。
我是否遗漏了什么?
答案1
GUI 对我来说也不起作用,但我能够使用等效的 gcloud 命令成功创建防火墙规则。
为了测试,我创建了一个新的 VPC、新的子网和新的防火墙规则:
error@cloudshell:~ (strange-passage-193919)$ gcloud compute networks create ipv6test --project=strange-passage-193919 --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
Created [https://www.googleapis.com/compute/v1/projects/strange-passage-193919/global/networks/ipv6test].
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4
ipv6test CUSTOM REGIONAL
Instances on this network will not be reachable until firewall rules
are created. As an example, you can allow all internal traffic between
instances as well as SSH, RDP, and ICMP by running:
$ gcloud compute firewall-rules create <FIREWALL_NAME> --network ipv6test --allow tcp,udp,icmp --source-ranges <IP_RANGE>
$ gcloud compute firewall-rules create <FIREWALL_NAME> --network ipv6test --allow tcp:22,tcp:3389,icmp
error@cloudshell:~ (strange-passage-193919)$ gcloud compute networks subnets create ipv6test --project=strange-passage-193919 --range=10.16.0.0/20 --network=ipv6test --region=us-west2
Created [https://www.googleapis.com/compute/v1/projects/strange-passage-193919/regions/us-west2/subnetworks/ipv6test].
NAME REGION NETWORK RANGE STACK_TYPE IPV6_ACCESS_TYPE IPV6_CIDR_RANGE EXTERNAL_IPV6_CIDR_RANGE
ipv6test us-west2 ipv6test 10.16.0.0/20 IPV4_ONLY
error@cloudshell:~ (strange-passage-193919)$ gcloud compute networks subnets update ipv6test --project=strange-passage-193919 --stack-type=IPV4_IPV6 --ipv6-access-type=EXTERNAL --region=us-west2
Updated [https://www.googleapis.com/compute/v1/projects/strange-passage-193919/regions/us-west2/subnetworks/ipv6test].
error@cloudshell:~ (strange-passage-193919)$ gcloud compute --project=strange-passage-193919 firewall-rules create ruletest --direction=INGRESS --priority=1000 --network=ipv6test --action=ALLOW --rules=tcp:22 --source-ranges=2001:db8::/32
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/strange-passage-193919/global/firewalls/ruletest].
Creating firewall...done.
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
ruletest ipv6test INGRESS 1000 tcp:22 False
error@cloudshell:~ (strange-passage-193919)$