我有一个相当简单的设置,使用运行 OPNSense 的 PCEngines 防火墙和 EdgeCore ECS4620-28P L3 交换机。EdgeCore 正在执行 VLAN 间路由,效果很好,但我无法同时在所有 VLAN 上访问 Internet。
我想要以下内容:
- 交换机上有 5 个独立的 VLAN
- 某些 VLAN 之间的 VLAN 间路由,例如 30(桌面工作站)-> 50(rdp 机器)
- 每个 VLAN 的 Internet 访问都运行了一个单独的 VPN。
- 如果我不能为每个 VPN 设置一个 VLAN,那么即使只是将所有 VLAN 都从一个 VPN 中取出也是很棒的。
网络:
有:
- 5 个 VLAN:10-50
- 每个 VLAN 都在 OPNSense 防火墙中定义,我使用 NAT 将每个 VLAN 路由到单独的 VPN
- OPNSense 防火墙中的每个 VLAN 都有该 VLAN 的接口地址,例如 10.0.20.1、10.0.10.1 等...
- 在 EdgeCore 上还定义了每个 VLAN(带有端口标记),每个 VLAN 都有一个接口
- 每台 PC 的默认路由是该 VLAN 的 EdgeCore VLAN 接口,例如 10.0.20.200、10.0.10.200 等...
如果我将 PC 上的默认路由设置为 OPNSense VLAN 接口,例如 10.0.10.1,它会路由到 Internet,但不会在 VLAN 之间路由(因为 L3 交换机接口位于 10.0.10.200 上)。但是,如果我将默认路由设置为 10.0.10.200,那么我可以访问其他 VLAN 上的 PC,但不能访问 Internet(除非我为一个 VLAN 设置了默认路由,如下所示)
我很确定我错了,但现在我希望路径是:
- PC#n (10.0.xx/24) -> EdgeCore VLAN 接口 (10.0.x.200) -> OPNSense VLAN 接口 (10.0.x.1) -> 互联网
但这似乎是错误的,因为同一个 VLAN 基本上有两个接口......
这是我在 OPNSense 中的 NAT 设置:
这是问题所在,当定义以下静态路由时,我可以从 EdgeCore 内部的 10.0.20.200 -> 10.0.20.1 -> 8.8.8.8 跟踪路由:
与任何其他 VLAN 一样,只要它的下一个希望(即 10.0.x.1)以这种方式定义。现在我知道这是默认路由,所以我知道每个 VLAN 不能有一个默认路由,至少不能像上面定义的那样。
有这篇文章询问关于每个 VLAN 的默认路由的相同问题,建议的修复是基于策略的路由或 VRF-lite。EdgeCore 在手册中没有提到 VRF,我能看到的唯一基于策略的路由是参考 BGP。
我需要设置BGP吗?或者这里的答案是防火墙需要一条返回我的客户端的路由?
还有这篇文章指出需要一个额外的 VLAN 来处理交换机和路由器之间的路由,但是我似乎也无法做到这一点。
以下是在将 EdgeCore 配置为默认路由且未在 EdgeCore 中设置默认路由时来自其中一个客户端的 ping 响应:
IP:10.0.10.40/24 默认:10.0.10.200(EdgeCore VLAN 接口)
注意:它会像那样挂起,实际上没有“无法到达目的地”的响应或任何东西。
以下是在 .20 子网中配置并在 EdgeCore (0.0.0.0 -> 10.0.20.1) 中设置默认路由时来自其中一个客户端的 ping:
这些DUP数据包是看似双 VLAN 接口不正确的另一个迹象。




