Como rotear apenas sub-rede específica (ip de origem) para uma interface específica?

31

Como rotear apenas sub-rede específica (ip de origem) para uma interface específica?
SO: Linux

Eu sei que posso fazer facilmente pelo IP de destino usando algo como

route add 1.2.3.4/24 dev eth4

mas não vejo como rotear com base no IP de origem.

Alex
fonte

Respostas:

30

Você precisa usar o roteamento baseado em políticas. Algo como

ip rule add from <source>/<mask> table <name>
ip route add 1.2.3.4/24 via <router> dev eth4 table <name>

<name>é o nome da tabela especificado em /etc/iproute2/rt_tablesou você pode usar o ID numérico ...

Isso praticamente diz que todo o tráfego 1.2.3.4/24será roteado usando a tabela de roteamento <name>. Como o IIRC não usa a tabela padrão depois de passar por isso, se você precisar de outras rotas (por exemplo, gateway padrão), precisará adicioná-las à tabela também.

Raposa
fonte
1
uma correção (mas não tenho certeza se o seu um vai também trabalho para o segundo comando:. ip route add default dev eth4 table <name>( tabledirectiva deve ir no final eu acho que, assim como no primeiro comando ... também defaultpode ser substituída por uma sub-rede, assim como no seu exemplo )
Alex