摘要:两网口enp6s0f0,enp6s0f1 分别加入br0,br1两个网桥中,正常设置是在网桥中设置ip地址,而不是在网口中设置ip。如上图所示:enp6s0f0 加入br0,br0设置有ip地址10.50.80.7。
刚刚开始接触Linux虚拟化的同学们在配置网桥时可能会被一种情况迷惑吧?
enp6s0f0 加入br0,br0设置有ip地址10.50.80.7
两网口enp6s0f0,enp6s0f1 分别加入br0,br1两个网桥中,正常设置是在网桥中设置ip地址,而不是在网口中设置ip。如上图所示:enp6s0f0 加入br0,br0设置有ip地址10.50.80.7。
为什么呢?
先测试下,当物理接口(enp6s0f0)被加入Linux网桥(br0)后,若给该物理接口(enp6s0f0)配置IP地址(10.50.80.7/24),会发现无法ping通。
譬如设置成这样:
将br0的ip地址去掉,在enp6s0f0网口上设置IP地址10.50.80.7
缘由分析
先说结论:网桥接口(br0)会接管所有ARP请求/响应,物理接口的IP地址相关的ARP无法响应
1. 正常ARP请求/响应流程
在非桥接场景中,ARP工作流程如下:
ARP请求:当主机A(IP_A)需要与主机B(IP_B)通信时,若ARP表中无IP_B的MAC地址,会广播ARP请求报文,询问“谁有IP_B?”。
ARP响应:主机B收到请求后,单播回复“IP_B的MAC是MAC_B”。
ARP表更新:主机A将IP_B与MAC_B的映射存入ARP表,后续数据包通过二层MAC地址直接发送。
2. 网桥(br0)对ARP流程的影响
当物理接口(enp6s0f0)被加入网桥(br0)时:
物理接口成为二层端口:enp6s0f0不再直接处理三层协议(如IP和ARP),而是作为网桥的从属端口(slave),仅负责二层帧的转发。
网桥接管三层功能:所有三层协议由网桥接口(br0)处理。若网桥未配置IP地址,则系统无法响应任何ARP请求。
来源:肖潇科技天地