GCP信用号 谷歌云 GCP 账号混合云连接代办
别再对着GCP文档抓狂了:混合云连接不是玄学,是拧螺丝
GCP信用号 上周五凌晨2:17,我盯着GCP控制台里那条标着“BGP邻居状态:Idle”的红色小字,手边咖啡凉透,耳机里还循环播放着运维同事第7次发来的语音:“哥,客户说ERP系统连不上GCP上的PostgreSQL……你那边路由是不是又飘了?”
这不是科幻片,是混合云落地现场最真实的BGM。GCP混合云连接,听着高大上,干起来全是土味细节——比如你千辛万苦配好Cloud Router,结果发现本地路由器的AS号少写了个零;或者防火墙规则写了十条,唯独漏掉UDP 179端口(BGP握手专用),硬生生让两个网络在门口互相鞠躬三分钟,就是不进门。
第一步:先别急着点“创建VPN隧道”,画张草图比敲代码重要
很多团队一上来就猛点GCP控制台,结果VPC网段和本地IDC撞车,IP一冲突,整个连接直接变行为艺术。我的血泪建议:拿出一张A4纸,左手列本地IDC网段(比如10.150.0.0/16),右手写GCP VPC网段(千万别用默认的10.0.0.0/16!),中间画个箭头,标上“Cloud VPN Gateway”。重点来了——两段网络必须互不重叠,且最好预留扩展位。我们曾因没留余量,后期加IoT子网时被迫重配整套BGP,三天没睡囫囵觉。
顺手检查本地设备:你的防火墙/路由器是否支持RFC 4271(BGPv4)?老款Juniper SRX 100系列默认关BGP,得进CLI手动开;华为USG6000系列要升级到V500R007C20SPC300以上才稳。别信厂商PPT写的“全支持”,实测为准。
第二步:Cloud Router不是路由器,是GCP的BGP翻译官
很多人误以为Cloud Router能转发流量——错。它本质是个BGP协议代理:把本地BGP宣告的路由,翻译成GCP内部可识别的静态路由;再把GCP VPC里的路由,打包成BGP Update报文发出去。它自己不扛数据包,纯做“传话筒”。所以配置时核心就三件事:
- 选对区域(必须和你的VPN Gateway同Region);
- AS号别填错(GCP默认64512-65534,但若本地用65001,这里就得填65001,不是随便凑数);
- 启用“广告自定义路由”——否则GCP默认只广播VPC主网段,你新建的subnet(比如10.10.200.0/24)永远不露脸。
有次客户坚持用64512当AS号,结果本地设备BGP会话死活建不起来。抓包一看:GCP发的是OPEN消息,本地回了个NOTIFICATION,错误码6/2(Bad AS Number)。翻GCP文档小字才发现:64512是IANA保留的私有AS号,但GCP Cloud Router要求AS号必须在64512-65534范围内,且不能与本地完全一致——得错开!最后改成64513,秒通。
第三步:BGP邻居建立失败?先查这五个“沉默杀手”
当你看到“Idle→Active→Connect→OpenSent→OpenConfirm→Established”这条理想链路卡在任一环节,别急着重启服务,按顺序敲这五条命脉:
- 本地BGP邻居IP是否指向Cloud VPN Gateway的外部IP? 注意!不是Cloud Router的IP(它压根没公网IP),而是VPN网关那个黄色高亮的eip-xxx地址;
- TCP 179端口是否双向放行? GCP防火墙默认阻UDP/TCP所有入向,你得手动加一条:目标标签=cloud-router,源IP=本地设备公网IP,端口=179,协议=tcp;
- 本地BGP配置的hold time是否≤GCP默认的90秒? 若你设了120秒,GCP等不到心跳直接断连——文档藏在“高级BGP选项”折叠菜单里,小字写着“hold time must be ≤ 90”;
- MD5密码是否严格区分大小写+特殊字符转义? 我们曾用密码
!@#,本地设备把@解析成参数分隔符,实际传给GCP的是 !,自然认证失败; - 本地路由策略是否过滤了GCP宣告的/32主机路由? 某些厂商防火墙默认丢弃/32路由,而GCP为每个Cloud Router接口分配/32地址,导致邻居根本收不到Keepalive。
第四步:流量不通?90%问题出在GCP防火墙的“隐形墙”上
GCP防火墙规则是“拒绝所有,仅允许白名单”,这点和传统防火墙反着来。新手常犯的错:只开了TCP 443,却忘了ICMP(排查必备)、SSH(跳板机连GCE)、甚至DNS(内网域名解析)。更隐蔽的是——防火墙规则应用顺序决定生死。
举个真实案例:客户配了两条规则——Rule A(允许10.150.0.0/16访问所有端口),Rule B(拒绝所有)。本该万事大吉,结果流量全被拦截。原因?Rule B创建时间早于Rule A,GCP按创建时间升序匹配,先命中拒绝,后边的允许直接作废。解决方案只有两个:要么删掉Rule B,要么给Rule A设priority=100(数值越小优先级越高),强制它排第一。
额外提醒:GCP防火墙不支持“any”源地址,必须明确写0.0.0.0/0或具体网段;也不支持端口范围缩写(如“8000-8010”得拆成11条单独规则)。这些反直觉设计,够你喝一壶。
第五步:上线后别撤退,用三招做持续健康监测
连接成功只是起点。我们给客户部署了三道防线:
- 每日自动巡检脚本:用gcloud compute routers get-status抓取BGP邻居状态+路由数,异常时飞书告警;
- 主动探测机制:在GCP VPC里起一台小实例,每5分钟ping本地IDC关键服务器IP,连续3次失败触发工单;
- 路由收敛审计:每次本地网络变更(如新增子网),用gcloud compute networks peerings list --network=YOUR-VPC | grep -i 'advertised' 确认新路由已同步至GCP,而非“本地宣告了,GCP假装没看见”。
最后送一句掏心窝的话:混合云连接没有银弹,只有反复验证的肌肉记忆。下次再看到BGP状态闪红,别慌——先泡杯茶,打开tcpdump,对照本文 checklist 逐条划掉。毕竟,凌晨三点修通的那条路由,终将成为你简历里最硬核的注脚。

