Scripts de iptables y puente para el caso concreto de mi casa xD
Un modem-router se conecta por USB a mi pc y le da internet. Mi pc tiene dos tarjetas de red y crea un puente entre las dos interfaces. Luego enruta la conexion del modem al puente. Asi tengo internet en este pc y en 2 mas que se conecten por red.
@Ubuntu 9.04 y bash
Script para crear el puente:
#Creando bridge
brctl addbr CASA
brctl addif CASA eth0
brctl addif CASA eth1
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
ifconfig CASA 192.168.0.10
Script de configuracion iptables para enrutar la conexion:
#### SCRIPT DE CONFIGURACION DE IPTABLES ####
#!/bin/bash# Dispositivo de red de internet
EXIF="eth3"
# Dispositivo de red local
INIF="CASA"fail=0
[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functionslog_begin_msg "Aplicando Reglas de Firewall..."
## Borrado de reglas anteriores
iptables -F || fail=1
iptables -X || fail=1
iptables -Z || fail=1
iptables -t nat -F || fail=1## Establecemos politica por defecto
iptables -P INPUT ACCEPT || fail=1
iptables -P OUTPUT ACCEPT || fail=1
iptables -P FORWARD DROP || fail=1
iptables -t nat -P PREROUTING ACCEPT || fail=1
iptables -t nat -P POSTROUTING ACCEPT || fail=1# Marcar paquetes salientes con su ip de origen
iptables -t nat -A POSTROUTING -o $EXIF -j MASQUERADE || fail=1
# Reenvio de IP
echo 1 > /proc/sys/net/ipv4/ip_forward || fail=1# Aceptar paquetes para reenviar procedentes de la red local
iptables -A FORWARD -i $INIF -o $EXIF -j ACCEPT || fail=1
# Aceptar paquetes para reenviar procedentes de internet de conexiones ya establecidas
iptables -A FORWARD -i $EXIF -o $INIF -m state --state RELATED,ESTABLISHED -j ACCEPT || fail=1# Se muestran los resultados
log_end_msg $failif [ $fail -eq 0 ]
then
log_success_msg "Verifique que lo que se aplica con: iptables -L -n."
else
log_warning_msg "Se ha producido un error al aplicar alguna de las reglas"
fi#### FIN SCRIPT DE CONFIGURACION DE IPTABLES ####