Linux split access (multiple internet connections w/ load balancing)
Solution 1:
As you can see here
gateway:~# ip route
150.101.180.24 dev ppp0 proto kernel scope link src 150.101.179.XXX
150.101.180.24 dev ppp1 proto kernel scope link src 150.101.177.XXX
192.168.5.0/24 dev eth1 proto kernel scope link src 192.168.5.254
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.2
192.168.1.0/24 dev eth3 proto kernel scope link src 192.168.1.3
> default via 192.168.1.254 dev eth3
> default via 192.168.1.254 dev eth2
> default dev ppp1 scope link
> default dev ppp0 scope link
you have 4 default routes. When you're trying to reach a non-local host, one of these 4 is chosen:
gateway:~# ip route get 5.5.5.5
5.5.5.5 via 192.168.1.254 dev eth3 src 192.168.1.3
cache mtu 1500 advmss 1460 hoplimit 64
In this case eth3, which doesn't get you to the desired destination. The gateway you're asking to forward your packets (192.168.1.254) truthfully responds, that it has no path to the destination network:
gateway:~# ping 4.2.2.2
PING 4.2.2.2 (4.2.2.2) 56(84) bytes of data.
From 192.168.1.254 icmp_seq=1 Destination Net Unreachable
I don't know where those default routes via ethX originate from, but you need to get rid of them:
ip route del default via 192.168.1.254 dev eth3
ip route del default via 192.168.1.254 dev eth2
If your setup is not working as intended after that, the output of ip rule show
will probably be helpful for further debugging.