My Debian 12 computer has a static IPv4 address 192.168.1.3/23, gateway is 192.168.1.1. Computer gets IPv6 address via SLAAC.
In order to use Proxmox, I have defined the /etc/network/interfaces -file as follows:
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
For Proxmox purposes, this works fine - virtual computers get their IPv4 from local gateway and IPv6 from operator via SLAAC. But this main computer works only with IPv6.
When I started debugging this, I noticed that first, avahi-daemon
joins mDNS multicast group with IP 169.254.153.191 and then connmand
changes IPv4 address to this same. After this, IPv4 connectivity was lost. Here is snippet from /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>
The first step was to disable connmand
on eno1 interface by adding following line to /etc/connman/main.conf
:
# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb-
NetworkInterfaceBlacklist = eno,vmbr
This worked fine otherwise, but in boot, connman-wait-online.service
kept on waiting for network to come online. The next step was sudo systemctl disable connman-wait-online.service
, which helped on boot.
After this, the system worked fine: computer had both IPv4 and IPv6 connectivity and the connmand
did not any more try to disable the IPv4.
But, after I created some Proxmox virtual machines and started them, tapXXXX network adapters appeared and connmand
started to play again: it added default routes for them. Now the route table is as follows and IPv4 routing does not work any more. IPv6 works fine.
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
These were corrected by editing /etc/connman/main.conf
to cover also tap* and fw* adapters:
# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb-
NetworkInterfaceBlacklist = eno,vmbr,fw,tap
So, to the question: how should I fix things in order to get both IPv4 and IPv6 working without goofing too much around with connmand
configuration files?