Bridge not working after reboot -> starts to work when starting tcpdump on the interface

Hello there,

I’ve got a really strange problem regarding my bridges on a NixOS 20.09 (problem also exists on 20.03).
The configuration look like this (names and addresses censored of course):

  networking = { 
    useNetworkd = true;
    useDHCP = false;
    hostId = "39f2c5e3";
    firewall = { 
      enable = true;
      allowedTCPPorts = [ 22 ];
      allowedUDPPorts = []; 
    };  
    hostName = "hostname";
    domain = "best.domain.at";
    nameservers = [ "9.9.9.9" ];
  };  
  systemd.network.netdevs."20-br-public" = { 
    netdevConfig = { 
      Kind = "bridge";
      Name = "br-public";
    };  
    extraConfig = ''
      [Bridge]
      VLANFiltering=true
    '';
  };  
  systemd.network.networks."30-int-enp2s0f1" = { 
    matchConfig = { 
      Name = "enp2s0f1";
    };  
    networkConfig = { Bridge = "br-public"; };
  };  
  systemd.network.networks."30-int-public" = { 
    matchConfig = { 
      Name = "br-public";
    };  
    address = [ 
      "127.0.0.1/24"
    ];  
    gateway = [ "127.0.0.245" ];
  };  

When rebooting the system all looks good so far. The interfaces are up, the IP Addresses are configured and when checking the bridge I can see all needed interfaces as member of the bridge.

The connection just does not work. I’ve debugged a lot checking configuration and doing tcpdumps. After a time it started working without me changing anything, just lurking around.

It looks like the bridge starts to work after the bridge/all related interfaces went into promiscuous mode one because tcpdump was started.
After a reboot I ping the public IP without answer. Connecting to the system via Serial console and starting “tcpdump -n” it starts to answer.

Do someone else see this problem or has a tip what I could check to solve it?
I am happy to answer additional questions about the configuration/hardware if needed.

thanks,
Stefan

1 Like