Mi dispiace per tutti coloro che sono rimasti traumatizzati dal passaggio dalla 2.0 (ipfwadm) alla 2.2 (ipchains). Ci sono novità buone e cattive.
Prima di tutto, puoi utilizzare ipchains e ipfwadm come prima. E' necessario però usare insmod per caricare i moduli del kernel `ipchains.o' o `ipfwadm.o' presenti nell'ultima distribuzione di netfilter. Queste sono mutuamente esclusive, o usi uno o l'altro (sei avvertito), e non dovrebbero essere combinati con nessun modulo di netfilter.
Quando hai installato uno o l'altro di questi moduli, puoi usare ipchains e ipfwadm come al solito, con però le seguenti differenze:
Gli hacker inoltre noteranno che:
Questo è ciò che la maggior parte delle persone vuole. Se hai un indirizzo IP dinamico PPP (dialup) (se non lo sai, allora ce l'hai), quello che desideri è dire alla tua box che tutti i pacchetti provenienti dalla tua rete locale devono essere visti come provenienti dalla box collegata in dial-up.
# Carica il modulo NAT (questo aggiunge tutti gli altri).
modprobe iptable_nat
# Nella tabella NAT (-t nat), appendi una regola (-A) che dopo il routing
# (POSTROUTING) per tutti i pacchetti uscenti dalla ppp0 (-o ppp0)
# mascheri la connessione (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Attiva l'IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Nota che qui non si sta effettuando alcun filtraggio dei pacchetti, per questo tipo di operazioni leggi il Packet Filtering HOWTO: `Mescolare NAT e filtraggio dei pacchetti'.
Questo è un bacino di utenza ancora più ristretto, perciò non mi sono preoccupato molto di garantire la compatibilità. Per effettuare il port forwarding si può semplicemente usare `iptables -t nat'. Per esempio, in Linux 2.2 probabilmente si è fatto uso di:
# Linux 2.2
# Fai proseguire i pacchetti TCP diretti alla porta 8080 indirizzo 1.2.3.4
# verso l'indirizzo 192.168.1.1 porta 80
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80
Ora invece si dovrebbe usare:
# Linux 2.4
# Appendi una regola di pre-routing (-A PREROUTING) alla tabella NAT (-t nat)
# in modo che i pacchetti TCP (-p tcp) destinati all'indirizzo 1.2.3.4 (-d
# 1.2.3.4) porta 8080 (--dport 8080) siano diretti (-j DNAT) verso l'indirizzo
# 192.168.1.1, porta 80 (--to 192.168.1.1:80).
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
Se desideri che questa regola alteri anche le connessioni locali (es. anche sulla NAT box stessa, prova a fare un telnet all'indirizzo 1.2.3.4 porta 8080 dovresti ottenere in realtà un telnet all'indirizzo 192.168.1.1 porta 80) puoi inserire la stessa regola nella catena OUTPUT (usata per i pacchetti locali in uscita).
# Linux 2.4
iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80