Trasformare la vostra linux box in router con IPTABLES (NAT)

Obiettivo della procedura è reindirizzare le chiamate verso un indirizzo:porta verso un altro indirizzo2:porta2.

Passo primo: abilitare nel kernel l’ip forwarding.

Per rendere la modifica permanente dopo il riavvio, aggiungere/modificare in /etc/sysctl.conf la riga:

net.ipv4.ip_forward = 1

sysctl -p /etc/sysctl.conf

A questo punto dobbiamo solo utilizzare 2 semplici comandi per reindirizzare il traffico:

iptables -t nat -A PREROUTING -d [indirizzo] -p tcp –dport [porta] -j DNAT –to [indirizzo2]:[porta2]
iptables -t nat -A POSTROUTING -d [indirizzo2] -j MASQUERADE

Per chi ha poca familiarità con iptables aggiungo alcuni semplici comandi:
iptables -L -n per vedere l’elenco delle regole (NAT a parte)
iptables -t nat -L -n per vedere l’elenco delle regole di NAT
iptables -f per BUTTARE TUTTE le regole (NAT escluso)
iptables -t nat -f per BUTTARE TUTTE le regole di NAT.

Queste due righe mi hanno tirato fuori dai guai in parecchie occasioni! Spero possano servire anche a voi 😉

4 thoughts on “Trasformare la vostra linux box in router con IPTABLES (NAT)

  1. ciao, la tua guida è quello che mi serviva, ma volevo chiederti una cosa.
    io dovrei reindirizzare tutti i pacchetti indirizzati alla porta 80, attraverso un proxy, installato sulla stessa macchina con impostazioni 127.0.0.1:8123

    ho eseguito i primi comandi e le istruzioni di iptables le ho modificate così:

    iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to 127.0.0.1:8123

    iptables -t nat -A POSTROUTING -d 127.0.0.1 -j MASQUERADE ( anche se credo non serva )

    ma l’indirizzamento dei pacchetti dei browserweb (firefox o chromium, porta 80 ) non funziona dato che non riesco a navigare senza impostare il proxy internamente al browser…
    dove sbaglio??

    Grazie!

Leave a Reply

Your email address will not be published. Required fields are marked *