linux - 无覆盖的桥接网络之间的路由

linux - 无覆盖的桥接网络之间的路由

场景如下。子网中有两个主机(均为 VirtualBox VM),并且都位于同一网络 192.168.1.0 上。我还创建了两个具有独立网络切片的桥接接口。

问题: 有没有办法让 host1 网桥上的 ip 与 host2 网桥上的 ip 进行通信?我正在寻找一种使用ip route或类似方式配置路由的方法,将一个网桥上的 L3 数据包路由到另一个网桥,而无需安装额外的网络层(如 vxlan 或类似的东西)。

配置:

Host1 接口:

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ca:4a:14 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.197/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feca:4a14/64 scope link
       valid_lft forever preferred_lft forever```

7: br-faf88cbd32f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:28:8c:40:00 brd ff:ff:ff:ff:ff:ff
    inet 172.11.11.1/24 brd 172.11.11.255 scope global br-faf88cbd32f0
       valid_lft forever preferred_lft forever

Host1路由:

default via 192.168.1.1 dev enp0s3 proto static
172.11.11.0/24 dev br-faf88cbd32f0 proto kernel scope link src 172.11.11.1
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.197

Host2 接口:

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:40:ae:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.196/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe40:ae5f/64 scope link
       valid_lft forever preferred_lft forever

92: br-037dfd7b32bc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:fe:0d:54:86 brd ff:ff:ff:ff:ff:ff
    inet 172.11.12.1/24 brd 172.11.12.255 scope global br-037dfd7b32bc
       valid_lft forever preferred_lft forever
    inet6 fe80::42:feff:fe0d:5486/64 scope link
       valid_lft forever preferred_lft forever

Host2 路由:

default via 192.168.1.1 dev enp0s3 proto static
172.11.12.0/24 dev br-037dfd7b32bc proto kernel scope link src 172.11.12.1
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.196

答案1

如果我理解正确的话,您想要通过桥接器连接到 host1 或 host2 的东西来与其他主机通信?

你会做

ip route add 172.11.11.0/24 via 192.168.1.197 # on host2
ip route add 172.11.12.0/24 via 192.168.1.196 # host1

但要小心 Virtualbox 可能启用的防火墙或 NAT,它们可能会破坏你的路由

答案2

您是否已打开内核 IP 转发?您可以使用以下命令进行检查:

 cat /proc/sys/net/ipv4/ip_forward

如果返回 1,则表示已启用。如果返回 0,则必须在要路由流量的每个主机上启用它。您可以运行以下命令为当前 shell 启用它:

echo 1 > /proc/sys/net/ipv4/ip_forward

为了使更改永久生效,您可以编辑 /etc/sysctl.conf 以在新行中添加以下内容:

net.ipv4.ip_forward = 1

一旦 sysctl.conf 更新,请重新启动或运行此命令以从文件加载新值:

sysctl -p

看起来您了解路由部分。

相关内容