拓冰建站拓冰建站
首页 / 资讯中心 / 正文

防火墙发布内网Web服务:目的NAT与安全策略配置解析

做网络或运维这一行大概率被问过这样一句话内网 Web 服务已经部署好了外网为什么还是访问不了如果排查后发现网站进程在跑、域名解析也正常问题往往集中在防火墙配置上。这篇文章围绕一个非常典型的需求展开通过防火墙的目的 NAT 和安全策略让外部互联网主机可以访问公司内部 Web 服务器。先说结论这种需求不是改一条“端口映射”就能结束的。完整链路通常需要四类配置配合接口和安全域、目的 NAT也叫服务器映射/端口映射/DNAT、入方向安全策略以及若干基础路由项。任何一环缺失外部访问都起不来。文章会从原理、网络规划、配置步骤、验证手段到常见排错完整过一遍不管你现在用的是华为、H3C、深信服、天融信还是其他家用级防火墙只要把配置逻辑对齐剩下的就是按钮位置差异。尤其适合下面几类读者刚接手公司出口防火墙的运维新人、要给客户演示系统的实施工程师、被“外网访问内网 Web”这类需求反复折磨的网络管理员。下面直接用工程化视角拆解全过程。1. 外部互联网主机访问内部 Web 服务器方案能力速览规划项说明核心需求外部互联网主机通过公网 IP/域名访问公司内部 Web 服务器的 80/443 服务技术本质防火墙目的 NAT 入方向安全策略 路由可达推荐网络位置Web 服务器放在防火墙 DMZ 区不要直接放进办公网核心区主要开放端口HTTP 80、HTTPS 443按实际业务最小化开放涉及防火墙功能接口安全域、服务器映射/DNAT、安全策略、会话表、日志验证方式外网侧主机用浏览器、curl、telnet 测试防火墙看会话表和策略命中计数安全边界只放行业务必需端口公网管理入口必须限制源 IP保留审计日志典型风险直接“全端口映射”到内网、目标 Web 服务本身存在漏洞、未做来源限制这个方案的价值很明确不需要申请额外专线不用改内部网络架构一台带 NAT 能力的防火墙就可以把内部 Web 服务安全地发布到公网。2. 适用场景与使用边界2.1 适合哪些场景第一类是正式对外业务发布。公司有自己的官网、产品介绍页、客户查询系统申请了合法公网 IP 和域名后需要把这些跑在内网服务器上的 Web 服务开放给公网用户。第二类是短期项目演示。给外部客户演示内部系统时客户不愿意装客户端只想用浏览器访问你的服务这时临时发布一个 HTTPS 页面最省事。第三类是前后端联调。外包开发商需要访问公司内部测试站点又不想把源码和数据库暴露在外网。无论是哪类场景关键前提都是你拥有这些服务器和防火墙的管理权限并且已经获得公司安全负责人授权。2.2 不适合哪些场景如果目标 Web 服务器承载了财务、人事、核心数据库等高敏感业务不建议直接用 NAT 映射暴露到公网除非已经完成安全评估并配套了 WAF、入侵检测、日志审计等加固手段。也不建议把服务器所在网段和办公终端混在一起例如让 Web 服务器直接使用办公电脑所在的 192.168.x.x 网段再把整段 80/443 映射出去这种做法会让攻击面扩大到整个办公网。2.3 安全与合规边界对外发布 Web 服务前要确认域名、公网 IP、ICP 备案等手续是否已经合规不要自己私拉公网入口绕过既有网络管理流程。在测试环境中可以使用本文的配置方法做验证但正式上线前必须由网络负责人评审策略。3. 拓扑规划与信息清单先看一个简化但典型的网络拓扑外部互联网主机 198.51.100.5 | | 访问 https://www.example.com v 防火墙 WAN 接口 203.0.113.1/24 ----- untrust 区域 | | DNAT: 203.0.113.10:443 - 192.168.10.10:443 v 防火墙 DMZ 接口 192.168.10.1/24 ----- dmz 区域 | v DMZ 区 Web 服务器 192.168.10.10这里使用的是文档保留地址。演示环境中公网侧可以是 203.0.113.x实际生产环境必须替换成运营商分配给你的合法公网 IP。内网 DMZ 段使用 192.168.10.0/24。规划时至少要把以下信息整理成一张表参数示例值说明公网接口 IP203.0.113.1/24防火墙 WAN 口地址内部接口 IP192.168.10.1/24防火墙 DMZ 口地址对外公网 IP203.0.113.10专门用于 NAT 映射的合法公网地址Web 服务器内网 IP192.168.10.10DMZ 区服务器地址对外协议端口443/TCP尽量只开放 HTTPS内网服务端口443/TCPWeb 服务实际监听端口域名解析www.example.com - 203.0.113.10公网 DNS 或测试用 hosts源地址限制可选如仅允许 198.51.100.0/24可缩小暴露面如果服务器同时需要跑 HTTP 和 HTTPS一般建议对外只放 443再把 80 跳转到 443。这样可以减少明文流量和中间人风险。4. 为什么“端口映射”和“安全策略”必须同时配置很多初学防火墙的人会混淆一件事我到底需要做 NAT还是需要放安全策略答案是两者都做缺一不可。目的 NAT 解决的是“地址能不能到达”的问题。公网用户发起访问时目的地址是 203.0.113.10而内部 Web 服务器是 192.168.10.10。如果不做目的 NAT公网报文进入防火墙后会被转发到一个外部无法路由的私网地址上报文不可能到达 Web 服务器。安全策略解决的是“流量允不允许通过”的问题。防火墙默认情况下通常拒绝跨安全域的流量。即使你做了目的 NAT外部流量被转换成了到 192.168.10.10 的访问如果 untrust 到 dmz 方向没有对应策略防火墙依然会丢包最常见的现象是外网 telnet 公网 IP 的 443 端口不通防火墙会话表里能看到尝试但 action 是 deny。另外还有一条经常被忽略回程流量并不需要你额外配置“反向 NAT”。Web 服务器收到请求后会向源地址回包。防火墙在建立 NAT 会话后会记住“公网地址:端口 - 内网地址:端口”的对应关系当服务器回包经过防火墙时会自动把目的地址从 192.168.10.10 的私网源转换回公网地址 203.0.113.10再从 WAN 口返回外部用户。这也是“状态化防火墙”和普通路由器之间最明显的区别之一。5. 环境准备与前置条件5.1 防火墙侧检查防火墙必须工作在路由模式并至少有三种可用接口或子接口连接互联网的 WAN 口、连接 DMZ 服务器的接口、用于管理维护的 LAN 口。更稳妥的做法是给防火墙划分安全域把 WAN 口划入 untrust把服务器接口划入 dmz把办公网或管理网划入 trust。配置前还要保证防火墙系统时间准确否则后续日志审计的时间戳会失真。5.2 Web 服务器侧检查先在内网本机验证 Web 服务本身是否正常# 在 Web 服务器本机检查服务是否监听 ss -lntp | grep -E :80|:443 # 本机访问测试 curl -I http://127.0.0.1 curl -I https://127.0.0.1 -k如果本机都不通先解决 Web 服务本身的问题不要急着去改防火墙。常见的坑有两个一是 Nginx/Apache/IIS 只监听了 127.0.0.1外部网络根本访问不到二是服务器本地操作系统防火墙拦截了 80/443 入站端口。可以临时放行或关掉本地防火墙做对比测试但生产环境建议添加精确入站规则而不是直接关闭防火墙。5.3 公网侧资源检查对外发布需要至少一个合法公网 IP并确认它没有被运营商封禁常用端口。如果服务器上配置了 HTTPS 域名访问还需要准备好域名和证书。至少在测试阶段可以用公网 IP 端口直接访问但生产环境强烈建议使用域名避免用户记忆 IP 地址也方便以后切换公网入口。6. 防火墙 NAT 映射与安全策略配置不同品牌防火墙的菜单名称有差异但配置项几乎一样。下面先给一套通用动作清单再给一个以华为 USG 系列为背景的示意 CLI方便你理解真实配置长的样子。6.1 配置接口与安全域先确保接口已有 IP 地址并加入了正确安全域interface GigabitEthernet1/0/0 ip address 203.0.113.1 255.255.255.0 interface GigabitEthernet1/0/1 ip address 192.168.10.1 255.255.255.0 firewall zone untrust add interface GigabitEthernet1/0/0 firewall zone dmz add interface GigabitEthernet1/0/1以上是示意 CLI真实设备上请按型号手册调整。如果防火墙是 H3C SecPath、深信服 AF、天融信 NGFW 等产品一般通过 Web 管理界面的“网络接口”和“安全域”菜单完成同样操作。6.2 创建目的 NAT/服务器映射目的 NAT 负责把 203.0.113.10:443 映射到 192.168.10.10:443。典型 CLI 逻辑如下nat server policy web_https zone untrust destination-address 203.0.113.10 0 service 443 tcp translate-address 192.168.10.10在 Web 管理界面上通常叫“服务器映射”“端口映射”“虚拟服务器”“NAT 规则”配置内容是同一套关系表单字段示例值公网 IP203.0.113.10公网端口443内网 IP192.168.10.10内网端口443协议TCP映射类型目的 NAT / DNAT如果同时要发布 HTTP再增加一条 80 端口映射。但考虑到 HTTPS 和 HTTP 跳转逻辑可以在公网只开放 443然后在 Web 服务器内部自行处理 80 到 443 的重定向。业务必须面向公网开放多个端口时建议逐条映射而不是一次性把 Web 服务器整段 IP 放出去。6.3 放行安全策略完成 NAT 之后必须再增加一条从 untrust 到 dmz 的安全策略security-policy rule name policy_web_from_untrust source-zone untrust destination-zone dmz destination-address 192.168.10.10 32 service https action permit这条策略的核心语义是允许所有外部互联网主机访问 DMZ 区的 192.168.10.10 的 443 端口。这里的 destination-address 使用的是 NAT 转换后的私网服务器地址。大多数防火墙在启用 NAT server 后会先执行地址转换再匹配安全策略所以策略里写私网 IP 是常用做法如果你所用设备要求在策略里写公网地址就按设备实际规则调整。需要强调的是不要把动作写得过于宽松。推荐的最小策略写法是方向指定 untrust - dmz目标只指定 Web 服务器地址服务只指定 80/443而不是“any to any”。6.4 服务器主动访问外网时的源 NAT配置了目的 NAT 后外部访问 Web 服务器的回程是自动解决的。但如果 DMZ 区 Web 服务器需要自己访问外网比如拉取系统补丁、调用第三方支付 API、上传日志到云端那就还需要一条源 NAT 策略。否则服务器发出的报文源地址是私网 192.168.10.10公网回包无法路由回去。nat source-policy rule name snat_server_out source-zone dmz destination-address any action source-nat easy-ip源 NAT 的策略名称和命令格式因厂商差异较大这里只是示意。如果你的 Web 服务器完全不需要主动上外网可以忽略这一步甚至在最终安全策略里禁止 DMZ 主动访问外网进一步收缩风险面。7. 配置后的功能验证流程配置完成后不能只看“策略已提交”就算结束。建议按照从底层到应用层的方式逐步验证。7.1 Web 服务器本机验证在 Web 服务器上执行# 检查本机 443 监听 curl -I https://127.0.0.1 -k # 查看 Web 服务进程确认是 Nginx/Apache/httpd ps -ef | grep -E nginx|apache|httpd这一步确认服务进程存在并且监听地址不限于回环接口。7.2 防火墙下联内网验证从防火墙信任区域或者办公网内一台主机访问服务器内网地址curl -I https://192.168.10.10 -k如果内网能通说明 Web 服务和后台路由没有问题问题范围可以缩小到 NAT 和安全策略。7.3 公网侧验证从外网主机或模拟外网流量的测试机执行# 测试 TCP 端口是否可达 nc -vz 203.0.113.10 443 # 使用 curl 观察 HTTP 响应码和响应头 curl -I https://203.0.113.10 -k # 如果配置了域名和 Host用域名请求 curl -I https://www.example.com -k如果外网能返回 HTTP 200/301/302 等正常状态码说明整条链路已经通了。还可以观察响应头里的 Server 字段判断流量确实到达了后端 Web 服务器而不是被防火墙或 CDN 拦截。如果外网 telnet 端口成功但 curl 失败重点检查 Web 服务里的域名/Host 配置是否匹配请求头。例如多个虚拟主机共存时直接访问 IP 可能返回默认站点而不是目标站点。7.4 Web 服务器访问日志验证在 Web 服务器查看访问日志# Nginx 默认日志路径 tail -f /var/log/nginx/access.log # Apache 默认日志路径 tail -f /var/log/httpd/access_log当外网用户访问时如果日志里出现来自公网源地址的请求记录说明从防火墙到服务器的转发已经成功。7.5 防火墙会话验证在防火墙查看 TCP 443 会话确认是否有状态为 established 的连接display session table protocol tcp destination-ip 192.168.10.10 verbose不同厂商命令名称不同华为部分设备为 display session table思科 ASA 可用 show connH3C 可用 display session table。只要能看到目标地址为 192.168.10.10 且端口为 443 的 established 会话大概率说明 NAT 和策略都生效了。8. 防火墙资源占用与性能观察防火墙不是个人电脑不存在显存概念但同样有资源瓶颈。配置外部访问后需要观察三类资源。第一是设备 CPU 和内存。Web 服务一旦被外部频繁访问防火墙需要处理 NAT 转换、策略匹配、会话建立和日志记录。如果设备 CPU 持续接近 100%先看是不是日志量过大再看是否需要升级硬件或把 Web 服务迁移到专用负载均衡设备后面。第二是并发会话数和新建会话速率。目的 NAT 会让每个外部请求占用一条会话表项。默认会话老化时间如果太短大文件下载或 WebSocket 长连接可能被中途断开如果太长又可能造成会话表膨胀。生产环境建议针对 Web 服务的 TCP 会话设置合理的空闲超时并对大流量下载场景做单独验证。第三是带宽和延迟。外部访问走的如果是普通宽带或专线实际吞吐量会直接影响页面打开速度。可以分别在防火墙 WAN 口和下联 DMZ 口做流量统计确认拥塞点是在公网链路、防火墙转发还是 Web 服务器本身。更稳妥的做法是先用单用户小文件测试再逐步加大并发不要一上来就压测避免把业务压挂。9. 常见问题与排查方法问题现象可能原因排查方式解决方案外网 ping 公网 IP 通但访问端口不通NAT 没生效或安全策略未放行防火墙查看会话表、策略命中计数补目的 NAT检查 untrust - dmz 策略外网 curl 返回 503/502/超时Web 服务后端异常或监听地址不对内网直接访问服务器 IP修复 Web 服务确认监听 0.0.0.0 或对应网卡外网可以访问内网用公网域名访问不了防火墙未开启 NAT 回环在内网同一网段尝试 curl 内网 IP通过内网 DNS 解析到内网 IP或在防火墙配置 hairpin NAT外网端口通但页面提示应用级错误防火墙已经通了Web 配置问题查看应用日志和站点根路径检查虚拟目录、反向路由、URL 路径配置例如 ASP.NET 站点若报“您的 Web 服务器未正确设置以解析 /ocm-provider/”往往是站点根路径或虚拟目录未匹配而不是防火墙问题Web 服务器日志里没有来自公网的访问记录流量没有到达服务器抓包确认目的 IP 是否被正确转换检查目的 NAT 中内网 IP 是否填错添加策略后仍被拒绝策略顺序不对或被更高优先级策略匹配查看策略命中计数调高目标策略优先级或检查是否存在全局 deny 策略代理设备/反向流量设备转发后源 IP 全是防火墙地址需要保留真实客户端 IP查看 Web 日志中的 x-forwarded-for 字段在防火墙或 Web 层配置 X-Forwarded-For 传递其中“内网访问公网域名失败”是一个很典型的问题。原因是内部用户访问目的地址为公网 IP 时报文从内网直接到防火墙但后续回包路径和外部用户的 NAT 会话不一致导致防火墙无法匹配会话。解决思路有两种在公司内部 DNS 上把域名解析为内网服务器 IP或者开启防火墙的 NAT 回环功能。生产环境更推荐前者逻辑清楚且不增加防火墙负担。10. 安全加固与日常运维建议配置好外部访问只是开始更关键的是控制风险。对外只开放最小端口范围。绝大多数 Web 业务只开放 443 即可80 仅用于跳转或不开放。不推荐把 22、3389、数据库端口 3306/5432、Redis 6379 直接映射到公网。如果有人要求“顺便把服务器远程端口也映射出去”应该直接拒绝改成通过带外管理、堡垒机或虚拟桌面方案访问。对管理地址做来源限制。防火墙 Web 管理界面如果暴露在公网本身就是巨大风险。华为、H3C、深信服、天融信等设备默认通常限制管理口为 trust 区域或指定源地址配置时不要为了方便而改成 all。需要远程维护时先通过安全可控的管理通道接入内网再访问防火墙管理地址。Web 服务器本身要注意加固。用 HTTPS 替换 HTTPTLS 协议至少启用 1.2不要使用默认自签名证书对外提供服务定期更新 Web 服务软件版本防止已知漏洞被利用。日志要单独保存方便出现异常访问时追溯。外网流量接入后可以先观察一周访问日志看看是否存在扫描、爆破、异常路径探测等行为再决定是否加入更严格的访问控制。11. 防火墙配置变更与回滚管理第一次做这类发布不要把规则一把梭。建议按以下顺序执行先做最小范围验证。在测试环境或业务低峰期创建目的 NAT 和安全策略用外网测试机访问确认可以打开页面然后持续观察 10 到 30 分钟看是否有异常报错。保存当前配置。大多数防火墙都有配置保存/备份功能。变更前导出一份当前配置变更后再导出一次方便快速回滚。命令行设备可以用 save、write memory、copy running-config startup-config 等命令保存Web 设备通常有“保存配置”“备份配置”按钮。在策略中添加描述和负责人字段。网络团队共用一台防火墙时如果不注明用途几个月后没人能说清这条 NAT 是为谁开放的。建议在规则描述中写明业务名称、负责人、联系电话、过期时间。对临时开放策略设置定时失效。如果是给客户演示三天可以在防火墙或上层安全设备上设置策略有效时间到期自动阻断。避免“临时开一下”变成永久规则。12. 总结与后续扩展防火墙发布内部 Web 服务最需要理解清楚的一点是目的 NAT 负责“把公网地址翻译成内网地址”安全策略负责“允许这条访问链路通过”。两者配合好外部互联网主机才能稳定访问公司内部 Web 服务器。验证时从本机、内网、外网、防火墙会话四个层面逐级排查基本能快速定位绝大多数问题。整个配置过程并不复杂难点在于安全边界的把控。端口越少越好、策略越明确越好、日志越完整越好这三条会长期保护你的网络环境。如果后续业务量增长可以在 Web 服务器前面增加一套负载均衡或 Web 应用防火墙让外部访问入口更专业也更容易扩展。建议先把基础 NAT 发布流程收藏起来下次遇到类似需求时直接按清单操作。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门