http://www.howtoforge.com/linux_iptables_sarge

1. Comprobaciones previas:

1.1 Tener habilitado el módulo de iptables en el kernel:

cat /boot/config-* | grep -i "CONFIG_IP_NF_IPTABLES"
CONFIG_IP_NF_IPTABLES=m

1.2 Tener cargado en ese momento el módulo iptable:

lsmod | grep iptable
iptable_filter          2624  0 
ip_tables              10160  1 iptable_filter

Si no los tubiera:

1.2.1 Cargar módulos:

modprobe iptable_filter && modprobe ip_tables\\

1.2.1 Especificar que se carguen cada vez que se arranque el equipo:

echo "iptable_filter" >> /etc/modules && echo "ip_tables" >> /etc/modules

1.3 Tener instalado el paquete iptables:

dpkg -l iptables
ii  iptables                             1.4.1.1-3                  administration tools for packet filtering and NAT

2. Hacer un script con las reglas:

#!/bin/bash
# Guión para administrar las reglas de iptables
# Siempre 1º permitir 2º denegar
###################### Variables #####################
# Pc's coleguistas
ORIGEN1="194.179.83.89"
ORIGEN2="192.168.1.31"
ORIGEN3="cntmalaga.mine.nu"
ORIGEN4="lobo99.mine.nu"
ORIGEN5="192.168.1.30"
INTERFAZ="eth0"
#################### Guión #########################
# Elimino las reglas anteriores
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Asegurarme que puedo conectarme via ssh desde distintas maquinas
iptables -A INPUT -s $ORIGEN1 -i $INTERFAZ -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s $ORIGEN1 -i $INTERFAZ -p tcp --dport 443 -j ACCEPT
# Por aquí debería abrir servicios, por ejemplo:
# HTTP/Apache
iptables -A INPUT -i $INTERFAZ -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i $INTERFAZ -p udp --dport 80 -j ACCEPT
# Mlnet
iptables -A INPUT -i $INTERFAZ -p tcp --dport 4080 -j ACCEPT
iptables -A INPUT -i $INTERFAZ -p udp --dport 4080 -j ACCEPT
# FTP
iptables -A INPUT -i $INTERFAZ -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i $INTERFAZ -p udp --dport 21 -j ACCEPT
# DNS (resolver)
iptables -A INPUT -i $INTERFAZ -p udp --sport 53 -j ACCEPT
###################### Mula #####################
IF=ppp0
IPTABLES=/sbin/iptables
MLDONKEY_HOST=192.168.1.2
EDONKEY_PORT=4662
KAD_PORT=8443
OVERNET_PORT=5865
BITTORRENT_PORT=6882
OPENNAP_PORT=9999
## MLDonkey acting as Edonkey2000 client
$IPTABLES -I FORWARD -p tcp --dport $EDONKEY_PORT -j ACCEPT
$IPTABLES -I FORWARD -p udp --dport $(($EDONKEY_PORT + 4)) -j ACCEPT
$IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $EDONKEY_PORT -j DNAT --to-destination $MLDONKEY_HOST
$IPTABLES -t nat -I PREROUTING -i $IF -p udp --dport $(($EDONKEY_PORT + 4)) -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as Kad client
$IPTABLES -I FORWARD -p tcp --dport $KAD_PORT -j ACCEPT
$IPTABLES -I FORWARD -p udp --dport $KAD_PORT -j ACCEPT
$IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $KAD_PORT -j DNAT --to-destination $MLDONKEY_HOST
$IPTABLES -t nat -I PREROUTING -i $IF -p udp --dport $KAD_PORT -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as Overnet client
$IPTABLES -I FORWARD -p tcp --dport $OVERNET_PORT -j ACCEPT
$IPTABLES -I FORWARD -p udp --dport $OVERNET_PORT -j ACCEPT
$IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $OVERNET_PORT -j DNAT --to-destination $MLDONKEY_HOST
$IPTABLES -t nat -I PREROUTING -i $IF -p udp --dport $OVERNET_PORT -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as BitTorrent client
$IPTABLES -I FORWARD -p tcp --dport $BITTORRENT_PORT -j ACCEPT
$IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $BITTORRENT_PORT -j DNAT --to-destination $MLDONKEY_HOST
## MLDonkey acting as OpenNap client
$IPTABLES -I FORWARD -p tcp --dport $OPENNAP_PORT -j ACCEPT
$IPTABLES -t nat -I PREROUTING -i $IF -p tcp --dport $OPENNAP_PORT -j DNAT --to-destination $MLDONKEY_HOST
##################### Fin Mula ####################
# Rechazar todos los demás paquetes entrantes
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

3. Utilidades:

-Listar las reglas activas (recuerda que se van acumulando):

iptables --list

-Grabar las nuevas reglas y cualquier otro cambio de forma permanente:

iptables-save