Bueno, a ver si no me extiendo mucho. Primero el script. Está sacado de alguna guia sobre el enmascaramiento y el snat de por ahí. Yo solo adapté alguna cosilla pequeña. No se quien es el autor pero gracias allí donde estés.
#!/bin/bash
IPTABLES=/sbin/iptables
Interfaz conectada a internet
EXT="ppp0"
Interfaz conectada a la red interna
INT="eth0"
case "$1" in
start)
Cargamos los módulos necesarios
echo "Setting firewall rules…"
echo -n "Loading kernel modules: "
/sbin/insmod -q -s ip_tables
/sbin/insmod -q -s ip_conntrack
/sbin/insmod -q -s ip_conntrack_ftp
/sbin/insmod -q -s ip_conntrack_irc
/sbin/insmod -q -s iptable_nat
/sbin/insmod -q -s ip_nat_ftp
echo "done"
Activamos el IP forwarding
echo -n "Activating IP Forwarding support: "
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "done"
Eliminamos las reglas anteriores
echo -n "Deleting firewall rules: "
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F
$IPTABLES -t nat -F
echo "done"
echo -n "Activating NAT: "
$IPTABLES -t nat -A POSTROUTING -s 192.168.9.0/24 -d 0.0.0.0/0 -o $EXT -j MASQUERADE
echo "done"
echo -n "Activating ICMP echo request: "
$IPTABLES -A INPUT -i $EXT -p ICMP -j ACCEPT
echo "done"
echo -n "Setting firewall port rules: "
21: ftp
$IPTABLES -A INPUT -i $EXT -p TCP --dport 21 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXT -p TCP --dport 2100 -m state --state NEW -j ACCEPT
22: ssh
$IPTABLES -A INPUT -i $EXT -p TCP --dport 22 -m state --state NEW -j ACCEPT
25: smtp
$IPTABLES -A INPUT -i $EXT -p TCP --dport 25 -m state --state NEW -j ACCEPT
80: apache
$IPTABLES -A INPUT -i $EXT -p TCP --dport 80 -m state --state NEW -j ACCEPT
echo "done"
echo -n "Final approach: "
Aceptamos paquetes de una conexión ya establecida
$IPTABLES -A INPUT -p TCP -m state --state RELATED -j ACCEPT
Rechazamos los de conexiones nuevas
$IPTABLES -A INPUT -i $EXT -m state --state NEW,INVALID -j DROP
Rechazamos conexiones de forwarding no establecidas
$IPTABLES -A FORWARD -i $EXT -m state --state NEW,INVALID -j DROP
echo "done"
;;
stop)
echo -n "Stopping firewall: "
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F
$IPTABLES -t nat -F
echo "done"
;;
restart)
$0 stop
echo -n "Sleeping a few seconds before setting the rules again: "
sleep 2
echo "done"
$0 start
;;
status)
$IPTABLES -L
$IPTABLES --table nat --list --exact --verbose --numeric --line-numbers
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
crea un archivo de texto con esto. Deberias modificar dos cosas en función de como tengas montada la red sobre la que quieres que funcione. Primero: justo al principio se definen las variables "INT" y "EXT", que hacen referencia a las interfaces de red nectadas a la red interna (INT) y a la red que se quiere acceder (en teoría internet, definida por EXT). Yo como comparto la conexión de un modem, pues la variable "EXT" tiene el valor ppp0 que es el de la interfaz que crea con el modem y para la red interna eth0 que es la tarjeta de red que se conecta a la red interna.
segundo: deberias modificar la linea
$IPTABLES -t nat -A POSTROUTING -s 192.168.9.0/24 -d 0.0.0.0/0 -o $EXT -j MASQUERADE
cambiando 192.168.9.0/24 por los valores de la red privada privada. (para el que no lo sepa el /24 indica que la máscara de red es de 24 bits, es decir 255.255.255.0).
Le pones el nombre que quieras (yo lo llamo natt) y le das permisos de ejecución. Ahora lo mueves al directorio "/etc/init.d" (o similar según tu distribución). Ahora si has configurado correctamente el script para tus interfaces y direcciones de red, podrías arrancarlo con la orden: /etc/init.d/natt start (como root claro está). Te irá diciendo como carga los módulos y activa las reglas. Si no hay errores un "/etc/init.d/natt status" te daría las reglas definidas y entre ellas alguna haciendo referencia a "masquerade", lo que indica que furula. No sé cual es tu nivel, así que si en algún momento comento cosas que te son muy triviales pido disculpas. Si quieres que el script arranque automaticamente con el ordenador tienes qeu crearle un enlace simbólico desde "/etc/rcX.d" siendo X el nivel de ejecución por defecto de tu máquina.
Vale, ahora en los ordenadores del resto de la red. Simplemente establece la ip del "servidor" como gateway y ponles las DNS de tu conexión. Esto si no asignas las ips a tu red privada por dhcp, que en ese caso puedes pasar ya estos parámetros.
Una observación. muchas cosas de ese script sobran. Son reglas de filtrado para prohibir algunas conexiones "raras" de posibles intrusos, así que si te deja de funcionar algo comentalo y miramos de que puede ser.
Espero noticias.