端口范围能不能一条写完
把内网服务器的多个端口发布到公网时,最常被问到的是能不能一条命令写一段端口范围。三厂都没有端口区间映射的单条语法,只能逐条配置,或者在上层用反向代理把多个端口收敛成一个。逐条写虽然啰嗦,但映射关系一眼可见,审计与排障都更省事。
基本信息
| 适用平台 | 思科 IOS / 华为 VRP / H3C Comware 出口设备 |
|---|---|
| 华为与 H3C | nat server protocol tcp global 公网地址 端口 inside 内网地址 端口 |
| 思科 | ip nat inside source static tcp 内网地址 端口 公网地址 端口 |
| 结论 | 三厂均无端口区间语法,逐端口配置或用反向代理收敛 |
典型使用场景
- 监控平台、小程序后端等一批连续端口的对外发布
- 同一台服务器上多个服务端口需要映射到公网
- 排查「写了范围却没生效」,实际是三厂都不支持区间语法
- 映射条目过多时的收敛改造:改用反向代理
- 上线前逐条核对映射清单与业务文档是否一致
华为 VRP
华为 VRP
[Huawei-GigabitEthernet0/0/1] nat server protocol tcp global 202.1.1.1 8000 inside 192.168.1.30 8000
[Huawei-GigabitEthernet0/0/1] nat server protocol tcp global 202.1.1.1 8001 inside 192.168.1.30 8001
<Huawei> display nat server | include 800思科 IOS
思科 IOS
SW-CORE-01(config)# ip nat inside source static tcp 192.168.1.30 8000 202.1.1.1 8000
SW-CORE-01(config)# ip nat inside source static tcp 192.168.1.30 8001 202.1.1.1 8001
! 端口段需逐条配置,或在上层用反向代理收敛为一个端口
SW-CORE-01# show ip nat translations | include 800H3C Comware
H3C Comware
[H3C-GigabitEthernet1/0/1] nat server protocol tcp global 202.1.1.1 8000 inside 192.168.1.30 8000
[H3C-GigabitEthernet1/0/1] nat server protocol tcp global 202.1.1.1 8001 inside 192.168.1.30 8001
<H3C> display nat server映射方式的取舍
| 方式 | 优点 | 代价 |
|---|---|---|
| 逐端口静态映射 | 语义清晰、便于审计 | 条目多,占用 NAT 表项 |
| 反向代理收敛 | 只暴露 80 与 443,暴露面最小 | 需要额外的设备与配置维护 |
| 端口区间诉求 | 三厂都没有单条语法 | 只能逐条配置或用代理替代 |
| 全端口映射 | 配置最少 | 暴露面过大,不建议使用 |
三厂都没有「端口区间映射」的单条语法,指望一条命令覆盖一段端口是不成立的。映射条目多时要评估设备 NAT 表项上限,长期规划上优先用反向代理把多个端口收敛到 80 或 443。
逐条配置时建议保持内外端口一致(如外部 8000 对应内部 8000),确需区分时再分开写,这样映射清单与业务文档容易对齐,事后排查也不会因为端口错位而反复核对。