Una "red privada virtual" de VPN es una red privada que oculta la identidad, el origen y los datos del usuario mediante el cifrado. Su uso principal es la privacidad de los datos del usuario y la conexión segura a internet. Como oculta datos, le permite acceder a datos que normalmente están bloqueados por restricciones geográficas.
OpenVPN es un software VPN de código abierto que es tanto un software como un protocolo en sí mismo. Es muy apreciado ya que continúa eludiendo los cortafuegos.
Este tutorial le mostrará paso a paso cómo instalar y configurar un servidor OpenVPN y conectarlo al cliente OpenVPN. Usaremos un servidor CentOS 8 para la instalación, el mismo procedimiento funcionará en Rocky Linux 8 y AlmaLinux 8 también.
Requisitos
Acceso a terminales
Una cuenta de usuario con privilegios sudo.
Actualización y mejora del sistema
Asegúrese de que su sistema esté actualizado actualizando y actualizando su sistema ejecutando el siguiente comando.
sudo dnf update && sudo dnf upgrade
Deshabilitar SELinux
A continuación, debe deshabilitar SELinux, ya que entra en conflicto con OpenVPN y evita que se inicie.
Para deshabilitar SELinux, abra el archivo de configuración de SELinux usando el siguiente comando.
sudo nano /etc/selinux/config
Una vez que el archivo se abre con el editor nano. Busque SELinux y cambie su valor a desactivado o simplemente reemplácelo con la siguiente línea de código.
SELINUX=disabled
Presione Ctrl+O y luego Ctrl+X para guardar y salir del archivo.
Habilitar el reenvío de IP
Ahora, debe habilitar el reenvío de IP para que los paquetes entrantes puedan reenviarse a diferentes redes.
Para habilitar el reenvío de IP, abra el archivo de configuración sysctl con el editor nano.
sudo nano /etc/sysctl.conf
Agregue el siguiente código al archivo.
net.ipv4.ip_forward = 1
Presione Ctrl+O y luego Ctrl+X.
Instalar servidor OpenVPN
Asegúrese de instalar el paquete epel-release.
sudo dnf install epel-release -y
Ahora, puede instalar OpenVPN usando el siguiente comando.
sudo dnf install openvpn -y
Ahora que OpenVPN está instalado. Navegue a su carpeta de instalación y descargue easy-rsa. Easy-RSA crea y administra autoridades de certificación (CA).
cd /etc/openvpn
sudo wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz
Extraiga el archivo zip descargado.
sudo tar -xvzf EasyRSA-unix-v3.0.6.tgz
Y mueva el archivo EasyRSA a su carpeta.
sudo mv EasyRSA-v3.0.6 easy-rsa
Configurar Easy-RSA
A continuación, debemos agregar y crear un certificado SSL. Para hacer eso, primero, navegue al directorio easy-rsa.
cd /etc/openvpn/easy-rsa
Para abrir el archivo vars en el editor nano, ejecute el siguiente comando.
sudo nano vars
Ahora copie y pegue las siguientes líneas de código en el archivo vars.
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 "osradar CERTIFICATE AUTHORITY" set_var EASYRSA_REQ_EMAIL "" set_var EASYRSA_REQ_OU "osradar 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 "osradar CERTIFICATE AUTHORITY" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf" set_var EASYRSA_DIGEST "sha256"
Puede cambiar el valor de país, ciudad, provincia y correo electrónico según sus requisitos.
Presione Ctrl+O y luego Ctrl+X.
Ahora, inicie el directorio PKI con el siguiente comando.
./easyrsa init-pki
Finalmente, puede crear su certificado de CA.
sudo ./easyrsa build-ca
Generar archivos de certificado de servidor
Utilice el siguiente comando para obtener su par de claves y solicitud de certificado.
sudo ./easyrsa gen-req vitux-server nopass
Firme la clave del servidor con CA
Para firmar su clave de servidor con la CA, ejecute el siguiente comando.
sudo ./easyrsa sign-req server vitux-server
Necesitamos la clave Diffie-Hellman para fines de intercambio de claves. Genere la clave ejecutando el siguiente comando.
sudo ./easyrsa gen-dh
A continuación, copie todos estos archivos en /etc/openvpn/server/ directorio.
cp pki/ca.crt /etc/openvpn/server/ cp pki/dh.pem /etc/openvpn/server/ cp pki/private/vitux-server.key /etc/openvpn/server/ cp pki/issued/vitux-server.crt /etc/openvpn/server/
Generar clave de cliente y certificado
Puede obtener la clave de cliente ejecutando el siguiente comando.
sudo ./easyrsa gen-req client nopass
A continuación, firme su clave de cliente con el certificado CA generado.
sudo ./easyrsa sign-req client client
Copie estos archivos en /etc/openvpn/client/ directorio
cp pki/ca.crt /etc/openvpn/client/ cp pki/issued/client.crt /etc/openvpn/client/ cp pki/private/client.key /etc/openvpn/client/
Configurar servidor OpenVPN
Cree y abra un nuevo archivo de configuración en el directorio del cliente con el siguiente comando.
sudo nano /etc/openvpn/server/server.conf
Luego agregue las siguientes líneas de código en el archivo.
port 1194 proto udp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/vitux-server.crt key /etc/openvpn/server/vitux-server.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 nobody log-append /var/log/openvpn.log verb 3
Presione Ctrl+O y Ctrl+X.
Iniciar y habilitar el servicio OpenVPN
Su OpenVPN está listo para iniciarse. Inicie y habilite el servidor usando los siguientes comandos.
sudo systemctl start [email protected] sudo systemctl enable [email protected]
Puede ver y verificar el estado activo con el siguiente comando.
systemctl status [email protected]
Se creará una nueva interfaz de red en el inicio exitoso del servidor OpenVPN. Ejecute el siguiente comando para ver los detalles.
ifconfig
Generar el archivo de configuración del cliente
El siguiente paso es conectar el cliente al servidor OpenVPN. Necesitamos el archivo de configuración del cliente para eso. Para generar el archivo de configuración del cliente, ejecute el siguiente comando.
sudo nano /etc/openvpn/client/client.ovpn
Ahora, copie y pegue el siguiente código en el archivo.
client dev tun proto udp remote vpn-server-ip 1194 ca ca.crt cert client.crt key client.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
Presione Ctrl+O para guardar los cambios y presione Ctrl+X para salir del editor.
Configurar enrutamiento
Establezca la configuración del servicio OpenVPN con los siguientes comandos para permitirlo a través del firewall.
firewall-cmd --permanent --add-service=openvpn firewall-cmd --permanent --zone=trusted --add-service=openvpn firewall-cmd --permanent --zone=trusted --add-interface=tun0
firewall-cmd --add-masquerade firewall-cmd --permanent --add-masquerade
Configure el enrutamiento para reenviar el tráfico entrante desde la VPN a la red local.
routecnf=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}') firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $routecnf -j MASQUERADE
Vuelva a cargar para que los cambios sean efectivos.
firewall-cmd --reload
Instalar y usar OpenVPN en la máquina del cliente
Tienes que instalar epel-release y OpenVPN como lo hiciste en el lado del servidor.
dnf install epel-release -y dnf install openvpn -y
Ahora copie los archivos de configuración del cliente desde el servidor usando el comando que se indica a continuación.
sudo scp -r [email protected]:/etc/openvpn/client .
Vaya al directorio del cliente y conéctese al servidor OpenVPN usando los siguientes comandos.
cd client openvpn --config client.ovpn
Ejecute ifconfig para ver la dirección IP asignada.
ifconfig tun0