第44篇:NAT 服务器映射:内网服务器对外发布

关键词:NAT服务器、端口映射、Server映射、内网发布、端口转发、华为配置、企业网关


一、引言

在前几篇中,我们学习了 NAT 如何让内网主机主动访问外网。但在实际企业中,往往还需要将内网的服务器(Web、Mail、FTP 等)对外发布,让 Internet 上的用户能够访问。这就是 NAT 服务器映射(NAT Server)的功能。

NAT Server 将公网 IP 的特定端口映射到内网服务器的对应端口,实现了"由外向内"的访问。它与 Easy-IP 的"由内向外"形成互补,共同构成企业 NAT 的完整方案。

二、核心概念

2.1 NAT Server 工作原理

NAT Server 的核心是建立一条从公网到私网的静态映射规则。当外网用户访问 NAT 设备的公网 IP 的某个端口时,设备将目的 IP 和目的端口替换为内网服务器的 IP 和端口。

转换方向 Inside→Outside Outside→Inside
源地址转换 私网 IP → 公网 IP 不变
目的地址转换 不变 公网 IP → 私网 IP
端口转换 源端口变化 目的端口可能变化

2.2 NAT Server 与静态 NAT 的区别

对比维度 静态 NAT NAT Server
映射范围 全端口映射(所有端口) 可指定特定端口
安全性 低(全部端口暴露) 高(仅暴露指定端口)
配置方式 nat static nat server
适用场景 需要全端口访问的服务器 仅需发布特定服务的服务器

2.3 NAT Server 发布策略

发布策略 说明 安全性
全端口映射 将公网 IP 的所有端口映射到内网服务器 最低
单端口映射 仅映射单个端口(如 80) 高
端口转换映射 公网端口与私网端口不同(如 8080→80) 最高

三、技术细节

3.1 单端口映射(最常用)

# 场景:将公网 IP 203.0.113.1 的 80 端口映射到内网 Web 服务器 192.168.1.100 的 80 端口

# Step 1: 配置 NAT Server
[HUAWEI] nat server protocol tcp global 203.0.113.1 80 inside 192.168.1.100 80

# 等价简化写法(当公网 IP 为接口地址时)
[HUAWEI] nat server protocol tcp global current-interface 80 inside 192.168.1.100 80
# current-interface 表示使用出接口当前 IP(部分 VRP 版本支持,请以手册为准)

# 验证
<HUAWEI> display nat server
 Nat Server Information:
  Interface : Any
  Global IP/Port : 203.0.113.1/80
  Inside IP/Port : 192.168.1.100/80
  Protocol : 6(tcp)
  VPN instance-name : ----
  Acl number : ----
  Vrrp id : ----
  Description : ----
 Total : 1
# 全局配置未指定接口时 Interface 显示 Any(部分版本显示 ----);回显以设备版本为准

3.2 端口转换映射(增强安全)

# 场景:将公网 8080 端口映射到内网 Web 服务器的 80 端口
# 好处:外网访问 http://203.0.113.1:8080 即可,不暴露标准 80 端口

[HUAWEI] nat server protocol tcp global 203.0.113.1 8080 inside 192.168.1.100 80

# 验证
# 外网用户访问 http://203.0.113.1:8080 → 实际到达 192.168.1.100:80

3.3 UDP 端口映射

# 场景:发布 DNS 服务器(UDP 53 端口)
[HUAWEI] nat server protocol udp global 203.0.113.1 53 inside 192.168.1.200 53

# 场景:发布 TFTP 服务器(UDP 69 端口)
[HUAWEI] nat server protocol udp global 203.0.113.1 69 inside 192.168.1.201 69

# 场景:发布 SIP 电话(UDP 5060 端口)
[HUAWEI] nat server protocol udp global 203.0.113.1 5060 inside 192.168.1.50 5060
# 注:SIP 除 5060 信令端口外,语音媒体流(RTP)使用动态 UDP 端口,
# 仅做 5060 映射无法完成通话;需启用 sip ALG(nat alg sip enable)或同时映射 RTP 端口段

3.4 多服务器多端口发布

# 场景:企业需要发布以下服务:
# Web 服务器:203.0.113.1:80 → 192.168.1.100:80
# Mail 服务器:203.0.113.1:25 → 192.168.1.101:25
# FTP 服务器:203.0.113.1:21 → 192.168.1.102:21
# SSH 管理:203.0.113.1:2222 → 192.168.1.1:22

[HUAWEI] nat server protocol tcp global 203.0.113.1 80 inside 192.168.1.100 80
[HUAWEI] nat server protocol tcp global 203.0.113.1 25 inside 192.168.1.101 25
[HUAWEI] nat server protocol tcp global 203.0.113.1 21 inside 192.168.1.102 21
[HUAWEI] nat server protocol tcp global 203.0.113.1 2222 inside 192.168.1.1 22

# 验证所有映射
<HUAWEI> display nat server
 Nat Server Information:
  Interface : Any
  Global IP/Port : 203.0.113.1/80
  Inside IP/Port : 192.168.1.100/80
  Protocol : 6(tcp)
  Interface : Any
  Global IP/Port : 203.0.113.1/25
  Inside IP/Port : 192.168.1.101/25
  Protocol : 6(tcp)
  Interface : Any
  Global IP/Port : 203.0.113.1/21
  Inside IP/Port : 192.168.1.102/21
  Protocol : 6(tcp)
  Interface : Any
  Global IP/Port : 203.0.113.1/2222
  Inside IP/Port : 192.168.1.1/22
  Protocol : 6(tcp)
 Total : 4
# 回显以设备版本为准

3.5 Easy-IP + NAT Server 组合配置

这是最常见的企业组网模式:Easy-IP 负责内网上网,NAT Server 负责对外发布服务。

# 场景:企业使用 PPPoE 拨号,同时发布 Web 和 Mail 服务

# Step 1: 拨号口配置 Easy-IP(内网上网)
[HUAWEI] acl 2000
[HUAWEI-acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255
[HUAWEI] interface Dialer0
[HUAWEI-Dialer0] nat outbound 2000

# Step 2: NAT Server 发布服务(使用 current-interface 表示当前接口 IP)
[HUAWEI] nat server protocol tcp global current-interface 80 inside 192.168.1.100 80
[HUAWEI] nat server protocol tcp global current-interface 25 inside 192.168.1.101 25

# 当拨号口 IP 变化时,NAT Server 自动使用新 IP,无需重新配置

3.6 端口范围映射

# 场景:发布一组端口(如游戏服务器的多个端口)
# 华为支持逐条配置或使用端口范围

# 方式1:逐条配置
[HUAWEI] nat server protocol udp global 203.0.113.1 7777 inside 192.168.1.50 7777
[HUAWEI] nat server protocol udp global 203.0.113.1 7778 inside 192.168.1.50 7778
[HUAWEI] nat server protocol udp global 203.0.113.1 7779 inside 192.168.1.50 7779

# 方式2:端口范围(部分华为设备/版本支持)
# nat server protocol udp global 203.0.113.1 7777-7780 inside 192.168.1.50 7777-7780
# 实际命令关键字(如 7777-7780 的写法、是否支持范围语法)请以设备命令手册为准

四、实战配置/案例分析

4.1 案例一:内网 Web 服务器对外发布完整方案

背景:某中小企业有一台内网 Web 服务器(192.168.10.100),域名 www.company.com 解析到公网 IP 203.0.113.10。要求 Internet 用户通过域名访问该网站。

# ===== 完整配置 =====

# 1. 配置出口接口 IP
[HUAWEI] interface GigabitEthernet0/0/1
[HUAWEI-GigabitEthernet0/0/1] ip address 203.0.113.10 255.255.255.252

# 2. 配置内网网关
[HUAWEI] interface Vlanif10
[HUAWEI-Vlanif10] ip address 192.168.10.1 255.255.255.0

# 3. 配置内网上网 Easy-IP
[HUAWEI] acl 2000
[HUAWEI-acl-basic-2000] rule 5 permit source 192.168.10.0 0.0.0.255
[HUAWEI] interface GigabitEthernet0/0/1
[HUAWEI-GigabitEthernet0/0/1] nat outbound 2000

# 4. 发布 Web 服务
[HUAWEI] nat server protocol tcp global 203.0.113.10 80 inside 192.168.10.100 80
[HUAWEI] nat server protocol tcp global 203.0.113.10 443 inside 192.168.10.100 443

# 5. 配置默认路由
[HUAWEI] ip route-static 0.0.0.0 0.0.0.0 203.0.113.9

# 6. 在 Web 服务器上配置默认网关为 192.168.10.1
# 7. 域名 DNS 解析 www.company.com → 203.0.113.10

# 验证
# 外网浏览器访问 http://www.company.com → 成功
# 内网浏览器访问 http://www.company.com → 可能失败(NAT 回环问题)

4.2 案例二:NAT 回环问题(NAT Hairpin)

故障背景:内网用户通过域名 www.company.com 访问对外发布的 Web 服务器时,无法访问;但外网用户访问正常。

# 根因分析:
# 1. 内网用户访问 www.company.com → DNS 解析为公网 IP 203.0.113.10
# 2. 数据包目的地址为 203.0.113.10(公网 IP),发往网关
# 3. 路由器查路由表:203.0.113.10 是自身接口地址(接口本地路由),报文被判为本机接收,不会向内网转发
# 4. NAT Server 的目的转换缺省只对从公网侧接口进入的报文生效(内环回功能缺省关闭),
#    目的为本设备接口地址的报文不会被转换为内网服务器地址(192.168.10.100)
# 5. 结果:报文既到不了内网服务器、也不做目的转换 → 内网用户访问失败

# 解决方案1:内网 DNS 拆分解析(推荐)
# 在内网 DNS 服务器上配置:
# www.company.com → 192.168.10.100(内网直接访问私网地址)
# 外网 DNS 保持不变:www.company.com → 203.0.113.10

# 解决方案2:启用 NAT Hairpin(内环 NAT)
[HUAWEI] nat hairpin enable
# 开启后,内网访问公网 IP 时也会经过 NAT 转换
# 流量走向:PC → 路由器(NAT Server 转换目的地址)→ 服务器 → 路由器(NAT outbound 转换源地址)→ PC
# (是否需要在接口视图下额外配置 hairpin,请以设备版本手册为准)

# 解决方案3:修改内网主机 Hosts 文件(临时方案)
# 在 PC 的 hosts 文件中加入一行,让域名直接解析到内网服务器地址:
# 192.168.10.100  www.company.com

4.3 案例三:FTP 被动模式端口映射

故障背景:FTP 服务器(192.168.1.200)通过 NAT Server 对外发布后,主动模式正常,但被动模式(PASV)无法传输文件。

# 根因分析:
# FTP 被动模式(PASV):客户端通过控制连接发送 PASV 命令,
# 服务器在 227 回复的应用层载荷中返回"数据连接地址":私网 IP + 随机高端口(如 192.168.1.200:50000)
# 未启用 FTP ALG 时,NAT 设备不解析/不改写载荷,也感知不到数据连接的建立过程
# → 客户端从 227 回复中拿到的是私网地址,无法从公网侧发起数据连接 → 传输失败

# 解决方案1(推荐):启用 FTP ALG
[HUAWEI] nat alg ftp enable
# FTP ALG 会解析 227 回复载荷中的地址/端口,改写为公网地址,
# 并为对应的数据端口自动建立 NAT 映射,客户端即可正常建立数据连接

# 解决方案2:限制 FTP 被动模式端口范围并映射
# 若不想依赖 ALG 的动态处理,可在 FTP 服务器上把被动模式端口段限定为
# 固定范围(如 50000~50100),再对该端口段做 NAT Server 映射
[HUAWEI] nat server protocol tcp global 203.0.113.1 50000 inside 192.168.1.200 50000
[HUAWEI] nat server protocol tcp global 203.0.113.1 50001 inside 192.168.1.200 50001
# ... 逐条映射工作量大,不推荐;端口范围映射语法见 3.6 节(支持情况以设备版本手册为准)

五、总结

映射类型 命令示例 适用场景
单端口映射 nat server protocol tcp global 203.0.113.1 80 inside 192.168.1.100 80 Web/SSH/Mail
端口转换映射 nat server protocol tcp global 203.0.113.1 8080 inside 192.168.1.100 80 增强安全
动态 IP 映射 nat server protocol tcp global current-interface 80 inside 192.168.1.100 80 PPPoE 拨号
UDP 映射 nat server protocol udp global 203.0.113.1 53 inside 192.168.1.200 53 DNS/TFTP/SIP
NAT Server 最佳实践 说明
仅发布必要端口 不要全端口映射,最小化暴露面
使用端口转换 公网端口与私网端口不同,增加安全性
启用 ALG FTP、SIP 等应用层协议需要 ALG 支持
注意 NAT 回环 内网通过域名访问时需特殊处理
配置访问控制 结合 ACL 限制允许访问 NAT Server 的源地址
监控映射状态 定期检查 display nat server 确认为 Up

思考

  1. NAT Server 配置了 global 203.0.113.1 80 inside 192.168.1.100 8080,外网用户访问哪个 URL 能到达内网服务器的 8080 端口?
  2. 如果同一台 NAT 设备上发布了两台 Web 服务器,但只有一个公网 IP,如何实现?
  3. NAT Hairpin(内环 NAT)会带来什么性能影响?为什么?

下篇预告:第45篇:NAT 穿越问题与 ALG