GCP VPC Network peering 配置教程
总览
两个不同project 甚至是不同organization 的Network,可以透过VPC peering 的服务,达到私有网路(RFC 1918 规范)互连的效果。
VPC Network Peering 的规范
- VPC Network Peering 适用于Compute Engine, Kubernetes Engine 以及App Engine Flex
- Peered Networks的Routes, firewalls, VPNs 以及其他流量监控的工具都是单独管理的
- 一个VPC Network 可以与许多其他的Network peering,但是有以下限制
- 一个Network 最多只能有25 个peering Networks
- 一个Network 以及与他peered Networks 最多能有15,500 个instance
- Internal Load Balancing 的forwarding rules,一个Network 最多只能有50 个
- Peered Networks 之间的subnet IP range 不能重叠
- VPC网络对等不支持传统网络
- 不能透过peered networks 连线至VPN
- Peered Networks 之间的流量延迟与单一Network 内的相同
VPC Network Peering 手把手教学
权限以及Network 设定
在执行这以下的步骤前,需要先确定该使用者有roles/editor或是roles/compute.networkAdmin的IAM roles。在Project A建立一个新的Network以及subnet。#切记两个Network的subnet不能重叠。
gcloud compute --project=[ProjectNameA] \
networks create network-a --subnet-mode=custom
gcloud compute --project=[ProjectNameA] \
networks subnets create peer-a --network=network-a \
--region=asia-east1 --range=10.0.0.0/16
在Project B 建立一个新的Network 以及subnet。#切记两个Network 的subnet 不能重叠。
gcloud compute --project=[ProjectNameB] \
networks create network-b --subnet-mode=custom
gcloud compute --project=[ProjectNameB] \
networks subnets create peer-b --network=network-b \
--region=asia-east1 --range=10.8.0.0/16
VPC网络对等设置
从Project A 设定peering,[network-A], [ProjectNameB], [network-B] 自行带入
gcloud compute networks peerings create peer-ab \
--network [network-A] \
--peer-project [ProjectNameB] \
--peer-network [network-B] \
--auto-create-routes
确认Project A 的Network 的peering 状况,初始为INACTIVE
gcloud compute networks peerings list --network network-A
从Project B 设定peering,[network-B], [ProjectNameA], [network-A] 自行带入
gcloud compute networks peerings create peer-ba \
--network [network-B] \
--peer-project [ProjectNameA] \
--peer-network [network-A] \
--auto-create-routes
确认Project B 的Network 的peering 状况,从INACTIVE 变为ACTIVE
gcloud compute networks peerings list --network network-B
进入到各个Project的VPC network peering页面,如果可以看到Connected的绿灯就表示peering成功。
防火墙设定
因为刚刚新增的subnet 为custom mode,所以需要自行设定防火墙。以下的指令根据使用者的需求,自行建立。开启SSH 的22 port:
gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0
开启RDP 的3389 port:
gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=tcp:3389 --source-ranges=0.0.0.0/0
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=tcp:3389 --source-ranges=0.0.0.0/0
开启icmp:
gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=icmp --source-ranges=0.0.0.0/0
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-ssh \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=icmp --source-ranges=0.0.0.0/0
开通internal 连线:
gcloud compute --project=[ProjectNameA] firewall-rules create peering-allow-internal \
--direction=INGRESS --priority=65534 --network=[network-A] \
--action=ALLOW --rules=tcp:0-65535,udp:0-65535,icmp --source-ranges=10.8.0.0/16
gcloud compute --project=[ProjectNameB] firewall-rules create peering-allow-internal \
--direction=INGRESS --priority=65534 --network=[network-B] \
--action=ALLOW --rules=tcp:0-65535,udp:0-65535,icmp --source-ranges=10.0.0.0/16
如果使用GCP 的default network,预设防火墙从外到内的流量是全关的。


QQ咨询
旺旺咨询