AWS中如何结合现有VPN配置搭建NAT网关,实现无公网IP的EC2实例访问互联网
AWS中如何结合现有VPN配置搭建NAT网关,实现无公网IP的EC2实例访问互联网
嘿,我来帮你一步步搞定这个配置,结合你现有的VPN环境,让无公网IP的EC2也能顺畅访问互联网~
先明确你的现有环境关键点
你已经具备:
- VPC(172.31.0.0/16)+ 3个子网(172.31.32.0/20、172.31.0.0/20、172.31.16.0/20)
- 已关联互联网网关(IGW)
- Client VPN端点关联了172.31.0.0/20子网,授权规则允许访问VPC(172.31.0.0/16)和全量互联网(0.0.0.0/0)
步骤1:创建NAT网关
NAT网关是无公网IP EC2的“上网代理”,先把它建起来:
- 选一个已有公网路由的子网部署NAT网关(比如你的172.31.32.0/20或172.31.16.0/20,只要这个子网的路由表已经指向IGW就行)
- 创建时给NAT网关分配一个弹性公网IP(EIP),这是它对外访问互联网的必要入口,必须配置
- 记好NAT网关的ID(比如
nat-xxxxxx),后面路由配置要用到
步骤2:调整子网路由表,让EC2走NAT网关上网
接下来修改目标子网的路由规则,引导无公网IP的EC2通过NAT网关出网:
- 找到你想部署无公网IP EC2的子网对应的路由表(比如172.31.0.0/20、172.31.16.0/20,或者你指定的子网)
- 如果路由表已有
0.0.0.0/0 -> IGW的规则,先删掉它,然后新增一条路由:- 目标CIDR:
0.0.0.0/0 - 目标类型:NAT网关
- 选择你刚创建的NAT网关ID
- 目标CIDR:
- 对于VPN关联的172.31.0.0/20子网,这样修改后,子网里的EC2既能通过VPN被你的Mac访问,又能通过NAT网关访问互联网,完美兼容现有VPN配置
步骤3:检查安全组和VPN授权规则
确保没有安全策略挡住流量:
- NAT网关的安全组(如果配置了):允许来自你EC2子网(172.31.0.0/16)的所有出站流量(至少要放开HTTP/HTTPS、DNS这些必要端口)
- EC2实例的安全组:确认允许出站流量到
0.0.0.0/0(默认一般是允许的,但最好检查下) - 你的Client VPN端点已经有
0.0.0.0/0的授权规则,这个不用改,Mac通过VPN访问EC2的链路依然正常
步骤4:验证配置
最后测试下配置是否生效:
- 启动一个不带公网IP的EC2实例,放到你修改过路由表的子网里
- 从Mac通过VPN连接到VPC,尝试SSH访问这个EC2(确认VPN访问正常)
- 在EC2里执行
ping 8.8.8.8或者curl https://aws.amazon.com,如果能成功返回,说明NAT网关配置生效了
额外小提示
- NAT网关是按使用量收费的,测试完成后可以删掉避免不必要的开销
- 确保VPC的DNS配置是默认状态(
enableDnsSupport和enableDnsHostnames都设为true),不然EC2可能无法正常解析域名
备注:内容来源于stack exchange,提问作者Mariano Martinez Peck
相关产品推荐
相关产品推荐

