Una red privada virtual (VPN) es una conexión segura y encriptada entre dos redes y usuarios individuales que protege su conexión a Internet y su privacidad en línea. OpenVPN es un protocolo VPN gratuito y de código abierto que implementa técnicas para crear un punto a punto seguro en configuraciones enrutadas. Es multiplataforma y compatible con todos los principales sistemas operativos.
En este tutorial, le mostraremos cómo instalar y configurar OpenVPN en el servidor Debian 10.
Requisitos
- Debian 10 VPS (usaremos nuestro plan NVMe 2 VPS)
- Acceso a la cuenta de usuario root (o acceso a una cuenta de administrador con privilegios de root)
Paso 1:Inicie sesión en el servidor y actualice los paquetes del sistema operativo del servidor
Primero, inicie sesión en su servidor Debian 10 a través de SSH como usuario root:
ssh root@IP_Address -p Port_number
Deberá reemplazar 'IP_Address' y 'Port_number' con la dirección IP y el número de puerto SSH respectivos de su servidor. Además, reemplace "root" con el nombre de usuario de la cuenta de administrador si es necesario.
Antes de comenzar, debe asegurarse de que todos los paquetes del sistema operativo Debian instalados en el servidor estén actualizados. Puede hacerlo ejecutando los siguientes comandos:
apt-get update -y apt-get upgrade -y
Paso 2:Instalar OpenVPN y EasyRSA
De forma predeterminada, OpenVPN se incluye en el repositorio predeterminado de Debian. Puede instalarlo con el siguiente comando:
apt-get install openvpn -y
Una vez que se haya instalado el paquete OpenVPN, deberá descargar EasyRSA en su sistema.
EasyRSA es una utilidad de línea de comandos para crear y administrar una CA de PKI. Le permite generar varios tipos de certificados.
Se utiliza para crear una autoridad de certificación raíz y solicitar y firmar certificados para OpenVPN.
Puede descargar la última versión de EasyRSA desde el repositorio de Git usando el siguiente comando:
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Una vez que se complete la descarga, extraiga el archivo descargado usando el siguiente comando:
tar -xvzf EasyRSA-3.0.8.tgz
A continuación, copie el directorio extraído en el directorio de OpenVPN:
cp -r EasyRSA-3.0.8 /etc/openvpn/easy-rsa
En este punto, OpenVPN y EasyRSA están instalados en su servidor.
Paso 3:crear la autoridad de certificación
A continuación, deberá crear la Autoridad de certificación (CA) para OpenVPN.
Primero, cambie el directorio a EasyRSA con el siguiente comando:
cd /etc/openvpn/easy-rsa
A continuación, deberá crear un archivo vars dentro de este. Un archivo vars es un archivo simple que Easy-RSA obtendrá para la configuración.
Puedes crearlo con el siguiente comando:
nano vars
Agregue las siguientes líneas según sus necesidades:
set_var EASYRSA "$PWD" set_var EASYRSA_PKI "$EASYRSA/pki" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "USA" set_var EASYRSA_REQ_PROVINCE "Newyork" set_var EASYRSA_REQ_CITY "Newyork" set_var EASYRSA_REQ_ORG "ROSE CERTIFICATE AUTHORITY" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "ROSE EASY CA" set_var EASYRSA_KEY_SIZE 2048 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 365 set_var EASYRSA_NS_SUPPORT "no" set_var EASYRSA_NS_COMMENT "ROSE CERTIFICATE AUTHORITY" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf" set_var EASYRSA_DIGEST "sha256"
Guarde y cierre el archivo cuando haya terminado.
A continuación, inicie la infraestructura de clave pública con el siguiente comando:
./easyrsa init-pki
Deberías obtener el siguiente resultado:
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
A continuación, deberá ejecutar el comando build-ca para crear el archivo ca.crt y ca.key. Puede ejecutarlo con el siguiente comando:
./easyrsa build-ca nopass
Se le harán varias preguntas como se muestra a continuación:
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) ...+++++ ......................................................................+++++ e is 65537 (0x010001) You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:vpnserver CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/easy-rsa/pki/ca.crt
Paso 4:generar certificados de servidor y archivos de claves
A continuación, deberá utilizar el comando gen-req seguido del nombre común para generar la clave del servidor.
./easyrsa gen-req vpnserver nopass
Debería ver el siguiente resultado:
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating a RSA private key .......................................................+++++ ....+++++ writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1428.Angtmh/tmp.C9prw4' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [vpnserver]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/pki/reqs/vpnserver.req key: /etc/openvpn/easy-rsa/pki/private/vpnserver.key
A continuación, deberá firmar la clave del servidor vpn con su certificado de CA. Puedes hacerlo con el siguiente comando:
./easyrsa sign-req server vpnserver
Deberías obtener el siguiente resultado:
Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'vpnserver' Certificate is to be certified until Feb 6 14:38:52 2022 GMT (365 days) Write out database with 1 new entries Data Base Updated Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnserver.crt
A continuación, deberá generar una clave fuerte de Diffie-Hellman para usarla en el intercambio de claves. Puede generarlo con el siguiente comando:
./easyrsa gen-dh
Paso 5:Copiar todo el certificado y el archivo de clave
A continuación, deberá copiar todo el certificado y el archivo de clave en el directorio /etc/openvpn/server/. Puede copiar el usando el siguiente comando:
cp pki/ca.crt /etc/openvpn/server/ cp pki/dh.pem /etc/openvpn/server/ cp pki/private/vpnserver.key /etc/openvpn/server/ cp pki/issued/vpnserver.crt /etc/openvpn/server/
Paso 6:Crear certificado de cliente y archivo de claves
A continuación, deberá generar un certificado y un archivo de clave para el sistema cliente.
Puedes crearlo con el siguiente comando:
./easyrsa gen-req vpnclient nopass
Deberías obtener el siguiente resultado:
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating a RSA private key ....+++++ .................................+++++ writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1563.TeOf5v/tmp.i4YxLz' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [vpnclient]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/pki/reqs/vpnclient.req key: /etc/openvpn/easy-rsa/pki/private/vpnclient.key
A continuación, firme la clave del cliente con el siguiente comando:
./easyrsa sign-req client vpnclient
Deberías obtener el siguiente resultado:
Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'vpnclient' Certificate is to be certified until Feb 6 14:43:18 2022 GMT (365 days) Write out database with 1 new entries Data Base Updated Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnclient.crt
A continuación, copie todos los certificados y claves del cliente en el directorio /etc/openvpn/client/.
cp pki/ca.crt /etc/openvpn/client/ cp pki/issued/vpnclient.crt /etc/openvpn/client/ cp pki/private/vpnclient.key /etc/openvpn/client/
Paso 7:configurar el servidor OpenVPN
En este punto, tanto el certificado como la clave del servidor y del cliente están listos. Ahora, deberá crear un archivo de configuración de OpenVPN y definir todos los certificados y claves.
nano /etc/openvpn/server.conf
Agregue las siguientes líneas:
port 1194 proto udp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/vpnserver.crt key /etc/openvpn/server/vpnserver.key dh /etc/openvpn/server/dh.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" duplicate-cn cipher AES-256-CBC tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache keepalive 20 60 persist-key persist-tun compress lz4 daemon user nobody group nogroup log-append /var/log/openvpn.log verb 3
Guarde y cierre el archivo, luego inicie el servicio OpenVPN y habilítelo para que se inicie al reiniciar el sistema:
systemctl start openvpn@server systemctl enable openvpn@server
Si todo está bien, se creará una nueva interfaz. Puede verificarlo usando el siguiente comando:
ip a show tun0
Deberías obtener el siguiente resultado:
4: tun0: mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::153d:f29:39a2:571a/64 scope link stable-privacy valid_lft forever preferred_lft forever
Paso 8:habilitar el reenvío de IP
El reenvío de IP permite que su sistema operativo acepte los paquetes de red entrantes y los reenvíe a la otra red. Puede habilitarlo con el siguiente comando:
nano /etc/sysctl.conf
Descomente o agregue la siguiente línea:
net.ipv4.ip_forward = 1
Guarde el archivo y luego aplique los cambios de configuración con el siguiente comando:
sysctl -p
Paso 9:Instalar y configurar el cliente OpenVPN
A continuación, deberá instalar el cliente OpenVPN en otro sistema y conectarse al servidor OpenVPN.
Primero, instale OpenVPN con el siguiente comando:
apt-get install openvpn -y
Una vez instalado, copie todo el certificado y la clave del Cliente del servidor OpenVPN a la máquina del Cliente. Puedes hacerlo con el siguiente comando:
scp -r root@vpn-server-ip:/etc/openvpn/client .
A continuación, cambie el directorio a cliente y cree un archivo de configuración de cliente:
cd client nano client.ovpn
Agregue las siguientes líneas:
client dev tun proto udp remote vpn-server-ip 1194 ca ca.crt cert vpnclient.crt key vpnclient.key cipher AES-256-CBC auth SHA512 auth-nocache tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 resolv-retry infinite compress lz4 nobind persist-key persist-tun mute-replay-warnings verb 3
Guarde y cierre el archivo, luego conéctese a su servidor OpenVPN con el siguiente comando:
openvpn --config client.ovpn
Una vez que se haya establecido la conexión, debería obtener el siguiente resultado:
Sat Feb 6 14:53:50 2021 SENT CONTROL [vpnserver]: 'PUSH_REQUEST' (status=1) Sat Feb 6 14:53:50 2021 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: timers and/or timeouts modified Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: --ifconfig/up options modified Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: route options modified
Puede verificar la interfaz OpenVPN en la máquina cliente con el siguiente comando:
ip a show tun0
Deberías obtener el siguiente resultado:
4: tun0: mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::9206:94d7:8fb2:6b21/64 scope link stable-privacy valid_lft forever preferred_lft forever
Por supuesto, no es necesario que instale OpenVPN si utiliza uno de nuestros servicios de alojamiento administrado de OpenVPN, en cuyo caso simplemente puede solicitar a nuestros administradores expertos de Linux que lo instalen por usted. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.
PD . Si le gustó esta publicación sobre cómo instalar OpenVPN en Ubuntu, compártala con sus amigos en las redes sociales usando los botones a la izquierda o simplemente deje una respuesta a continuación. Gracias.