# NOTE: Type=ether matches ALL ethernet interfaces. Any future USB/Thunderbolt # ethernet dongle would be auto-enslaved into bond0. If that becomes a problem, # narrow the [Match] section to MACAddress= or a persistent Name= (e.g. enp*s0). # # Name= negations below exclude virtual interfaces that should NEVER be enslaved: # vnet* — libvirt tap devices (VM NICs) # virbr* — libvirt bridges # tap* — generic TAP interfaces # veth* — container/namespace veth pairs # docker*, br-*, podman* — container engine bridges # Without these, e.g. libvirt VM taps get pulled into bond0 and lose their bridge, # breaking VM networking (DHCP, NAT). [Match] Type=ether Name=!vnet* !virbr* !tap* !veth* !docker* !br-* !podman* [Network] Bond=bond0 PrimarySlave=true