场景如下。子网中有两个主机(均为 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
看起来您了解路由部分。