I have a server with three network interfaces- loopback interface lo and two physical network interfaces eth0 and eth1:1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000    link/ether 00:1d:09:f0:92:ab brd ff:ff:ff:ff:ff:ff    inet 93.184.216.34/22 brd 93.184.219.255 scope global eth0    inet6 fe80::21d:9ff:fef0:92ab/64 scope link        valid_lft forever preferred_lft forever3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000    link/ether 00:1d:09:f0:92:ac brd ff:ff:ff:ff:ff:ff    inet 10.228.2.2/24 scope global eth1    inet6 fe80::21d:9ff:fef0:92ac/64 scope link        valid_lft forever preferred_lft foreverNow if I check the routing for 255.255.255.255 or 0.0.0.0.0(older IP broadcast address), then I would expect, that packet is forwarded on all three network interfaces. Instead, for 255.255.255.255 only the eth0 is used and for 0.0.0.0 the lo is used:root@server:~# ip route get 255.255.255.255broadcast 255.255.255.255 dev eth0  src  93.184.216.34    cache <local,brd> root@server:~# ip route get 0.0.0.0local 127.0.0.1 dev lo  src 127.0.0.1     cache <local> root@server:~# Why is that so?
IPv4 broadcast routing in Linux
routing;ipv4