Linux: 2 tarjetas de red con 2 puertas de enlace

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.

9 Comments

  1. 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.

  2. 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 …

  3. 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.

  4. 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.

Leave a Comment.