Newsgroup: it.comp.os.linux.sys
Titolo: Problemi di Routing

Ciao a tutti!
Ho paura di aver raggiunto il limite delle mie conoscenze in fatto di
reti... :(
Allora, le due connessioni DSL sono attive. La prima e' tramite un Modem e
il device ppp0 ha (ovviamente!) un solo IP. Questo e' sempre raggiungibile
da Internet ed e' anche il default gateway.
Sull'interfaccia eth2 ho impostato un IP della sottorete che mi ha
assegnato il secondo provider (8 IPs).
Se io imposto una route per un certo IP o rete usando il router del
secondo provider come gateway tutto funziona come mi aspetto, ossia i
pacchetti vengono instradati verso il secondo provider e non verso il
default gateway.
In quel caso, se da uno di questi IP pingo l'IP di un server della
sottorete riesco a raggiungerlo e lui mi spedisce le risposte tramite il
giusto gateway.
PERO', da un IP per il quale non ho route oltre alla default non riesco a
pingare l'IP del Server, sebbene riesca senza problemi a raggiungere il
router...
Vedendo con ngrep cosa succede sul Server vedo che se pingo quell'IP i
pacchetti arrivano al Server (li vedo con ngrep), ma non tornano
indietro...
Ora, il mio problema e' il seguente:
come posso fare per far si che il default gateway rimanga ppp0 (primo
ISP), alcuni IPs viaggino tramite eth2 (secondo ISP), **E** entrambi gli
IPs siano raggiungibili da Internet (e mandino le risposte tramite il
giusto gateway)?
Spero di aver spiegato in maniera abbastanza intelleggibile... Sabato sera
e' dura, quando e' dal giovedi che si bestemmia... :)
Grazie mille a chi mi rispondera!
Luca Bertoncello
(
luca...@lucabert.de
)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Spero di aver spiegato in maniera abbastanza intelleggibile
Non proprio, ma proverò ad interpretare.
Dunque, vuoi che il default sia su ppp0, che alcuni pacchetti, 
invece, escano da eth2 e che l'ip (o gli ip) di eth2 siano 
raggiungibili da internet, giusto?
La risposta è: creati una nuova tabella di routing con ip route
ed assegna a tale tabella i pacchetti che vuoi che escano da
eth2 con ip rule.
Ti faccio un esempio: questa è la mia routing table di default:
[root:6]$ip route ls
192.168.50.4/30
 dev eth1  proto kernel  scope link  src 192.168.50.5
192.168.50.0/30
 dev eth4  proto kernel  scope link  src 192.168.50.1
172.22.53.8/29
 dev vlan301  proto kernel  scope link  src 172.22.53.10
172.23.53.16/29
 dev vlan69  proto kernel  scope link  src 172.23.53.18
172.23.128.16/29
 dev vlan303  proto kernel  scope link  src 172.23.128.18
192.168.252.0/29
 dev eth5  proto kernel  scope link  src 192.168.252.1
89.39.121.0/28
 dev eth2  proto kernel  scope link  src 89.39.121.2
172.23.128.0/28
 via 172.23.53.20 dev vlan69
172.23.132.0/28
 via 172.23.53.20 dev vlan69
172.22.60.0/28
 via 172.22.55.251 dev eth0
172.23.131.0/27
 dev vlan307  proto kernel  scope link  src 172.23.131.2
172.23.131.32/27
 via 172.23.53.20 dev vlan69
172.22.48.32/27
 via 172.23.53.20 dev vlan69
172.22.48.0/27
 via 172.23.53.20 dev vlan69
172.22.50.0/26
 via 172.22.55.251 dev eth0
172.22.50.64/26
 via 172.22.55.251 dev eth0
85.38.56.64/26
 dev eth5  proto kernel  scope link  src 85.38.56.65
172.23.130.0/25
 dev vlan306  proto kernel  scope link  src 172.23.130.2
172.23.129.0/25
 dev vlan304  proto kernel  scope link  src 172.23.129.2
172.23.129.128/25
 dev vlan305  proto kernel  scope link  src 172.23.129.130
172.22.50.128/25
 dev eth3  proto kernel  scope link  src 172.22.50.130
172.22.55.0/24
 dev eth0  proto kernel  scope link  src 172.22.55.253
192.168.244.0/24
 via 192.168.1.250 dev vlan300
192.168.1.0/24
 dev vlan300  proto kernel  scope link  src 192.168.1.253
192.168.0.0/24
 via 192.168.1.250 dev vlan300
172.23.130.0/24
 dev vlan306  proto kernel  scope link  src 172.23.130.1
default via 89.39.121.1 dev eth2
E questa è la mia tabella alternativa:
[root:7]$ip route ls table otherside
192.168.50.4/30
 dev eth1  proto kernel  scope link  src 192.168.50.5
192.168.50.0/30
 dev eth4  proto kernel  scope link  src 192.168.50.1
172.22.53.8/29
 dev vlan301  proto kernel  scope link  src 172.22.53.10
172.23.53.16/29
 dev vlan69  proto kernel  scope link  src 172.23.53.18
172.23.128.16/29
 dev vlan303  proto kernel  scope link  src 172.23.128.18
192.168.252.0/29
 dev eth5  proto kernel  scope link  src 192.168.252.1
89.39.121.0/28
 dev eth2  proto kernel  scope link  src 89.39.121.2
172.23.128.0/28
 via 172.23.53.20 dev vlan69
172.23.132.0/28
 via 172.23.53.20 dev vlan69
172.22.60.0/28
 via 172.22.55.251 dev eth0
172.23.131.0/27
 dev vlan307  proto kernel  scope link  src 172.23.131.2
172.23.131.32/27
 via 172.23.53.20 dev vlan69
172.22.48.32/27
 via 172.23.53.20 dev vlan69
172.22.48.0/27
 via 172.23.53.20 dev vlan69
172.22.50.0/26
 via 172.22.55.251 dev eth0
172.22.50.64/26
 via 172.22.55.251 dev eth0
85.38.56.64/26
 dev eth5  proto kernel  scope link  src 85.38.56.65
172.23.130.0/25
 dev vlan306  proto kernel  scope link  src 172.23.130.2
172.23.129.0/25
 dev vlan304  proto kernel  scope link  src 172.23.129.2
172.23.129.128/25
 dev vlan305  proto kernel  scope link  src 172.23.129.130
172.22.50.128/25
 dev eth3  proto kernel  scope link  src 172.22.50.130
172.22.55.0/24
 dev eth0  proto kernel  scope link  src 172.22.55.253
192.168.244.0/24
 via 192.168.1.250 dev vlan300
192.168.1.0/24
 dev vlan300  proto kernel  scope link  src 192.168.1.253
192.168.0.0/24
 via 192.168.1.250 dev vlan300
172.23.130.0/24
 dev vlan306  proto kernel  scope link  src 172.23.130.2
default via 192.168.252.4 dev eth5
Con le seguenti regole (e con l'aiuto di
iptables per un solo caso un po' particolare) smisto i pacchetti 
sulle due connessioni:
[root:9]$ip rule ls
0:      from all lookup local
32760:  from all fwmark 0x9 lookup otherside
32761:  from 
85.38.56.64/26
 lookup otherside
32762:  from 
172.23.131.0/27
 lookup otherside
32763:  from 
172.22.53.8/29
 lookup otherside
32764:  from 
172.22.55.0/24
 lookup otherside
32765:  from 172.22.50.135 lookup otherside
32766:  from all lookup main
32767:  from all lookup default

 Ti faccio un esempio: questa è la mia routing table di default:
Cielo, quant'e' incasinata...
Se, abbi pieta' di un povero tapino... Mi potresti dare qualche
indicazione a livello base su cosa devo lanciare per ottenere l'effetto?
Ammetto che "ip" l'ho usato pochissimo e non lo conosco...
E ammetto anche che e' la prima volta in assoluto che devo fare una cosa
del genere...
Eventualmente, per dare qualche esempio pratico (con IP solo vagamente
mascherati, altrimenti il capo mi uccide):
ppp0 ha l'IP 80.152.1.100
eth2 ha l'IP 87.193.2.106
Il router al quale e' collegata la eth2 ha l'IP 87.193.2.105
La sottorete di eth2 e' 
87.193.2.104/29
Grazie mille se vorrai aiutarmi!


 Cielo, quant'e' incasinata...
Eheh... LARTC. :-) Ci dovro' sbattere il muso anch'io, a breve. :-\
bye G.L.
-- 
Renaissance, aka Gian Luca Sole
"E' assolutamente evidente che l'arte del cinema si ispira
alla vita, mentre la vita si ispira alla TV" - Woody Allen

 giusto gateway)?
Se posso permettermi: installa shorewall, definisci i due providers e hai
praticamente finito il lavoro.
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 sottorete di eth2 e' 
87.193.2.104/29
In
/etc/iproute2/rt_tables
ti definisci una routing table alternativa, con una riga
tipo
200 other
(200 è un indice numerico, other è una semplice label)
Poi definisci la default per quella tabella:
ip route add default via 87.193.2.105 dev eth2 table other
A questo punto, puoi crivere delle regole che instradino
il traffico secondo la nuova tabella, chiamata other:
ip rule add from 
87.193.2.104/29
 lookup other
Questa regola farà sì che tutti i pacchetti con sorgente un
indirizzo qualsiasi della 
87.193.2.104/29
 utilizzino la routing
table "other" e quindi usciranno da eth2 verso il gateway 
87.193.2.105
Analogamente puo scrivere altre regole: se, per esempio, hai
una rete 
192.168.0.0/24
 su eth1 e vuoi che la 
192.168.0.128/25
 utilizzi la connessione su eth2, aggiungerai una
regola siffatta:
ip rule add from 
192.168.0.128/25
 lookup other
(ovviamente, dovrai poi avere opportune regole di filtering
e source natting per avere qualcosa di funzionante).
Due precisazioni, anche se ovvie: le regole e le rotte alternative sono 
volatili e dovrai quindi prevedere uno script che le attivi al boot; se 
hai altre rotte oltre alla default e desideri che gli host che utilizzano
la routing table "other" utilizzino tali rotte, dovrai inserirle esplicitamente
nella nuova tabella di routing.
HTH.

 hai praticamente finito il lavoro.
Non conosco shorewall, ma mi domando: se il mio router ha *molte*
interfacce ed ho necessità di instradare pacchetti anche tra varie
interfacce "interne", oltre che verso gli enne provider internet,
shorewall mi inserisce automaticamente anche tutte le rotte "interne"
nella nuova tabella di routing?
Se è così, beh, è un bel coadiuvante.

 Se è così, beh, è un bel coadiuvante.
Sì. Devi specificarle nel suo file, ma la cosa bella è che ci pensa lui a
gestire anche il tracking dei pacchetti entranti dalle varie interfacce in
modo da reistradare i pacchetti di ritorno attraverso la stessa interfaccia
da cui è entrato.
Poi semplifica la gestione di molte cose. Se non lo conosci ti consiglio di
dargli un'occhiata. In genere chi lo prova non torna + indietro.
