2. Sommario: (mi piace partire con i sommari)

Si assuma che la scheda di rete esterna, verso Internet, sia eth0, che l'IP esterno sia 123.12.23.43 e che la scheda di rete interna sia eth1, quindi:

$> modprobe ipt_MASQUERADE # Se fallisce, si provi ad andare avanti comunque
$> iptables -F; iptables -t nat -F; iptables -t mangle -F
$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 123.12.23.43
$> echo 1 > /proc/sys/net/ipv4/ip_forward

O, per una connessione telefonica:

$> modprobe ipt_MASQUERADE # Se fallisce, si provi ad andare avanti comunque
$> iptables -F; iptables -t nat -F; iptables -t mangle -F
$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$> echo 1 > /proc/sys/net/ipv4/ip_forward

Poi, per rendere il tutto pił sicuro:

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$> iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT
$> iptables -P INPUT DROP   #solo dopo che i due precedenti hanno avuto successo
$> iptables -A FORWARD -i eth0 -o eth0 -j REJECT

Ora, per una connessione telefonica (con eth0 scheda di rete interna):

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT
$> iptables -P INPUT DROP   #solo dopo che i due precedenti hanno avuto successo
$> iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT

Tutto qui! Per vedere le regole di masquerading si dia "iptables -t nat -L"