这次我们直接解决一个很经典的网络问题:公司内网部署了一台 Web 服务器,业务方要求外部互联网主机能够直接通过公网地址访问它。听起来很简单,但在防火墙策略不完整、NAT 规则写错、安全策略没放通的情况下,外部用户访问不通的概率非常高。这篇文章先梳理方案,再放防火墙部署逻辑,最后给你一套可落地的验证和排查流程。
这个场景的本质是防火墙的NAT 映射 + 安全策略放行 + 路由打通三件事。任何一块漏了,外部访问都会失败。后面会拿常见的防火墙配置方式来拆解,并把华为 eNSP 模拟器里的配置思路整理出来。同时提醒一下:配置防火墙放行互联网访问涉及公司内网安全和企业合规边界,操作前要先确认公司网络管理制度和授权范围,不要在生产环境乱放规则,更不要绕过安全策略直接映射核心数据库。
本文会覆盖适合场景、配置前的网络规划、防火墙 nat server 和安全策略的配置逻辑、端口映射对外网访问的影响、连通性测试方法、资源占用与性能观察、常见故障排查,以及一套工程化落地的配置建议。如果你是刚接手公司防火墙的运维人员,或者正在做网络实验准备考证,这篇可以直接收藏。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 功能目标 | 让外部互联网主机通过防火墙公网地址访问公司内部 Web 服务器 |
| 配置核心 | 防火墙 NAT 映射(端口映射或目的地址转换)+ 安全策略放行 + 路由打通 |
| 常用技术 | NAT Server、Destination NAT、Virtual Server、安全策略、回流 NAT |
| 推荐实验环境 | 华为 eNSP / H3C HCL 模拟器、VMware 虚拟化环境、真实防火墙测试区 |
| 前置要求 | 一台支持 NAT 的防火墙设备、公网 IP(测试可用模拟公网地址替代)、内部 Web 服务器 |
| 是否支持批量 | 防火墙规则通常需要逐条配置,不支持自动批量生成,但可以通过策略分组和地址组简化 |
| 是否支持接口 API | 不同厂商差异较大,部分企业级防火墙有 Web API 或自动化平台,但常规配置建议走 Web 管理界面或命令行 |
| 适合场景 | 企业对外发布官网、测试环境对外联调、公司内部系统临时开放给外部合作方 |
| 不适合场景 | 未做 Web 应用安全防护就大规模放公网、未申请授权的端口映射、敏感数据系统的直接裸露 |
从工程角度看,绝大多数防火墙的配置逻辑是相通的:先创建“外部不可信区域”和“内部服务器所在区域”,再把公网地址加某个端口的流量映射到内部服务器的私有地址和端口上,最后写安全策略定义允许谁访问什么服务。不同品牌只是菜单名称和命令风格不一样。
2. 适用场景与使用边界
2.1 适合什么场景
第一类是公司官网或营销站点对外发布。此时 Web 服务器放在 DMZ 区域,防火墙把公网 80/443 端口映射到服务器内网地址,外部用户通过域名或公网 IP 访问。第二类是项目联调。外部合作方的开发服务器需要通过你的公网地址访问内网某个测试 Web 服务和 API 接口,双方约定端口范围后做临时放行。第三类是实验学习。你在 eNSP、HCL 或真实设备上练习防火墙策略、NAT 规则、路由配置,为考证或岗位技能提升做准备。
2.2 不适合什么场景
不要把一个没有 Web 应用防火墙保护、没有访问日志、没有入侵检测的系统直接通过防火墙映射到公网。更不要只放行端口没有限制来源 IP,导致全网段都能尝试连接。凡是涉及数据库、运维后台、财务系统、人事系统这类敏感接口,都要坚持白名单访问,不能图省事全放通。如果公司内部有明确的安全规范,应先走变更审批流程,再修改防火墙配置。
2.3 安全与合规边界
配置防火墙放行公网访问,本质上是在公司网络边界“开口子”。这会带来几个必须处理的边界问题:外部访问来源不可控;Web 服务器一旦被攻破,会成为横向渗透内网的跳板;访问日志如果没有留存,后续出现问题无法溯源。因此配置时至少要保证:放行范围尽量精确,端口尽量收敛,服务器不能同时允许任意来源访问管理端口,所有访问行为留日志。涉及公司对外业务系统,还要遵守等保要求和数据安全相关法规,完成必要备案和组织审批后再上线。这不是一句空话,而是防火墙运维的基础责任。
3. 部署原理:外部互联网主机访问内部 Web 服务器的完整链路
配置之前,先弄懂这条访问链路到底怎么走。外部互联网主机发起访问时,目标地址是防火墙的公网 IP,比如203.0.113.10,目的端口是80;数据包到达防火墙后,防火墙根据 NAT 映射规则,把目的地址改写成内部 Web 服务器的私有 IP,比如192.168.10.10,端口仍为80;随后防火墙再查安全策略,判断这个流量是否允许从外部区域进入服务器所在区域;如果匹配到放行策略,防火墙把数据包转发到内网 Web 服务器;Web 服务器收到请求后返回响应,防火墙再对回程流量做反向转换,把源地址从内网 IP 改回公网 IP。外部主机看到的就是一次正常访问。
这里面包含三个关键判断点:
- NAT 规则是否匹配并正确改写了目标地址。
- 安全策略是否放行了从外网到服务器区域的入站流量。
- 防火墙是否有到达 Web 服务器的路由,以及回程流量是否能够正确回到防火墙。
如果外部访问不通,通常就是这三个环节中某一个断了。接下来从网络规划开始一步步配置。
4. 配置前的网络规划
4.1 明确网络区域和 IP 地址
做任何防火墙配置前,先把网络拓扑和地址规划弄清楚。下面是一个典型的防火墙发布 Web 服务器的网络结构:
外部互联网主机 | | 公网 IP:203.0.113.10 | [防火墙]------- 管理区域/内部区域 | | 内网网段:192.168.10.0/24 | [内部 Web 服务器] IP:192.168.10.10你需要提前确认的参数包括:防火墙连接外网的接口 IP 和区域、防火墙连接内部服务器的接口 IP 和区域、Web 服务器的私有 IP 和监听端口、对外发布的公网 IP 和映射端口、外部访问来源是否要做 IP 白名单限制、Web 服务类型是 HTTP 还是 HTTPS。
4.2 端口选择规划
常见 Web 服务对外端口是 80(HTTP)和 443(HTTPS)。如果公司外网 IP 只有一个,而内部有多个 Web 服务,可以规划不同的对外端口来区分。比如203.0.113.10:8080映射到192.168.10.10:80,203.0.113.10:8443映射到192.168.10.20:443。这种端口映射方式在企业里用得非常多,但要注意端口越多,防火墙对外暴露面越大。没有业务需求就不要开额外端口。
4.3 记录信息表
配置前建议把信息整理成一张表,方便后续写规则和排查:
| 参数 | 示例值 |
|---|---|
| 防火墙外网接口 IP | 203.0.113.1/30 |
| 防火墙内网接口 IP | 192.168.10.1/24 |
| Web 服务器 IP | 192.168.10.10 |
| Web 服务端口 | TCP 80 / TCP 443 |
| 对外发布 IP | 203.0.113.10 |
| 对外发布端口 | TCP 80 / TCP 443 |
| 允许访问来源 | 可选,默认 0.0.0.0/0,建议按需限制 |
5. 防火墙逐个配置步骤
下面以企业级防火墙最通用的配置逻辑为主线,按“区域 -> 地址对象 -> NAT -> 安全策略”顺序操作。不同厂商的菜单名不同,但思路一致。
5.1 创建安全区域
防火墙通常默认存在untrust(不可信区域)、trust(可信区域)、dmz(隔离区)。外部互联网接口放在untrust区域,Web 服务器所在接口要单独划分。如果 Web 服务器不承担深度访问内部系统的任务,建议把它放进dmz区域,不要把内网核心网段直接暴露给公网映射。
以华为 USG 系列的命令行为例,可以先查看区域配置,确认接口和区域绑定关系:
# 查看系统当前区域 display zone # 把 GigabitEthernet1/0/0 划入 untrust 区域 firewall zone untrust add interface GigabitEthernet1/0/0 # 把 GigabitEthernet1/0/1 划入 dmz 区域,Web 服务器接在该接口下 firewall zone dmz add interface GigabitEthernet1/0/1在 eNSP 里,操作方式是先在拓扑中添加防火墙并连线,然后双击防火墙进入 CLI 或使用 Web 界面,把接口划入对应安全区域。
5.2 创建地址对象
配置 NAT 和安全策略时,如果直接写 IP,后面维护会很难受。推荐先把 IP 地址定义成对象。外网访问源一般可以不定义,但 Web 服务器的内部 IP 建议定义成地址对象。在华为防火墙中:
# 创建地址对象,指向内部 Web 服务器 ip address-set server_web type object address 192.168.10.10 255.255.255.255在 H3C 防火墙中,可以进入对象组配置界面:
object-group ip address server_web network host address 192.168.10.10在深信服防火墙的 Web 管理界面上,则是通过“对象 -> 地址”菜单新增 IP 组或 IP 地址。
5.3 配置 NAT Server 端口映射
NAT Server 是实现外部互联网主机访问内部 Web 服务器最直接的配置方式。它的作用是把公网 IP 加端口映射到内网服务器 IP 加端口。华为防火墙配置示例:
# 进入外网接口视图 interface GigabitEthernet1/0/0 # 配置 NAT Server,公网 80 端口映射到 192.168.10.10 的 80 端口 nat server protocol tcp global 203.0.113.10 80 inside 192.168.10.10 80 # 如果外网 IP 是接口 IP,也可以直接写 current-interface # nat server protocol tcp global current-interface 80 inside 192.168.10.10 80如果对外端口需要改成 8080,则写成:
nat server protocol tcp global 203.0.113.10 8080 inside 192.168.10.10 80在 H3C 防火墙中,NAT 配置是另一种风格。以 H3C SecPath 系列为例:
# 创建 NAT 策略 nat policy rule name nat_web mode dnat destination-address 203.0.113.10 action dnat translate-address 192.168.10.10 translate-port 80深信服防火墙的 Web 管理界面通常在“防火墙 -> NAT 转发”中填写外网 IP、外网端口、内网 IP、内网端口,并勾选协议 TCP。
5.4 配置安全策略
配置完 NAT 还不够,防火墙默认都是拒绝跨区域访问的。必须增加一条允许从untrust区域访问dmz区域中 Web 服务器端口的安全策略。如果缺少这一步,外部访问会卡在防火墙上,表现出来就是连接超时或被拒绝。
华为防火墙安全策略配置示例:
# 创建安全策略,名称 external_to_web security-policy rule name external_to_web source-zone untrust destination-zone dmz destination-address address-set server_web service protocol tcp destination-port 80 action permit如果使用 HTTPS 对外发布,服务要同时放行 443:
security-policy rule name external_to_web_https source-zone untrust destination-zone dmz destination-address address-set server_web service protocol tcp destination-port 443 action permit在 eNSP 中配置完安全策略后,需要检查策略是否已经生效:
display security-policy rule all display firewall session tableH3C 防火墙安全策略示例:
security-policy ip rule name external_to_web source-zone untrust destination-zone dmz destination-address 192.168.10.10 0 service tcp destination-port 80 action pass深信服防火墙则是通过“安全策略 -> 新增策略”来配置源区域、目的区域、源地址、目的地址、服务和动作。
5.5 配置路由
NAT 和安全策略都配置正确后,还要确保防火墙能正确转发到 Web 服务器所在的内网网段。如果是直连路由,也就是防火墙 DMZ 接口 IP 与 Web 服务器同网段,防火墙会自动产生直连路由。如果是跨三层环境,需要配置静态路由指向下一跳交换机:
# 华为防火墙静态路由示例 ip route-static 192.168.10.0 255.255.255.0 192.168.20.254外网访问的回程流量同样重要。Web 服务器的网关必须指向防火墙,或者指向能够把回程流量送回防火墙的交换机。如果 Web 服务器网关写错,服务器能收到请求,但响应包会发到错误网关,外部访问一样不通。
6. 域名访问配置与常见发布方式
6.1 通过域名发布 Web 服务的基本逻辑
现实中,公司对外发布 Web 服务通常不会让用户记住公网 IP,而是通过域名访问。域名访问链路比 IP 直接访问多一个环节:外部主机先向 DNS 服务器发起解析请求获取域名对应的公网 IP;随后访问该 IP 的 80/443 端口;防火墙再把访问映射到内部 Web 服务器。因此,域名访问的前提是 Web 服务器的对外地址必须能正确映射到防火墙公网 IP,同时 DNS 解析记录已经生效。常见做法有两种:一是域名直接解析到防火墙公网 IP;二是域名解析到云上负载均衡或 CDN 的 IP,再由这些设备把流量转回防火墙公网 IP。对于只有一个出口 IP 的小型企业,直接把域名 A 记录指向防火墙公网 IP 是最常见的做法。
6.2 HTTPS 发布时的证书注意点
如果发布的是 HTTPS 服务,需要在内部 Web 服务器上配置好 SSL 证书,确保服务器监听 443 端口,并且证书域名与用户访问的域名一致。防火墙 NAT 层面只需要做端口映射,一般不需要卸载证书。外部主机访问域名时,如果出现证书不匹配告警,通常是证书域名配置错误,而不是防火墙的问题。
6.3 Web 服务器侧配置
Web 服务器要保证监听地址不是只能本机访问。以 Linux 服务器上的 Nginx 为例,默认配置已经监听 80 端口,但要注意是否有防火墙软件拦截,比如 firewalld 或 iptables。在 CentOS 等系统上执行:
# 查看端口监听状态 ss -tlnp | grep -E ':80|:443' # 查看 firewalld 是否放行 80 端口 firewall-cmd --list-all如果 Web 服务器自身启用了防火墙,需要放行对应端口:
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --reload7. 功能测试与效果验证
7.1 从外部网络发起访问测试
配置完成后,从一台不属于公司内网的外部测试主机发起访问。在 Windows 命令提示符或 Linux 终端中执行:
curl -I http://203.0.113.10预期结果是返回 HTTP 状态码200 OK或 Web 服务自定义的状态码。如果使用 HTTPS:
curl -I https://203.0.113.10也可以使用浏览器直接访问域名或公网 IP。如果页面能正常打开,说明 NAT 和安全策略链路已经打通。
7.2 防火墙会话检查
在防火墙设备上确认 NAT 会话和转发状态。以华为防火墙为例:
display firewall session table | include 203.0.113.10正常会看到从外部主机 IP 到内部 Web 服务器 IP 的会话记录。这个检查能区分问题是出在 NAT 还是出在安全策略。
7.3 判断成功与否的标准
满足以下条件可以认为配置成功:外部测试主机能收到 Web 服务器的 HTTP 响应;防火墙会话表中能看到预期端口的双边会话;Web 服务器访问日志中出现来自外部 IP 的请求记录;连续多次访问稳定,没有间歇性超时。
7.4 常见失败原因
如果外部访问不通,第一步先做通断测试。如果用ping不通但页面能打开,说明服务器禁止 ICMP,不用过度纠结。如果curl无响应或超时,排查优先级是:先确认外部主机到防火墙公网 IP 的链路是否可达,再检查防火墙 NAT 规则和会话,再检查安全策略是否匹配,最后检查 Web 服务器本地服务是否正常。
8. 资源占用与性能观察
8.1 防火墙连接数观察
配置完 NAT 映射后,防火墙上的并发连接数和新建连接速率会有变化。尤其在出现外部扫描或突发访问时,连接数可能明显上升。使用如下命令观察华为防火墙:
display firewall session table statistics display cpu-usage display memory-usage如果发现 CPU 使用率持续偏高,优先检查是否出现了针对公网 IP 的端口扫描。此时应当收紧安全策略,只允许明确需要的来源 IP 访问。
8.2 Web 服务器连接数观察
Web 服务器同样要关注连接数。Nginx 可以在nginx.conf中开启 stub_status 模块,输入如下配置:
location /nginx_status { stub_status on; allow 127.0.0.1; allow 192.168.10.0/24; deny all; }Apache 可以通过server-status模块查看。观察点主要是Active connections和Waiting数。如果数值快速上升且不下降,可能是有外部程序在频繁请求,需要结合访问日志分析。
8.3 性能影响点
对外端口映射对防火墙性能的影响通常不大,因为 NAT 是防火墙基础能力。真正影响性能的是安全策略是否触发深度检测、是否开启入侵防御、是否启用 SSL 解密。如果开启这些高级安全功能,HTTPS 流量的转发性能会明显下降,此时要考虑 Web 服务器的最大并发量有多大,是否需要对公网访问做流量限速。
9. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 外部访问公网 IP 超时 | NAT 规则错误或安全策略未放行 | 检查防火墙会话表和策略命中情况 | 修正 NAT Server 映射,补安全策略 |
| 外部能 ping 通,但浏览器打不开 | 端口映射端口错误,或 Web 服务未启动 | 在防火墙和服务器上分别检查端口 | 修正端口映射,启动 Web 服务 |
| 内网用户通过公网 IP 无法访问自己公司网站 | 缺少 NAT 回流规则 | 查看防火墙是否支持 NAT hairpin | 配置 NAT 回流或添加目的 NAT 环路规则 |
| 配置完 NAT 后所有外部访问都失败 | 安全策略动了默认拒绝规则 | 查看策略配置顺序 | 确认策略方向、源区域、目的区域是否正确 |
| HTTPS 访问提示证书错误 | Web 服务器证书域名不匹配 | 浏览器查看证书详情 | 重新签发或配置正确域名的证书 |
| 访问时通时不通 | 多出口负载不均、防火墙会话超时或运营商封端口 | 检查防火墙日志和双链路配置 | 固定出口链路,调整会话保持时间 |
| 服务器收到大量异常请求 | 规则过宽,暴露全网端口 | 查看防火墙日志来源 IP | 收紧来源白名单,启用入侵防御 |
10. 最佳实践与配置建议
10.1 先最小化,再放量
第一次配置时只映射单个端口,比如 80 端口,并限制来源 IP 为公司办公网出口 IP 或测试主机 IP。验证完全跑通后,再按业务需要放开其他端口和来源范围。不要一次性把 1-65535 端口全部映射到一个内网 IP,这是最危险的做法之一。
10.2 地址分组与策略分类管理
当服务器数量增多后,建议把防火墙上的地址对象统一命名,例如WEB-SRV-PRD、WEB-SRV-TEST、API-SRV-PRD。安全策略名称也要有可读性,比如POL-UNTRUST-DMZ-WEB80-PERMIT。这样后续排查策略冲突和配置审查时能快速定位问题。
10.3 Web 服务器本身的安全基线
即使防火墙已经做了端口映射,Web 服务器自身的防护也不能省。操作系统补丁要及时更新;Web 服务运行账号使用低权限账号;服务器只开放业务所需端口;关闭不必要的管理端口公网映射;Web 目录写入权限做最小化配置;日志启用访问记录和错误记录。防火墙只能解决网络可达问题,不能解决 Web 应用漏洞问题。
10.4 日志留存和监控
企业防火墙配置对外访问策略时,至少要开启会话日志和策略命中日志。华为防火墙配置日志发送到日志服务器的方法通常在info-center中配置。如下是一条简单示例:
info-center loghost 192.168.10.100深信服和 H3C 防火墙则通过 web 控制台把日志发送到 syslog 服务器。外部访问流量如果出现规律性扫描,应第一时间根据日志来源 IP 封禁。
10.5 配置备份与变更记录
每次修改防火墙策略之前,先备份当前配置。华为防火墙:
display current-configuration save configurationH3C 防火墙:
display current-configuration save force修改结束后,可以把变更内容记录到运维文档里。内容包括变更时间、变更人、变更原因、涉及策略、回退方案。没有回退方案就操作生产防火墙,一旦出错容易导致公司业务长时间中断。
11. 不同品牌防火墙配置差异速览
不同厂商的配置界面和服务名称有差异,下面给出一张速览表,方便你工作时快速定位菜单或命令位置。
| 厂商/产品 | NAT 名称 | 安全策略入口 | 常用配置方式 |
|---|---|---|---|
| 华为 USG / eNSP | nat server | 安全策略 security-policy | CLI / Web |
| H3C SecPath | nat policy / dnat | 安全策略 security-policy ip | CLI / Web |
| 深信服防火墙 | NAT 转发 | 安全策略规则 | Web 管理控制台 |
| 天融信防火墙 | 目的地址转换 / 端口映射 | 访问控制策略 | Web 管理控制台 |
| 飞塔 FortiGate | Virtual IP + Firewall Policy | Policy & Objects | Web / CLI |
华为 eNSP 中做防火墙实验时,要注意模拟器自带防火墙仅用于学习,部分版本不支持全部高级特性,建议优先用 Web 界面或标准 CLI 操作。深信服和天融信等商用防火墙在真实设备上的菜单名称会随版本变化,操作时以自己设备当前 Web 控制台显示为准。
12. 总结与下一步
配置外部互联网主机访问公司内部 Web 服务器,核心就是 NAT 映射加安全策略再加路由打通。多数访问不通的问题,不是 NAT 写错,就是安全策略没有命中所致。建议你在实验环境先完整跑一遍,把 NAT Server、安全策略、静态路由和访问日志这四个环节的动作记熟。在线生产设备配置前,必须先备份、评估风险并走内部审批,不要因为业务催得急就直接跳过安全评估。把端口映射、来源白名单和日志审计三件事做扎实,这个对外发布场景才算真正交付完成。后�度可以直接尝试多服务器的端口分流映射、基于域名的反向代理发布,以及 HTTPS 证书自动化替换方案,这些都是常见扩展方向。