Você pode usar a suite iproute2
para isso. O fato de os IPs de origem serem atribuídos a aliases de interface não afeta o problema.
Vamos supor que seu gateway padrão é 10.0.0.1
ip route del default
ip route add default via 10.0.0.1 dev eth0 src 10.0.0.122
É isso. Basta substituir a rota padrão pela segunda linha, substituindo 10.0.0.122
pelo IP de origem do qual você deseja rotear o tráfego.
Se você quiser usar todos os seus IPs ao mesmo tempo, basta atribuir cada uma delas a determinadas sub-redes:
ip route add 64.0.0.0/2 via 10.0.0.1 dev eth0 src 10.0.0.122
ip route add 128.0.0.0/2 via 10.0.0.1 dev eth0 src 10.0.0.18
Isso fará com que todo o tráfego de saída para 64.0.0.0 - 127.255.255.255
use 10.0.0.122
e 128.0.0.0 - 191.255.255.255
use 10.0.0.18
. Todo o outro tráfego usará o padrão de 10.0.0.120
O fato de os IPs serem atribuídos a aliases de interface (eth0: 0) não tem absolutamente nenhum impacto. IProute2 (ou realmente o kernel) não se importa.
E sim, eu tentei isso na minha rede doméstica, funciona muito bem.