[ninux-dev] Policy Routing per gateway privato

Nemesis nemesis at ninux.org
Mon Feb 27 11:31:44 CET 2017


Ciao a tutti,

condivido con voi le impostazioni per il policy routing che ho settato
sul mio router per poter fare  in modo che il router stesso ed i
dispositivi provenienti dalla mia subnet usassero la mia linea ADSL,
mentre il resto del traffico ninux può proseguire secondo
l'instradamento di OLSR.

in /etc/config/olsrd c'è il seguente blocco UCI:

config olsrd 'olsrd_common'
	option IpVersion '4'
	option RtTable '111'
	option RtTableDefault '112'

OLSRd1 scrive le rotte nella tabella di routing n. 111 e le rotte di
default nella 112.

in /etc/rc.local ho messo:

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
/etc/policy_routing.sh
exit 0

in /etc/policy_routing.sh ho messo:

#!/bin/sh
# per tutte le destinazioni, guardare prima nella tabella
# di routing 111, dove ho impostato OLSRd1
ip rule add to all table 111 pref 4
# per i pacchetti provenienti dalla sorgente <SUBNET>,
# usare anche la tabella di routing 113
ip rule add from <SUBNET> lookup 113 pref 32768
# per i pacchetti generati dal router stesso,
# usare sempre la tabella 113
ip rule add iif lo lookup 113 pref 32768
# questa regola dice di vedere nelle rotte
# di default prese da OLSR come ultima possibilità
ip rule add from all lookup 112 pref 32769
# aggiungo la rotta di default nella tabella 113
# per i pacchetti provenienti dalla mia subnet
ip route add default via <IP-GATEWAY-PRIVATO> dev br-lan table 113

Al posto di <SUBNET> va messa la subnet in notazione CIDR del nodo, nel
mio caso ho messo 10.40.0.1/24.

Al posto di <IP-GATEWAY-PRIVATO> va l'indirizzo ip del gateway (ad
esempio il router ADSL/fibra del vostro ISP), che ovviamente deve stare
nella stessa subnet indicata in <SUBNET>.

L'output del comando "ip rule" è il seguente

0:	from all lookup 128
1:	from all lookup local
4:	from all lookup 111
32766:	from all lookup main
32767:	from all lookup default
32768:	from <SUBNET> lookup 113
32768:	from all iif lo lookup 113
32769:	from all lookup 112

Mi sono assicurato che tutto funzioni facendo un paio di reboot. Ho
verificato che il traceroute del mio vicino verso internet fosse rimasto
invariato ed ho verificato che i pacchetti che invio dai dispositivi
della mia subnet utilizzino effettivamente il mio gateway privato.

Qui c'è la parte di configurazione rilevante in NetJSON che ho aggiunto
su OpenWISP2:

{
    "olsrd": [
        {
            "config_name": "olsrd",
            "config_value": "olsrd_common",
            "IpVersion": 4,
            "RtTable": 111,
            "RtTableDefault": 112
        }
    ],
    "files": [
        {
            "path": "/etc/rc.local",
            "mode": "0644",
            "contents": "# Put your custom commands here that should be
executed once\n# the system init finished. By default this file does
nothing.\n/etc/policy_routing.sh\nexit 0\n"
        },
        {
            "path": "/etc/policy_routing.sh",
            "mode": "0744",
            "contents": "#!/bin/sh\n# rotte OLSRd1 per ninux\nip rule
add to all table 111 pref 4\n# rotte ADSL per nodo Pomezia\nip rule add
from 10.40.0.1/24 lookup 113 pref 32768\nip rule add iif lo lookup 113
pref 32768\n# rotte di default per ninux via OLSR\nip rule add from all
lookup 112 pref 32769 \n# rotta di default per nodo Pomezia\nip route
add default via 10.40.0.9 dev br-lan table 113\n"
        }
    ]
}

Non sono riuscito a capire se si può spostare la parte di policy routing
su UCI, UCI ha delle direttive per il policy routing (rule e rule6), ma
non ho capito se gli si possno passare valori come "all" o "iif".
Ho chiesto sulla lista di OpenWRT-users:
https://lists.openwrt.org/pipermail/openwrt-users/2017-February/004434.html

Nemesis



More information about the ninux-dev mailing list