在企业网络建设中,经常面临这样的场景:两个位于不同地理位置的办公站点通过公网建立了GRE隧道,实现了内网的互通。然而,出于对安全性的更高要求,需要在不中断业务的情况下引入防火墙设备,对流经两个站点之间的流量进行安全检查。此时,旁挂部署成为一个理想的非侵入式方案。
旁挂部署的核心思想是让设备不直接串行在原有的转发路径上,而是通过路由或策略引导流量经过它。这种方式下,防火墙如何连接到网络,成为方案设计的关键。主流有两种方式:双臂旁挂与单臂旁挂。
初始网络环境与连通性测试
为了清晰地对比两种方案,我们首先建立一个基础环境。假设站点1和站点2的核心路由器分别为RT1和RT2,它们通过ISP网络相连,并建立了一条GRE隧道。站点1的内网网段为10.1.1.0/24,站点2的内网网段为10.2.1.0/24。
基础配置如下:
RT1 配置
interface GigabitEthernet0/0
ip address 10.1.1.1 255.255.255.0
interface GigabitEthernet0/1
ip address 12.1.1.1 255.255.255.0
interface Tunnel0 mode gre
ip address 10.13.1.1 255.255.255.0
source 12.1.1.1
destination 23.1.1.3
ip route-static 10.2.1.0 24 10.13.1.3
ip route-static 23.1.1.0 24 12.1.1.2
ISP 配置
interface GigabitEthernet0/0
ip address 12.1.1.2 255.255.255.0
interface GigabitEthernet0/1
ip address 23.1.1.2 255.255.255.0
RT2 配置
interface GigabitEthernet0/0
ip address 10.2.1.1 255.255.255.0
interface GigabitEthernet0/1
ip address 23.1.1.3 255.255.255.0
interface Tunnel0 mode gre
ip address 10.13.1.3 255.255.255.0
source 23.1.1.3
destination 12.1.1.1
ip route-static 10.1.1.0 24 10.13.1.1
ip route-static 12.1.1.0 24 23.1.1.2
配置完成后,PC1(10.1.1.2)与PC2(10.2.1.2)应能正常通信。通过ping和traceroute命令测试,流量路径为PC1 -> RT1 -> RT2 -> PC2,符合预期。测试结果示例如下:
[PC1]ping 10.2.1.2
Ping 10.2.1.2 (10.2.1.2): 56 data bytes, press CTRL+C to break
56 bytes from 10.2.1.2: icmp_seq=0 ttl=253 time=2.546 ms
56 bytes from 10.2.1.2: icmp_seq=1 ttl=253 time=2.271 ms
--- Ping statistics for 10.2.1.2 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.429/1.974/2.546/0.429 ms
[PC1]traceroute 10.2.1.2
traceroute to 10.2.1.2 (10.2.1.2), 30 hops at most, 40 bytes each packet
1 10.1.1.1 (10.1.1.1) 0.664 ms 0.450 ms 0.533 ms
2 10.13.1.3 (10.13.1.3) 2.659 ms 1.650 ms 1.095 ms
10.2.1.2 (10.2.1.2) 2.489 ms 2.062 ms 1.062 ms
方案一:双臂旁挂部署
双臂旁挂,顾名思义,防火墙通过两个物理接口连接到网络。其拓扑结构为:防火墙(FW)通过GE1/0/0接口与RT1的GE0/2接口相连,子网为10.1.2.0/24;同时,FW通过GE1/0/1接口与RT1的另一个物理接口(如GE5/0)相连,子网为10.1.3.0/24。这形成了“RT1 -> FW -> RT1”的一个物理环路,必须通过精细的路由控制来引导流量。
配置步骤如下:
-
配置接口IP,实现RT1与FW之间的基本连通。
RT1 增加配置
interface GigabitEthernet0/2
ip address 10.1.2.1 255.255.255.0
interface GigabitEthernet5/0
ip address 10.1.3.1 255.255.255.0
FW 配置
interface GigabitEthernet1/0/0
ip address 10.1.2.2 255.255.255.0
interface GigabitEthernet1/0/1
ip address 10.1.3.2 255.255.255.0
-
配置FW路由。FW需要知道如何到达两个站点的内网,通常配置指向RT1的静态路由。
ip route-static 10.1.1.0 24 10.1.3.1
ip route-static 10.2.1.0 24 10.1.3.1
-
在RT1上配置策略路由(PBR)引流。这是双臂旁挂最核心也是最复杂的部分。目标是:当RT1收到从PC1发往PC2的流量时,不直接查询路由表走隧道,而是通过PBR强制其转发给FW(10.1.2.2)。FW处理完后再通过10.1.3.0/24网段将流量送回RT1,此时RT1正常查路由表,通过GRE隧道将流量发往RT2。
RT1 PBR配置
acl advanced 3401
description PC1-PC2
rule 0 permit ip source 10.1.1.0 0.0.0.255 destination 10.2.1.0 0.0.0.255
policy-based-route fw1 permit node 10
if-match acl 3401
apply next-hop 10.1.2.2
interface GigabitEthernet0/0
ip policy-based-route fw1
潜在问题与解决:在某些网络设备(尤其是模拟器)的实现中,上述配置可能导致路由环路。因为从FW返回的流量(源IP为PC1,目的IP为PC2)在RT1的GE5/0接口入方向,可能会再次匹配PBR规则,又被发往FW。为解决此问题,可以在FW的出接口(GE1/0/1)上配置NAT,改变报文的源地址,使其不再匹配PBR中的ACL规则。
配置完成后,测试PC1访问PC2的路径,可以看到流量成功绕行防火墙:
[PC1]traceroute 10.2.1.2
traceroute to 10.2.1.2 (10.2.1.2), 30 hops at most, 40 bytes each packet, press CTRL+C to break
1 10.1.1.1 (10.1.1.1) 0.652 ms 0.416 ms 0.445 ms
2 10.1.3.2 (10.1.3.2) 1.239 ms 1.134 ms 1.125 ms // 流量到达FW
3 10.1.3.1 (10.1.3.1) 1.397 ms 1.779 ms 1.450 ms // 流量从FW返回RT1
4 10.13.1.3 (10.13.1.3) 2.291 ms 2.245 ms 2.352 ms // 进入GRE隧道
5 10.2.1.2 (10.2.1.2) 3.463 ms 2.269 ms 2.486 ms
-
配置反向流量(PC2->PC1)的策略。同理,需要在RT1上针对从隧道口(Tunnel0)收到的、目的为PC1的流量配置PBR,将其引向FW。
acl advanced 3402
description PC2-PC1
rule 0 permit ip source 10.2.1.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
policy-based-route fw2 permit node 10
if-match acl 3402
apply next-hop 10.1.2.2
interface Tunnel0
ip policy-based-route fw2
双臂旁挂虽然逻辑清晰,但配置复杂,且对设备PBR实现机制的依赖性强,容易在特定场景下引发环路,增加了运维和排错的难度。
方案二:单臂旁挂部署
单臂旁挂方案极大地简化了物理连接和逻辑设计。拓扑结构为:防火墙(FW)仅通过一个物理接口(如GE1/0/0)连接到RT1的某个接口(如GE0/2),它们同属于一个子网,例如10.1.2.0/24。所有需要检查的流量,往返都经过这同一个网段。
配置步骤如下:
-
物理连接与IP配置(在双臂方案基础上简化,去除一条链路)。
RT1 配置
interface GigabitEthernet0/2
ip address 10.1.2.1 255.255.255.0
FW 配置
interface GigabitEthernet1/0/0
ip address 10.1.2.2 255.255.255.0
-
在FW上配置默认路由及出接口NAT。FW将默认路由指向RT1(10.1.2.1)。关键一步:在FW的连接接口上启用出方向NAT。这可以保证从FW返回RT1的报文源地址被转换,避免在RT1上形成路由环路。
ip route-static 0.0.0.0 0 10.1.2.1
interface GigabitEthernet1/0/0
nat outbound
-
在RT1上配置策略路由。其原理与双臂方案相似,但更为简洁,因为往返流量都通过同一个下一跳(10.1.2.2)指向FW。
acl advanced 3401
description PC1-PC2
rule 0 permit ip source 10.1.1.0 0.0.0.255 destination 10.2.1.0 0.0.0.255
acl advanced 3402
description PC2-PC1
rule 0 permit ip source 10.2.1.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
policy-based-route fw1 permit node 10
if-match acl 3401
apply next-hop 10.1.2.2
policy-based-route fw2 permit node 10
if-match acl 3402
apply next-hop 10.1.2.2
interface GigabitEthernet0/0
ip policy-based-route fw1
interface Tunnel0
ip policy-based-route fw2
-
在RT2上添加回程路由。由于FW对报文做了NAT,从PC2返回PC1的报文,其目的IP是FW接口的地址(或NAT后的地址)。因此,RT2必须知道如何到达10.1.2.0/24网段,需添加一条静态路由指向RT1的隧道地址。
ip route-static 10.1.2.0 24 10.13.1.1
配置完成后进行测试,PC1访问PC2的路径清晰显示了流量被防火墙处理:
[PC1]traceroute 10.2.1.2
tracroute to 10.2.1.2 (10.2.1.2), 30 hops at most, 40 bytes each packet, press CTRL+C to break
1 10.1.1.1 (10.1.1.1) 0.588 ms 0.662 ms 0.633 ms
2 10.1.2.2 (10.1.2.2) 1.730 ms 0.783 ms 0.936 ms // 流量到达FW
3 10.1.2.1 (10.1.2.1) 1.904 ms 0.874 ms 1.703 ms // 流量从FW返回RT1
4 10.13.1.3 (10.13.1.3) 1.675 ms 2.362 ms 2.738 ms // 进入GRE隧道
5 10.2.1.2 (10.2.1.2) 3.079 ms 2.587 ms 2.587 ms
总结与选择建议
对比两种方案,单臂旁挂的优势非常明显:
- 物理布线简化:减少一个物理接口和一条线缆。
- 配置复杂度降低:无需为防火墙规划两个网段和对应的路由。
- 有效规避环路:通过FW接口NAT,天然避免了因PBR策略匹配而导致的环路风险,方案更健壮。
- 资源占用更少:节省一个路由器接口和IP地址资源。
因此,在绝大多数企业网络旁挂防火墙的场景下,单臂旁挂是更优、更推荐的选择。它以一种“化繁为简”的思路,解决了双臂方案中固有的配置复杂性和潜在风险问题,是实现业务流量安全检测的高效实践。
参考资料
[1] 防火墙旁挂部署二选一:详解单臂/双臂方案,避坑策略一看就懂!, 微信公众号:mp.weixin.qq.com/s/vXe1jE7ej35BCKg585kzSw
版权声明:本文由 云栈社区 整理发布,版权归原作者所有。