Vamos a ver como configurar un sistema linux con dos tarjetas de red y dos puertas de enlace, lógicamente este sistema estará conectado a dos redes diferentes. Para ello vamos a partir de una configuración de red inicial que para nuestro ejemplo sera:
Tarjeta 1 eth0 IP: 192.168.0.10 Mascara de red: 255.255.255.0 Puerta de enlace: 192.168.0.1 Tarjeta 2 eth1 IP: 10.1.1.10 Mascara de red: 255.255.255.0 Puerta de enlace: 10.1.1.1
Ahora que ya tenemos los datos vamos a configurar el servidor con esta configuración de red a excepción de la segunda puerta de enlace que veremos mas adelante y con mayor detalle.
Para configurar las interfaces de red en debian editaríamos el «/etc/netowrk/interfaces» con estas lineas:
auto eth0 iface eth0 inet static address 192.168.0.10 netmask 255.255.255.0 gateway 192.168.0.1 auto eth1 iface eth1 inet static address 10.1.1.10 netmask 255.255.255.0
Para centos deberíamos de editar el fichero «/etc/sysconfig/network-scripts/ifcfg-eth0» con estas lineas para la interfaz eth0:
DEVICE="eth0" BOOTPROTO="static" BROADCAST="192.168.0.255" IPADDR="192.168.0.10" GATEWAY="192.168.0.1" NETMASK="255.255.255.0" NETWORK="192.168.0.0" NM_CONTROLLED="yes" ONBOOT="yes" NETWORKING_IPV6=no IPV6INIT=no TYPE="Ethernet"
Y para la tarjeta eth1 en centos deberíamos añadir el fichero «/etc/sysconfig/network-scripts/ifcfg-eth1»
DEVICE="eth1" BOOTPROTO="static" BROADCAST="10.1.1.255" IPADDR="10.1.1.10" NETMASK="255.255.255.0" NETWORK="10.1.1.0" NM_CONTROLLED="yes" ONBOOT="yes" NETWORKING_IPV6=no IPV6INIT=no TYPE="Ethernet"
Ahora que ya tenemos nuestro sistema configurado con la primera puerta de enlace y las dos ips de las diferentes redes vamos a preparar el sistema para poder configurar la segunda puerta de enlace.
Para ello vamos a crear una segunda tabla de rutas, esto se debe hacer porque no puede haber mas de una puerta de enlace en una misma tabla de rutas.
Para añadir una segunda tabla de rutas debemos editar el fichero «/etc/iproute2/rt_tables» y añadir la linea
10 eth1table
Una vez tenemos la segunda tabla de rutas vamos a configurar unas rutas para esta tabla de rutas, esta rutas serán para la red de la tarjeta eth1 y lo haremos ejecutando los siguientes comandos:
ip route add 10.1.1.0/24 dev eth1 src 10.1.1.10 table eth1table ip route add default via 10.1.1.1 dev eth1 table eth1table
En caso de reinicio estas rutas se perderían por lo que si queremos hacer que estas rutas se mantengan debemos crear un fichero llamado «route-eth1» donde ethX es la interfaz de red que para nuestro caso es eth1.
Para sistemas debian este fichero se ubicara en «/etc/network/route-eth1» y en sistemas centos en «/etc/sysconfig/network-scripts/route-eth1» y su contenido para nuestro ejemplo seria:
10.1.1.0/24 dev eth1 src 10.1.1.10 table eth1table default via 10.1.1.1 dev eth1 table eth1table
Por ultimo nos queda configurar las reglas para cuando se aplicaran estas rutas y esto lo podemos hacer ejecutando lo siguientes comandos:
ip rule add from 10.1.1.10/32 table eth1table ip rule add to 10.1.1.10/32 table eth1table
Estas reglas indican que para todo lo que vaya como destino u origen la ip 10.1.1.10 se utilizara la tabla de rutas eth1table. Como en el caso anterior estas reglas se perderían tras un reinicio por lo que para conservar estas reglas debemos crear un fichero llamado «rule-eth1».
Recordar que para nuestro caso es «rule-eth1» porque estamos configurando la interfaz eth1, si en vuestro caso es otra interfaz sustituir el nombre. Este fichero debe ubicarse en «/etc/network/rule-eth1» en caso de sistemas debian, en «/etc/sysconfig/network-scripts/rule-eth1» en caso de sistemas centos.
Su contenido debe ser el siguiente para nuestro ejemplo:
from 10.1.1.10/32 table eth1table to 10.1.1.10/32 table eth1table
Con esto ya deberíamos de tener acceso a las dos redes correctamente. Como lo normal es tener varias ips de cada red vamos a ampliar un poco mas la información de como configurar en este mismo sistema otra ip adicional a la interfaz eth1.
Imaginar que queremos configurar ahora una interfaz virtual de eth1 que sera eth1:1 con los siguientes datos:
eth1:1 IP: 10.1.1.11 Mascara de red: 255.255.255.0 Puerta de enlace: 10.1.1.1
Primero deberíamos de configurar la interfaz eth1:1 igual que hemos configurado la interfaz eth1 sin añadir la puerta de enlace. Una vez configurada la interfaz solo debemos configurar la parte de las reglas ya que la puerta de enlace ya la tenemos configurada y al ser una interfaz virtual de eth1 es valida para eth1:1.
Para configurar las reglas nos bastaría con añadir al fichero «rule-eth1» nuevas reglas para la nueva ip que serian:
from 10.1.1.11/32 table eth1table to 10.1.1.11/32 table eth1table
También podríamos hacer uso de la mascara de red para dejar el fichero «rule-eth1» mas simple y seria utilizando en este caso una mascara «/31» en lugar del «/32» que estamos utilizando con lo cual definimos 2 ips. Para este caso seria el fichero «rule-eth1» quedaria:
from 10.1.1.10/31 table eth1table to 10.1.1.10/31 table eth1table
Tener en cuenta que con un «/31» estamos metiendo en estas reglas tanto la Ip 10.1.1.10 como la Ip 10.1.1.11.
Cualquier duda o ayuda que necesitéis escribir un comentario.
Hola,
Muy interesante tu articulo, me ha servido de mucho. Pero una pregunta, ¿Se podria hacer los mismo teniendo un host con dos tarjetas de red dentro de una misma red? Osea que por ejemplo las dos redes esten en la red 192.168.1.x.
Es que lo he probado y no funciona bien y no se por que es.
Un saludo
Buenas daniel,
Si se podria hacer sin ningun problema y en ese caso la configuracion seria mucho mas sencilla ya que la puerta de enlace es la misma.
En ese caso lo unico que debes hacer es configurar la segunda tarjeta de red con su ip y mascara de red sin la puerta de enlace ya que la primera tarjeta ya tiene la puerta de enlace y es la misma para las dos.
Un saludo.
Hola podrías ayudarme tengo 2 redes con diferente gateway y 2 tarjetas de red en el mismo server con ubuntu 14.04 he puedto en practica tu explicación pero sigo teniendo conflictos …
Por supuesto, ahora te envio un correo para que me cuentes mas detalles por privado y lo seguro que lo resolvemos 🙂
HOLA
ESTIMADO PROBÉ TU CONFIG PERO AUN TENGO PROBLEMAS, ME PODRIAS AYUDAR. TENGO DOS REDES 192.168.100.0 ETH1 Y 192.168.2.0 ETH0. TE AGRADECERIA MUCHO. UTILIZO CENTOS.
Buenos dias , tengo una consulta , tengo un proxy debian , con 2 tarjetas de red , mi red de usuarios es 172.16.12.0/23 y quiero sacarlo por la otra tarjeta de red por una ip publica (sin hacer nat) , puesto que están antes de un ASA , soy nuevo en este tema y quisiera apoyo
Lo primero seria configurar la segunda tarjeta para que ese equipo tenga internet, una vez el proxy tiene salida a internet por la ip publica lo unico que debes de hacer es configurar el proxy para que todas las peticiones las realice a traves de la interfaz de la ip publica.
Si quieres dame mas datos para ayudarte pero lo ideal es hacerlo en dos pasos:
1. Configurar las redes del proxy. ¿Tiene internet por la interfaz publica? ¿Puede al mismo tiempo ver las ips de la red de usuarios?
2. Configurar el proxy.
Un saludo.
Las estoy configurando, ya que usare este ordenador como proxy, el cual ya instale squid sobre el, y me funciona bien, pero a la hora de configurar las tarjetas de red, es donde se lia. La ultima vez las configure como eth0, la cual esta conectada al router directamente, y la eth1 es la que ira a un switch para repartir Internet.
En este caso no debes tener 2 puertas de enlace. Aqui tendras una ip configurada en la eth0 y otra ip en la eth1.
Una vez configuradas las ip solo tendras que configurar la puerta de enlace en la eth0.