申请了一小段公网IP内网却几百人?华为防火墙NAPT端口复用全员上网
“公网地址够用就一对一转换"的 No-PAT 之前聊过,但更多公司的现实是反过来的:向 ISP 申请了一小段公网地址,比如 6 个,内网却有好几百号人,地址怎么都分不过来。这时源 NAT 要换一种工作方式——NAPT,转换地址的同时转换端口,用端口号把一个公网地址复用给多个私网用户。
用 NAPT 有个隐患要提前想:大量用户挤在少数公网地址上,转换时可能发生端口冲突,个别用户表现为上网时好时坏。华为防火墙对此给了一个可选参数——限制单个公网地址对应的私网地址最大数,比如设成 256,一个公网地址最多带 256 个私网地址,超了就换下一个地址,从源头减少冲突。下例中 DeviceA 作安全网关,内网 10.1.1.0/24,公网地址池 1.1.1.10~1.1.1.15,ISP 侧接入网关为 Router。
配置步骤(Web 界面)
第一步,配接口。选择"网络 > 接口”,在"接口列表"中单击接口 GE0/0/1 所在行,安全区域填 trust,IPv4 地址填 10.1.1.1/24,确定。再单击 GE0/0/2 所在行,安全区域填 untrust,IP 地址填 1.1.1.1/24,确定。内网主机的默认网关指向 10.1.1.1。
第二步,配安全策略,放行内网网段到 Internet。选择"策略 > 安全策略 > 安全策略",在"安全策略列表"中单击"新建",选择"新建安全策略",参数如下:
- 名称:policy1
- 源安全区域:trust
- 目的安全区域:untrust
- 源地址:10.1.1.0/24
- 动作:允许
第三步,配 NAT 地址池和 NAT 策略,这是本篇的核心。选择"策略 > NAT策略 > NAT策略 > 源转换地址池",在"源转换地址池列表"中单击"新建",地址范围填 1.1.1.10~1.1.1.15,并且开启允许端口转换——这一项就是 NAPT 与 No-PAT 的分水岭,私网地址比公网地址多,只有靠端口转换才能实现公网地址复用。要启用"源IP地址数量限制"功能,还有一步前置命令必须先做——把业务 CPU 分流的 HASH 模式配成源 IP 模式,配置后需要重启设备生效,注意先保存配置再重启:
<DeviceA> system-view
[DeviceA] firewall hash-mode source-only
[DeviceA] quit
<DeviceA> reboot
地址池建好后,选择"策略 > NAT策略 > NAT策略 > NAT策略",在"NAT策略列表"中单击"新建",把源区域 trust、目的区域 untrust、源地址 10.1.1.0/24 的流量指向这个地址池做源地址转换。
第四步,配缺省路由。选择"网络 > 路由 > 静态路由",在"静态路由列表"中单击"新建",协议类型 IPv4,目的地址/掩码 0.0.0.0/0.0.0.0,下一跳 1.1.1.254,确定。
第五步,别忘了 ISP 侧的回程路由。转换后的公网地址 1.1.1.10~1.1.1.15 不在任何实际接口上,路由协议发现不了,需要在 Router 上手工配置静态路由——目的地址 1.1.1.10~1.1.1.15、下一跳 1.1.1.1。这一步通常要联系 ISP 的网络管理员来配,漏了它,包出去了回不来,表现就是"能 ping 出去但网页打不开"。
全部做完后,设备配置脚本如下,可直接对照核对:
#
sysname DeviceA
#
interface GE0/0/1
ip address 10.1.1.1 255.255.255.0
#
interface GE0/0/2
ip address 1.1.1.1 255.255.255.0
#
firewall zone trust
set priority 85
add interface GE0/0/1
#
firewall zone untrust
set priority 5
add interface GE0/0/2
#
ip route-static 0.0.0.0 0.0.0.0 1.1.1.254
#
nat address-group addressgroup1 0
mode pat
route enable
section 0 1.1.1.10 1.1.1.15
srcip-car-num 256
#
security-policy
rule name policy1
source-zone trust
destination-zone untrust
source-address 10.1.1.0 24
action permit
#
nat-policy
rule name policy_nat1
source-zone trust
destination-zone untrust
source-address 10.1.1.0 24
action source-nat address-group addressgroup1
#
return
脚本里有三行值得多看一眼:mode pat 声明地址池工作在端口转换模式;srcip-car-num 256 就是那个限制单个公网地址对应私网地址数的参数;route enable 让设备为地址池发布路由,配合 ISP 侧静态路由保证回程可达。
验证
配置完成后,内网用户直接访问 Internet 验证连通性。再选择"监控 > 会话表",查看源地址为公司内网地址的会话,转换后地址都应落在 1.1.1.10~1.1.1.15 之内。开了地址数量限制的话还有个天然的健康度指标——当某个公网地址对应的私网地址数达到阈值时,DeviceA 会发送日志和告警,告警频繁出现就说明地址池该扩了。
出口地址怎么规划,说到底是拿到的公网资源和上网规模之间的匹配题。贵州诚鑫致达科技在做出口梳理时,会先盘点地址数量、并发用户数和业务类型再定转换方式。你公司的公网地址是几个、内网多少人?评论区报个数,帮你看看现在的配置合不合理。