如您所见,我在 Nethserver 和 OpnSense 中有两个路由器/防火墙(这是随新 ISP 新安装的)。
Nethserver LAN 的子网是 192.168.0.0/24(称为 0 子网) OpnSense LAN 的子网是 192.168.2.0/24(称为 2 子网)
连接到网络的大多数设备(接入点或通过交换机)都属于子网 192.168.0.0/24,DG 为 192.168.0.1
我知道 0 子网上的设备无法直接连接/通信到 2 子网的设备,因为它们属于不同的子网(ARP 不起作用),并且任何请求基本上最终都会发送到 DG 192.168.0.1
一旦到达这里,Nethserver 路由器就会将其发送到网络外去寻找设备
我尝试使用以下命令在 Nethserver 上添加静态路由
ip route add 192.168.2.0/24 via 192.168.2.1 dev eth0
但这只是给出输出
RTNETLINK answers: Network is unreachable
我这里漏掉了一些东西。我知道。但无法指出它。
如果我理解您的图表没有问题,那么两个 IP 子网都位于同一个以太网上(没有 VLAN 或任何其他 L2 隔离)。在此设置中,ARP可以工作 - 主机只是不知道这种可能性。这与您的错误消息直接相关。
“下一跳”必须是您的系统已有直接路由的地址。您无法通过 192.168.2.1 路由 192.168.2.0/24,因为路由表尚不知道如何到达192.168.2.1。
如果你确定 192.168.2.1 位于同一个以太网网络上(即可以通过 ARP 解析),则有两种方法可以告诉 Linux:
使用
onlink
标志来覆盖检查。或者,手动为下一跳创建本地(非网关)路由。
但是...因为整个子网都位于同一个以太网上,所以您可以将整个子网声明为 on-link :
...然后系统将直接对所有主机使用 ARP。(您也可以通过 DHCP 将此路由部署到客户端设备以获得更好的性能。)
希望这一切都是暂时的——尽管像这样两个子网和两个路由器重叠并不是最糟糕的情况,但这肯定也不是一个好的做法。(例如,您会遇到这样的情况:流量在一个方向上通过路由器,但在另一个方向上直接通过,这会混淆防火墙。)理想情况下,两个子网将是不同的 VLAN,路由器之间将有一个专用的 /30 连接(或者当然是一个路由器来处理两个子网)。
或者,您可以有一个带有两个网关的 IP 子网,DHCP 提供一个网关地址,某些服务器手动配置为使用另一个网关地址。这仍然不是很好,但似乎比当前设置好一点。
还值得注意的是,为了实现完全连接,还应存在“FROM”路由 - 通信的“另一端”需要知道将回复发送到哪里。这意味着:您还应该在 OpnSense 上创建类似的路由。