Newsgroup: it.comp.os.linux.redhat
Titolo: Iptable e condivisione connessione

Ho eseguito (da root) il seguente script trovato in rete. Il problema
è che non funziona. Se, invece, disabilito il firewall, è tutto ok.
Non capisco se c'è qualcosa di sbagliato nello script, o se
semplicemente disabilitando il firewall la condivisione della
connessione funzionerebbe anche senza script, o cos'altro.
#Interfaccia Esterna connessa ad Internet
EXT_INT="ppp0"
#path del programma iptables
IPTABLES="/sbin/iptables"
#Indirizzo LAN Interna
INTERNAL_NET="
192.168.0.0/24
"
#carico i necessari moduli del kernel
modprobe iptable_nat
# Attiva l'IP forwarding: consente ai pacchetti di attraversare la
linux box
echo 1 > /proc/sys/net/ipv4/ip_forward
#le regole vere e proprie che stabiliscono il masquerade degli
indirizzi
#interni attraverso l'interfaccia esterna
$IPTABLES -t nat -A POSTROUTING -s $INTERNAL_NET -o $EXT_INT -j
MASQUERADE
${IPTABLES} -A FORWARD -s ${INTERNAL_NET} -o ${EXT_INT} -j ACCEPT
$IPTABLES -A INPUT -i $EXT_INT -m state --state NEW,INVALID -j DROP
$IPTABLES -A FORWARD -i $EXT_INT -m state --state NEW,INVALID -j DROP
Se può servire, allego anche il contenuto di
/etc/sysconfig/iptables.save:
# Generated by iptables-save v1.3.5 on Thu May 18 14:57:27 2006
*nat
:PREROUTING ACCEPT [202:15022]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [43:6385]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
# Completed on Thu May 18 14:57:27 2006
# Generated by iptables-save v1.3.5 on Thu May 18 14:57:27 2006
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [61148:8869844]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-crypt -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-auth -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j
ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j
ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j
ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 137
-j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 138
-j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 139
-j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 445
-j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j
ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443
-j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu May 18 14:57:27 2006

Sono riuscito a far funzionare in CentOS lo script che segue per
condividere la connessione internet con gli altri PC in rete, ma non so
come eseguirlo in automatico al boot; anzi, senza un "su -" non riesco
nemmeno ad eseguirlo manualmente, perchè ottengo una serie di errori
(non trova modprobe, accessi negati...). Come devo fare?
#rc.mask
EXT_INT="ppp0"
IPTABLES="/sbin/iptables"
INTERNAL_NET="
192.168.0.1/24
"
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -s $INTERNAL_NET -o $EXT_INT -j
MASQUERADE


 $IPTABLES -A FORWARD -i $EXT_INT -m state --state NEW,INVALID -j DROP
io per il mio firewall ho fatto cosě:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
in /etc/rc.local
e poi, una volta fatto partire lo script che imposta le regole ho 
salvato la configurazione di iptables con questo comando:
iptables-save > /etc/sysconfig/iptables
le regole cosě salvate vengono ricaricate automaticamente ad ogni riavvio.
Stefano.