Hello I have a simple setup for explanation purposes created with following scripts:`
env.sh
CON1="con1" CON2="con2" NODE_IP="10.0.0.20" TUNNEL_IP="172.16.1.100" BRIDGE_IP="172.16.1.1" IP1="172.16.1.2" IP2="172.16.1.3" setup.sh
#!/bin/bash -e . env.sh echo "Creating the namespaces" sudo ip netns add $CON1 sudo ip netns add $CON2 echo "Creating the veth pairs" sudo ip link add veth10 type veth peer name veth11 sudo ip link add veth20 type veth peer name veth21 echo "Adding the veth pairs to the namespaces" sudo ip link set veth11 netns $CON1 sudo ip link set veth21 netns $CON2 echo "Configuring the interfaces in the network namespaces with IP address" sudo ip netns exec $CON1 ip addr add $IP1/24 dev veth11 sudo ip netns exec $CON2 ip addr add $IP2/24 dev veth21 echo "Enabling the interfaces inside the network namespaces" sudo ip netns exec $CON1 ip link set dev veth11 up sudo ip netns exec $CON2 ip link set dev veth21 up echo "Creating the bridge" sudo ip link add name br0 type bridge echo "Adding the network namespaces interfaces to the bridge" sudo ip link set dev veth10 master br0 sudo ip link set dev veth20 master br0 echo "Assigning the IP address to the bridge" sudo ip addr add $BRIDGE_IP/24 dev br0 echo "Enabling the bridge" sudo ip link set dev br0 up echo "Enabling the interfaces connected to the bridge" sudo ip link set dev veth10 up sudo ip link set dev veth20 up echo "Setting the loopback interfaces in the network namespaces" sudo ip netns exec $CON1 ip link set lo up sudo ip netns exec $CON2 ip link set lo up echo "Setting the default route in the network namespaces" sudo ip netns exec $CON1 ip route add default via $BRIDGE_IP dev veth11 sudo ip netns exec $CON2 ip route add default via $BRIDGE_IP dev veth21 When I run sudo ip netns exec con1 ping <ip address of my eth0 on host>, then ping simply works, but inspection by wireshark indicates that traffic arrives at bridge with destination MAC address set to MAC address of the bridge(which makes sense given the routes in namespaces), but there are no subsequent ARPs to find out the MAC address of eth0 and the MAC address of eth0 is not listed in bridge br0 forwarding table.
So my question is, how come that ping still works with IP address assigned to eth0, when neither the namespace nor bridge are aware of anything about eth0?
What happens with frames and packets once they reach the bridge?