Configurar un servidor como router con Iptables
En este caso se va a configurar un servidor Ubuntu con dos tarjetas de red para que trabaje como router.
La tarjeta de red que se conectará a Internet es eth1, y la puerta de enlace a la que se conecta es 192.168.0.1
Configurar los interfaces de red:
Abrimos el fichero interfaces, ubicado en /etc/network con cualquier editor de texto, por ejemplo nano:
Borramos o comentamos el contenido añadiéndole una almohadilla delante “#”, y añadimos estas lineas:
# The loopback network interface auto lo
iface lo inet loopback
# The primary network interface – enlaza con internet o con la red general
auto eth1 iface eth1 inet dhcp
# LAN network interface – enlaza con la red LAN
auto eth0
iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.0.1
La tarjeta que conecta con la LAN tiene una IP fija mientras que la tarjeta que conecta con el exterior se configura con DHCP y espera que se le asigne una IP por parte del Router ADSL
Y reiniciamos las tarjetas de red con el siguiente comando:
Configurar DHCP
Editamos el fichero dhcpd.conf, ubicado en /etc/dhcp3, con cualquier editor de textos:
Y al igual que antes, borramos el contenido o comentamos las lineas para sustituirlas por estas:
range 192.168.2.2 192.168.2.249;
option domain-name-servers 192.168.0.1; # importante reflejar la DNS que asignara el Servidor DHCP
# option domain-name “internal.example.org”;
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
default-lease-time 600;
max-lease-time 7200;
interfaces=eth0;
}
Reiniciamos el servicio DHCP con el siguiente comando:
Configurar Iptables
Creamos un script para iptables que contiene todas las ordenes iptables que hacen que se enrute el flujo de información entre las dos tarjetas.
Le damos permisos:
Y añadimos estas lineas:
EXT=”eth1″
INT=”eth0″
echo -n “Activando el ip_forward… ”
echo 1 > /proc/sys/net/ipv4/ip_forward && echo “Hecho”
echo -n “Limpiando reglas… ”
iptables -F
iptables -t nat -F
iptables -P FORWARD ACCEPT
echo “Comandos de limpieza ejecutados”
echo “Comandos de seguridad: para no se permitir conexiones desde la interfaz externa”
iptables -A INPUT -i eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT && echo -n ” * ”
#iptables -A INPUT -i $EXT -j DROP && echo -n ” * ”
echo “Hecho”
echo “Iniciando ip masquerading… ”
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j MASQUERADE
echo “Hecho”
echo “Permitiendo forward desde la red interna… ”
iptables -A FORWARD -s 192.168.2.0/24 -i eth0 -j ACCEPTiptables -A INPUT -s 192.168.2.0/24 -j ACCEPT
echo “Listo”
echo “Configuracion de ruteador completada”
Si queremos cerrar el acceso a algunos sitios web, añadimos estas lineas debajo del script del iptables:
iptables -A OUTPUT -d messenger.hotmail.com/32 -p tcp –dport 80 -j DROP
iptables -I FORWARD -d 64.4.13.0/16 -p tcp –dport 80 -j DROP
iptables -I FORWARD -d messenger.hotmail.com/32 -p tcp –dport 80 -j DROP
iptables -I FORWARD 1 -d www.tuenti.com -p tcp –dport 80 -j DROP
iptables -I FORWARD -d www.hotmail.com -p tcp –dport 80 -j DROP
Para ejecutar el script utilizamos el siguiente comando:
Configurar servicio DNS
Editamos el archivo resolv.conf ubicado en /etc
Y añadimos esta linea:
Activar el bit de forwarding
Para terminar editamos el fichero sysctl.conf ubicado en /etc
Y descomentamos la siguiente linea (quitarle la almohadilla de delante “#”):
Sin comentarios