Instradamento tra più sottoreti


10

Diciamo che voglio creare una rete interna con 4 sottoreti. Non esiste un router o uno switch centrale. Ho una "sottorete di gestione" disponibile per collegare i gateway su tutte e quattro le sottoreti (192.168.0.0/24). Il diagramma generale sarebbe simile al seguente:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

In parole, configuro una singola scatola di Linux su ogni sottorete con 2 interfacce, una 10.0.x.1 e 192.168.0.x. Funzionano come dispositivi gateway per ciascuna sottorete. Ci saranno più host per ogni sottorete 10.x / 24. Gli altri host avranno solo 1 interfaccia disponibile come 10.0.xx

Voglio che ogni host sia in grado di eseguire il ping dell'altro host su qualsiasi altra sottorete. La mia domanda è prima: è possibile. E in secondo luogo, in tal caso, ho bisogno di aiuto per configurare iptables e / o route. Sto sperimentando questo, ma posso solo trovare una soluzione che consenta il ping in una direzione (i pacchetti icmp sono solo un esempio, alla fine mi piacerebbe avere funzionalità di rete complete tra host, ad esempio ssh, telnet, ftp, ecc.) .

Risposte:


8

Ok, in modo da avere cinque reti 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24e 192.168.0.0/24, e quattro scatole di routing tra di loro. Diciamo che le caselle di routing hanno indirizzi 10.0.1.1/192.168.0.1, 10.0.2.1/192.168.0.2, 10.0.3.1/192.168.0.3, e 10.0.4.1/192.168.0.4.

Dovrai aggiungere route statiche alle altre 10.0.x.0/24reti su ogni router box, con comandi simili a questo (EDITED!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

e i percorsi corrispondenti sugli altri router box. Sulle caselle non di routing con una sola interfaccia, impostare la route predefinita su cui puntare 10.0.x.1. Ovviamente dovrai anche aggiungere gli indirizzi statici e le maschere di rete su tutte le interfacce.

Nota anche che linux non funziona come router di default, dovrai abilitare l'inoltro dei pacchetti con:

echo 1 > /proc/sys/net/ipv4/ip_forward

I ipcomandi sopra non rendono persistenti le impostazioni, come fare ciò dipende dalla distribuzione.

Come ho detto, non l'ho provato e forse ho dimenticato qualcosa.


Grazie per l'assistenza qui. Quello che hai consigliato funziona quando eseguo il ping da router a router (da 10.0.1.1 a 10.0.2.1), ma non quando eseguo il ping di un host diverso. Ad esempio, il ping da 10.0.1.1 a 10.0.2.2 non comporta il routing del traffico verso l'host 10.0.2.2. Consiglieresti di fare qualche manipolazione di iptables in qualche modo? Lo sto sperimentando da un paio di giorni ma senza risultati.
greyline,

Le tecniche di routing standard dovrebbero essere sufficienti. Ecco un elenco di controllo: 1. tutti gli indirizzi devono essere impostati sugli host (ad es. Ip addr aggiungere 10.0.2.2/24 dev eth0), 2. i percorsi devono essere impostati sulle quattro caselle del router come sopra, 3. il percorso predefinito sulle caselle non router dovrebbe essere impostato in modo che punti alla casella di routing sulla rete (ad es. ip route aggiungi default tramite 10.0.1.1), 4. cat / proc / sys / net / ipv4 / ip_forward sulle quattro box router dovrebbe stampa "1".
Johan Myréen,

Ho corretto un errore nei comandi ip route sopra. Ho anche provato questa configurazione, anche se solo con quattro macchine: due box di routing e due host sui lati 10.0.x.0. Funziona!
Johan Myréen,

Johan, grazie per il tuo contributo aggiuntivo. Questa configurazione funziona. Si scopre che l'immagine Linux che stavo usando aveva regole iptables predefinite che erano problematiche. Grazie per avermi aiutato nel mio apprendimento di questo.
Greyline,
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.