做网络运维这些年,最常被问到的一个问题就是:我这个安全设备或者行为管理设备,到底该怎么接到现有网络里?串在链路上怕影响业务、怕单点故障,不串又怕设备买了没发挥作用。后来用多了我发现,大部分场景下最好的答案就是设备旁挂,再用策略路由(PBR)把需要处理的流量“引流”过去。这条路子非常实用,不管是办公网做上网行为管理、出口挂防火墙,还是数据中心做流量清洗,都能用同一套思路解决:设备不在主链路上,但流量又能按需经过它。
这套方案最适合三类人看:一是刚接触网络架构的运维新人,想搞清楚旁挂到底是怎么“挂”的;二是已经在用旁挂但经常遇到“流量没过去”“设备一挂就环路”这类问题的人,可以对照排查;三是做网络规划设计的朋友,需要给业务方讲清楚流量路径的合理性。下面我把旁挂部署的模式、PBR引流的原理、几种典型的引流路径设计,以及实操配置和踩坑经验,一次说清楚。
1. 旁挂部署的底层逻辑:为什么要“把设备挂旁边”
1.1 旁挂和串接的本质区别
很多人对旁挂的第一反应是:这不就是把设备接在交换机上吗?听起来简单,但实际部署时要想明白旁挂和串接的本质区别。
串接部署,设备必须物理上插在业务链路中间,流量进设备再出设备,天然形成“单向依赖”。一旦设备断电、接口故障、系统升级,整条链路就断了,业务直接跟着停。这种模式在可靠性要求高的网络里越来越不受待见,因为安全设备往往又是必须要升级打补丁的东西,升级一次断一次,运维压力很大。
旁挂部署则完全不同。设备只是“寄生”在交换机旁边,核心业务流量默认走正常路由,只有被PBR策略“选中”的流量才会被导进设备处理。设备挂了、断电了、接口松了,业务流量自动走原路,网络不中断。这一点在真实生产环境里极其重要,因为它把“安全设备的可用性”和“业务的连续性”解耦了。我自己常用的比喻是:串接像是把保安安排在唯一的通道上站着,他生病了你也进不了门;旁挂像是保安坐在旁边的监控室里,只有可疑人员才被叫去盘问,保安不在你就正常走。
所以旁挂模式的核心优势总结起来就三点:设备故障不影响主链路、部署过程不需要中断业务、设备可以独立维护和升级。
1.2 二层旁挂和三层旁挂,怎么选
旁挂还分两种具体形态,部署前要先分清。
第一种是二层旁挂。设备通过二层接口接入交换机,和核心设备之间跑同一个VLAN,设备只当作一个二层节点挂在交换网上。这种模式通常配合下一跳指向物理接口或VLANIF接口来使用,适合设备本身要处理二层流量、或者引流目的比较简单的场景。优点是配置直观、延迟低,缺点是跨三层网络时不好用,而且二层广播域会变大。
第二种是三层旁挂,这也是最常见的生产部署方式。核心交换机和旁挂设备之间通过三层互联地址通信,设备有自己的IP,核心通过PBR把符合条件的流量下一跳指向设备的三层接口。设备处理完以后,再把流量通过另一个三层接口或者同一个接口发回给核心交换机。三层旁挂的隔离性好、便于故障定位、也方便和现网三层路由打通。
我用一个表格把两种方式的差异列出来,方便选型时对照:
| 对比项 | 二层旁挂 | 三层旁挂 |
|---|---|---|
| 部署层级 | 接入/汇聚交换机 | 核心/汇聚交换机 |
| 互联方式 | VLAN内二层互通 | 三层IP互联 |
| 故障隔离 | 一般 | 较好 |
| 跨三层引流 | 困难 | 方便 |
| 常见设备 | 上网行为管理、审计设备 | 防火墙、WAF、IPS、负载均衡 |
| 配置复杂度 | 低 | 中 |
实际项目中,绝大多数旁挂设备我建议直接按三层旁挂来设计。尤其是出口防火墙、WAF这类设备,后面还要跟安全策略联动,三层互联以后路径更清楚,运营维护也简单。
1.3 旁挂模式要解决的核心问题:路由怎么走
旁挂部署听起来简单,但真正让很多人卡住的是那个核心问题:流量怎样才能“专门”走设备一趟,而不影响其他流量?这个问题不解决,设备挂上去就是个聋子的耳朵,纯装饰。
正常的数据转发是按路由表走的,路由器、交换机看到目的IP,查最长匹配的路由条目,然后把包从对应出接口送出去。这个行为不受业务意图控制,它只看“目的在哪里”,不管“这个流量是谁的、该不该被检查”。而旁挂场景要的是:某些特定流量必须先去设备那里“报到”,设备检查完再放行,其他流量照常走。普通的静态路由和动态路由都做不到这种精细化控制,这时候就得靠策略路由。
策略路由的全称是Policy-Based Routing,简称PBR。它打破了“仅按目的IP查路由表”这个规则,允许网络设备按照管理员设定的策略来选择报文的路径。策略的匹配条件可以是源IP、目的IP、协议类型、端口号,甚至可以是报文的长度、VLAN、入接口等;匹配后的动作可以是改下一跳、改出接口、打标签、设置优先级等。正是PBR这个能力,让旁挂设备真正“活”起来,让流量乖乖按设计好的路径走。
所以这三者的关系可以一句话概括:旁挂是物理形态,PBR是引流手段,引流路径设计是业务目标。形态决定设备怎么放,策略决定流量怎么走,路径设计决定业务是否可达。
2. 策略路由(PBR)才是引流的发动机
2.1 PBR和普通路由的差异
说到PBR,很多新手容易有个误区,觉得它和路由表功能重复了,随便配配就行。实际上PBR和普通路由是两套逻辑,PBR的优先级更高,并且完全可以“覆盖”路由表的决定。
设备的转发流程可以理解为这样的顺序:报文进来以后,先检查有没有配置PBR,如果有且报文匹配了PBR的分类条件,就按PBR指定的动作转发;如果报文不匹配任何PBR节点,才落到普通路由表查询流程。换句话说,PBR相当于一个“流量筛选器”,它先“挑”流量,挑中的按特殊路径走,没挑中的才交给普通路由处理。日常理解就是:PBR是个性化路径,路由表是共性默认路径。
这个差异带来的最直接好处是:你不需要改变原有路由设计,就能为特定流量“画出一条专用通道”。比如公司有一条到总部的专线,也有Internet出口,你希望财务部门的流量只能走专线、其他部门可以走Internet出口。用普通路由很难做到,因为目的地址很多、要求又按源来分;用PBR就是一条策略的事:匹配源IP为财务网段,下一跳指向专线网关。
PBR也不只是“选路”这么简单。它和接口策略、本地策略配合起来,能实现很多奇怪的诉求,比如把某类流量导到流量探针、把P2P流量导到带宽管理设备、把访问特定服务器的流量导到WAF。这些能力叠加以后,旁挂设备能承载的业务范围非常广,几乎所有的流量安全和管理需求都能覆盖。
2.2 PBR的核心组成部分:匹配条件和动作
PBR的配置模型其实很清晰,无非是“分类”加“动作”。先定义什么流量要被干预,再定义干预成什么样,最后把这个策略应用在哪个接口上。
匹配条件在华为设备上通常用ACL(访问控制列表)来承载。ACL不仅能匹配传统的五元组(源IP、目的IP、协议、源端口、目的端口),还能匹配时间段、报文优先级等信息。配置PBR时,一般会先写一个ACL,把需要引流的目标流量精确框出来,然后在PBR节点里通过if-match语句引用这个ACL。
动作用apply语句来配置,常见的有三种,需要根据场景选:
- apply ip-next-hop:把报文的下一跳改为指定地址,这是旁挂引流最常用的动作。
- apply output-interface:把报文强制从指定接口发出,适合设备上有明确出口的场景。
- apply ip-precedence / apply qos-local-id:修改报文优先级或打QoS标记,适合后期做带宽策略。
值得注意的是,PBR的节点(node)是有顺序的。设备从编号小的节点开始匹配,一旦匹配成功就不再继续往下查,所以节点顺序和ACL里的规则顺序一样,都遵循“先匹配先生效”。实际配置时,建议把具体的、优先级高的策略放在前面,把宽泛的兜底策略放在后面,避免策略被提前命中导致预期之外的路径。
2.3 华为、华三设备的PBR配置对照
以最常见的华为VRP和华三Comware系统为例,两条命令体系很接近,但也有差异,配置时别混了。下面这段是一个典型的三层旁挂引流配置,目标是让内网192.168.10.0/24的流量先经过旁挂防火墙10.0.100.2。
华为VRP系统配置:
acl number 3001 rule 5 permit ip source 192.168.10.0 0.0.0.255 policy-based-route pbr1 permit node 10 if-match acl 3001 apply ip-next-hop 10.0.100.2 interface Vlanif10 ip address 192.168.10.254 255.255.255.0 ip policy-based-route pbr1华三Comware系统配置:
acl basic 3001 rule 0 permit source 192.168.10.0 0.0.0.255 policy-based-route pbr1 permit node 10 if-match acl 3001 apply next-hop 10.0.100.2 interface Vlanif10 ip address 192.168.10.254 255.255.255.0 ip policy-based-route pbr1两边最大的区别就是动作关键字:华为是apply ip-next-hop,华三简化成apply next-hop。ACL编号方面,华三的basic ACL也可以直接写3001这类高级编号,规则号写法略有不同。如果两边命令混着背,很容易在设备上敲出报错。
华为还有一个很实用的“本地策略路由”,命令是ip local policy-based-route pbr1,它专门作用于设备自身发起的流量。如果旁挂设备是防火墙,它自己要去访问外网做升级、DNS解析这些操作,也走本地PBR,这个在旁挂场景里经常被忽略,但影响很大。
3. 公域到私域的引流路径设计
3.1 内网用户访问互联网:出口流量牵引
旁挂最经典的应用场景,就是把上网行为管理、流量审计这类设备旁挂在核心交换机旁边,对内网用户访问互联网的流量做管控。
这种场景下,用户PC在VLAN10,出口网关在核心交换机上,正常情况下PC访问互联网的报文到了核心交换机以后,直接查默认路由从出口送走。要实现管控,就在用户的网关接口上应用PBR,匹配源IP为用户网段,把下一跳指向上网行为管理设备的入口地址。设备检查完流量,再从回注接口把流量还给核心交换机,核心交换机这时按普通路由表转发到出口链路。
这里最关键的一个细节是回注路径。旁挂设备把流量还给核心以后,如果核心交换机再次匹配到那条PBR,就会又送给旁挂设备,结果形成环路,流量出不去。解决办法一般有两个:一是旁挂设备的回注接口放在另一个VLAN,该VLAN不应用PBR,从回注VLAN进入的报文默认走正常路由;二是在PBR里增加条件,比如排除回注接口对应的源MAC或入接口条件,但这种方式配置相对复杂,生产环境里我优先推荐用独立VLAN隔离进出路径。
我常和同事说一句话:旁挂引流的设计,一半精力在“怎么把流量引进去”,另一半在“怎么让流量不再次被引进去”。回注路径的隔离如果没做好,后面各种奇怪问题都会冒出来。
3.2 外网用户访问内网服务器:入站流量清洗
第二个典型场景是“公域到私域的引流路径设计”。这个词在一些场景下容易被理解成市场营销里的“把公域流量引到私域”,但在网络技术语境下,它指的是把从公网进来的访问流量,正确引导到内网服务器,并且在路径上经过必要的安全设备做检测,这属于网络架构层面的流量规划。
实际业务里最典型的就是外网用户通过域名或公网IP访问公司官网、业务系统。出口路由器或防火墙做DNAT(目的地址转换),把公网地址映射到内网服务器的私网地址。流量进入内网以后,如果希望经过旁挂的WAF或IPS设备检测,就在核心交换机接收内网流量的接口方向应用PBR,匹配目的IP为服务器私网地址、目的端口为HTTP/HTTPS,把下一跳指向旁挂安全设备。
这种设计的注意点有两个。第一,DNAT通常发生在出口设备上,做DNAT的位置和PBR应用的位置要协调好,避免出现“公网地址已经转换成私网地址之后,PBR还按公网地址匹配”的错位。建议出口设备做完地址转换以后,核心交换机上直接按私网目的地址做PBR匹配,逻辑最简单。第二,回程流量也要考虑。如果服务器回包从核心交换机直接回给出口设备,而请求流量经过WAF设备改动了路径,可能造成NAT会话或状态检测异常。稳妥的做法是让回程流量也经过旁挂设备,或者选用支持非对称路径处理的设备,并关闭源IP校验等影响功能。
3.3 私网互访:按业务网段精细分流
除了公网和私网之间的流量,内网不同业务区互访时也有引流需求。比如办公网访问数据中心的核心业务,要求流量经过旁挂的数据库审计设备或下一代防火墙;再比如研发网段访问测试服务器,希望旁挂流量探针抓包分析。
这种场景的PBR匹配条件可以写得更细,常见做法是按目的地址段加端口来匹配。比如只把访问数据库服务器的3306端口流量引到审计设备,其他访问同一台服务器的流量不干预。这样做的好处是“精准引流”,不会把大量无关流量灌给旁挂设备,避免设备成为性能瓶颈。
我遇到过一些项目,一上来就把“所有流量都引流到设备”,结果旁挂设备瞬间被打满,业务反而变卡。正确做法是先梳理业务需求,明确到底哪类流量需要经过设备,再按五元组细化匹配条件,配合设备的性能规格做容量评估。宁可策略多一点,也别让设备过载。
4. 全流程实操:一个旁挂防火墙的完整配置
4.1 实验拓扑与地址规划
先搭一个典型的实验环境:核心交换机一台,旁挂防火墙一台,出口路由器一台,内网存在两个网段——办公网192.168.10.0/24和数据中心网段192.168.20.0/24。
核心交换机和防火墙之间规划两个互联VLAN:VLAN100作为引流入口互联(核心侧10.0.100.1,防火墙侧10.0.100.2),VLAN200作为回注出口互联(核心侧10.0.200.1,防火墙侧10.0.200.2)。防火墙接核心的两个接口分别划入这两个VLAN,形成进出物理隔离。出口路由器连接核心的接口为10.0.0.0/30网段,默认路由指向运营商。
这次实操要实现的目标很简单:办公网用户访问互联网时,流量先经过旁挂防火墙做安全检查,再转发出去。
4.2 核心交换机的关键配置
核心交换机上要做的事情分四步。
第一步,创建VLAN并配置接口IP。
vlan batch 10 100 200 interface Vlanif10 ip address 192.168.10.254 255.255.255.0 interface Vlanif100 ip address 10.0.100.1 255.255.255.0 interface Vlanif200 ip address 10.0.200.1 255.255.255.0第二步,配置到达互联网的默认路由,下一跳指向出口路由器。
ip route-static 0.0.0.0 0.0.0.0 10.0.0.2第三步,配置ACL和PBR策略。ACL匹配源地址为办公网段,PBR动作是下一跳指向防火墙的入口地址。
acl number 3001 rule 5 permit ip source 192.168.10.0 0.0.0.255 policy-based-route pbr1 permit node 10 if-match acl 3001 apply ip-next-hop 10.0.100.2第四步,把PBR应用在办公网的网关接口Vlanif10上。
interface Vlanif10 ip policy-based-route pbr1这里要特别说明:PBR只应用在办公网网关接口,VLAN200回注接口千万不能应用PBR。而且办公网用户访问数据中心网段的流量,由于没有配置相应的静态路由,核心交换机会按默认路由转发吗?不会。因为数据中心网段在核心交换机上有直连路由或明细路由,未匹配PBR的流量(比如访问192.168.20.0/24的流量)会直接走正常路由表,不需要经过防火墙,这正好符合“按需引流”的设计目标。
4.3 旁挂防火墙的配置
防火墙这边的配置同样分四步。
第一步,配置接口IP和安全区域。
interface GigabitEthernet1/0/1 undo shutdown ip address 10.0.100.2 255.255.255.0 zone name trust set priority 85 add interface GigabitEthernet1/0/1 interface GigabitEthernet1/0/2 undo shutdown ip address 10.0.200.2 255.255.255.0 zone name untrust set priority 5 add interface GigabitEthernet1/0/2第二步,配置回程静态路由。防火墙收到核心发给它的流量以后,处理完需要按正常路由送回核心交换机,核心交换机再从默认路由送出去。防火墙发回核心的流量,目的地址大概率不是它直连网段,因此必须要有默认路由或者明细路由指回核心。
ip route-static 0.0.0.0 0.0.0.0 10.0.200.1第三步,配置安全策略,允许办公网段的流量从入口接口进入、从出口接口出去。
security-policy rule name policy1 source-zone trust destination-zone untrust source-address 192.168.10.0 mask 255.255.255.0 action permit第四步,如果防火墙自身需要访问管理地址或外网做升级,还要关注本地流量。有些设备默认允许本地管理,有些需要单独放行,这一步看设备型号,多数防火墙默认放行本地服务,不用额外配置。
配置完成后,办公网PC访问互联网的完整路径就是:PC → 核心交换机Vlanif10 → PBR命中 → 交给防火墙入口GE1/0/1 → 防火墙检查 → 从GE1/0/2回到核心VLAN200 → 核心查默认路由 → 出口路由器 → 互联网。整个过程清晰可控,普通流量没被干扰,需要过检的流量一步不落。
4.4 验证方法:怎么确认引流生效
配置完以后,光看配置对不代表流量真的按预期走了,必须做验证。我常用的验证手段有三个。
第一个是看会话表。在防火墙上执行display firewall session table,能看到办公网用户访问互联网的会话记录,如果有大量源地址为192.168.10.0/24的会话,说明引流确实生效了。
第二个是tracert。在办公网PC上执行tracert到一个公网地址,第一跳是192.168.10.254(核心网关),第二跳应该出现10.0.100.2(防火墙入口地址),第三跳可能是10.0.200.1(核心回注接口),之后才出去到公网。路径里出现这两个地址,基本就能确认PBR引流路径通了。
第三个是断开防火墙测试。这是最直观的验证旁挂优势的方法。把防火墙的入口或出口接口shutdown,办公网PC访问互联网应该立刻恢复,因为PBR下一跳不可达以后,设备会自然回退到普通路由表转发,默认路由还是能出去。这个特性在生产环境里非常宝贵,相当于给链路做了一次“无感逃生测试”。不过要注意,这个“自动失效”的前提是设备支持PBR下一跳失效探测,华为设备里有track和ip next-hop check机制,配置时可以加上,更可靠。
5. 踩坑实录:引流不生效、环路、回程不对称
5.1 引流不生效的四个检查点
做过五六个旁挂项目以后,最常被问到的就是“我明明配置了PBR,为什么流量不过去”。大部分情况下,问题出在下面这四个地方。
第一个是ACL匹配方向写反了。PBR是在接口的入方向生效的,匹配的是“从该接口进入设备”的报文。如果流量是从用户侧进入核心交换机的,PBR要应用在用户侧网关接口的入方向,而ACL里的源地址要写用户网段。反过来,如果引流目标是入站流量(外网访问内网服务器),PBR就应该应用在接收外部流量的接口上,ACL匹配目的地址和目的端口。
第二个是策略没有应用对接口。PBR只在应用了策略的接口上生效,接口搞错了策略就是废的。建议在核心交换机上用display ip policy-based-route命令查看有哪些接口应用了哪些策略,核对一遍再继续。
第三个是ACL规则配得不完整。比如匹配源地址时掩码写错了,把192.168.10.0/24写成了/16,导致不该匹配的流量也被引流了;或者只匹配了源IP没匹配目的端口,造成大量不需要过检的流量全部涌进旁挂设备。策略匹配条件越精确,后期问题越少。
第四个是设备不支持PBR的“黑洞”行为。有些设备PBR指定的下一跳不可达时,策略命中报文会被直接丢弃,而不是回退到正常路由。这种情况下,只要旁挂设备宕机,所有被匹配的流量就全部断了。部署前一定要确认设备的PBR失效行为,或者配置track联动,让设备在下一跳不可达时自动撤销PBR策略节点。
5.2 环路问题:回注流量再次被引流
这是旁挂场景里最隐蔽也最难排查的问题。现象通常表现为:流量通了,但时延特别高,甚至不断丢包;或者在旁挂设备上看到大量重复的、来回循环的会话记录。
根因就是我前面说的——回注路径没有隔离干净。旁挂设备把流量从GE1/0/2还给核心交换机以后,如果这个接口所在的VLAN也应用了PBR,或者PBR的匹配条件包含了回注流量的源地址、入接口,核心交换机就会再次把包送回旁挂设备,形成无限循环。
解决思路从三个方向入手。第一,物理隔离:回注接口单独规划VLAN,该VLAN不应用PBR,这是最直接有效的办法。第二,条件隔离:修改PBR匹配规则,排除回注流量的源MAC地址或入接口条件,确保从回注VLAN进入的报文不匹配。第三,路由隔离:在核心交换机上为回注流量专门配置明细路由,让它走独立路径,用路由优先级保证不被PBR覆盖。
环路问题一旦发生后,像不像我们在游泳池里被回水口吸住了一样,水流循环着出不去。排查时最快的办法是把旁挂设备入口侧接口抓包,如果发现同一批源目地址的报文每隔几秒就重复出现,而且TTL在递减,基本就是环路没跑了。
5.3 回程路由不对称:状态检测设备要注意
还有一个坑,跟防火墙这类“状态化”设备关系很大:请求流量经过旁挂防火墙,但回程流量没有经过防火墙,导致设备上的会话表不完整,某些应用直接断连或穿越失败。
这个问题的根源还是路径设计没考虑来回一致。请求流量从办公网经过防火墙检查后到了服务器,服务器回包的路径如果不经过防火墙,防火墙就看不到回包,它认为会话异常,直接丢弃后续报文。很多防火墙默认开启状态检测和会话超时机制,一旦回程流量不在会话里,就会放行失败。
解决办法有两种。第一种是让回程流量也走旁挂设备,保持路径对称。在内网服务器网关接口方向再配置一条PBR,匹配目的IP为办公网用户网段,下一跳同样指向防火墙,这样回包也能被防火墙识别。第二种是调整防火墙的会话机制,如果设备支持非对称路径处理,可以关闭会话同步或开启无状态转发,但这会降低安全检查能力,一般不太推荐。
从经验上看,旁挂防火墙做透明模式或路由模式时,尽量保证“进和回”都过设备,问题最少。做安全审计和行为分析类设备时,路径不对称容忍度相对高,但也建议提前评估设备模式,别等上线后再改。
5.4 可用性设计:track联动与双机旁挂
最后聊聊可靠性。单台旁挂设备虽然不影响主链路,但被PBR引流的流量在该设备故障时,可能面临“引流黑洞”或“策略失效”两个极端。前面说过,不同设备厂家的PBR失效行为不一样,有的直接丢包,有的自动回退。生产环境不能赌设备行为,要主动做可用性设计。
华为设备上最常用的手段是配置track和PBR联动。思路是创建track项监控旁挂设备入口IP的可达性,然后在PBR的apply动作里绑定这个track项。当旁挂设备不可达时,PBR自动失效,流量回归正常路由转发;设备恢复后,PBR自动生效,引流恢复。配置片段大致这样:
track 1 ip reachable 10.0.100.2 policy-based-route pbr1 permit node 10 if-match acl 3001 apply ip-next-hop 10.0.100.2 track 1更高阶的方案是双机旁挂。在核心交换机侧配置两条PBR,分别指向两台旁挂设备,配合接口或IP探测实现主备切换。有的高级场景还会用VRRP把两台旁挂设备虚拟成一个网关,核心交换机侧只需要配置一个虚拟IP的下一跳,由VRRP状态决定哪台设备接收流量。这种设计能保证旁挂设备本身的冗余,但配置复杂度也明显上升,小型网络没必要上,中大型网络在“关键业务过检”场景下才值得这么运维。
我在实际项目里更推荐逐步递进的策略:先用单台旁挂加track联动,保证设备故障不影响业务;业务确实要求旁挂设备本身也高可用时,再上双机方案。一上来就搞双机,配置量翻倍,后期维护成本也跟着涨,账要算清楚。
最后分享一个我从命令行里悟出来的小技巧:每次做完PBR引流,一定要在核心交换机上同时看两张表,一张是acl的匹配计数(display acl 3001),一张是策略路由的命中计数(display ip policy-based-route),两个数字都对得上,才说明流量真的进了你设计的路径。别只看业务通了就完事,很多“假通”都是靠默认路由兜底才没出大事,真等设备挂了才发现引流从来没生效,那就有点尴尬了。