[Ninux-Wireless] policy routing e olsrd

clauz a ninux.org clauz a ninux.org
Mar 31 Ago 2010 13:41:49 CEST


Ciao.

On 08/30/2010 04:36 PM, Gioacchino Mazzurco wrote:
> ciao a tutti  sto continuando a piazzare nodi qui a Mistretta, mi e'
> capitato ora un caso un po particolare devo fare policy routing ovvero a
> seconda dell'ip sorgente devo routare dei pacchetti verso un gateway o
> un altro in allegato l'immagine della topologia attuale
> 
> la mesh e' ipv6 con niit e i nodi sono tutte picostation 2HP ( quindi
> una radio e una porta lan )
> le reti A B C1 C2 e D sono annunciate come hna6 mappate e nella mesh
> internet e' annunciato dal nodo B che usa come gateway internet B
> 
> adesso veniamo alle cose complicate...
> I gateway A e C2 non devono condividere internet con la mesh ( basta non
> aggiungere le hna per questo ) tuttavia
> 1) la rete D e la rete C2 devono andare in internet attraverso il gateway C2
> 2) la rete A e la rete C1 devono andare in internet attraverso il
> gateway A ( che e' un router fornito dal provider e non si puo' cambiare
> l'ip )

E io che pensavo che questa roba potesse succedere solo nei testi degli
esami di reti :)


> il lavoro di tunnelling va fatto dai nodi e in particolare nel caso 2 mi
> serve una soluzione cross platform ( ho pensato a tinc solo che la
> criptatura non mi interessa vorrei qualcosa il piu' leggero possibile )
> perche' potrebbe darsi che il tipo vada in giro col portatile windoz e
> voglia collegarsi alla sua rete A
> 
> che mi consigliate?
> avevo pensato a questo
> http://lartc.org/howto/lartc.rpdb.html#LARTC.RPDB.SIMPLE   + tinc ma non
> so cosa succede con olsrd se vado a smaneggiare le tabelle di routing...

Olsrd di default, anche se il comportamento si puo' cambiare nella
configurazione, inserisce le rotte della mesh nella tabella di routing
main (254), e quindi puoi agire su altre tabelle di routing...

Insomma, farei una cosa del genere (naturalmente untested e quindi
undebugged):


$A=       #indirizzo IP del *nodo* A
$C=       #indirizzo IP del *nodo* C

$GWC2=    #indirizzo IP del gateway C2

$C1=      #sottorete C1 in formato ip/netmask
$C2=      #sottorete C2
$D0=      #sottorete D


Sul nodo C:
# per le rotte all'interno della mesh usiamo OLSR
ip rule add to 192.168.0.0/16 table main pref 1000
ip rule add to 172.16.0.0/12 table main pref 1001
ip rule add to 10.0.0.0/8 table main pref 1002

# la rete C2 e la rete D devono uscire da GWC2
ip route add default via $GWC2 table 201
ip rule add from $C2 table 201 pref 1005
ip rule add from $D0 table 201 pref 1006

# la rete C1 deve uscire da GWA
ip route add default via $A table 202
ip rule add from $C1 table 202 pref 1008



Sul nodo D:
# per le rotte all'interno della mesh usiamo OLSR
ip rule add to 192.168.0.0/16 table main pref 1000
ip rule add to 172.16.0.0/12 table main pref 1001
ip rule add to 10.0.0.0/8 table main pref 1002

# la rete D deve uscire da GWC2
ip route add default via $C table 201
ip rule add from $D table 201 pref 1005



Sul nodo A:
# per le rotte all'interno della mesh usiamo OLSR
ip rule add to 192.168.0.0/16 table main pref 1000
ip rule add to 172.16.0.0/12 table main pref 1001
ip rule add to 10.0.0.0/8 table main pref 1002

# la rete A e la rete C1 devono uscire da GWA
ip route add default via $GWA table 201
ip rule add from $A table 201 pref 1005
ip rule add from $C1 table 201 pref 1006



E i tunnel credo che non ti servano (o mi sfugge qualcosa?)...

Spero di non aver fatto troppi errori, visto che e' tanto che non
smanetto sul policy routing. Se hai problemi magari posso mettere su la
stessa rete su netkit e fare un po' di prove.

Bella,
Clauz





Maggiori informazioni sulla lista Wireless