Iproute2: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
(21 versioni intermedie di uno stesso utente non sono mostrate)
Riga 12: Riga 12:
|1= * [http://e-zine.debianizzati.org/web-zine/numero_3/?page=116 Iproute2]<br/>
|1= * [http://e-zine.debianizzati.org/web-zine/numero_3/?page=116 Iproute2]<br/>
}}
}}
<br>
 
{{Versioni compatibili}}
<br/>
=== Comandi informativi ===
<br/>
----
[[Utente:Pmate|pmate]] 09:22, 17 feb 2010 (CET)
----
<br/>
<br/>
{{Versioni compatibili}}{{Gateway-Router}}
== Comandi ==
 
=== Informazioni ===


Visualizzare le informazioni di tutte le interfacce:
Visualizzare le informazioni di tutte le interfacce:
Riga 38: Riga 47:
ip rule show table main
ip rule show table main
</pre>
</pre>
Visualizzare la tabella ARP comprendente tutte le interfacce:
<pre>ip neighbor show</pre>


=== Gestione interfacce ===
=== Gestione interfacce ===


Aggiungere un indirizzo all'interfaccia eth0:
Aggiungere un indirizzo all'interfaccia eth0:
<pre>ip address add 192.0.2.10/24 dev eth0</pre>
<pre># ip address add 192.0.2.10/24 dev eth0</pre>
Cancellare un indirizzo associato all'interfaccia eth0:
Cancellare un indirizzo associato all'interfaccia eth0:
<pre>ip address delete 192.0.2.10/24 dev eth0</pre>
<pre># ip address delete 192.0.2.10/24 dev eth0</pre>
Attivare l'interfaccia eth0:
<pre># ip link set dev eth0 up</pre>
Disattivare l'interfaccia eth0:
<pre># ip link set dev eth0 down</pre>
Svuotare la cache arp per tutte le interfacce:
<pre>ip neigh flush all</pre>
 
=== Instradamento ===
 
Aggiungere una rotta che passa per 129.0.2.1 (gateway):
<pre># ip route add 192.0.2.128/25 via 192.0.2.1</pre>
Aggiungere una rotta che passa per ppp0:
<pre># ip route add 192.0.2.0/25 dev ppp0</pre>
Impostare ppp0 come gateway predefinito:
<pre># ip route add default dev ppp0</pre>
Impostare l'IP 192.0.2.1 come gateway predefinito:
<pre># ip route add default via 192.0.2.1</pre>
 
=== Regole ===
 
Usa la tabella di routing "tab1" (invece di quella principale, vedere anche la sezione ''Aggiungere tabelle di routing'') quando un pacchetto arriva dall'IP <code>101.13.15.179</code>:
 
<pre># ip rule add from 101.13.15.179 table chiaro</pre>
 
Usa la tabella di routing "tab1" (invece di quella principale) quando un pacchetto è diretto all'IP <code>101.13.15.179</code>:
 
<pre># ip rule add to 101.13.15.179 table chiaro</pre>
 
Usa la tabella di routing "tab1" (invece di quella principale) quando un pacchetto è contrassegnato col valore 1:
 
<pre># ip rule add from all fwmark 1 table 1</pre>
 
Si noti che è neceessario usare l'azione ''mark'' di iptables per contrassegnare i pacchetti e far quindi sì che la precedente regola funzioni. Considerare anche che l'abilitazione del ''reverse path filtering'' (si veda sezione più sotto) congiuntamente alla presenza di regole per SNAT e/o masquerading può portare allo scarto indesiderato dei pacchetti che si sono contrassegnati.
 
Cancellare tutte le regole relative alla tabella "tab1":
 
<pre># while ip rule delete from 0/0 to 0/0 table tab1 2>/dev/null; do true; done</pre>
 
== Aggiungere tabelle di routing ==
 
È possibile aggiungere altre tabelle di routing oltre a quella principale. Per fare ciò è sufficiente editare il file <code>/etc/iproute2/rt_tables</code> ed aggiungere in coda i nomi delle tabelle aggiuntive, avendo cura di specificare anche il relativo ID. Per esempio per aggiungere una sola tabella di nome ''tab1'' e ID=1 sarebbe sufficiente che il contenuto del predetto file si presentasse così:
 
<pre>
#
# reserved values
#
255    local
254    main
253    default
0      unspec
#
# local
#
#1      inr.ruhep
1 tab1
</pre>
 
Il vantaggio di avere più tabelle di routing è chiaramente quello di poter stabilire rotte diverse (e/o cambiare le priorità) per i pacchetti a seconda di alcuni criteri di confronto.
 
== Reverse path filtering ==
 
Sebbene questa tecnica non sia strettamente legata a iproute2 vale comunque la pena spiegare brevemente cosa sia poiché la sua abilitazione potrebbe creare problemi quando si vuole contrassegnare i pacchetti in transito, ovvero usare il comando <code>fwmark</code> della suite in congiunzione al bersaglio "mark" di iptables (modulo conntrack).
In poche parole il ''reverse path filtering'' non è altro che un metodo del kernel per verificare che l'indirizzo di provenienza specificato nell'header del pacchetto stesso sia effettivamente instradabile dall'interfaccia della macchina che lo riceve. Tale verifica è principalmente atta a scartare quei pacchetti che sono stati fraudolentemente modificati per mostrare un indirizzo IP di provenienza diverso da quello reale (''ip spoofing'', molto usato ad esempio negli attacchi ''DDOS'').
Questa funzione può essere facilmente abilitata o disabilitata editando le seguenti due variabili contenute nel file <code>nano /etc/sysctl.conf</code>:
<pre>
net.ipv4.conf.default.rp_filter
net.ipv4.conf.all.rp_filter
</pre>
Assegnando un valore di '''0''' il ''reverse path filtering'' viene disabilitato, mentre assegnando il valore '''1''' viene attivato. In teoria è anche possibile assegnare un valore di compromesso (almeno in Red Hat e derivate), cioè '''2''', che comporta l'accettazione del pacchetto se questo può essere instradato da almeno una delle interfacce della macchina che riceve il pacchetto. È anche possibile aggiungere/modificare la medesima direttiva in modo che questa si applichi ad un interfaccia specifica, ad esempio scrivendo <code>net.ipv4.conf.eth0.rp_filter</code> si finirebbe per modificare il comportamento della sola interfaccia '''eth0'''.
Val la pena rammentare che nel file <code>nano /etc/sysctl.conf</code> è anche possibile impostare la variabile per abilitare l'inoltro dei pacchetti, cioè <code>net.ipv4.ip_forward</code>.
Il file <code>/etc/sysctl.conf</code> può anche essere modificato digitando i comandi in modo simile a quanto qui sotto scritto:
<pre>sysctl -w "net.ipv4.conf.all.rp_filter=1" net.ipv4.conf.all.rp_filter = 1</pre>
 
È anche possibile modificare i valori delle due suddette variabili modificando direttamente i relativi processi, ovvero editando i "file" <code>rp_filter</code> contenuti nelle opportune sottocartelle di <code>/proc/sys/net/ipv4/conf/</code> (ogni sottocartella corrisponde ad una diversa interfaccia). Volendo modificare tutti i processi è possibile eseguire il seguente comando:
<pre># for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 >| $f ; done</pre>
Da notare che le modifiche ai processi non sono permanenti, ovverro andranno perdute al prossimo riavvio di sistema.
 
== Approfondimenti ==
 
=== Manpages ===
 
* <code>man ip</code>
 
=== Sitografia ===
* [https://wiki.linuxfoundation.org/networking/iproute2 Pagina Linux Foundation]
 
{{Autori
|Autore = [[Utente:Wtf|Wtf]] 00:10, 22 gen 2019 (CET)
|Numero_revisori=0
}}


<br/>
<br/>
----
[[Utente:Pmate|pmate]] 09:22, 17 feb 2010 (CET)
----
<br/>
[[Categoria:Network tools]][[Categoria:E-zine]]
[[Categoria:Network tools]][[Categoria:E-zine]]
2 853

contributi

Menu di navigazione