内网服务器要对外发布服务?华为防火墙Web界面配目的NAT端口映射

服务器放在内网私网段里,公网用户却要访问它,这中间就得在防火墙上做一层目的 NAT——外面的人访问一个公网地址和端口,设备把流量转交给内网服务器的真实地址和端口。很多小公司没有专职网管,命令行看着发怵,这套配置其实页面上就能点完。华为官方文档给过一个完整 Web 举例:公司额外申请了一个公网地址 1.1.10.10 专门对外服务,通过目的 NAT 把它的 2000、2001 端口一对一映射到内网服务器 10.2.0.7 的 80、81 端口,一台服务器借不同端口对外提供不同服务。本篇把官方 Web 版的每一步页面路径和参数原样搬过来,照着点就行。

本文的组网需求、配置思路与命令步骤,整理自华为官方发布的典型配置案例,参数可直接参考使用。

场景与数据规划

某公司在网络边界处部署了 DeviceA 作为安全网关。为了使服务器能够通过不同端口对外提供不同的服务,需要在设备上配置目的 NAT。除了公网接口的 IP 地址外,公司还向 ISP 申请了一个 IP 地址(1.1.10.10)作为内网服务器对外提供服务的地址。网络环境中 Router 是 ISP 提供的接入网关,interface1 和 interface2 分别代表 GE0/0/1 和 GE0/0/2。官方数据规划如下:

项目 数据 说明
GE0/0/1 IP 地址:1.1.1.1/24;安全区域:Untrust 实际配置时需要按照 ISP 的要求进行配置
GE0/0/2 IP 地址:10.2.0.1/24;安全区域:DMZ 内网服务器需要将 10.2.0.1 配置为默认网关
目的 NAT 转换前目的地址:1.1.10.10;转换后目的地址:10.2.0.7;转换前端口:2000、2001;转换后端口:80、81 外网用户访问 1.1.10.10 时,设备将流量送给内网服务器
缺省路由 目的地址:0.0.0.0;下一跳:1.1.1.254 使内网服务器对外提供的服务流量可以正常转发至 ISP 的路由器

官方配置思路五步:配置接口 IP 地址和安全区域,完成网络基本参数配置→配置安全策略,允许外部网络用户访问内部服务器→通过目的 NAT,使外网用户访问 1.1.10.10 时设备把流量送给内网服务器→在设备上配置缺省路由→在 Router 上配置到服务器公网地址的静态路由。

Web 页面操作步骤

第 1 步,配置接口 GE0/0/1 的 IP 地址,并将接口加入安全区域。

  • 选择"网络 > 接口"。
  • 在"接口列表"中,单击接口 GE0/0/1 所在行的配置入口,按如下参数配置:安全区域 untrust,IPv4 地址 1.1.1.1/24。
  • 单击"确定"。

第 2 步,配置接口 GE0/0/2 的 IP 地址,并将接口加入安全区域。

  • 在"接口列表"中,单击接口 GE0/0/2 所在行的配置入口,按如下参数配置:安全区域 dmz,IPv4 地址 10.2.0.1/24。
  • 单击"确定"。

第 3 步,配置安全策略,允许外部网络用户访问内部服务器。

  • 选择"策略 > 安全策略 > 安全策略"。
  • 在"安全策略列表"中,单击"新建",选择"新建安全策略",按如下参数配置:名称 policy1,源安全区域 untrust,目的安全区域 dmz,目的地址 10.2.0.0/24,动作 允许。
  • 单击"确定"。

第 4 步,配置 NAT 策略。

  • 选择"策略 > NAT策略 > NAT策略"。
  • 在"NAT 策略列表"中,单击"新建",按组网规划配置:源安全区域 untrust,目的地址 1.1.10.10,目的地址转换为 10.2.0.7;“服务"参数对应转换前的目的端口号 2000、2001(本例协议 TCP),转换后端口 80、81。
  • 配置"服务"参数时,单击"服务"所在列的输入框,选择"新建 > 添加协议或协议号"配置转换前的目的端口号。
  • 单击"确定”。

官方在这一步有一条特别提示:公网端口与私网端口一对一转换场景,只能配置一个目的地址,也就是"目的地址"、“目的地址转换为"都只能配置一个地址。如果有多台服务器对外提供服务,请配置多个 NAT 策略。

第 5 步,在 DeviceA 上配置黑洞路由,以防路由环路。

  • 选择"网络 > 路由 > 静态路由”。
  • 在"静态路由列表"中,单击"新建",按如下参数配置:协议类型 IPv4,目的地址/掩码 1.1.10.10/255.255.255.0,出接口 NULL0。
  • 单击"确定"。

第 6 步,在 DeviceA 上配置缺省路由,使内网服务器对外提供的服务流量可以正常转发至 ISP 的路由器。

  • 选择"网络 > 路由 > 静态路由"。
  • 在"静态路由列表"中,单击"新建",按如下参数配置:协议类型 IPv4,目的地址/掩码 0.0.0.0/0.0.0.0,下一跳 1.1.1.254。
  • 单击"确定"。

第 7 步,在 Router 上配置到公网地址(1.1.10.10)的静态路由,下一跳为 1.1.1.1,使得去服务器的流量能够送往 DeviceA。通常需要联系 ISP 的网络管理员来配置此静态路由。

检查配置结果

官方给的检查口径两条:

  • 公网用户可以访问内网服务器。
  • 当公网用户访问内网服务器时,选择"监控 > 会话表",可以查看目的地址为服务器公网地址的会话。

判读要点:会话表里目的地址显示的还是公网地址 1.1.10.10(转换前口径),说明这条访问已经命中 NAT 策略并被送往内网服务器;如果公网用户访问不通,先看会话表有没有条目——没有条目多半是安全策略或 NAT 策略没匹配上,有条目但服务器不响应,再查服务器自身服务和网关配置。

配置脚本

页面点完不放心,可以和官方给的整机脚本对一遍:

#
 sysname DeviceA
#
interface GE0/0/1
 ip address 1.1.1.1 255.255.255.0 
#
interface GE0/0/2
 ip address 10.2.0.1 255.255.255.0 
#
firewall zone untrust
 set priority 5
 add interface GE0/0/1
#
firewall zone dmz
 set priority 50
 add interface GE0/0/2
#
 ip route-static 0.0.0.0 0.0.0.0 1.1.1.254 
 ip route-static 1.1.10.10 255.255.255.255 NULL0 
#  
security-policy   
  rule name policy1  
    source-zone untrust 
    destination-zone dmz 
    destination-address 10.2.0.0 24 
    action permit 
#  
nat-policy  
  rule name policy_nat1 
    source-zone untrust 
    destination-address 1.1.10.10 32
    service protocol tcp destination-port 2000 to 2001
    action destination-nat static port-to-port address 10.2.0.7 80 to 81
# 
return

脚本里那条 action destination-nat static port-to-port address 10.2.0.7 80 to 81 就是本篇的主角:静态端口到端口转换,把 1.1.10.10 的 2000~2001 端口一对一搬到 10.2.0.7 的 80~81 端口上。

容易踩的坑

  • 一条策略管一个地址:端口一对一映射场景下"目的地址"和"目的地址转换为"都只能填一个地址,多台服务器对外发布就多配几条 NAT 策略,别想着一条策略塞两台机器。
  • 黑洞路由不能省:1.1.10.10 指向 NULL0 出接口,防的是转换后地址在设备上形成路由环路。官方 Web 页面表格里掩码显示为 255.255.255.0,配置脚本里是 255.255.255.255(32 位),两处均为官方内容;粘贴使用以脚本为准,32 位黑洞路由只圈住这一个服务地址。
  • 服务器网关要指对:内网服务器的默认网关必须是 10.2.0.1(GE0/0/2 接口地址),否则回包出不了 DMZ。
  • Router 侧路由不能漏:ISP 接入网关上要有到 1.1.10.10 的静态路由(下一跳 1.1.1.1),这一步通常得找 ISP 网络管理员配,配完整个链路才通。
  • 安全策略匹配的是转换后地址:policy1 放行的是目的地址 10.2.0.0/24(DMZ 网段),不是公网地址 1.1.10.10——目的 NAT 场景里安全策略看的是转换后的目的地址,别填反。

这类对外发布的端口映射调整,改完先自己从公网侧访问一轮再对外通知——没有专人盯的贵州企业,可以交给诚鑫致达科技配完顺手验一轮再收工。各厂商设备的命令与页面参数存在差异,本文步骤与脚本均出自华为官方文档,操作前请核对你的设备型号与软件版本。

源:华为USG防火墙6000F-S官方文档