PDA

Visualizza la versione completa : tabelle di routing per doppio gateway


james
18-03-2009, 10:48
Problema teorico...un server con due schede di rete appartenenti a classi diverse. Su ciascuna rete c'è un router, quindi un gateway che instrada verso l'esterno. Il default gateway del server è uno solo, quindi accade che, se il server riceve un ping sull'ip della scheda di rete che ha anche il default gateway il server risponde. Ma se il server riceve un ping sull'ip della scheda di rete secondaria (per capirci), il server tenta di rispondere al ping usando il suo default gateway (l'altra interfaccia di rete, motivo per cui i pacchetti non tornano indietro, perchè la macchina che fa il ping riceve la risposta da un ip diverso da quello che si aspetta...con le tabelle do routing, non si può aggiungere un instradamento con cui praticamente di dice: per tutte le richieste pervenute su eth1, rispondere da eth1 usando il gateway della rete a cui fa parte eth1? Per eth0 ovviamente funziona tutto già da se...

sacarde
18-03-2009, 13:22
ma la rotta per le destinazioni del secondo ramo, c'e' ?

james
18-03-2009, 13:53
Origariamente inviato da sacarde
ma la rotta per le destinazioni del secondo ramo, c'e' ?

Io ho solo installato la seconda scheda e l ho configurata, le tabelle di routing non le ho toccate, cmq se pingo dalla nuova eth1 funziona (ping -I eth1 ip)

sacarde
18-03-2009, 14:42
che vedi con :

netstat -r

james
18-03-2009, 17:31
Originariamente inviato da sacarde
che vedi con :

netstat -r

Mi da


Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth1
localnet * 255.255.255.240 U 0 0 0 eth0
default ip-173-254.sn2. 0.0.0.0 UG 0 0 0 eth0

detroit
18-03-2009, 17:43
ad occhio dovresti avere le interfacce configurate in questo modo (ho messo i numeri a caso):
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1



# The secondary network interface
allow-hotplug eth1
iface eth0 inet static
address 192.168.3.39
netmask 255.255.0.0
gateway 192.168.3.1



nulla di trascendentale dunque. Che distribuzione hai?Su debian le configurazioni per le interfacce sono contenute in /etc/network/interfaces, su CentOS su /etc/sysconfig/network-script/ dove per ogni interfaccia c'è un file con nome del tipo ifcfg-eth0,ifcfg-eth1 e via discorrendo
su centos le schede si configurano con la seguente sintassi

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADRR=192.168.1.2
NETMASK=255.255.0.0
ONBOOT=yes

per altre distribuzioni che non siano queste non saprei aiutarti

sacarde
18-03-2009, 18:08
Originariamente inviato da james
Mi da


Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth1
localnet * 255.255.255.240 U 0 0 0 eth0
default ip-173-254.sn2. 0.0.0.0 UG 0 0 0 eth0


da come lo intendo io:

gli ip 192.168.2. ...... ---> passano dalla eth1

il resto va al ip-173-254.sn2 dalla eth0

james
18-03-2009, 19:11
Originariamente inviato da detroit
ad occhio dovresti avere le interfacce configurate in questo modo (ho messo i numeri a caso):
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1



# The secondary network interface
allow-hotplug eth1
iface eth0 inet static
address 192.168.3.39
netmask 255.255.0.0
gateway 192.168.3.1



nulla di trascendentale dunque. Che distribuzione hai?Su debian le configurazioni per le interfacce sono contenute in /etc/network/interfaces, su CentOS su /etc/sysconfig/network-script/ dove per ogni interfaccia c'è un file con nome del tipo ifcfg-eth0,ifcfg-eth1 e via discorrendo
su centos le schede si configurano con la seguente sintassi

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADRR=192.168.1.2
NETMASK=255.255.0.0
ONBOOT=yes

per altre distribuzioni che non siano queste non saprei aiutarti

E' una debian, la configurazione è corretta, l'ho fatta io, ma ho definito solo il gateway di eth0, perchè de definisco il gateway anche di eth1, tutto passa su eth1 in uscita, e i ping dall'esterno a eth0, uscendo da eth1, vengono persi...perchè tornano indietro con un ip diverso da quello che dovrebbe

james
18-03-2009, 19:13
Originariamente inviato da sacarde
da come lo intendo io:

gli ip 192.168.2. ...... ---> passano dalla eth1

il resto va al ip-173-254.sn2 dalla eth0

In uscita va tutto molto bene, il problema sono le interrogazioni in ingresso, un ping dall'esterno fatto su 192.168.2.x per capirci, viene mandato indietro attraverso ip-173-254.sn2 e quindi rigettato, invece tutto quello inviato a 192.168.2.x (eth1), deve uscire con un gateway che sta sulla rete di eth1 e non sul default gateway ip-173-254.sn2 che si trova sulla eth0...non so se il punto è chiaro

james
18-03-2009, 19:21
Questa è una cosa che avevo fatto 3 anni fa...ma non ricordo come diavolo feci, il problema era lo stesso, un server pubblico aveva un ip pubblico statico, senza firewall, senza nulla, l'azienda doveva cambiare provider e quindi anche la classe di ip pubblici. Sul server c'erano servizi attivi raggiungibili dall'esterno, quindi non si poteva mettere tutto off line, e installai una seconda scheda di rete sul server (eth1) direttamente connessa alla classe pubblica del secondo provider. Il problema anche allora era che il default gateway di una macchina è UNO. Ovviamente dalla macchina, pingando un ip della rete di eth1 il server usava la eth1, non è stupido, non faceva uscire la richiesta sul web per poi rientrare sulla eth1 dall'esterno. Il problema era la fruizione dei servizi dall'esterno usando l'ip della eth1, non funzionavano. Facendo dei test dall'esterno scoprii che anche i semplici ping andavano bene sulla eth0 e non sulla eth1. Se impostavo come default gateway quella sulla rete della eth1, allora accadeva viceversa, dall'esterno era raggiungibile la eth1 e non la eth0. Se definivo due gateway in /etc/network/interfaces il server usa come default gateway l'ultimo impostato nel file, quindi sempre che dall'esterno un interfaccia non era raggiungibile, e questo accadeva perchè a prescindere dalla provenienza della richiesta (eth0 o eth1) il server invia la risposta SEMPRE e SOLO tramite UN SOLO gateway...allora trovai un sistema, modificando la tabella di routing (mi sembra fosse uno o al max due instradamenti), per dire al server di, usare il gateway della eth0 quando la richiesta era in ingresso nella eth0, ed usa il gateway della eth1 quando la richiesta era in ingresso nella eth1. E' una cosa che ho fatto 3 anni fa...non riesco a ritrovare i miei appunti al riguardo e sto impazzendo da 2 giorni...

Loading