Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
El objetivo de este manual es configurar un servidor OpenVPN que enrute solo la red visible del servidor OpenVPN o las redes que se quieran setear, excluyendo el tráfico externo a internet.
Pasos generales
- Actualizar e instalar paquetes necesarios.
- Configurar OpenVPN y crear usuarios.
- Configurar reglas de
iptables. - Generar certificados.
- Configurar EasyRSA y crear credenciales.
- Generar y exportar configuraciones para clientes.
Actualización e instalación de paquetes
- Inicie con una máquina Debian 12 lista para conexión SSH.
- Ejecute los siguientes comandos:
apt update && apt upgrade -y wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | gpg --dearmor -o /usr/share/keyrings/openvpn.ascecho "deb [signed-by=/usr/share/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian bullseye main" > /etc/apt/sources.list.d/openvpn.listapt updateapt install openvpn iptables-persistent net-tools -y
Creación de usuario para OpenVPN
- Cree un usuario y grupo exclusivo para el servicio:
adduser --system --shell /usr/sbin/nologin --no-create-home ovpngroupadd ovpnusermod -g ovpn ovpn
Configuración de OpenVPN
- Cree el archivo
/etc/openvpn/server.confcon la siguiente configuración base:dev tunpersist-keypersist-tuntopology subnetport 1194proto udpkeepalive 10 120ca /etc/openvpn/server/ca.crtcert /etc/openvpn/server/server.crtkey /etc/openvpn/server/server.keydh /etc/openvpn/server/dhp4096.pemserver 10.0.0.0 255.255.255.0push "route 10.1.0.0 255.255.0.0"user ovpngroup ovpntls-crypt /etc/openvpn/server/ta.keyauth SHA512tls-version-min 1.2tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256ncp-ciphers AES-256-GCM:AES-256-CBCifconfig-pool-persist ipp.txtstatus openvpn-status.loglog /var/log/openvpn.logverb 3
Configuración de iptables
- Edite las reglas en
/etc/iptables/rules.v4:*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADECOMMIT*filter-A INPUT -i lo -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT-A FORWARD -s 10.1.0.0/24 -i tun0 -o eth0 -j ACCEPT-A OUTPUT -o eth0 -j ACCEPTCOMMIT - Implemente las reglas:
iptables-restore < /etc/iptables/rules.v4
Configuración de sysctl para reenvío de IP
- Edite
/etc/sysctl.confy asegúrese de quenet.ipv4.ip_forward=1esté habilitado. - Recargue la configuración:
sysctl --system
Generación de certificados
- Cree la clave HMAC para los paquetes TLS:
openvpn --genkey --secret /etc/openvpn/server/ta.key - Genere el parámetro Diffie-Hellman:
openssl genpkey -genparam -algorithm DH -out /etc/openvpn/server/dhp4096.pem -pkeyopt dh_paramgen_prime_len:4096
Configuración de EasyRSA
- Configure el entorno para la CA:
make-cadir ~/ca && cd ~/caln -s openssl-1.0.0.cnf openssl.cnfnano vars - Defina las variables base en
vars:export KEY_COUNTRY="US"export KEY_PROVINCE="CA"export KEY_CITY="SanFrancisco"export KEY_ORG="Fort-Funston"export KEY_EMAIL="me@myhost.mydomain"export KEY_OU="MyOrganizationalUnit" - Genere credenciales:
source ./vars./clean-all./build-ca./build-key-server server
Configuración para el cliente
- Cree un script para generar configuraciones de cliente:
nano clientevpn.sh
Contenido del script, donde pone serverip=<poner-ip-publica-del-servidor-a-conectar>:#!/bin/bashclientuser=$1cd /root/ca && source ./vars && ./pkitool --pass $clientuserserverip="0.0.0.0"cat << EOF > $clientuser.ovpnclientdev tunproto udpremote $serverip 1194persist-keypersist-tun<ca>$(cat keys/ca.crt)</ca><cert>$(cat keys/$clientuser.crt)</cert><key>$(cat keys/$clientuser.key)</key><tls-crypt>$(cat keys/ta.key)</tls-crypt>EOFchmod +x $clientuser.ovpn - Ejecútelo para generar el archivo
.ovpn:./clientevpn.sh <nombre_cliente> - El archivo resultante será el configurador para el cliente OpenVPN.
Finalmente, reinicie la máquina para que los cambios surtan efecto:
reboot