如何为现有运行中EC2实例移除自动分配的公网IP
不重建实例移除EC2自动公网IP操作方案
不需要重建实例即可完成公网IP移除,全程不会改动实例内部配置、不会丢失EBS存储卷数据,操作完成后实例运行在纯私网环境,完全适配你现有的VPN访问、安全组私网互访规则。
前置配置
先把私网出网路径配好,满足后续实例偶尔访问互联网的需求:
- 你可以选择在现有公网子网(部署VPN实例、
public-security-group关联实例的子网)部署托管NAT网关,也可以直接用公网子网内的现有实例自建NAT服务,后者成本更低 - 给待调整实例所在子网的路由表加一条路由:目标
0.0.0.0/0指向你部署的NAT网关/NAT实例,这样私网实例可以主动发起公网访问,但不会被公网主动连接,符合安全要求
标准操作步骤
EC2启动时自动分配的公网IP是从公网地址池动态派发的,没有固定持有权,移除操作需要短时间停止实例,单台实例停机时长一般在1-3分钟:
- 打开EC2控制台找到目标实例,提前记好实例ID、主私网IP、挂载的EBS卷ID做校验,避免误操作
- 选中实例,点击「实例状态」-「停止实例」,等实例进入
已停止状态注意:如果实例挂载了本地实例存储(Instance Store)卷,停止实例会清空这类存储上的所有数据,操作前一定要把相关数据备份到EBS等持久化存储;EBS卷上的系统、业务数据完全不受停止操作影响
- 实例进入停止状态后,原来绑定的自动公网IP会自动和主网卡解绑,此时选中实例,点击「操作」-「网络」-「管理IP地址」
- 在配置页找到主网卡
eth0对应的「自动分配公有IP」选项,取消勾选后保存配置。如果不想让这个子网后续新启动的实例默认绑公网IP,可以同步把子网层面的「自动分配公有IPv4」开关关掉 - 选中已停止的实例,点击「启动实例」,等实例正常运行就完成了。此时实例只保留私网IP,不会再自动分配公网IP,公网入站流量无法直接触达实例,满足安全加固要求。
低停机时间替代方案
如果你业务只能接受秒级闪断,没法接受数分钟的停机,可以按以下流程操作,对操作手速有一定要求:
- 提前申请一个弹性公网IP(EIP)
- 选中运行中的目标实例,点击「操作」-「网络」-「关联弹性IP地址」,把申请的EIP绑到实例主网卡上,绑定成功的瞬间原来的自动公网IP就会被自动释放回地址池
- 确认EIP绑定正常、实例私网访问、VPN访问都没问题后,直接解绑EIP,此时主网卡会暂时处于无公网IP状态
- 立刻把对应子网的「自动分配公有IPv4」开关关掉,避免网卡自动重新申领公网IP
这个方案风险比标准停机操作高:如果没及时关子网的自动分配开关,EIP解绑后几秒内实例就会被重新分配一个新的自动公网IP,达不到移除效果,操作前最好提前把子网配置页面打开,减少操作间隔。
后续运维说明
- 实例移除公网IP后,你之前配置的VPN隧道访问规则、私网安全组互访规则完全不受影响,可以正常使用
- 后续如果临时需要某台私网实例具备公网访问能力,不需要重启实例,直接给主网卡绑定EIP即可,用完立刻解绑,不会留下长期公网暴露面
内容的提问来源于stack exchange,提问作者Arnold Zahrneinder
相关产品推荐
相关产品推荐

