Per visualizzare le singole tabelle:
debian:~# ip route show table ISP1 debian:~# ip route show table ISP2 debian:~# ip route show table main
Per visualizzare le regole di ogni singola tabella:
debian:~# ip rule show | grep ISP1 debian:~# ip rule show | grep ISP2
In questo modo i pacchetti provenienti dalle reti 10.11.11.0/24 e 10.12.12.0/24, saranno "veicolati" dalle regole contenute nella tabella ISP1 e quindi passate al gateway ISP1. Allo stesso modo, i pacchetti provenienti dalle reti 10.22.22.0/24 e 10.33.33.0/24, saranno veicolate dal gateway ISP2.
Tutti quei pacchetti, invece, provenienti da reti non contemplate dalle regole precedenti, saranno veicolati secondo quelle contenute nella main routing table.
Tunneling
Può capitare di avere l'esigenza che due nodi della rete scambino traffico incapsulato con un protocollo differente da IPV4 o che è indirizzato verso una lan privata i cui indirizzi IPV4, ovviamente, non sono validi su internet. In queste situazioni si utilizza una connessione virtuale tra i due nodi chiamata "tunnel". Essi non funzionano quando attraversano il processo di NAT. In più, se c'è un firewall, questo dovrà essere opportunamente configurato per permettere il passaggio di questo particolare tipo di traffico.
Di solito si utilizza il tunnel per collegare due nodi IPV6 separati da una rete IPV4. Tra i due nodi si implementerà un tunnel che incapsulerà ogni pacchetto IPV6 in un pacchetto IPV4 di modo che le due entità possano essere interconnesse.
Creare un tunnel con iproute2 è davvero semplice:
debian:~# ip tunnel add nostrotunnel mode sit local 192.168.0.1 remote 192.168.1.99 dev eth0
Si è creato il tunnel chiamato "nostrotunnel" sull'interfaccia *eth0* avente come ip *192.168.0.1* in cui l'altro estremo si trova all'indirizzo *192.168.1.99*.
Controlliamo la situazione:
debian:~# ip tunnel show sit0: ipv6/ip remote any local any ttl 64 nopmtudisc pippo: ipv6/ip remote 192.168.1.42 local 192.168.0.1 dev eth0 ttl inherit debian:~# ip link show 1: lo: <loopback,up> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <broadcast,multicast,up> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:48:54:1b:25:30 brd ff:ff:ff:ff:ff:ff 4: sit0@none: <noarp> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 11: pippo@eth0: <pointopoint,noarp> mtu 1480 qdisc noop link/sit 192.168.0.1 peer 192.168.1.42
Da notare che ora l'interfaccia è identificata dal nome pippo@eth0.
Se ci interessa, invece, incanalare traffico IPV4, invece di utilizzare l'opzione *mode sit*, utilizzeremo quella *modegre*: