内网用户要跟外网P2P传文件连不上?华为防火墙三元组NAT让外网也能主动找你

上一篇聊的 NAPT 端口复用解决了"公网地址少、内网人多"的矛盾,但它有个天生的局限:转换出来的地址端口主要服务"你主动出去"的方向,外网主机摸不到你的稳定入口。可有些业务偏偏要求双向可达——私网用户要和 Internet 上的主机做 P2P 业务交流,比如文件共享、语音通信、视频传输,而且 Internet 上的主机也要能主动访问私网用户。这种场景下源 NAT 得换一种转换方式:三元组 NAT,地址池工作在全锥模式,同一私网用户的"IP+端口+协议"三元组转换后映射关系保持稳定,外网主机可以循着这个公网入口主动进来。

下例中 DeviceA 作安全网关,私网网段 10.1.1.0/24,公司向 ISP 申请了 6 个公网地址(1.1.1.10~1.1.1.15)作为转换后的公网地址,Router 是 ISP 提供的接入网关。

配置步骤(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。这里对照配置脚本,地址池的模式是 full-cone global——三元组 NAT 与普通 NAPT 的分水岭就在这一行:full-cone 模式下映射关系全锥化,外部主机可主动发起访问。随后选择"策略 > NAT策略 > NAT策略 > NAT策略",在"NAT策略列表"中单击"新建",把源区域 trust、目的区域 untrust、源地址 10.1.1.0/24 的流量指向这个地址池做源地址转换。

第四步,配缺省路由。选择"网络 > 路由 > 静态路由",在"静态路由列表"中单击"新建",协议类型 IPv4,目的地址/掩码 0.0.0.0/0.0.0.0,下一跳 1.1.1.254,确定。

第五步,可选的一步:开启端点无关过滤功能。缺省情况下该功能就是开启状态;如果没有开启,除了执行下面的命令,还需要另配公网到私网的安全策略:

[DeviceA] firewall endpoint-independent filter enable

第六步,别漏了 ISP 侧的回程。转换后的公网地址 1.1.1.10~1.1.1.15 不在实际接口上,路由协议发现不了,需要在 Router 上手工配置到这 6 个地址的静态路由,下一跳 1.1.1.1。这一步通常要联系 ISP 的网络管理员来配。

全部做完后,设备配置脚本如下,可直接对照核对:

#
 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 full-cone global
 route enable
 section 0 1.1.1.10 1.1.1.15 
#  
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 full-cone global 是本篇的灵魂,地址池工作在三元组方式;route enable 让设备为地址池发布路由,配合 ISP 侧静态路由保证回程可达。

验证

配置完成后检查三件事:一是公司内网用户可以访问 Internet;二是 Internet 主机可以主动访问内网用户——这是与普通 NAPT 最直观的差别;三是内网用户上网时,选择"监控 > 会话表",可以查看源地址为公司内网地址的会话,确认转换后地址落在 1.1.1.10~1.1.1.15 之内。

出口 NAT 选哪种模式,本质上看业务方向:纯上网 NAPT 够用,要 P2P 双向可达就上三元组。贵州诚鑫致达科技在做出口方案时会先问清业务里有没有语音、视频、文件共享这类点对点需求再定转换方式。你们内网有 P2P 业务被 NAT 卡住的经历吗?评论区聊聊症状,帮你看看是哪一环的问题。