Come impostare due routes predefiniti in Linux

TL; DR

Come impostare due routes predefiniti in Linux (corrispondenti a due interfacce), in modo che il traffico in entrata da entrambe le interfacce sia accettato.

Scenario

Ho un host che ha due NIC eth0 e eth1 . Il relativo collegamento a due reti, dice:

  • Dev: eth0 , IP: 1.1.1.4 , Maschera di networking: 255.255.255.0 , Gateway: 1.1.1.1

  • Dev: eth1 , IP: 2.2.2.4 , Maschera di networking: 255.255.255.0 , Gateway: 2.2.2.1

(Entrambe le reti sono collegate a Internet.)

Le rotte sono ( ip route show ):

 default via 1.1.1.1 dev eth0 metric 1 default via 2.2.2.1 dev eth1 metric 2 1.1.1.0/24 dev eth0 src 1.1.1.4 2.2.2.0/24 dev eth1 src 2.2.2.4 

(Metriche inferiori significa maggiore priorità.)


Ora quando qualcuno ping 2.2.2.4 da qualche host esterno (per esempio 4.4.4.4 ), non c'è risposta.

L'output di tcpdump -i eth1 sul mio host è:

 22:41:27.431539 IP 4.4.4.4 > 2.2.2.4: ICMP echo request, id 8625, seq 4, length 64 22:41:28.439492 IP 4.4.4.4 > 2.2.2.4: ICMP echo request, id 8625, seq 5, length 64 22:41:29.447666 IP 4.4.4.4 > 2.2.2.4: ICMP echo request, id 8625, seq 6, length 64 22:41:30.455528 IP 4.4.4.4 > 2.2.2.4: ICMP echo request, id 8625, seq 7, length 64 

Dopo alcune ricerche, risulta che quando lo stack di networking di Linux riceve un pacchetto da 4.4.4.4 , controlla la tabella di routing per vedere quale interface dovrebbe essere stata usata per 4.4.4.4 (che è eth0 nella tabella di routing). Ora, dal momento che il pacchetto è venuto da interface eth1 , linux lo scarta semplicemente (questa politica è probabilmente per prevenire spoofing IP).


Quello che voglio è:

  • Il traffico in output (originato localmente) deve utilizzare l'interface eth0 per impostazione predefinita.

  • Il traffico in entrata dovrebbe essere accettato da entrambe le interfacce. (Così 4.4.4.4 dovrebbe essere in grado di ping entrambi 1.1.1.4 e 2.2.2.4 )

One Solution collect form web for “Come impostare due routes predefiniti in Linux”

Utilizzando iproute2 puoi fare qualcosa di simile:

 echo "1 admin" >> /etc/iproute2/rt_tables echo "2 users" >> /etc/iproute2/rt_tables ip rule add from 192.168.122.40/32 dev eth0 table admin ip rule add from 192.168.123.41/32 dev eth1 table users ip route add default via 192.168.122.1 dev eth0 table admin ip route add default via 192.168.123.1 dev eth1 table users 

Ora avrai due tabelle di routing con due gateway.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.