<p dir="ltr">Per fare una cosa più pulita non conviene dare la possibilità di scegliere la tabella in cui inserirle come con rttable e rttabledefault?<br>
Più probabile che accettino un merge in questo modo.<br>
</p>
<div class="gmail_quote">Il giorno 09/apr/2013 00:42, "Saverio Proto" <<a href="mailto:zioproto@gmail.com">zioproto@gmail.com</a>> ha scritto:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ciao a tutti,<br>
<br>
ieri facendo un po' prove sulla rete Ninux di Roma abbiamo trovato un<br>
difetto nell'attuale Policy Routing:<br>
<a href="https://github.com/ninuxorg/SDK.UBNT.v5.5/blob/d559e65713d64fee6c3f28f1d9d180a26756ecf3/package/ubnt-base-files/files/ninux#L36" target="_blank">https://github.com/ninuxorg/SDK.UBNT.v5.5/blob/d559e65713d64fee6c3f28f1d9d180a26756ecf3/package/ubnt-base-files/files/ninux#L36</a><br>

<br>
il problema è che una volta annunciate le due /1, le regole di<br>
blackhole non vengono mai valutate e quindi sono inutili. Design bug,<br>
nonostante le tante eyeballs nessuno se ne è accorto fino a che non<br>
abbiamo messo in campo la configurazione, ed abbiamo iniziato ad<br>
annunciare le /1. Badate, tutto funziona, ma se spariamo un pacchetto<br>
verso una destinazione che non esiste questo segue la /1 fino al<br>
router BGP e li muore.<br>
devo dire che il più sveglio è stato Fabio Capriati perché lui se ne è<br>
accorto sulla carta senza vedere il problema :)<br>
<br>
Per gestire meglio la cosa ho scritto una patch di olsrd che permette<br>
di mettere le due /1 in una tabella di routing separata:<br>
<br>
<a href="https://github.com/ninuxorg/ninux-openwrt-packages/blob/barra1testing/olsrd-ninux/patches/001-put-prefix1-ipv4-networks-to-table-113.patch" target="_blank">https://github.com/ninuxorg/ninux-openwrt-packages/blob/barra1testing/olsrd-ninux/patches/001-put-prefix1-ipv4-networks-to-table-113.patch</a><br>

<br>
Con questa tabella 113 propongo quindi il seguente policy routing:<br>
<br>
#110 Local routes<br>
#111 RtTable<br>
#112 RtTableDefault<br>
#113 Special Table for /1<br>
#114 blackholes table<br>
<br>
#Copy local routes only from table main 254 to table 110<br>
ip route show table 254 | grep -Ev ^default | grep -Ev ^blackhole |<br>
grep -v ath0 | while read ROUTE ; do<br>
ip route add table 110 $ROUTE<br>
done<br>
<br>
#First evaluate local routes<br>
ip rule add from all lookup 110 pref 3<br>
<br>
#Private routes to OLSR table<br>
ip rule add to <a href="http://10.0.0.0/8" target="_blank">10.0.0.0/8</a> table 111 pref 4<br>
ip rule add to <a href="http://172.16.0.0/12" target="_blank">172.16.0.0/12</a> table 111 pref 4<br>
ip rule add to <a href="http://192.168.0.0/16" target="_blank">192.168.0.0/16</a> table 111 pref 4<br>
<br>
#Ninux IP Addresses to OLSR table<br>
ip rule add to <a href="http://176.62.53.0/24" target="_blank">176.62.53.0/24</a> table 111 pref 4<br>
<br>
#Evaluate blackholes<br>
ip rule add from all table 114 pref 5<br>
<br>
#Send traffic of public addresses to BGP border routers<br>
ip rule add from <a href="http://176.62.53.0/24" target="_blank">176.62.53.0/24</a> table 113 pref 6<br>
<br>
#Lookup default route first from user and then from OLSR<br>
ip rule add from all lookup 254 pref 7<br>
ip rule add from all lookup 112 pref 8<br>
<br>
#Blackhole private aggregates<br>
ip route add blackhole <a href="http://10.0.0.0/8" target="_blank">10.0.0.0/8</a> table 114<br>
ip route add blackhole <a href="http://172.16.0.0/12" target="_blank">172.16.0.0/12</a> table 114<br>
ip route add blackhole <a href="http://192.168.0.0/16" target="_blank">192.168.0.0/16</a> table 114<br>
<br>
#Blackhole Ninux aggregate<br>
ip route add blackhole <a href="http://176.62.53.0/24" target="_blank">176.62.53.0/24</a> table 114<br>
<br>
<br>
Questo risolve il problema, quindi ora i blackhole funzionano (a meno<br>
di mie sviste).<br>
<br>
Inoltre mitiga il problema dell'aspirapolvere delle /1 (detto alla<br>
Fish). Ovvero andando la /1 in una differente tabella, se uno ha il<br>
policy routing configurato male, dovrebbe matchare più difficilmente<br>
la /1 a meno di farlo proprio di proposito.<br>
<br>
ho già compilato una RC5 di Sburratone che ho flashato sul nodo Gallia<br>
e tutto funziona correttamente.<br>
<br>
se la soluzione "piace" allora faccio la patch di olsrd più elegante e<br>
cerco di farla mergiare upstream, in modo da non avere un firmware che<br>
dipende da patches specifice di olsrd.<br>
<br>
attendo feedback.<br>
<br>
ciao,<br>
<br>
Saverio<br>
</blockquote></div>