单可用区 NAT 网关高可用部署需在各可用区独立创建实例,绑定本区子网与 EIP,通过自定义路由表实现流量隔离,并开启 EIP 亲和性及共享带宽以保障稳定。

想把 NAT 网关从零搭起来,还能扛住故障、不掉线?关键不在“装得多”,而在“结构对”——高可用不是堆机器,是让流量有备选路径、状态有同步机制、故障能秒级切换。
NAT 网关的两种起点:云上托管 vs 自建调度器
刚入门别纠结“从哪装起”,先看清你站在哪条路:
- 用公有云(阿里云/华为云等):直接创建 NAT 网关实例,选“单可用区容灾”类型,绑定 EIP 和子网即可。底层自动跨 AZ 部署多节点,你不用管 VIP 漂移、conntrack 同步或健康检查——这些全由平台兜底。
- 自建 LVS-NAT 架构:适合私有云或混合环境。必须准备两台调度器(主+备)、至少两台真实服务器(RS),且调度器得配双网卡(一接外网、一连内网)。它不是“装个软件就行”,而是要打通路由、NAT、心跳、网关指向四层逻辑。
LVS-NAT 集群部署四步踩实
以 CentOS/Rocky Linux 为例,避开常见翻车点:
- 网络拓扑先画清:调度器 eth0 接公网(如 203.0.113.10/24),eth1 接内网(如 192.168.1.1/24);所有 RS 网关必须设为 192.168.1.1,且不能直连外网。
-
内核转发和模块加载不能漏:
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/ip_forward.conf && sysctl --system;再执行modprobe ip_vs ip_vs_rr ip_conntrack_ip4,并写入/etc/modules确保重启生效。 -
VIP 不是配在网卡上就完事:用
ip addr add 203.0.113.100/24 dev eth0 label eth0:0添加,同时在 keepalived 配置中声明vrrp_strict关闭非必要 ARP 响应,防止 VIP 冲突。 -
RS 返回流量必须过调度器:这是 NAT 模式成败分水岭。若 RS 直接回包给客户端,SNAT 就失效,连接会断。务必验证
tcpdump -i eth0 host [client-ip]是否捕获到响应包经调度器发出。
高可用必须验证的三个硬指标
配置完不等于跑得稳,以下三项必须人工测通:
- VIP 切换时间 ≤ 5 秒:停掉主调度器的 keepalived 进程,用客户端持续 ping 或 curl VIP,确认中断窗口在可接受范围。
-
并发连接不堆积 TIME_WAIT:用
ss -s查看连接统计,若 TIME_WAIT 占比超 30%,需调大net.ipv4.tcp_tw_reuse和net.ipv4.ip_local_port_range。 - SNAT 规则真正生效:在 RS 上抓包,确认出向数据包源 IP 已变成调度器内网口 IP(如 192.168.1.1),而非 RS 自身地址。
云上单可用区 NAT 网关的正确打开方式
很多人以为“多买几个 NAT 网关=高可用”,其实关键在路由隔离:
- 每个可用区(如可用区 A/B/C)单独创建一个 NAT 网关,各自绑定本区子网和 EIP;
- 为每个子网配置独立的自定义路由表,目标网段 0.0.0.0/0 下一跳指向本区 NAT 网关;
- SNAT 条目里开启 EIP 亲和性,避免同一私网 IP 访问同一目标时频繁换出口 IP 导致端口复用冲突;
- 多个 EIP 建议加入共享带宽,防止单 EIP 流量打满引发丢包。

















