Dem*_*tus 6 networking ip bridge arp
我对在 Linux 中设置虚拟交换机的方式感到困惑。我按如下方式进行:
ip link add name br0 type bridge
ip link set br0 up
Run Code Online (Sandbox Code Playgroud)
这应该创建一个名为 br0 的虚拟交换机。现在,假设我的机器上有一个名为 eth0 的物理网络设备和一个由 KVM/qemu 创建的分流设备 vnet0。Tap 设备会自动连接到 br0(通过配置),并且 eth0 可以手动添加:
ip link set eth0 master br0
Run Code Online (Sandbox Code Playgroud)
两个设备现在都应连接到交换机 br0。
我将 IP 地址 192.168.1.1 分配给 eth0,将 192.168.1.2 分配给虚拟化内部的网络接口。当然,tap 接口本身并不知道这个地址的任何信息。
如果我使用物理交换机而不是虚拟交换机进行此设置,我希望能够从主机系统 ping 地址 192.168.1.2。但是,无法通过 ping 到达此 IP:
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.1.2 icmp_seq=1 Destination Host Unreachable
...
Run Code Online (Sandbox Code Playgroud)
这是为什么?
我期望 eth0 向其所属的所有以太网段发送 ARP 请求。这是物理的,也是 br0 定义的。vnet0 应该使用其 MAC 地址来应答 ARP 请求。
我找到的解决方案是也为 br0 分配一个 IP 地址:
ip addr add 192.168.1.3/24 dev br0
Run Code Online (Sandbox Code Playgroud)
现在 ping 工作正常。
我将IP地址192.168.1.1分配给eth0
这就是这个设置出错的地方。eth0已设置为桥接成员接口(第 2 层),因此不应具有任何 IP(第 3 层)地址。
(您可能会以一种损坏的配置结束,涉及两条到 192.168.1.0/24 的直接路由)通过 2 个不同的接口,只有其中一个有效。但错误设置的具体细节并不重要。)
这是为什么?
我期望 eth0 向其所属的所有以太网段发送 ARP 请求。这是物理的,也是 br0 定义的。
eth0 不会发送任何 ARP。一旦成为网桥的一部分,它就不再是第 3 层接口。
eth0,tap0, 和eth0(最有可能的是:本地网络上的一堆其他设备)tap0(这可能是一回事)br0| 归档时间: |
|
| 查看次数: |
4574 次 |
| 最近记录: |