华为防火墙双ISP出口NAT配置与服务器发布实战排障指南

发布时间:2026/10/5 5:55:58
华为防火墙双ISP出口NAT配置与服务器发布实战排障指南 做华为防火墙运维这些年USG系列从老一代的USG2000到现在的6000系列NAT这个模块踩过的坑真的能写满一个笔记本。今天专门聊一个出现频率极高的组网双ISP出口两条运营商线路都接在防火墙上内网还有服务器要通过公网IP对外发布。这种场景在中小企业里太常见了一条电信一条联通或者一条固定IP一条拨号服务器对外提供Web、OA、ERP这些业务。乍一听不复杂但实际配完一测经常冒出“外网能通内网不通”“电信用户访问正常联通用户打不开”“服务器回包丢了”之类的诡异问题。这篇就把华为防火墙NAT在双ISP出口加服务器发布场景下的关键设计点、配置顺序和排障思路完整过一遍新手照着做能少踩坑老手也可以回头检查一下自己有没有漏细节。1. 双ISP出口服务器发布翻车点基本都在这几个环节1.1 典型组网长什么样先描述一下最常见的拓扑后面所有配置和故障分析都围绕这个展开。防火墙两个公网接口分别接电信和联通比如GE1/0/0接电信GE1/0/1接联通内网GE1/0/2下面接办公网段比如192.168.10.0/24。服务器放在DMZ区或者Trust区比如192.168.20.10需要把Web服务、OA系统发布到公网。两条链路都有各自固定的公网地址电信侧是202.100.1.0/29这个段接口地址202.100.1.1还能拿出来一个公网IP做服务器映射联通侧是203.100.2.0/29接口地址203.100.2.1。办公网的用户上网需要分流比如电信用户走电信联通用户走联通或者按目的地址分流。服务器发布的需求分两种一种只通过电信的公网IP发布联通链路纯粹做办公网上网另一种是电信、联通两个公网IP都映射到同一台服务器这样两条链路都承担服务器访问流量。后一种对NAT和路由的配合要求更高很多翻车现场就是从这儿开始的。1.2 为什么NAT和路由会互相绑架很多人把NAT和路由当成两件事单独配置路由器上写路由防火墙上写NAT逻辑上好像没毛病。但在双ISP出口场景下NAT和路由是强耦合的尤其是NAT Server发布服务器时入向流量从哪个接口进来回包就必须从哪个接口出去。这不是路由能决定的这是状态检测防火墙会话表决定的。华为USG是状态检测防火墙一条连接的第一个报文到达后防火墙会建立会话表项记录入接口、出接口、源地址转换前后的IP和端口、目的地址转换前后的IP和端口。后续这个连接的所有报文包括反方向的回包只要命中这条会话就按会话表里记录的接口转发不再单独查路由。这个机制带来一个好处只要会话表正确源进源出基本是自动保证的。外部用户通过电信IP访问服务器正向流量从电信接口进来NAT Server把目的地址转换成服务器内网IP回包命中会话后从电信接口出去。就算你在防火墙上写了默认路由优先走联通回包也不会跑到联通去。但问题往往出在两个地方。第一会话建立之前就出错了。比如入向流量匹配错了NAT策略或者安全策略没放行会话压根没建成后面什么都白搭。第二NAT Server配置本身和出接口不匹配。比如你用的是电信的公网IP做映射但防火墙收到这个IP的流量时入接口实际是联通。这种情况在做双ISP双映射的时候特别容易发生对比一下接口地址和NAT Server的global地址就知道。所以配置双ISP出口加服务器发布时一定要把接口、路由、NAT、安全策略四件事当做一个整体来看少一环都容易翻车。2. 动手之前先定选路策略PBR、默认路由、DNS要一起看2.1 两条链路不该简单写两条等价默认路由很多第一次做双ISP的兄弟第一个动作就是在防火墙上写两条等价默认路由ip route-static 0.0.0.0 0.0.0.0 202.100.1.254 ip route-static 0.0.0.0 0.0.0.0 203.100.2.254华为设备对等价默认路由会做负载分担流量哈希转发。表面上两条链路都用上了实际会带来两个隐藏问题。第一个问题是办公网用户上网的出口不可控。某个用户访问一个网站第一次请求可能从电信出去第二次刷新可能从联通出去。有些网站会对IP归属地做校验或者运营商对跨网流量有限速用户体验就是时好时坏。第二个问题更隐蔽NAT策略和出接口不匹配。如果源NAT策略用的是easy-ipNAT后的源地址是实际出接口的地址那还好。但如果你给电信和联通分别配置了不同地址池而等价路由把流量哈希到了另一个接口就会出现从电信接口发出去的报文源地址却是联通地址池的IP。运营商对非本网段源地址的报文要么直接丢要么回包路由走到联通去反正不通。所以在双ISP场景下我一般不建议用两条等价默认路由。正确做法是一条主默认路由配合策略路由做分流。2.2 按源地址分流是双ISP最常见做法办公网用户上网分流最简单可控的是按源地址做策略路由。比如把192.168.10.0/24的办公网段默认走电信把192.168.20.0/24的服务器或者访客网段走联通。命令参考如下acl number 3001 rule 5 permit ip source 192.168.10.0 0.0.0.255 policy-based-route pbr_cmcc rule name to_cmcc source-address 192.168.10.0 24 action pbr egress-interface GigabitEthernet1/0/0 policy-based-route pbr_cucc rule name to_cucc source-address 192.168.20.0 24 action pbr egress-interface GigabitEthernet1/0/1然后interface下应用interface GigabitEthernet1/0/2 policy-based-route pbr_cmcc这里有一个重要细节策略路由是在NAT之前生效的。报文从内网接口进来先匹配PBR确定从哪个公网接口出去然后才做源NAT。所以源NAT用easy-ip时NAT后的源地址一定是对应接口的地址不会出现源地址和出接口不匹配的情况。这也是我在双ISP场景下推荐easy-ip而不是地址池的原因少一层心智负担。当然按源地址分流不是万能的。如果办公网只有一个网段又想充分利用两条链路可以按目的地址分流电信网段走电信联通网段走联通其他走默认。这个需要维护目的地址表比较费精力。实际上很多中小企业选“源地址分流主备默认路由”就够了。2.3 DNS分流和运营商地址匹配双ISP还有一个容易被忽略的环节DNS。如果内网用户的DNS服务器是电信的但你的PBR把流量引到了联通出口DNS请求跨网段到电信速度会明显变慢严重时还会被运营商限制。更好的做法是让用户DNS的流量按运营商匹配电信链路对应电信DNS联通链路对应联通DNS。或者直接把内网DNS服务器做转发由防火墙保证两条链路都能到达。华为USG本身也能做DNS代理但复杂度上去了。对于服务器发布DNS的意义更大。如果你用电信和联通两个公网IP发布同一个域名就需要DNS智能解析电信用户解析到电信IP联通用户解析到联通IP。这时候源进源出才会真正发挥作用。否则所有用户都解析到电信IP联通链路只承担办公网上网流量服务器发布并没有真正做到双ISP负载。3. 华为NAT配置实操Easy-IP、NAT Server与回流场景3.1 出接口源NATeasy-ip和地址池怎么选办公网上网需要的源NAT华为防火墙上最省事的写法是easy-ipnat-policy rule name snat_to_internet source-zone trust destination-zone untrust action source-nat easy-ip如果只需要访问互联网这条就够了。报文从trust进入去往untrustPBR已经指定了出接口easy-ip自动把源地址转换成出接口的IP地址。如果业务要求转换后必须用某个公网IP段比如需要和对方做IP白名单那就配置地址池nat address-group isp1_pool 0 section 0 202.100.1.2 202.100.1.5然后在nat-policy里引用rule name snat_to_cmcc source-zone trust destination-zone untrust action source-nat address-group isp1_pool这里我要提醒一句双ISP场景下地址池一定要和PBR的出接口绑定使用。否则PBR把流量从电信接口发出去但源NAT用了联通地址池源地址和出接口不匹配运营商基本会丢包。如果嫌麻烦就无脑用easy-ip。3.2 NAT Server发布服务器端口级和全映射对外发布服务器华为USG用nat server。一条典型的Web服务映射nat server web_80 protocol tcp global interface GigabitEthernet1/0/0 80 inside 192.168.20.10 80这条命令的意思是公网侧使用GE1/0/0接口的IP地址也就是电信接口地址把TCP 80端口映射到内网192.168.20.10的80端口。用interface而不是写具体公网IP好处是即使接口IP变了映射关系跟着走不用改配置。如果两个ISP都想发布同一台服务器可以写两条nat server分别使用两个接口地址nat server cmcc_web protocol tcp global interface GigabitEthernet1/0/0 80 inside 192.168.20.10 80 nat server cucc_web protocol tcp global interface GigabitEthernet1/0/1 80 inside 192.168.20.10 80这样电信IP和联通IP都能访问服务器。前提是DNS那边做好智能解析让两个IP都用起来。如果要做一对一全映射比如服务器上有多个端口要发布不想一条条写可以不带protocol端口nat server server_full_map global interface GigabitEthernet1/0/0 inside 192.168.20.10这种全映射把所有协议和端口都转给内网服务器公网IP相当于一对一映射。好处是省事坏处是暴露面大对服务器自身安全要求非常高。生产环境我一般不推荐全映射除非你有明确的理由比如跑VoIP这种动态端口多的业务。3.3 内网用户通过公网IP访问服务器的三种解法这是双ISP加服务器发布场景里咨询量最大的问题。服务器发布后外网能访问了但内网用户通过公网域名或公网IP访问时要么不通要么绕了一圈。解法一最简单的内网DNS直接解析到内网IP外网DNS解析到公网IP也就是所谓的Split DNS。办公网用户访问域名时拿到的是192.168.20.10流量全程在内网走不经过防火墙NAT。这个方法最稳性能最好排障也最简单。解法二用防火墙的NAT回流。华为USG对NAT回流支持得不错但需要把防火墙的源NAT和安全策略配合好。配置思路是内网用户访问NAT Server公网IP的流量到达防火墙后目的地址要转换回服务器的内网IP同时源地址要做转换否则服务器的回包可能找不到原始的客户端地址路由而出现问题。具体操作上在nat-policy里加一条源NAT规则匹配内网用户访问公网地址的流量用easy-ip转换源地址nat-policy rule name hairpin_snat source-zone trust destination-address 202.100.1.1 32 action source-nat easy-ip这条规则必须能被NAT Server规则之后的回流逻辑处理。实际配置时重点是安全策略的放行。如果客户端和服务器都在Trust区需要放行Trust到Trust的安全策略security-policy rule name trust_to_trust_hairpin source-zone trust destination-zone trust action permit很多人在这一步卡住因为默认安全策略是禁止同安全域互访的。解法三内网用户直接访问服务器内网IP只在需要测试公网映射效果时才临时用公网IP验证。这种方法对规模很小的网络最实用。我的建议是能上Split DNS就上别在NAT回流上花太多时间。NAT回流场景的排障成本有时候比做一个内网DNS服务高得多。4. 双ISP服务器发布场景下的源进源出与故障切换4.1 状态防火墙如何保证回包从原接口走前面提过华为USG的状态检测机制决定了同一个连接的正反方向报文都走同一个接口。为了验证这个特性我经常在真机上执行display firewall session table verbose看到一条NAT Server会话时里面会记录session ID: 1001 Policy name: untrust_2_server Zone: untrust - dmz Interface: GigabitEthernet1/0/0 - GigabitEthernet1/0/2 Reverse interface: GigabitEthernet1/0/2 - GigabitEthernet1/0/0Reverse interface就是反向流量的出口它自动等于正向流量的入接口。所以只要会话表状态正常源进源出就是自动的。我见过一些翻车案例是管理员在防火墙上同时做了“NAT Server”和“源NAT策略”但是源NAT策略的匹配范围太宽把从外网进入、目的地址是服务器公网IP的流量也做了源地址转换。理论上NAT Server处理顺序优先不会出现这种情况但某些特殊配置下比如源NAT策略的目的地址是untrust且源区域匹配了untrust就会干扰。所以配置源NAT策略时源区域不要写untrust只写内网区域。4.2 链路探测ip-link与路由联动双ISP的价值不只是做负载均衡更重要的是冗余。但光有两条链路不够防火墙还得能感知链路故障。如果电信链路断了而默认路由还是指向电信网关办公网和服务器发布都会受影响。华为防火墙用ip-link做链路探测探测对象一般是对端运营商的网关地址或者一个稳定的公网IP。配置参考ip-link name check_cmcc destination 202.100.1.254 interface GigabitEthernet1/0/0然后默认路由关联这个ip-linkip route-static 0.0.0.0 0.0.0.0 202.100.1.254 track ip-link check_cmcc电信链路断了ip-link状态变down这条默认路由自动失效流量切换到备用链路。配合PBR时要小心PBR是强制匹配的如果PBR仍然指定流量走电信接口即使那条链路已经down了PBR还是会把流量往那边丢。所以在PBR里也要考虑链路故障切换或者让PBR关联ip-link。华为的策略路由支持action pbr egress-interface后跟track ip-link但不同版本支持情况不一样配置前看一下版本特性。4.3 会话表在切换时会发生什么链路切换时会话表不会自动从一个接口搬到另一个接口。电信链路故障后原有经过电信接口建立的会话会在老化超时后被清理客户端必须重新发起连接。对HTTP这类短连接影响不大刷新一下页面就行。但对SSH、数据库长连接或者WebSocket这类长连接链路切换基本等于断连需要应用层重连。这不是华为防火墙的问题是所有双WAN方案的通病。如果业务对连续性要求高需要做双机热备、链路聚合或者应用层双活而不是单纯靠防火墙NAT切换。还有一点要注意NAT Server的Server-map在链路切换后如果客户端没有重连旧会话残留期间可能会产生几分钟的异常。所以在做链路切换演练时不要只盯着ping还要实际验证一下TCP业务的重连表现。5. eNSP实测记录USG6000V上复现双ISP组网5.1 模拟器拓扑搭建与镜像版本坑没有真机的人用eNSP里的USG6000V完全可以验证这个场景。我自己的习惯是搭这么一套拓扑防火墙加三台路由器和三台PC两台路由器模拟运营商分别接到防火墙的GE1/0/0和GE1/0/1每台运营商路由器后面挂一台PC当公网用户第三台路由器模拟内网防火墙的GE1/0/2接内网交换机交换机下面挂服务器和办公网用户。eNSP里做双ISP有一个容易踩的坑USG6000V的镜像版本。老版本设备包对NAT Server的某些参数支持不完整比如nat server global interface写法、ip-link的track在新版本里表现更稳。如果发现明明配置没问题但功能就是不对先查一下当前设备版本。更换设备包的方法不复杂关闭当前设备右键设备选择设置重新指定设备包路径再启动。注意版本要和eNSP本体兼容否则设备起不来或者命令报错。模拟器里还有一个坑是Cloud绑定网卡。如果你用Cloud把防火墙接口桥接到本机Windows下如果开了Hyper-V或虚拟交换机eNSP的Cloud可能找不到正确的物理网卡导致公网PC访问不到防火墙。解决办法是给eNSP留一个独立的虚拟网卡绑定或者把Cloud直接绑定到环回网卡不要让eNSP去猜。5.2 实测排查命令和输出解读在USG6000V上验证双ISP服务器发布是否正常我一般按这个顺序敲命令。先看接口状态和IPdisplay ip interface brief再看路由表确认默认路由和PBR是否生效display ip routing-table display policy-based-route然后看NAT Server映射是否生成display nat server-map如果Server-map有了但访问还是不通看安全策略检查实际命中计数display security-policy rule all最后打开会话表看具体连接有没有建立display firewall session table verbose一次真实排查案例我在模拟器里配好了双ISP电信用户能打开服务器页面联通用户打不开。查Server-map两条NAT Server映射都在。查安全策略放行规则也匹配了。最后看会话表才发现联通用户访问公网IP时入接口显示是GE1/0/0也就是电信接口。原因是一条默认路由的优先级把联通目的地址的流量引到了电信接口而联通公网IP并没有在防火墙上作为接口地址报文被当成普通目的地址转发到了电信侧。解决方法是把联通IP所属网段在防火墙上明确宣告或者用策略路由把目的地址是联通公网IP的入向流量强制引导到联通接口。这也是我一直强调的NAT Server的global地址最好就是对应接口地址。否则你就要费心保证路由不会把流量引错方向。6. 避坑清单从配置到验收按这个顺序过一遍给一个可以直接抄的检查清单每次配置完对着过一遍能省掉大量排障时间。检查项关键点常见错误接口地址GE1/0/0、GE1/0/1公网地址配好且能ping通网关只配了接口IP没有在安全策略里放行local域流量默认路由主备或PBR配合不要写两条等价默认路由等价默认路由导致出口和NAT不匹配PBR和内网网段、出接口、NAT策略联动PBR强制匹配导致链路故障后无法切换源NAT双ISP优先用easy-ip地址池和出接口不匹配NAT Server用interface方式绑定公网接口global地址和实际入接口不一致安全策略Trust到Untrust、Untrust到DMZ/Trust放行安全策略没放行会话建不起来回流访问内网用户访问公网IP做hairpin只做了NAT Server没放行同安全域互访链路切换ip-link关联路由和PBR链路断了但路由不切换DNS双ISP发布时配置智能DNS所有用户解析到同一条链路这套配置还有一个容易忽略的收尾动作验收时不要只在外网PC上测一次就结束。要分别从电信侧和联通侧各访问一次再看防火墙上的会话表确认两次会话的入接口分别是GE1/0/0和GE1/0/1。如果两个接口都有对应的Server-map和会话再去内网用公网IP访问一次验证回流。这样才算完整闭环。最后一个心得双ISP加NAT Server这种场景最怕的不是配置复杂而是想当然。每次看到“明明这么配应该通”的故障最后基本都出在接口、路由、NAT、安全策略四个模块之间的衔接上。把会话表当成唯一的真相来源不通就查会话看它在哪一步断了比靠猜快得多。