instradare il traffico verso gateway diversi per rete di destinazione


9

Ho diversi gateway e vorrei indirizzare un po 'di traffico da diversi gateway in base alla sua destinazione. Immagino che dovrei usare una combinazione di regole iproute2 e iptables, ma non sono sicuro da dove cominciare.
Qualcuno può fornire un esempio?

Risposte:


9

Probabilmente puoi fare quello che vuoi con ip route:

ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0

Il primo ip route addmostra un singolo indirizzo IP, inviato una determinata interfaccia ethernet (ep3s8) al router hop successivo, 10.0.0.1

Il secondo percorso è per un'intera rete, 10.xyz, inviata una data scheda Ethernet, eth0. Questa è la "rete locale", che non ha un router hop successivo, è tutto sullo stesso filo logico.

man ip-routeTuttavia, vuoi leggere prima di fare qualsiasi cosa. Inoltre, preparati a riavviare e non eseguire questa operazione da remoto. Puoi creare facilmente percorsi errati che interrompono l'accesso remoto. Sono la voce dell'esperienza in quest'ultima raccomandazione.


1
Nota che puoi anche specificare gateway per interi blocchi, `` ip route add 10.1.0.0/16 via 192.168.0.1`
jthill

Grazie per la tua risposta, questo mi aiuterà nella giusta direzione. Ci proverò e ti farò sapere.
Walter,

5

Quello che stai chiedendo è policy-based routingo source-based routing. C'è un'eccellente introduzione di David Schwartz su questo stesso sito.

Vorrei sottolineare che esiste anche un piccolo programma pulito, che può essere trovato qui , che consente di associare applicazioni specifiche a una determinata interfaccia. Questo è ovviamente facile con app come openssh che hanno opzioni per collegarsi all'indirizzo di ascolto desiderato. Ma questa libreria ti consente di associare anche le applicazioni senza tali opzioni (come Firefox) a un determinato indirizzo IP.

In questo modo, è possibile scegliere se si desidera fornire tabelle di routing separate per tutte le applicazioni o sovrascrivere le stesse specifiche in base all'applicazione.


Non è necessario il routing delle politiche se si desidera instradare per destinazione.
Diego Woitasen,

Ciao, anche questo è un buon punto, hmm, che consentirà una maggiore flessibilità che è probabilmente più avanzata di quanto vorrei essere a questo punto. Sicuramente qualcosa da imparare però.
Walter,

3

un buon posto per leggere sul routing di base di origine è il routing avanzato e il controllo del traffico di Linux,
inoltre è possibile leggere i manuali

man ip rule
man ip route

In generale, dovresti aggiungere la regola (ho aggiunto l'interfaccia eth1 solo a scopo dimostrativo, può essere omessa)

#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000

qui sono:
dev eth1 - dispositivo che verrà utilizzato per inviare i pacchetti
a 170.10.0.10 - la
tabella di destinazione 2 - tabella in cui è necessario assegnare
priorità ai percorsi 20000 - priorità della regola

puoi vedere la tua regola di

#ip ru sh
    0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default

Successivamente, è necessario aggiungere i percorsi nel modo consueto, ma è necessario specificare la tabella (tabella 2), in cui inserire il percorso

#ip route add table 2 via 170.10.0.1 default

per vedere i tuoi percorsi, dovresti correre

#ip route show ta 2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.