Configuración de VPNs de acceso remoto RA en Vyatta con OpenVPN
En este tutorial de configuración de Vyatta tenemos un paso a paso para llevar a cabo la configuración de túneles o VPNs en Vyatta mediante la integración que Vyatta ofrece con OpenVPN, con lo que generaremos nuevas interfaces virtuales (llamadas vtun) en nuestras máquinas Vyatta que harán de túnel y encriptarán todo el tráfico que circule por el permitiendo establecer conexiones remotas seguras. Nos basaremos en la topología de ejemplo de configuración de Vyatta y explicaremos los pasos para configurar las VPNs de acceso remoto o remote access (RA) en Vyatta mediante OpenVPN para poder conectar de forma remota y segura a las oficinas desde cualquier equipo conectado a Internet y que hayamos configurado para tal efecto.
Y tras la ardua tarea de creación y colocación de certificados podemos llevar a cabo la configuración de las VPNs que necesita nuestra empresa ficticia.
Empezamos con openredesR1, creamos la primera VPN de acceso remoto que será para el acceso de gerencia y en este ejemplo la crearemos como la interfaz vtun0 y crearemos para ella la subred 192.168.2.0/29:
openredes@openredesR1:~$ configure
openredes@openredesR1:# edit interfaces openvpn vtun0
[edit]
openredes@openredesR1:# set description VPN-Acceso-Remoto-Gerencia
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set local-host 192.0.2.10
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set local-port 1195
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set mode server
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set openvpn-option "--comp-lzo --dev-type tun --plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn --push route 192.168.0.0 255.255.255.0 --push route 192.168.1.0 255.255.255.0 --remote-cert-tls client --script-security 2"
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set server client ra-jefe1 ip 192.168.2.2
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set server client ra-jefe2 ip 192.168.2.3
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set server client ra-jefe3 ip 192.168.2.4
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set server client ra-jefe4 ip 192.168.2.5
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set server client ra-jefe5 ip 192.168.2.6
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set server subnet 192.168.2.0/29
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set tls ca-cert-file /openvpn/keys/ra/ca.crt
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set tls cert-file /openvpn/keys/ra/empresaR1.crt
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set tls dh-file /openvpn/keys/ra/dh1024.pem
[edit interfaces openvpn vtun0]
openredes@openredesR1:# set tls key-file /openvpn/keys/ra/empresaR1.key
[edit interfaces openvpn vtun0]
openredes@openredesR1:# commit
[edit interfaces openvpn vtun0]
openredes@openredesR1:# show
description VPN-Acceso-Remoto-Gerencia
encryption bf128
hash sha1
local-host 192.0.2.10
local-port 1195
mode server
openvpn-option "--comp-lzo --dev-type tun --plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn --push route 192.168.0.0 255.255.255.0 --push route 192.168.1.0 255.255.255.0 --remote-cert-tls client --script-security 2"
server {
client ra-jefe1 {
ip 192.168.2.2
}
client ra-jefe2 {
ip 192.168.2.3
}
client ra-jefe3 {
ip 192.168.2.4
}
client ra-jefe4 {
ip 192.168.2.5
}
client ra-jefe5 {
ip 192.168.2.6
}
subnet 192.168.2.0/29
}
tls {
ca-cert-file /openvpn/keys/ra/ca.crt
cert-file /openvpn/keys/ra/empresaR1.crt
dh-file /openvpn/keys/ra/dh1024.pem
key-file /openvpn/keys/ra/empresaR1.key
}
[edit interfaces openvpn vtun0]
openredes@openredesR1:# top
[edit]
openredes@openredesR1:#
Con esto ya tenemos configurada la VPN de Gerencia y ya podríamos instalarle a los jefes el OpenVPN GUI para que se conectaran con sus portátiles, luego veremos cómo hacerlo.
Seguimos con la configuración de la VPN de los comerciales, para lo que crearemos una interfaz llamada vtun1 perteneciente a la subred 192.168.2.8/29 y que usará los mismos certificados que vtun0 (Vyatta asignará una subred u otra dependiendo del certificado de cliente con el que se acceda y el puerto al que se haga la petición):
openredes@openredesR1:# edit interfaces openvpn vtun1
[edit]
openredes@openredesR1:# set description VPN-Acceso-Remoto-Comercial
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set local-host 192.0.2.10
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set local-port 1196
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set mode server
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set openvpn-option "--comp-lzo --dev-type tun --plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn --push route 192.168.0.0 255.255.255.0 --remote-cert-tls client --script-security 2"
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set server client ra-cial1 ip 192.168.2.10
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set server client ra-cial2 ip 192.168.2.11
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set server client ra-cial3 ip 192.168.2.12
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set server client ra-cial4 ip 192.168.2.13
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set server client ra-cial5 ip 192.168.2.14
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set server subnet 192.168.2.8/29
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set tls ca-cert-file /openvpn/keys/ra/ca.crt
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set tls cert-file /openvpn/keys/ra/empresaR1.crt
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set tls dh-file /openvpn/keys/ra/dh1024.pem
[edit interfaces openvpn vtun1]
openredes@openredesR1:# set tls key-file /openvpn/keys/ra/empresaR1.key
[edit interfaces openvpn vtun1]
openredes@openredesR1:# commit
[edit interfaces openvpn vtun1]
openredes@openredesR1:# show
description VPN-Acceso-Remoto-Comercial
encryption bf128
hash sha1
local-host 192.0.2.10
local-port 1196
mode server
openvpn-option "--comp-lzo --dev-type tun --plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn --push route 192.168.0.0 255.255.255.0 --remote-cert-tls client --script-security 2"
server {
client ra-cial1 {
ip 192.168.2.10
}
client ra-cial2 {
ip 192.168.2.11
}
client ra-cial3 {
ip 192.168.2.12
}
client ra-cial4 {
ip 192.168.2.13
}
client ra-cial5 {
ip 192.168.2.14
}
subnet 192.168.2.8/29
}
tls {
ca-cert-file /openvpn/keys/ra/ca.crt
cert-file /openvpn/keys/ra/empresaR1.crt
dh-file /openvpn/keys/ra/dh1024.pem
key-file /openvpn/keys/ra/empresaR1.key
}
[edit interfaces openvpn vtun1]
openredes@openredesR1:# top
[edit]
openredes@openredesR1:#
Como vemos, usamos la misma interfaz física (eth2, la interfaz conectada a la red pública) para las dos VPNs, la única diferencia es la necesidad de usar un puerto de escucha diferente para cada uno de los túneles, esto es necesario en caso de configurar más de una VPN en la misma interfaz física. También hemos de recordar el puerto que hemos configurado para después en la configuración de los equipos que se conectaran de forma remota como clientes hagamos la petición de conexión al puerto correspondiente.
Con esto terminamos la configuración de openredesR1 a nivel de VPNs, ya está preparado para dar de alta en la red clientes remotos













Pingback: Vyatta en español | openredes - Networking Open Source
Hola openredes, tengo un problemilla con el OpenVPN, y es el siguiente: cuando los clientes de openVPN se conectan a la VPN se conectan sin problemas, tengo asignadas las IP igual que tú por nombre de certificado, no tengo ningún tipo de firewall activado en la interface vtun, así como ninguna ruta, por lo que veo en tu tutorial no hay que añadir ninguna ruta para que los usuarios se vean entre sí, lo único que yo quiero para estos usuarios es que sean visibles entre sí en la subnet que he creado para ellos en la VPN, ya que tienen que acceder a un servidor web que también es conectado por VPN, te dejo un sample de mi configuración.
Los clientes se validan sin problema y sin ningún error, sólo warnings que te dejaré más abajo
PD: no son ni capaces de ver la interficie openvpn que es la 192.168.10.1/24
Config Vyatta:
vyatta@VPN# run show interfaces ethernet
Interface IP Address State Link Description
eth0 192.168.1.200/24 up up
vyatta@VPN# run show interfaces openvpn
Interface IP Address State Link Description
vtun0 192.168.10.1/24 up up
vyatta@VPN# show interfaces ethernet
ethernet eth0 {
address 192.168.1.200/24
duplex auto
firewall {
in {
}
local {
}
out {
}
}
hw-id 00:c0:9f:68:ba:af
smp_affinity auto
speed auto
}
vyatta@VPN# show interfaces openvpn
openvpn vtun0 {
encryption bf256
local-host 192.168.1.200
mode server
server {
client XXX {
ip 192.168.10.50
}
client XXX {
ip 192.168.10.30
}
client XXX {
ip 192.168.10.40
}
client XXX {
ip 192.168.10.20
}
client XXX {
ip 192.168.10.10
}
client XXX {
ip 192.168.10.100
}
subnet 192.168.10.0/24
}
tls {
ca-cert-file /root/Vyatta_CA.crt
cert-file /root/VyattaSRV.crt
crl-file /root/Vyatta_CA_rev.pem
dh-file /root/dh2048.pem
key-file /root/VyattaServer_key.key
}
}
[edit]
CONFIG USUARIOS VPN; CLIENTE OPENVPN GUI
remote trilezhome.dyndns.org
tls-client
dev tap
client
ifconfig 192.168.10.50 255.255.255.0
ca Vyatta_CA.crt
cert Vyatta_Client.crt
key VyattaClient_key.key
cipher BF-CBC
keysize 256
ERROR LOG OPENVPN GUI
Tue Jun 28 00:55:09 2011 OpenVPN 2.2.0 Win32-MSVC++ [SSL] [LZO2] built on Apr 26 2011
Tue Jun 28 00:55:09 2011 IMPORTANT: OpenVPN’s default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Tue Jun 28 00:55:09 2011 WARNING: using –pull/–client and –ifconfig together is probably not what you want
Tue Jun 28 00:55:09 2011 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Tue Jun 28 00:55:09 2011 NOTE: OpenVPN 2.1 requires ‘–script-security 2′ or higher to call user-defined scripts or executables
Tue Jun 28 00:55:10 2011 UDPv4 link local (bound): [undef]:1194
Tue Jun 28 00:55:10 2011 UDPv4 link remote: 80.102.151.202:1194
Tue Jun 28 00:55:10 2011 WARNING: ‘dev-type’ is used inconsistently, local=’dev-type tap’, remote=’dev-type tun’
Tue Jun 28 00:55:10 2011 WARNING: ‘link-mtu’ is used inconsistently, local=’link-mtu 1573′, remote=’link-mtu 1541′
Tue Jun 28 00:55:10 2011 WARNING: ‘tun-mtu’ is used inconsistently, local=’tun-mtu 1532′, remote=’tun-mtu 1500′
Tue Jun 28 00:55:10 2011 [VyattaSRV] Peer Connection Initiated with 80.102.151.202:1194
Tue Jun 28 00:55:12 2011 TAP-WIN32 device [Local Area Connection 3] opened: \\.Global{6046743C-F6A3-42B7-8EB4-616ECD5F8764}.tap
Tue Jun 28 00:55:12 2011 Notified TAP-Win32 driver to set a DHCP IP/netmask of 192.168.10.2/255.255.255.0 on interface {6046743C-F6A3-42B7-8EB4-616ECD5F8764} [DHCP-serv: 192.168.10.0, lease-time: 31536000]
Tue Jun 28 00:55:12 2011 Successful ARP Flush on interface [27] {6046743C-F6A3-42B7-8EB4-616ECD5F8764}
Tue Jun 28 00:55:17 2011 Initialization Sequence Completed
Tue Jun 28 01:55:10 2011 WARNING: ‘dev-type’ is used inconsistently, local=’dev-type tap’, remote=’dev-type tun’
Tue Jun 28 01:55:10 2011 WARNING: ‘link-mtu’ is used inconsistently, local=’link-mtu 1573′, remote=’link-mtu 1541′
Tue Jun 28 01:55:10 2011 WARNING: ‘tun-mtu’ is used inconsistently, local=’tun-mtu 1532′, remote=’tun-mtu 1500′
Tue Jun 28 02:31:57 2011 SIGTERM[hard,] received, process exiting
Saludos y espero respuesta!
Hola louder, he estado viendo la configuración que has hecho, estas son mis recomendaciones:
i. Usas una interfaz “tap” por alguna razón? lo digo por lo que veo en la config de cliente. Ten en cuenta que la interfaz por defecto es “tun” y si no lo especificas en la parte del servidor entonces habrá conflicto. Tap se usa para hacer bridges capa 2 en la VPN.
Solución: elimina la linea “dev tap” de la config del cliente.
ii. Por el “ifconfig” de la config del cliente entiendo que quieres asignarle así la IP al cliente una vez conectes la VPN, no? si es así la opción no es correcta, esa asignación ha de hacerla en servidor y dependiendo del nombre que tenga el certificado le asignará al cliente la IP correspondiente.
Solución: elimina tambien la linea del “ifconfig” en la config del cliente.
iii. Veo que en la parte de la LAN gestionada por Vyatta usas la red 192.168.1.0/24, esta red tiene que conocerla el PC que se conecta por la VPN ya que de otra forma el SO de ese cliente no sabrá como enrutar los paquetes destinados a esa red (no la conoce) y los enviará a su puerta de enlace que será el router al que se conecte y no a tu Vyatta.
Solucion: añade en la definición de tu interfaz vtun de Vyatta la siguiente linea:
openvpn-option \"--comp-lzo --dev-type tun --push route 192.168.1.0 255.255.255.0 --remote-cert-tls client --script-security 2\"
En ésta entrada tienes lo que significa cada parámetro.
Sugerencia: puedes tener problemas con los clientes VPN que se conecten a tu máquina Vyatta.
Por que? por la red que usas en la LAN 192.168.1.0/24. Piensa que la inmensa mayoria de los ADSLs domesticos usan precisamente esa red, resultado: no podrás ver las máquinas que hay al otro lado de la VPN o tendrás conflicto de IP al conectar el cliente.
Suerte!
Por cierto, esto me recuerda que falta una entrada explicando como se configura el cliente de OpenVPN… llegará en breve.
si si,
el ifconfig no haace nada realmente, lo dejé ahi simplemente puesto aunque no hacía nada, ahora va perfecto solido como una roca :D
era el dev tap que era dev tun
muchas gracias por tu inestimable ayuda.
Perfecto!
Lo que si te recomiendo es que te mires el tema de cambiar la red 192.168.1.0/24 de la LAN por otra y así evitarás futuros problemas.
Bueno, realmente como no se conectan a mi red .1.0/24 no me molesta realmente la IP que tenga. Con la subnet lo tengo bastante cuadrado y al firewall le doy permisos
Pingback: Configurar un cliente VPN de acceso remoto a Vyatta con OpenVPN GUI en GNU/Linux | openredes - Networking Open Source
Pingback: Configurar un cliente OpenVPN en Windows con OpenVPN GUI para conectar a una VPN RA en Vyatta | openredes - Networking Open Source
Pingback: Configuración del módulo firewall de Vyatta. Parte 12 – Configuración de firewall en las interfaces VPN de acceso remoto vtun0 y vtun1 (VPN RA) de openredesR1. | openredes - Networking Open Source
buenas yo tengo vyatta con la version 6.5R1 y no reconoce los comandos de este tutorial ya que me aparece error. men con que version de vyatta trabajastes y si tienes un tutorial para 6.5R1
Que comando son los que no te reconoce? puede ser que haya cambiado alguno, como el openvpn-option, de todas formas creo que como está en el tuto sigue funcionando.