Antes de comenzar debes de hacer TODOS los pasos para crear una conexión tipo – TAP
Un vez listo nuestro servidor, la parte que nos toca configurar es la del Cliente que permita hacer el puente en su red también el cliente TIENE que ser Ubuntu 12.0.4 al ser posible.
La red del cliente también debe de estar en el MISMO rango que la del servidor, es decir si el servidor está en el rango 192.170.1.X la red del cliente debe tener también tener ese rango!
Debemos tener claro que rango de IP da el DHCP de la red del Servidor (EJ: 30-80) que rango da el Servidor (EJ: 200-220), entonces el rango que tiene que asignar el DHCP de la red del cliente debe ser distinta a las otras 2, serviría por ejemplo 81-120.
Una vez configurado el rango de la red del cliente, procedemos a retocar el archivo de configuración del servidor
nano /etc/openvpn/server-bridge.conf
#Podemos utilizar cualquier puerto para realizar la conexión puente, solo recuerda abrir el puerto en el router para que apunte al servidor. port 44443 proto tcp dev tap1 ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh1024.pem #Rango de la conexion puente server 10.0.0.0 255.255.255.0 #En este caso aconsejo utilizar 1 certificado por conexión puente y IP fija. ifconfig-pool-persist ip-server-bridge.txt client-to-client keepalive 10 120 comp-lzo persist-key persist-tun up "/etc/openvpn/up-server-bridge.sh" down "/etc/openvpn/down-server-bridge.sh" script-security 3 system verb 5 mute 20 log /etc/openvpn/logs/server-bridge-log.log status /etc/openvpn/logs/server-bridge-status.log
Creamos las 2 scripts para que pueda saltar de la red VPN (10.0.0.X a la red 192.170.1.X)
nano /etc/openvpn/up-server-bridge.sh
#!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin brctl addif br0 tap1 ifconfig tap1 0.0.0.0 up ifconfig br0:1 10.0.0.1 netmask 255.255.255.0 up
nano /etc/openvpn/down-server-bridge.sh
#!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin brctl delif br0 tap1 ifconfig br0:1 down
chmod 755 /etc/openvpn/up-server-bridge.sh /etc/openvpn/down-server-bridge.sh
La parte del servidor ya está lista, nos toca ir al cliente Ubuntu para que realice la conexión y habilite el salto entre su red 192.170.1.X a la 10.0.0.X recuerda que tienen que estar en el mismo rango de IP que la del servidor.
apt-get update apt-get install bridge-utils apt-get install openvpn
Copiamos los 3 archivos necesarios para realizar la conexón con el servidor, trabajaremos nosotros sobre lacarpeta de /root/
mkdir /root/VPN cp XXX /root/VPN/ca.crt cp XXX /root/VPN/client1.crt cp XXX /root/VPN/client1.key
Creamos el archivo de confirmación del OpenVPN (.ovpn)
nano /root/VPN/client1.ovpn
client dev tap0 proto tcp remote IP_PUBLICA_SERVIDOR_VPN 44443 resolv-retry infinite nobind persist-key persist-tun ca "/root/VPN/ca.crt" cert "/root/VPN/client1crt" key "/root/VPN/client1.key" comp-lzo verb 4 up "/root/VPN/up.sh" down "/root/VPN/down.sh" script-security 3 system
Y ahora generamos las 2 scripts para unir las 2 redes
nano /root/VPN/up.sh
#!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin BR=br0 DEV=tap0 #Verifica que ip te asigna la VPN IP=10.0.0.2 if ! brctl show $BR | egrep -q "\W+$DEV$"; then brctl addif $BR $DEV ifconfig $DEV 0.0.0.0 up ifconfig $BR:1 $IP netmask 255.255.255.0 up fi
nano /root/VPN/down.sh
#!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin BR=br0 DEV=tap0 brctl delif $BR $DEV ifconfig $BR:1 down
chmod 755 /root/VPN/up.sh /root/VPN/down.sh
Con esto ya estaría todo listo, realizamos la conexión con el siguiente comando:
openvpn "/root/VPN/client1.ovpn" > /dev/null &
Si queremos que se conecte de manera automatica al servidor añadimos el comando en:
nano /etc/rc.local
Y comprobamos que los usuarios de 1 red pueden saltar a la otra sin problemas y hacer peticiones de broadcast (EJ: ping usuario-pc)
Aconsejo bloquear el protocolo de DHCP para que cada equipo no coja IP de la otra red y no salga por el otro router, agregamos la siguiente regla en cada cliente / servidor para que no traspase este protocolo:
iptables -A FORWARD -p udp --dport 67:68 --sport 67:68 -j DROP
Nota: Este puente solo lo recomiendo para pequeña empresas o para uso domestico, existe un problema con este tipo de configuración y es que los paquetes «basuras» que generan los equipos de manera automática saltan de una red a otra, y esto causa que se ralentiza la conexión a Internet, estos paquetes no se pueden bloquear ya que son necesarios para los protocolos de broadcast como el ejemplo anterior (EJ: ping usuario-pc) o paquetes de discovery, para ver si tienes algún servidor DLNA por ejemplo.
Realmente se pueden bloquear estos paquetes pero sería absurdo para eso utilizarías el dispositivo tipo TUN ya que realizaría mejor este tipo de función.
No aconsejo utilizar esta opcion si tienes mas de 30 equipos en total entre las 2 redes =)
PD: Puedes conectar mas de 2 redes realizando los pasos de cliente en cada red, yo he conectado 3 redes al servidor y sin problemas de conexiones, ya que son conexiones domesticas no tienen muchos dispositivos en la red,
Así queda la foto:
Cualquier duda preguntad!
Salu2!