Starting state
# br1.netdev
[NetDev]
Kind=bridge
Name=br1
# br1.network
[Match]
Name=br1
br1 is administratively up by default (but no-carrier):
❯ ip addr show br1
3: br1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether c2:2d:79:89:4d:38 brd ff:ff:ff:ff:ff:ff
Lets see if it works.
Setup:
sudo ip netns add ns1
sudo ip link add veth1 type veth peer name guest1
sudo ip link set guest1 name host0 netns ns1
sudo ip link set veth1 master br1
sudo ip netns exec ns1 ip addr add dev host0 10.254.0.1/24
sudo ip netns exec ns1 ip link set up dev host0
sudo ip netns exec ns1 ip link set up dev lo
sudo ip link set up veth1
sudo ip netns add ns2
sudo ip link add veth2 type veth peer name guest2
sudo ip link set guest2 name host0 netns ns2
sudo ip link set veth2 master br1
sudo ip netns exec ns2 ip addr add dev host0 10.254.0.2/24
sudo ip netns exec ns2 ip link set up dev host0
sudo ip netns exec ns2 ip link set up dev lo
sudo ip link set up veth2
Test:
sudo ip netns exec ns2 ping -c2 10.254.0.1
PING 10.254.0.1 (10.254.0.1) 56(84) bytes of data.
64 bytes from 10.254.0.1: icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from 10.254.0.1: icmp_seq=2 ttl=64 time=0.084 ms
sudo ip netns exec ns1 ping -c2 10.254.0.2
PING 10.254.0.2 (10.254.0.2) 56(84) bytes of data.
64 bytes from 10.254.0.2: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from 10.254.0.2: icmp_seq=2 ttl=64 time=0.082 ms
No ip on the bridge
❯ ip addr show br1
3: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c2:2d:79:89:4d:38 brd ff:ff:ff:ff:ff:ff
inet6 fe80::c02d:79ff:fe89:4d38/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
❯ ip addr show veth1
13: veth1@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br1 state UP group default qlen 1000
link/ether ae:4d:19:de:b2:84 brd ff:ff:ff:ff:ff:ff link-netns ns1
inet6 fe80::ac4d:19ff:fede:b284/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
❯ ip addr show veth2
15: veth2@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br1 state UP group default qlen 1000
link/ether 36:16:85:ee:07:c4 brd ff:ff:ff:ff:ff:ff link-netns ns2
inet6 fe80::3416:85ff:feee:7c4/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
The correct online states would be
enslaved
on the bridge ports andcarrier
on the bridge itself.