Este artículo explica cómo instalar OpenVPN y configurar el acceso a una VPN en Devuan.
Para comenzar, instalar OpenVPN con el gestor de paquetes APT:
root@vaio:/home/emi# apt-get install openvpn
Cambiar al directorio de configuración de OpenVPN y traer el certificado y clave del cliente, junto con el certificado de la CA de easy-rsa utilizando scp:
root@vaio:/home/emi# cd /etc/openvpnEn este ejemplo el certificado, clave y certificado de la CA del cliente "emi" se han compactado en un archivo emi.tar.gz
previamente:
root@vaio:/etc/openvpn# scp -P 2222 admin@vpn.linuxito.com:/etc/openvpn/easy-rsa/keys/emi.tar.gz .
Extraer los certificados y clave privada del cliente:
root@vaio:/etc/openvpn# tar xzf emi.tar.gz root@vaio:/etc/openvpn# ll total 44 -rw-r--r-- 1 root root 1846 Jun 18 2018 ca.crt drwxr-xr-x 2 root root 4096 Jul 4 19:36 client -rw-r--r-- 1 root root 3585 Jul 4 19:27 client.conf -rw-r--r-- 1 root root 5652 Sep 5 2018 emi.crt -rw------- 1 root root 1704 Sep 5 2018 emi.key -rw-r--r-- 1 root root 5652 Jul 4 19:22 emi.tar.gz drwxr-xr-x 2 root root 4096 Mar 7 17:39 server -rw------- 1 root root 636 Jun 26 2018 ta.key -rwxr-xr-x 1 root root 1468 Mar 7 17:39 update-resolv-conf
Copiar la configuración de cliente de ejemplo provista por el paquete openvpn
:
root@vaio:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf . root@vaio:/etc/openvpn# nano client.conf
Editar el archivo y hacer los ajustes necesarios para que coincida con la configuración del servidor de VPN:
remote vpn.linuxito.com 1194 proto udp dev tun ca ca.crt cert emi.crt key emi.key tls-auth ta.key 1 comp-lzo
En este ejemplo el servidor utiliza UDP, autenticación TLS y compresión.
Ahora es posible verificar el funcionamiento ejecutando openvpn
con el archivo de configuración como parámetro:
root@vaio:/etc/openvpn# openvpn client.conf Thu Jul 4 21:09:32 2019 OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 7 2019 Thu Jul 4 21:09:32 2019 library versions: OpenSSL 1.0.2r 26 Feb 2019, LZO 2.08 Thu Jul 4 21:09:32 2019 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Thu Jul 4 21:09:32 2019 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Thu Jul 4 21:09:32 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]192.168.45.10:1194 Thu Jul 4 21:09:32 2019 Socket Buffers: R=[212992->212992] S=[212992->212992] Thu Jul 4 21:09:32 2019 UDP link local: (not bound) Thu Jul 4 21:09:32 2019 UDP link remote: [AF_INET]192.168.45.10:1194 Thu Jul 4 21:09:32 2019 TLS: Initial packet from [AF_INET]192.168.45.10:1194, sid=40cad871 39d6e2a6 Thu Jul 4 21:09:33 2019 VERIFY OK: depth=1, C=AR, ST=Buenos Aires, L=Bahía Blanca, O=Linuxito, OU=VPN, CN=Linuxito CA, name=EasyRSA, emailAddress=emiliano@linuxito.com Thu Jul 4 21:09:33 2019 VERIFY KU OK Thu Jul 4 21:09:33 2019 Validating certificate extended key usage Thu Jul 4 21:09:33 2019 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication Thu Jul 4 21:09:33 2019 VERIFY EKU OK Thu Jul 4 21:09:33 2019 VERIFY OK: depth=0, C=AR, ST=Buenos Aires, L=Bahía Blanca, O=Linuxito, OU=VPN, CN=server, name=EasyRSA, emailAddress=emiliano@linuxito.com Thu Jul 4 21:09:33 2019 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA Thu Jul 4 21:09:33 2019 [server] Peer Connection Initiated with [AF_INET]192.168.45.10:1194 Thu Jul 4 21:09:34 2019 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Thu Jul 4 21:09:34 2019 PUSH: Received control message: 'PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.10 10.8.0.9,peer-id 0,cipher AES-256-GCM' Thu Jul 4 21:09:34 2019 OPTIONS IMPORT: timers and/or timeouts modified Thu Jul 4 21:09:34 2019 OPTIONS IMPORT: --ifconfig/up options modified Thu Jul 4 21:09:34 2019 OPTIONS IMPORT: route options modified Thu Jul 4 21:09:34 2019 OPTIONS IMPORT: peer-id set Thu Jul 4 21:09:34 2019 OPTIONS IMPORT: adjusting link_mtu to 1625 Thu Jul 4 21:09:34 2019 OPTIONS IMPORT: data channel crypto options modified Thu Jul 4 21:09:34 2019 Data Channel: using negotiated cipher 'AES-256-GCM' Thu Jul 4 21:09:34 2019 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key Thu Jul 4 21:09:34 2019 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key Thu Jul 4 21:09:34 2019 ROUTE_GATEWAY 192.168.100.1/255.255.255.0 IFACE=wlan0 HWADDR=08:3e:8e:d1:9b:53 Thu Jul 4 21:09:34 2019 TUN/TAP device tun0 opened Thu Jul 4 21:09:34 2019 TUN/TAP TX queue length set to 100 Thu Jul 4 21:09:34 2019 /sbin/ip link set dev tun0 up mtu 1500 Thu Jul 4 21:09:34 2019 /sbin/ip addr add dev tun0 local 10.8.0.10 peer 10.8.0.9 Thu Jul 4 21:09:34 2019 /sbin/ip route add 10.8.0.1/32 via 10.8.0.9 Thu Jul 4 21:09:34 2019 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this Thu Jul 4 21:09:34 2019 Initialization Sequence Completed
Si todo funciona correctamente, debe finalizar la conexión con la VPN con la sentencia "Initialization Sequence Completed".
Editar la configuración por defecto del servicio:
# nano /etc/default/openvpn
Especificar el nombre del archivo de configuración (sin la extensión .conf
) que se debe iniciar automáticamente:
AUTOSTART="client"
Finalmente, iniciar el servicio:
root@vaio:/etc/openvpn# /etc/init.d/openvpn start [ ok ] Starting virtual private network daemon: client.
Se crea la interfaz "tun0" con una dirección IP opbtenida por DHCP desde el servidor VPN:
root@vaio:/etc/openvpn# ip a s tun0 5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.8.0.10 peer 10.8.0.9/32 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::be6:3d66:7178:9ace/64 scope link stable-privacy valid_lft forever preferred_lft forever
En caso de necesitar un nuevo certificado cliente, se deberá crear desde el servidor de VPN utilizando los utilitarios provistos por EasyRSA. Para ello, revisar lo siguientes artículos:
- Mantenimiento de la CA de OpenVPN utilizando "easy-rsa"
- Cómo revocar y listar certificados revocados de OpenVPN (easy-rsa)
En caso de necesitar montar un servidor de VPN:
- Instalación y configuración de OpenVPN
- Cómo montar un servidor de VPN con OpenVPN en Debian 9 (systemd)