Tag ‘nat’

NAT con iptables. Condivisione di una connessione

Domenica, Agosto 30th, 2009

iptables, applicazione per modificare le regole di firewalling in ambiente GNU/Linux, permette anche di attivare un sistema di NAT. La tecnica di Network Address Translation maschera gli indirizzi in ingresso ad una interfaccia di rete con l’indirizzo IP della macchina dove le regole sono impostate e li fa uscire su una interfaccia di output: in questo modo è possibile, ad esempio, condividere una connessione di rete con un’altra macchina.

Di seguito c’è uno script BASH per attivare il NAT sui pacchetti entranti nell’interfaccia di rete eth1: essi vengono inoltrati attraverso l’interfaccia eth2.

#!/bin/bash

# Script che imposta le regole per effettuare NAT con un sistema GNU/Linux.

IPTABLES=/sbin/iptables

# Interfacce di rete interessate dal NAT
IFIN=eth1	# Interfaccia di rete verso il computer locale
IFOUT=eth2	# Interfaccia con accesso alla rete esterna

# Regole NAT
$IPTABLES -t nat -A POSTROUTING -o $IFOUT -j MASQUERADE
$IPTABLES -A FORWARD -i $IFIN -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $IFIN -o $IFOUT -j ACCEPT

# Abilitazione ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

L’ultimo passo, da effettuare sul client che sfrutta il NAT, consiste nella modifica della tabella di routing. Da utente root basta eseguire da shell la seguente istruzione dove ip_address è l’indirizzo dell’host dove sono attive le regole di NAT.

alice:/# route add default gw ip_address