You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让公有子网内仅含私有IP的EC2实例访问互联网?

嘿,这个场景我太熟了!你的EC2实例I1在公有子网S1里但没分配公网IP,没法直接访问互联网对吧?别担心,咱们可以通过两种靠谱的方案解决,我给你一步步说清楚:

方案一:使用NAT网关(AWS托管,首推)

这是AWS官方最推荐的方式,不用你自己维护服务器,高可用还省心:

    1. 创建NAT网关
    • 打开AWS控制台的VPC服务,找到「NAT网关」选项,点击「创建NAT网关」。
    • 选择你的公有子网S1作为部署子网,然后分配一个新的弹性公网IP(EIP)给它,跟着向导完成创建就行。
    1. 调整路由表规则
    • 找到你的EC2实例I1所在子网(也就是S1)关联的路由表,点击「编辑路由」:
      • 把原来指向互联网网关(IGW)的0.0.0.0/0路由替换掉(或者直接修改下一跳)。
      • 添加一条新路由:目标地址填0.0.0.0/0,下一跳选择你刚创建的NAT网关。
    1. 测试访问
    • 登录到I1实例,试试ping 8.8.8.8或者curl https://aws.amazon.com,正常情况下就能访问外部资源了。

方案二:使用NAT实例(自定义需求首选)

如果需要更多自定义控制(比如加防火墙规则、自定义转发逻辑),可以选这个方案:

    1. 启动NAT实例
    • 在公有子网S1里启动一台EC2实例,选AWS官方的NAT实例AMI(在AMI市场搜「NAT」就能找到)。
    • 给这个NAT实例分配一个弹性公网IP(EIP)。
    • 开启IP转发功能:登录实例后,执行命令 echo 1 > /proc/sys/net/ipv4/ip_forward,然后修改/etc/sysctl.conf文件,把net.ipv4.ip_forward设为1,确保重启后依然生效。
    1. 配置安全组
    • 给NAT实例的安全组加规则:允许来自I1所在子网私有IP段的所有入站流量(TCP、UDP、ICMP都可以放开),同时允许NAT实例向互联网发送出站流量。
    1. 调整路由表
    • 同样找到I1所在子网的路由表,把0.0.0.0/0的下一跳改成NAT实例的私有IP。
    1. 验证效果
    • 登录I1实例测试外部访问,确认能正常连接就行。

额外注意事项

  • 不管用哪种方案,都要确保I1的安全组允许出站流量到互联网(比如允许0.0.0.0/0的TCP 80、443端口),不然就算路由对了也出不去。
  • NAT网关是按使用量计费,NAT实例则是收EC2实例的费用,根据你的实际需求选就行。

内容的提问来源于stack exchange,提问作者Yasasvee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:08:35