En esta entrada me voy a ocupar de la configuración de un servidor GNU/Linux para que funcione como un router. Uniremos dos redes diferentes, las unirá está máquina linux, que tendrá 2 (dos) tarjetas de red.
Vamos a presentar el escenario:
por un lado tenemos una red de ordenadores del rango 10.0.2.0/24 ---> La nombraremos como "red1"
y por otro tenemos otra red del tipo 192.168.1.0/24 --> llamada "red2"
Para unir las dos redes usaremos una máquina equipada con un Debian 6. A pelo, sin GUI ni nada. Pura terminal. Esta maquina la llamaremos RouterDebian6. Tendrá dos interfaces de red.
- eth0 --- > conectada a 10.0.2.0/24 -- IP 10.0.2.30/24
- eth1 ---> conectada a 192.168.1.0/24 --> IP 192.168.1.1/24
vamos al tomate:
Una vez logueados en el sistema, tendremos que tener los privilegios suficientes para ejecutar estas tareas. En mi caso, las haré como root.
Primer paso: Activar el enrutamiento en el sistema. Pondremos el bit de ip_forward a 1.
root@routerdebian6:~# echo "1" > /proc/sys/net/ipv4/ip_forward
Primer paso: Activar el enrutamiento en el sistema. Pondremos el bit de ip_forward a 1.
root@routerdebian6:~# echo "1" > /proc/sys/net/ipv4/ip_forward
Segundo paso: configuraremos las interfaces de red. Para ello editaremos los archivos de configuración.
Lo abrimos con nuestro editor favorito (yo uso nano). Y se queda tal cual. Si lo va usted a hacer, personalice las configuraciones IP en su caso particular.
root@routerdebian6:~# nano /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 10.0.2.254
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255
gateway 10.0.2.1
# Secondary interface eth1
allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 10.0.2.254
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 10.0.2.254
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255
gateway 10.0.2.1
# Secondary interface eth1
allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 10.0.2.254
Tercer paso: Iptables. Vamos a hacer NAT "hacia afuera" y los paquetes de ida y vuelta fluyan correctamente a cada una de las máquinas de la red interna "redtwo".
root@routerdebian6:~# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
root@routerdebian6:~# iptables -t nat -n -L
¡Ya está! He instalado un servidor de dhcp y conectado un par de XP y enruta correctamente. Capítulo aparte merecerá que nos fijemos en la seguridad por medio de iptables.
El único inconveniente es que con cada reinicio tendremos que realizar las operaciones otra vez, de manera que si las queremos hacer permanentes os presento dos opciones en forma de scripts en bash.
El único inconveniente es que con cada reinicio tendremos que realizar las operaciones otra vez, de manera que si las queremos hacer permanentes os presento dos opciones en forma de scripts en bash.
SCRIPT 1 = Hacer los cambios permanentes
creamos un script. Por ejemplo crearemos en /root/
root@routerdebian6:~# nano /root/iniciarenruta.sh
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
exit 0
Entonces le daremos permisos de ejecución.
root@routerdebian6:~# chmod 700 /root/inicioenruta.sh
Ahora modificaremos el archivo /etc/init.d/rc.local, que lo que hace es al final de cada nivel de ejecución carga los scripts que se le indiquen.
root@routerdebian6:~# nano /etc/init.d/rc.local
Y añadiremos la linea siguiente antes del exit 0
/root/inicioenruta.sh
Prueben a reiniciar y ya verán que bien :)
SCRIPT 2: Programa interactivo que comprueba y activa o desactiva el enrutamiento.
creamos un script. Por ejemplo crearemos en /root/
root@routerdebian6:~# nano /root/iniciarenruta.sh
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
exit 0
Entonces le daremos permisos de ejecución.
root@routerdebian6:~# chmod 700 /root/inicioenruta.sh
Ahora modificaremos el archivo /etc/init.d/rc.local, que lo que hace es al final de cada nivel de ejecución carga los scripts que se le indiquen.
root@routerdebian6:~# nano /etc/init.d/rc.local
Y añadiremos la linea siguiente antes del exit 0
/root/inicioenruta.sh
Prueben a reiniciar y ya verán que bien :)
SCRIPT 2: Programa interactivo que comprueba y activa o desactiva el enrutamiento.
#!/bin/bash
# enrutame.sh // para activar o desactivar enrutamiento en linux
function vacia() {
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
}
function politica()
{
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
}
clear
RUTA="/proc/sys/net/ipv4/ip_forward"
ENR=`cat $RUTA`
if [ $ENR = "1" ];then
echo "el enrutamiento esta ACTIVADO"
read -p "desea desactivarlo?(s/n) >> " RESP
case $RESP in
s | S ) echo "0" > $RUTA
if [ `cat $RUTA` = "0" ];then
# vaciamos las iptables
vacia
echo "operación completada"
exit 0
else
echo "operación no realizada. Saliendo"
exit 1
fi
;;
* ) echo "saliendo del programa sin cambios"
exit 0
;;
esac
else
echo "el enrutamiento esta DESACTIVADO"
read -p "desea activarlo? (s/n)" RESQ
case $RESQ in
s | S ) echo "1" > $RUTA
if [ `cat $RUTA` = "1" ];then
# activamos las iptables
vacia
politica
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
echo "operacion completada"
exit 0
else
echo "operacion fallida. Saliendo."
exit 2
fi
;;
*) echo "saliendo del programa sin cambios"
exit 0
;;
esac
fi
exit 3
Podrán comprobar el estado del enrutamiento, y modificarlo si lo desean.
Y eso es todo amigos y amigas. Mi intención es que les sirva.
Iré actualizando.
Espero la siguiente instrucción.
Iré actualizando.
Espero la siguiente instrucción.
No hay comentarios:
Publicar un comentario