Mostrando entradas con la etiqueta Administración de Redes. Mostrar todas las entradas
Mostrando entradas con la etiqueta Administración de Redes. Mostrar todas las entradas

viernes, 25 de julio de 2014

Configurando la red para máquinas virtuales

Siguiendo con la configuración de máquinas virtuales, es hora de configurar la red.

Quiero que mis máquinas virtuales atiendan servicios, así que necesito que tengan direcciones IP visibles desde la red física, a las que mi enrutador pueda dirigirse.

Ha sido muy difícil encontrar la documentación, y al final en realidad he tenido que recurrir a métodos de prueba y error, pero finalmente lo tengo.

En el servidor, hay que configurar un puente. Eso quiere decir que pasamos de esto:

#/etc/network/interfaces

# The primary network interface
allow-hotplug eth0
auto eth0
iface eth0 inet static
      address 192.168.2.25
      netmask 255.255.255.0
      network 192.168.2.0
      broadcast 192.168.2.255
      gateway 192.168.2.1
      dns-nameservers 127.0.0.1
      dns-domain rolamasao.org

a esto:

#/etc/network/interfaces

# The primary network interface
auto br0
iface br0 inet static
        bridge_ports eth0
        address 192.168.2.25
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        gateway 192.168.2.1
        dns-nameservers 127.0.0.1
        dns-domain rolamasao.org

Es importante notar que a partir de ese momento debemos considerar que la interfaz de red de nuestro servidor físico es br0, y no eth0.

Claro que de nada sirve tener un puente si los paquetes que llegan al puente no son retransmitidos hacia Internet. Por eso hay que modificar un parámetro del kernel:

# /etc/sysctl.conf - Configuration file for setting system variables

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Para que estos cambios tengan efecto es necesario reiniciar, pero siempre se pueden ejecutar a mano con un poquito de brctl, ifconfig, route y echo.

En las máquinas virtuales la configuración debe indicar que utilizan el puente br0, lo cual es bastante sencillo de hacer desde virt-manager. Ya dentro de la máquina virtual, tenemos una configuración bastante estándar. Simplemente hay que indicar que el enrutador por defecto es la máquina física, no el enrutador de la red:

#/etc/network/interfaces VIRTUAL

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 192.168.2.80
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        gateway 192.168.2.25
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.2.25

lunes, 25 de julio de 2011

Dos conexiones a internet

Pues eso, como Ono me da 12 megas pero no me da IP fija, y Tele$ónica (ahora la llaman Movistar) me da 1 mega pero con IP estática, pues me he abonado a ambas y aprovecho las dos tarjetas de red de mi ordenador, una para navegar, etc. y la otra para mis servidores al exterior. Es bastante sencillo.

Para empezar, identifiquemos las tarjetas: eth0 es la de navegar, 12 megas con IP dinámica, eth1 es la de los servidores, 1 mega con IP fija.

Para seguir, identifiquemos las redes y asignemos direcciones IP internas: eth0 tiene la IP 192.168.2.25 con pasarela en 192.168.2.1, mientras que eth1 tiene la IP 192.168.1.25 con pasarela en 192.168.1.1.
Así los unos coinciden, y no hay pérdida: la red 1 en la tarjeta 1.

Ahora es cuando viene el problema: si pongo una pasarela (gateway) todos mis paquetes saldrán por ahí, así que los que hayan entrado por la otra tarjeta saldrán con una dirección IP errónea: o no navego, o no sirvo. Y si pongo dos pasarelas el núcleo hará salir cada paquete por donde le apetezca: ni navego ni sirvo.

Así que mirando la documentación y teniendo (esto es muy importante) una idea clara de lo que quería, descubrí la solución: necesitaba una tabla de enrutamiento distinta.

Manos a la obra:

ip permite tener más de una tabla de enrutamiento, y van por número, así que creé la tabla 1 (para no variar, los unos con los unos):

ip route add table 1 192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.25 
ip route add table 1 default via 192.168.1.1 dev eth1

Ahora una regla que haga que todos los paquetes que salen de 192.168.1.25 usen esa tabla de enrutamiento y no otra:

ip rule add from 192.168.1.25 lookup 1

Pónganse las tres líneas juntas, hágase que se ejecuten al levantar eth1, y listo.

lunes, 3 de mayo de 2010

Expresión regular para CIDR

Me ha dado por ahí, y he sacado la expresión regular para una dirección IPv4 en notación CIDR.

Hay mucha gente por ahí que usa

([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\/([0-9][1,3})


Pero no es correcta. La buena es ésta:

((0|1[0-9]{0,2}|2([0-4][0-9]?|5[0-5]?|[6-9])|[3-9][0-9]?)\.){3}(0|1[0-9]{0,2}|2([0-4][0-9]?|5[0-5]?|[6-9])|[3-9][0-9]?)/(0|[1-2][0-9]?|3[0-2]?)


Si la vas a compilar en C, no olvides doblar las barras invertidas.