[Ninux-Wireless] Ninux Policy Routing Versione 2 RFC
Saverio Proto
zioproto a gmail.com
Mar 9 Apr 2013 00:42:14 CEST
Ciao a tutti,
ieri facendo un po' prove sulla rete Ninux di Roma abbiamo trovato un
difetto nell'attuale Policy Routing:
https://github.com/ninuxorg/SDK.UBNT.v5.5/blob/d559e65713d64fee6c3f28f1d9d180a26756ecf3/package/ubnt-base-files/files/ninux#L36
il problema è che una volta annunciate le due /1, le regole di
blackhole non vengono mai valutate e quindi sono inutili. Design bug,
nonostante le tante eyeballs nessuno se ne è accorto fino a che non
abbiamo messo in campo la configurazione, ed abbiamo iniziato ad
annunciare le /1. Badate, tutto funziona, ma se spariamo un pacchetto
verso una destinazione che non esiste questo segue la /1 fino al
router BGP e li muore.
devo dire che il più sveglio è stato Fabio Capriati perché lui se ne è
accorto sulla carta senza vedere il problema :)
Per gestire meglio la cosa ho scritto una patch di olsrd che permette
di mettere le due /1 in una tabella di routing separata:
https://github.com/ninuxorg/ninux-openwrt-packages/blob/barra1testing/olsrd-ninux/patches/001-put-prefix1-ipv4-networks-to-table-113.patch
Con questa tabella 113 propongo quindi il seguente policy routing:
#110 Local routes
#111 RtTable
#112 RtTableDefault
#113 Special Table for /1
#114 blackholes table
#Copy local routes only from table main 254 to table 110
ip route show table 254 | grep -Ev ^default | grep -Ev ^blackhole |
grep -v ath0 | while read ROUTE ; do
ip route add table 110 $ROUTE
done
#First evaluate local routes
ip rule add from all lookup 110 pref 3
#Private routes to OLSR table
ip rule add to 10.0.0.0/8 table 111 pref 4
ip rule add to 172.16.0.0/12 table 111 pref 4
ip rule add to 192.168.0.0/16 table 111 pref 4
#Ninux IP Addresses to OLSR table
ip rule add to 176.62.53.0/24 table 111 pref 4
#Evaluate blackholes
ip rule add from all table 114 pref 5
#Send traffic of public addresses to BGP border routers
ip rule add from 176.62.53.0/24 table 113 pref 6
#Lookup default route first from user and then from OLSR
ip rule add from all lookup 254 pref 7
ip rule add from all lookup 112 pref 8
#Blackhole private aggregates
ip route add blackhole 10.0.0.0/8 table 114
ip route add blackhole 172.16.0.0/12 table 114
ip route add blackhole 192.168.0.0/16 table 114
#Blackhole Ninux aggregate
ip route add blackhole 176.62.53.0/24 table 114
Questo risolve il problema, quindi ora i blackhole funzionano (a meno
di mie sviste).
Inoltre mitiga il problema dell'aspirapolvere delle /1 (detto alla
Fish). Ovvero andando la /1 in una differente tabella, se uno ha il
policy routing configurato male, dovrebbe matchare più difficilmente
la /1 a meno di farlo proprio di proposito.
ho già compilato una RC5 di Sburratone che ho flashato sul nodo Gallia
e tutto funziona correttamente.
se la soluzione "piace" allora faccio la patch di olsrd più elegante e
cerco di farla mergiare upstream, in modo da non avere un firmware che
dipende da patches specifice di olsrd.
attendo feedback.
ciao,
Saverio
Maggiori informazioni sulla lista
Wireless