EIP还是NAT网关?华为云内网服务器上网方案与五个常见坑

举报
yd_235631729 发表于 2026/10/26 15:06:14 2026/10/26
【摘要】 华为云内网服务器如何安全上网?本文对比EIP直接绑定与公网NAT网关,讲清按带宽/按流量/共享带宽计费选型、SNAT/DNAT规则与安全组配合、排查命令及五个常见坑。

在华为云上部署业务时,几乎每个人都会遇到同一个问题:VPC 里的服务器只有私网 IP,怎么让它访问公网(拉镜像、装依赖、调第三方 API),又怎么让外部用户访问到它?华为云给出的主要答案有两个:弹性公网IP(EIP) 和 公网NAT网关。本文结合官方文档,梳理两者的原理、计费方式、选型思路,以及实际运维中最容易踩的五个坑。

一、两种方式的本质区别

  • EIP 直接绑定:一台云服务器独占一个公网 IP,出入方向都走这个 IP,简单直接。
  • 公网NAT网关:多台云服务器共享一个或多个 EIP。其中 SNAT 负责“出”,让子网内的主机通过共享 EIP 访问公网;DNAT 负责“入”,通过 IP 映射(所有端口)或端口映射(具体端口)把公网请求转发到内网主机。

官方 FAQ 的说法很明确:直接绑定 EIP 是独占 IP 的方式,NAT 网关则允许多台云服务器共享 EIP。

二、EIP 的带宽计费怎么选

EIP 有包年/包月和按需计费两种模式,按需计费下又分三种方式:

方式 特点 适合场景
按带宽计费 按指定带宽大小和使用时长计费,不限流量 流量大或访问量稳定
按流量计费 按实际出云流量计费,带宽只作限速 流量低或波动大
加入共享带宽 多个 EIP 共用一条带宽,按共享带宽计费 多业务高峰错开,需节约成本

几个容易忽略的细节:

  1. 华为云只对出云方向(上行)的带宽/流量收费,入云流量不收费。
  2. 按需计费的 EIP 如果未绑定实例又未释放,会收取 IP 保有费。
  3. 按带宽计费时,即使 ECS 关机,带宽费照常收取;按流量计费则是不产生流量就不收流量费。
  4. 文档给出的经验参考:带宽大于 5 Mbit/s 且带宽使用率大于 20% 时,一般按带宽计费更划算。可以先用云监控看一段时间的带宽使用率再决定。
  5. 按流量计费的 EIP 有单个带宽峰值上限(文档当前写明为 300 Mbit/s,且同区域同账号有总量限制,以控制台公告为准),对带宽有更高或有保障要求的业务应使用按带宽计费。

共享带宽适合“一个项目有多个 EIP”的场景:几台 Web 服务器、NAT 网关上的 EIP 一起加入同一条共享带宽,峰谷互补,账单也更清晰。注意可以加入共享带宽的是按需计费的 EIP。

三、公网NAT网关:SNAT 与 DNAT

SNAT 规则 按子网或网段配置。官方约束是:VPC 内每个子网只能添加一条 SNAT 规则,多个子网需要上网就建多条 SNAT 规则,可以共享一个或多个 EIP。

DNAT 规则 一条对应一个云主机的一个端口。端口类型有两种:

  • 所有端口:IP 映射,相当于给云主机配了一个 EIP;
  • 具体端口:端口映射,例如把 EIP 的 8080/TCP 转发到 192.168.1.10:80。

配置完成后,规则状态为“运行中”才表示创建成功。

安全组的作用方向也要分清:SNAT 场景下,内网主机主动发起访问,需要的是安全组出方向规则放行(默认出方向通常全放通,若被收紧过要注意);DNAT 场景下,外部主动访问内网主机,需要的是入方向规则放行。安全组作用于云服务器网卡,网络 ACL 作用于子网,两者叠加可以实现更精细的控制,排查时两层都要看。

四、该选哪种?

  • 单台服务器、需要独立公网地址(例如对外 Web、需固定 IP 做白名单):直接绑定 EIP 最简单。
  • 大量内网服务器只需出网(装包、拉镜像、调用外部 API):公网NAT网关 + SNAT,公网 IP 不暴露在每台主机上,攻击面更小,也便于统一出口 IP 给第三方加白名单。
  • 少量端口对外提供服务、又想节省 EIP:NAT 网关 + DNAT 端口映射。
  • 多个 EIP 流量峰谷互补:再叠加共享带宽控制成本。

五、上网验证与排查命令

先在内网服务器上确认实际出口 IP,看它是 EIP 还是 NAT 网关上的 EIP:

# 查看公网出口 IP
curl -s ifconfig.me; echo
curl -s https://ipinfo.io/ip; echo

# 测试 DNS 与连通性(区分“DNS 坏了”还是“出不去”)
nslookup mirrors.huaweicloud.com
curl -I -m 5 https://mirrors.huaweicloud.com

然后检查操作系统内的路由和防火墙,排除“云上配置没问题、是系统内部挡住了”的情况:

# 默认路由应指向子网网关(通常是子网的 .1 地址)
ip route
# default via 192.168.1.1 dev eth0 ...

# 查看 iptables / firewalld 是否拦截
iptables -L -n -v
iptables -t nat -L -n
systemctl status firewalld

DNAT 不通时,确认服务确实在监听,且不是只监听在 127.0.0.1:

ss -tlnp | grep 80
# 期望看到 0.0.0.0:80 或 192.168.x.x:80,而不是 127.0.0.1:80

六、五个常见坑

坑1:同时绑了 EIP 和配置了 NAT 规则

官方说明:ECS 同时配置 EIP 和 SNAT 时,优先走 EIP。所以“SNAT 出口 IP 加了白名单却不生效”,往往是机器上还绑着一个 EIP。更隐蔽的是 DNAT + EIP:入方向走 DNAT 的 EIP,出方向却优先走 ECS 自身绑定的 EIP,入出 IP 不一致导致不通。官方建议不要让云服务器同时使用公网NAT网关和直接绑定 EIP。

坑2:路由表里没有指向 NAT 网关的路由

NAT 网关能否处理流量,取决于 VPC 关联的路由表中是否有指向它的路由(0.0.0.0/0 或指定网段)。如果子网关联的是自定义路由表,尤其需要逐个检查。

坑3:DNAT 配好了,安全组没放通

DNAT 只负责转发,不具备访问控制能力。流量经过 NAT 网关后,仍要经过 ECS 安全组和网络 ACL 的过滤,需要在入方向放通对应协议、端口和客户端源 IP。想限制访问范围,应该靠安全组和网络 ACL,而不是指望 NAT 网关。

坑4:SNAT 与全端口 DNAT 共用一个 EIP

SNAT 和 DNAT 可以共用 EIP 节省资源,但全端口 DNAT 会占用全部端口,SNAT 就无端口可用。文档明确:SNAT 规则不能和全端口的 DNAT 规则共用 EIP。另外,同一子网只能有一条 SNAT 规则,规划子网时要提前考虑。

坑5:计费方式没想清楚

常见情况包括:按流量计费却没设合理的带宽上限,遇到突发流量账单激增;释放了实例却忘了释放 EIP,持续产生 IP 保有费;ECS 关机以为不收费,结果按带宽计费的 EIP 仍在计费。建议定期在费用中心核对账单,并结合云监控设置带宽告警。

七、总结

  • 单机、需独立公网 IP:直接绑定 EIP。
  • 多机只出不入:公网NAT网关 + SNAT,每个子网一条规则。
  • 少量端口对外:DNAT 端口映射,并在安全组放通对应端口和源 IP。
  • 流量稳定选按带宽计费,流量小且波动大选按流量计费,多 EIP 错峰用共享带宽。
  • 不要让同一台 ECS 同时使用 EIP 和 NAT 规则,避免出口不一致。
  • 排查顺序:出口 IP → 系统路由/防火墙 → VPC 路由表 → NAT 规则状态 → 安全组/网络 ACL → 服务监听。

把这几条记住,内网服务器“上网”和“被访问”的问题基本都能快速定位。具体限制与参数以华为云官方文档和控制台显示为准。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。