第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 |
思考
- NAT Server 配置了
global 203.0.113.1 80 inside 192.168.1.100 8080,外网用户访问哪个 URL 能到达内网服务器的 8080 端口? - 如果同一台 NAT 设备上发布了两台 Web 服务器,但只有一个公网 IP,如何实现?
- NAT Hairpin(内环 NAT)会带来什么性能影响?为什么?
下篇预告:第45篇:NAT 穿越问题与 ALG