多VPC架构下从私有VPC连接AWS私有ALB的方案咨询
解决VPC3无法修改配置时访问VPC1私有ALB的方案
这问题我之前帮客户处理过类似的,核心难点就是VPC3的网络配置完全碰不得,那咱们得把VPC2当成中转枢纽来做文章,给你两个实用的方案,分场景选就行:
方案1:用EC2实例做轻量中转(适合测试/小流量场景)
如果流量不大或者只是临时测试,用VPC2里的一台EC2做转发跳板最省事:
- 在VPC2的私有子网里启动一台EC2实例,安全组要开两个口子:允许VPC3的
20.30.0.0/16访问你要用到的端口(比如ALB的80/443),同时允许访问VPC1 ALB的对应端口和子网范围 - 开启EC2的IP转发功能:Linux系统的话,先临时生效
sysctl -w net.ipv4.ip_forward=1,再把net.ipv4.ip_forward = 1写入/etc/sysctl.conf确保重启后生效 - 配置iptables转发规则,把指向这台EC2的流量转去VPC1的ALB:
iptables -t nat -A PREROUTING -d <EC2私有IP> --dport <ALB端口> -j DNAT --to-destination <ALB私有IP>:<ALB端口> iptables -t nat -A POSTROUTING -d <ALB私有IP> --dport <ALB端口> -j SNAT --to-source <EC2私有IP> - 最后VPC3里的资源直接访问这台EC2的私有IP+对应端口,就能间接打到VPC1的ALB了
方案2:用Network Load Balancer(NLB)做高可用中转(适合生产场景)
如果是生产环境需要高可用,用VPC2的内部NLB来中转是最优解:
- 在VPC2里创建一个内部NLB,监听端口和VPC1 ALB的端口保持一致(比如80/443)
- 创建目标组,把VPC1的私有ALB的私有IP或者DNS名称加进去(因为VPC1和VPC2已经对等,NLB能正常访问到ALB)
- 检查VPC2的路由表,确保已经有指向VPC1
10.0.0.0/16的对等路由(这个应该已经配置好了,毕竟VPC1和VPC2是对等的) - 给NLB的安全组配置规则:允许VPC3的
20.30.0.0/16访问监听端口 - 这样VPC3的资源只需要访问VPC2中NLB的私有DNS或者IP,流量就会自动转发到VPC1的ALB,而且NLB自带高可用,不用操心单点问题
关键注意事项
- 不管用哪个方案,都要确保VPC1的ALB安全组允许来自VPC2中转资源(EC2/NLB)的流量访问
- 因为所有VPC都没有互联网网关,EC2的镜像要确保能在私有环境获取:要么用AWS PrivateLink访问EC2镜像仓库,要么提前把镜像复制到你的私有区域
- 别忘了在VPC1和VPC2的对等连接里开启允许DNS解析的选项,这样VPC2的资源才能正确解析VPC1 ALB的私有DNS名称
内容的提问来源于stack exchange,提问作者Wikum Ekanayake
相关产品推荐
相关产品推荐

