环境:公司网络在总部拥有一台配备 Total Security Suite 的 Firebox M 系列设备。每个分支机构都拥有一台较小的 T 系列 Firebox,不提供订阅服务。因此,来自分支机构的所有流量都通过总部的 M 系列设备路由。一些分支机构的 Firebox 拥有静态 IP,一些则通过 DHCP 获取 IP。
隧道偶尔可能会出现一些问题(例如,如果总部网络出现故障)。因此,分支机构的 Firebox 需要能够放弃0.0.0.0/0
通过隧道的路由并独立工作一段时间,因为 BO 互联网连接对业务至关重要。这适用于 BO 虚拟接口,但不适用于0.0.0.0/0
BO GW 和隧道。
简化(仅一个外部和受信任的)相关配置,具有 DHCP 的分支机构。
- Firebox-HQ (
10.9.0.1
) - M670 [Fireware OS v12.2.1.B572649]- 接口(路由模式)
eth0
:ISP1 [外部] -198.51.100.123/24
(静态)eth1
:受信任 [受信任] -10.9.0.1/24
- VPN 接口(
bvpn20
):BovpnVif.BO20 [IKEv1]- 路线至
10.9.20.0/24
- 路线至
- 接口(路由模式)
- Firebox-BO20 (
10.9.20.1
) - T55 [Fireware OS v12.2.1.B572649]- 接口(路由模式)
- DNS 服务器:
192.0.2.10
&192.0.2.20
(ISP2 的 DNS 服务器) eth0
:ISP2 [外部]-203.0.113.33/24
(DHCP)eth1
:受信任 [受信任] -10.9.20.1/24
- DNS 服务器:
- VPN 接口(
bvpn1
):BovpnVif.HQ [IKEv1]- 路线至
0.0.0.0/0
- VPN 设置:[x] 当 BOVPN vif 的隧道关闭时删除 VPN 路由。
- 路线至
- 接口(路由模式)
当隧道关闭时,一切都按预期运行。Firebox-BO20 可以充当其eth1
网络的 DNS 解析器。Firebox10.9.20.0/24
本身和 Firebox 都可以访问互联网。
问题:当隧道建立并且添加了0.0.0.0/0
路由后bvpn1
,客户端eth1
就可以通过 VPN 访问 Internet 以及总部的所有资源(包括 DNS 服务器)。
IPv4 Routes
------------
Destination Gateway Genmask Flags Metric Interface
0.0.0.0 0.0.0.0 0.0.0.0 U 1 bvpn1
0.0.0.0 203.0.113.1 0.0.0.0 UG 5 eth0
10.9.20.0 0.0.0.0 255.255.255.0 U 0 eth1
203.0.113.0 0.0.0.0 255.255.255.0 U 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 lo
然而,Firebox 停止作为 DNS 解析器工作并失去其自身的 Internet 连接。这是因为 Firebox 自己的连接也开始使用该路由。
- ISP2 的 DNS 服务器
192.0.2.10
无法192.0.2.20
从 ISP1 访问。 - 网络上的设备
10.9.20.0/24
可以通过 访问互联网bvpn1
。 - Firebox 不
10.9.20.1
通过隧道使用其内部 IP,但是203.0.113.33
。 - 防火墙规则
Any From Firebox-00
是硬编码的,不会显示在策略管理器中。否则,很容易强制eth0
使用<policy-routing>
。
防火墙策略允许两台设备上所有必要的流量;因此问题仅限于路由。
答案1
为了ISP2 的 DNS 服务器您需要向 Firebox-BO20 添加静态路由。
- 从 Fireware Polixy Manager > 网络 > 路由...
- 添加...静态路由,主机 IPv4,到
192.0.2.10
,网关203.0.113.1
度量0
。 - 添加...静态路由,主机 IPv4,到
192.0.2.20
,网关203.0.113.1
度量0
。
- 添加...静态路由,主机 IPv4,到
将设置保存到 Firebox 后,连接隧道的路由表如下所示:
IPv4 Routes
------------
Destination Gateway Genmask Flags Metric Interface
0.0.0.0 0.0.0.0 0.0.0.0 U 1 bvpn1
0.0.0.0 203.0.113.1 0.0.0.0 UG 5 eth0
10.9.20.0 0.0.0.0 255.255.255.0 U 0 eth1
192.0.2.10 203.0.113.1 255.255.255.255 UGH 0 eth0
192.0.2.20 203.0.113.1 255.255.255.255 UGH 0 eth0
203.0.113.0 0.0.0.0 255.255.255.0 U 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 lo
另一种选择是使用在两个 ISP 上都有效的公共 DNS 服务器(如 Cloudflare 的1.1.1.1
/1.0.0.1
或 Google 的8.8.8.8
/ 8.8.4.4
)。这样,您就不需要在 Firebox-BO20 上添加路由,但以下解决方案对于这两种方法都是必需的。
为了Firebox-BO20 的互联网连接当隧道连接时,事情会变得稍微复杂一些,因为 Firebox 在通过隧道发送数据包时使用其外部 IP。如果您有与登录相匹配的规则(如 HTTPS 代理),您将从日志中看到这一点,例如:
Allow 203.0.113.33 23.99.53.216 https/tcp 46452 443 BovpnVif.BO20-bvpn20 ISP1
HTTPS Request (HTTPS-proxy-00) HTTPS-Client.Standard proc_id="https-proxy"
... sni="services.watchguard.com" cn="services.watchguard.com"
0.0.0.0/0
这在 Firebox-BO20 上有一条路由,但在 Firebox-HQ 隧道上没有路由bvpn20
。
您需要编辑 BOVPN 虚拟接口 BovpnVif.BO20 和添加到 Firebox-BO20 外部 IP 的路由。如果 IP 是静态的,那将是一个
203.0.113.33/32
。在这种情况下,如果 Firebox-BO20 的外部接口使用 DHCP,您需要一个覆盖所有可能获取的 IP 的路由,例如整个 DHCP 池
203.0.113.0/24
。当然,这意味着 Firebox-HQ 也会将此路由用于该范围内的其他地址。这可能会在某些用例中造成问题 - 如果是这样,您需要获取静态 IP。默认情况下,Firebox 会为私有网络
192.168.0.0/16
、172.16.0.0/12
和增加动态 NAT10.0.0.0/8
。由于外部 IP203.0.113.33
不在这些网络内,因此您需要添加(网络 > NAT...)从 BovpnVif.BO20 到任意外部的动态 NAT。幸运的是,可以使用 BOVPN 虚拟接口的现有内置别名来实现这一点。