Debian 12桥接网卡IPv4连接丢失,如何无需频繁配置connmand解决?
我在Debian 12机器上配置了静态IPv4地址192.168.1.3/23,网关为192.168.1.1,同时通过SLAAC获取IPv6地址。为适配Proxmox,我将/etc/network/interfaces配置如下:
source /etc/network/interfaces.d/* auto lo iface lo inet loopback iface eno1 inet manual auto vmbr0 iface vmbr0 inet6 auto iface vmbr0 inet static address 192.168.1.3/23 gateway 192.168.1.1 bridge-ports eno1 bridge-stp off bridge-fd 0
这个配置对Proxmox虚拟机正常生效:虚拟机可以从本地网关获取IPv4,通过SLAAC获取IPv6,但主机仅IPv6可用。
调试后发现问题根源:avahi-daemon先以169.254.153.191加入mDNS多播组,随后connmand将主机IPv4地址替换为该值,导致IPv4连接丢失。以下是/var/log/syslog的相关片段:
2023-06-24T23:36:40.625360+03:00 cathouse avahi-daemon[622]: Joining mDNS multicast group on interface eno1.IPv4 with address 169.254.153.191. 2023-06-24T23:36:40.625549+03:00 cathouse avahi-daemon[622]: New relevant interface eno1.IPv4 for mDNS. 2023-06-24T23:36:40.625584+03:00 cathouse avahi-daemon[622]: Registering new address record for 169.254.153.191 on eno1.IPv4. 2023-06-24T23:36:40.641482+03:00 cathouse connmand[659]: eno1 {add} address 169.254.153.191/16 label eno1 family 2 2023-06-24T23:36:40.641562+03:00 cathouse connmand[659]: eno1 {add} route 169.254.0.0 gw 0.0.0.0 scope 253 <LINK> 2023-06-24T23:36:40.641595+03:00 cathouse connmand[659]: eno1 {add} route 0.0.0.0 gw 0.0.0.0 scope 253 <LINK> 2023-06-24T23:36:40.641622+03:00 cathouse connmand[659]: eno1 {add} route 0.0.0.0 gw 0.0.0.0 scope 253 <LINK>
我尝试在/etc/connman/main.conf中添加黑名单禁用connmand对eno1接口的管理:
# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb- NetworkInterfaceBlacklist = eno,vmbr
此配置基本解决了主机IPv4的问题,但开机时connman-wait-online.service会持续等待网络上线,执行sudo systemctl disable connman-wait-online.service后解决了开机卡顿的问题。
主机恢复双栈连接后,创建并启动Proxmox虚拟机时,出现了tapXXXX、fwXXXX等接口,connmand再次接管这些接口并添加错误的默认路由,导致IPv4路由失效(IPv6仍正常)。此时的路由表如下:
kalle@cathouse:/etc/network$ sudo route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 0.0.0.0 255.255.255.255 UH 0 0 0 tap201i0 0.0.0.0 0.0.0.0 255.255.255.255 UH 0 0 0 fwln102i0 0.0.0.0 0.0.0.0 255.255.255.255 UH 0 0 0 tap102i0 0.0.0.0 0.0.0.0 255.255.255.255 UH 0 0 0 fwpr102p0 0.0.0.0 0.0.0.0 255.255.255.255 UH 0 0 0 tap103i0 default 0.0.0.0 0.0.0.0 U 0 0 0 tap201i0 default 0.0.0.0 0.0.0.0 U 0 0 0 tap103i0 default OpenWrt.home 0.0.0.0 UG 0 0 0 vmbr0 link-local 0.0.0.0 255.255.0.0 U 0 0 0 tap103i0 link-local 0.0.0.0 255.255.0.0 U 0 0 0 fwpr102p0 link-local 0.0.0.0 255.255.0.0 U 0 0 0 tap102i0 link-local 0.0.0.0 255.255.0.0 U 0 0 0 fwln102i0 link-local 0.0.0.0 255.255.0.0 U 0 0 0 tap201i0 192.168.0.0 0.0.0.0 255.255.254.0 U 0 0 0 vmbr0
再次修改/etc/connman/main.conf,将fw和tap接口加入黑名单后解决了该问题:
# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb- NetworkInterfaceBlacklist = eno,vmbr,fw,tap
现在想请教:如何在无需频繁修改connmand配置文件的前提下,让主机同时正常使用IPv4和IPv6?
内容的提问来源于stack exchange,提问作者Kalle

