Biblioteca de Conocimiento Instrucciones sencillas para trabajar con el servicio Profitserver
Main Biblioteca de Conocimiento Configuración del servidor VPN en Linux: ¿PPTP o OpenVPN?

Configuración del servidor VPN en Linux: ¿PPTP o OpenVPN?


Hoy en día, la tecnología VPN se está volviendo más popular. Los usuarios comunes usan VPN para acceder a Internet de forma segura. También ayuda a sortear sitios web y servicios bloqueados localmente y a protegerse contra posibles ataques maliciosos externos. Al conectarse a un servidor VPN, existe un túnel seguro entre su computadora y el servidor, al que no se puede acceder desde el exterior, por lo que el servidor VPN se convierte en su punto de acceso a Internet. Existen muchos servicios VPN, tanto gratuitos como de pago, pero si por alguna razón no le funcionan, siempre puede configurar su propio servidor VPN.

Para ejecutar su propia VPN, debe: alquilar servidor VPSExisten diferentes programas que permiten crear una conexión VPN. Se diferencian entre sí por los sistemas operativos compatibles y los algoritmos utilizados. Analizaremos dos enfoques independientes para configurar un servidor VPN. El primero se basa en el protocolo PPTP, que ya se considera obsoleto y poco seguro, pero es muy fácil de configurar. El otro utiliza el software moderno y seguro OpenVPN, pero requiere la instalación de una aplicación cliente de terceros y un proceso de configuración más exhaustivo.

En nuestro entorno de prueba, usaremos un servidor virtual con Ubuntu Server 18.04. Se desactivará el firewall del servidor, ya que su configuración merece un artículo aparte. Describiremos el proceso de configuración en Windows 10.

PREPARACIÓN

Independientemente del servidor VPN que elija, el acceso a Internet se configurará mediante un sistema operativo integrado. Para acceder a Internet a través de una interfaz de servicio externa, debe permitir el reenvío de paquetes entre las interfaces y configurar la traducción de direcciones de red.

Para activar el reenvío de paquetes, abra el archivo “/etc/sysctl.conf” y cambio “net.ipv4.ip_forward” valor del parámetro en 1.

Activar el reenvío de paquetes para la configuración de VPN

Para aplicar los cambios sin reiniciar el equipo, ejecute el comando

sudo sysctl -p /etc/sysctl.conf

La traducción de direcciones de red se configura mediante iptablesPrimero, verifique el nombre de su interfaz de red externa ejecutando el comando “Mostrar enlace IP” Lo necesitarás en el siguiente paso. Nuestro nombre es “ens3”.

mostrar enlace ip

Habilite la traducción de direcciones de red en su interfaz externa para todos los nodos de red local.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Tenga en cuenta que debe especificar el nombre real de la interfaz de su servidor, puede ser diferente al nuestro.

De forma predeterminada, todas las reglas creadas por iptables se restablecen después de reiniciar el servidor. Para evitarlo, utilice “iptables-persistentes” Utilidad. Instale el siguiente paquete:

sudo apt install iptables-persistent

En algún momento durante la instalación, verá una ventana de configuración que le sugerirá guardar las reglas actuales de iptables. Dado que las reglas ya están definidas, simplemente confirme y haga clic en "Sí" Dos veces. A partir de ahora, las reglas se aplicarán automáticamente tras reiniciar el servidor.

Activar la traducción de direcciones

Servidor PPTP

Configuración del servidor

Instalar el paquete:

sudo apt install pptpd

Una vez finalizada la instalación, abra el archivo “/etc/pptpd.conf” en cualquier editor de texto y edítelo así:

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

Después de eso, edita el archivo. “/etc/ppp/pptpd-opciones”La mayoría de los parámetros están configurados de forma predeterminada.

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

En el siguiente paso, deberá crear un registro para las conexiones de clientes. Supongamos que desea agregar un usuario. “usuario VPN” con contraseña "1" y permitirle el direccionamiento dinámico. Abra el archivo. “/etc/ppp/chap-secrets” y agregue la siguiente línea con los parámetros del usuario al final del archivo:

vpnuser pptpd 1 *

“pptpd” valor es el nombre del servicio que especificamos en el archivo “opciones pptpd”. En lugar de “*” Puede especificar una dirección IP fija. Como resultado, el archivo... “secretos de chicos” Debe verse así:

Configuración del servidor VPN

Para aplicar la configuración, restablezca el pptpd servicio y agregarlo a la carga automática.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

La configuración del servidor ha finalizado.

Configuración del cliente

Abra el "Comienzo" - "Configuraciones" - Red e Internet - "VPN" y haga clic “Agregar una conexión VPN”

Configurar el cliente para la conexión VPN

Introduzca los parámetros de conexión en la ventana abierta y haga clic "Guardar"

  • Proveedor de VPN: “Windows (integrado)”
  • Nombre de la conexión: “vpn_connect” (puede elegir cualquier nombre)
  • Nombre o dirección del servidor: (especifique la dirección IP externa del servidor)
  • Tipo de VPN: “Automático”
  • Tipo de información de inicio de sesión: “Nombre de usuario y contraseña”
  • Nombre de usuario: usuario vpn (nombre especificado en el archivo “chap-secrets” en el servidor)
  • Contraseña: 1 (como en el archivo “cap-secrets”)

Después de guardar los parámetros, verá la nueva conexión VPN en la ventana. Haga clic izquierdo en la conexión y seleccione "Connect"En caso de una conexión exitosa, verá "Conectado" de estado.

Agregar conexión VPN

En las Opciones, encontrará las direcciones internas del cliente y del servidor. Campo “Dirección de destino” muestra la dirección del servidor externo.

Cómo configurar un servidor VPN por ti mismo

Cuando esté conectado, la dirección IP interna del servidor, 172.16.0.1 En nuestro caso, se convierte en la puerta de enlace predeterminada para todos los paquetes salientes.

Comprobar la dirección IP externa

Al usar cualquier servicio en línea, puede asegurarse de que la dirección IP externa de la computadora ahora sea la misma que la dirección IP de su servidor VPN.

Servidor OpenVPN

Configuración del servidor

Aumentemos el nivel de permisos del usuario actual porque para nuestra configuración posterior necesitaremos acceso root.

sudo -s

Instalar todos los paquetes necesarios. Necesitaremos “Easy-RSA” Paquete para gestionar claves de cifrado.

apt install openvpn easy-rsa iptables-persistent

Permitir conexiones entrantes en el puerto 1194 a través del protocolo UDP y aplicar reglas de iptables.

sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

sudo netfilter-persistent save

Cree un directorio con los archivos copiados del paquete “Easy-RSA” y navegue hasta él.

make-cadir ~/openvpn

cd ~/openvpn

Generar Infraestructura de Clave Pública (PKI).

./easyrsa init-pki

Generar el certificado raíz de la autoridad de certificación (CA).

./easyrsa build-ca

Durante el proceso de creación, se le pedirá que establezca y recuerde una contraseña. También deberá responder preguntas e ingresar información sobre el propietario de la clave. Puede dejar los valores predeterminados entre corchetes. Presione "Enter" para finalizar la entrada.

Generar una clave privada y una solicitud de certificado. Como argumento, especifique un nombre arbitrario; en nuestro caso, es "servidor-vpn".

./easyrsa gen-req vpn-server nopass

Deje el valor del Nombre común como predeterminado.

Firme la solicitud de certificado de servidor generada.

./easyrsa sign-req server vpn-server

En este paso, responda "sí" para confirmar la firma, luego ingrese la contraseña que se creó durante la generación del certificado raíz.

Generar parámetros Diffie-Hellman. Estos parámetros se utilizan para el intercambio seguro de claves entre el servidor y el cliente.

./easyrsa gen-dh

Se han generado todos los archivos necesarios. Cree una carpeta "keys" en el directorio de trabajo de OpenVPN para almacenar las claves y copiar allí los archivos creados.

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

Configurar NAT usando iptables reglas. Crea un archivo llamado nat y abrirlo para editarlo en el /etc/openvpn/ directorio.

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

Guarde el archivo y hágalo ejecutable.

sudo chmod 755 /etc/openvpn/nat

Copiar la plantilla de configuración del servidor.

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

Abra el archivo “/etc/openvpn/server.conf” Para editar, asegúrese de que contenga las siguientes líneas y edítelas si es necesario:

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

Habilitar el reenvío de tráfico en el servidor.

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

Inicie OpenVPN para aplicar la configuración.

systemctl restart openvpn@server

¡La configuración del servidor está terminada!

Configuración del cliente

Vaya al sitio web oficial de OpenVPN “https://openvpn.net”, ir a la “COMUNIDAD” .

Utilice el proyecto oficial “https://openvpn.net”, incluido en la sección “COMUNIDAD”.

Desplázate hacia abajo y descarga el instalador correspondiente a la versión de tu sistema operativo. En nuestro caso, es Windows 11 ARM64.

Prolistyvaem вниз и скачиваем и нсталлятор для своей оперсии операционной системы. Estamos usando este Windows 11 ARM64.

Instalar la aplicación dejando todos los parámetros por defecto.

En la siguiente etapa, deberá preparar el siguiente archivo en el servidor y transferirlo a la computadora cliente:

  • claves públicas y privadas;
  • copia de la clave del centro de certificación;
  • plantilla de archivo de configuración.

Conéctese al servidor, eleve los privilegios y navegue hasta nuestro directorio creado "~/openvpn".

sudo -s

cd ~/openvpn

Generar una clave privada y una solicitud de certificado para el cliente. Como argumento, especifique un nombre arbitrario; en nuestro caso, es "cliente1".

./easyrsa gen-req client1 nopass

Introduzca la contraseña que configuramos al crear el certificado raíz y deje el valor Nombre común como predeterminado.

Вводим пароль, который мы устанавливали при создании корневого сертификата и оставляем значение Nombre común по умолчанию.

Firme la solicitud de certificado de cliente generada.

./easyrsa sign-req client client1

En este paso, responda "sí" para confirmar la firma, luego ingrese la contraseña que se creó durante la generación del certificado raíz.

На этом шаге отвечаем "sí" для подтверждения подписи, после чего вводим пароль, который был создан при создании корневого сертификата.

Para mayor comodidad, crearemos una carpeta llamada 'client1' en el directorio de inicio y copiaremos allí todos los archivos que se transferirán a la computadora cliente.

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

Copie la plantilla del archivo de configuración del cliente en el mismo directorio. Cambie la extensión del archivo a “.ovpn” mientras copia.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

Cambiar el propietario del directorio y todos los archivos “~/cliente1/” Para poder distribuirlos al cliente. Hagamos “Mihail” el propietario en nuestro caso.

chown -R mihail:mihail ~/client1

Vaya al equipo cliente y copie el contenido del “~/cliente1/” carpeta. Puedes hacerlo con la ayuda de “PSCP” utilidad, que va con Putty.

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

Puede almacenar archivos clave “ca.crt”, “cliente1.crt”, “cliente1.clave” Donde quieras. En nuestro caso, están en esta carpeta. “c:\Archivos de programa\OpenVPN\keys”, y modelamos el archivo de configuración “cliente.ovpn” dentro del “c:\Archivos de programa\OpenVPN\config” directorio.

Ahora, configuremos el cliente. Abra el archivo. “c:\Archivos de programa\OpenVPN\config\client.ovpn” en un editor de texto y edite las siguientes líneas:

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

Deje el resto intacto.

Guarde el archivo e inicie la aplicación cliente Interfaz gráfica de usuario de OpenVPN.

Configuración de VPN finalizada

Haga clic derecho en el ícono de la aplicación en la barra de tareas y seleccione "Connect"Si la conexión es exitosa el icono se volverá verde.

Utilice cualquier servicio en línea para asegurarse de que su dirección IP pública haya cambiado y ahora sea la misma que la dirección IP del servidor.

❮ Artículo anterior Cómo configurar Wireguard VPN en su servidor
Siguiente artículo ❯ Configuración del servidor FTP

Pregúntenos sobre VPS

Siempre estamos listos para responder sus preguntas en cualquier momento del día o de la noche.