TL; DR Este artículo describe la forma más fácil de configurar un servidor VPN, cuya dirección IP para conectar clientes VPN es diferente de la dirección IP desde la cual los clientes acceden a Internet.¿Utiliza una VPN para proteger la privacidad en Internet y alquila su propio servidor para esto? ¿Eres el único cliente que se conecta a este servidor en todo el mundo? ¿Crees que es tan difícil encontrar tu dirección IP real? Con la entrada en vigor del paquete Spring, se vuelve mucho más fácil.
La doble VPN es un tema popular en torno al cual hay mucha especulación. A menudo, este término se denomina tecnología completamente diferente, pero casi siempre significa conexión a Internet y puntos de salida separados en el nivel de las direcciones IP. Consideraremos la forma más fácil de configurar un servidor VPN en este modo, que no requiere configuración adicional en el lado del servidor y le permite obtener la velocidad máxima y la latencia más baja.
Modelo de amenaza
Para protegerse de algo, debe comprender claramente el modelo de amenaza. No discutiremos las nuevas leyes que requieren que los proveedores almacenen todo el tráfico de clientes, pero definitivamente podemos decir que los datos de conexión, los llamados Netflow, el almacenamiento es bastante simple, y se ha hecho durante mucho tiempo. Es decir, se registra el hecho de conectar una dirección IP condicional
1.1.1.1
a la dirección
2.2.2.2
en un momento determinado del día.
Tener acceso a dicha información en la escala del proveedor, ciudad o país, es suficiente simplemente establecer quién se esconde detrás de la VPN.
Para aumentar el nivel de privacidad cuando se utiliza una VPN, debe separar el punto de conexión y el punto de acceso a Internet a nivel de IP. En la imagen de arriba, nuestro usuario está detrás de la cerca bajo el escrutinio de Irina Yarovoy. Irina recuerda estrictamente todas las conexiones que pasan por la cerca. El usuario, como ciudadano decente, se conecta a la dirección
good.citizen.vpn
, mientras regresa de la dirección
super.cool.guy.vpn
. Como resultado, para Irina, estas dos conexiones parecen desconectadas.
¿Qué son las VPN duales?
Bajo el nombre de VPN "doble", a menudo se entienden diferentes cosas, pero casi siempre significa nodos de conexión y acceso a Internet separados geográficamente o en el nivel de la red. A veces es solo un truco de marketing de los proveedores de VPN, lo que no significa absolutamente nada, tales servicios se pueden llamar VPN "triples" y "cuádruples".
Analizaremos los esquemas más típicos que se utilizan en la práctica.
VPN entre servidores
La forma mas comun. En este modo, el cliente establece una conexión VPN solo con el primer servidor. El túnel hacia el segundo se configura en el primer servidor, y todo el tráfico del cliente va al segundo servidor, y así sucesivamente. Puede haber varios servidores intermedios. Además, el túnel entre los servidores se puede instalar utilizando cualquier otro protocolo que no sea el protocolo a través del cual está conectado el cliente, por ejemplo IPsec, o sin ningún cifrado, como GRE o IPIP. En este modo, todos los servidores intermedios
se pueden ver en el rastreo de ruta . No hay forma de verificar exactamente cómo están conectados los servidores intermedios en el lado del cliente, por lo que solo puede confiar en el proveedor.
A lo largo de la ruta de tráfico, la MTU mínima (unidad de transmisión máxima) permanece igual al valor del primer túnel, y cada servidor intermedio
tiene acceso al tráfico descifrado del cliente .

VPN a través de proxy
También una forma bastante común. A menudo se usa para enmascarar el tráfico VPN bajo un protocolo diferente, por ejemplo en China. Este método es más conveniente que una cadena de servidores proxy, ya que al usar una VPN es fácil enrutar todo el tráfico del sistema hacia el túnel. También hay herramientas para interceptar llamadas de sistema de programas y redirigirlos a servidores proxy: ProxyCap, Proxifier, pero son menos estables porque a veces pierden solicitudes y omiten el proxy o funcionan incorrectamente con algunos programas.
En este modo, el servidor proxy no es visible en el rastreo de ruta.

VPN dentro de VPN
La forma más paranoica y lenta: todos los túneles se elevan del lado del cliente, uno dentro del otro. Este método requiere una configuración astuta de rutas en el lado del cliente y el lanzamiento de todos los clientes VPN en el orden correcto. Esto es malo para la latencia y el rendimiento, pero los servidores intermedios no tienen acceso al tráfico abierto del cliente. Se resumen todos los gastos generales de encapsulación, y el tamaño máximo de paquete (MTU) que está disponible para el cliente disminuye en función del número de túneles. Los servidores intermedios no son visibles en el rastreo de ruta.

Configurar VDS
La forma más fácil de configurar una VPN con puntos de entrada y salida divididos es conectar varias direcciones IP a un único servidor virtual. Este método le permite obtener la velocidad máxima y los retrasos mínimos, ya que de hecho el tráfico se termina en un solo servidor. En
Vdsina.ru, puede hacerlo usted mismo desde el panel de control. Si bien IPv4 termina en todas partes, emitimos direcciones IP adicionales incluso en servidores por 60 rublos.
Analizaremos la configuración del servidor paso a paso.
Elige un servidor
Ordenamos VDS con una tarifa adecuada, en el centro de datos necesario. Dada nuestra tarea, elegiremos un centro de datos más lejos, en los Países Bajos;)

Conecte una dirección IP adicional
Después de comprar una dirección IP adicional, debe configurarla de
acuerdo con las instrucciones .

Para mayor claridad, asigne un registro PTR a IP. Este es el nombre de dominio que será visible cuando la dirección IP se convierta nuevamente a un dominio. Esto puede ser cualquier valor, incluido un dominio inexistente.
Por ejemplo, utilizaremos los siguientes valores:
xxx.xxx.38.220 — super.cool.guy.vpn

Dos verificaciones de IP
Es importante recordar que la dirección IP que se configuró originalmente en el servidor será el punto de salida, por lo que la nueva dirección será el punto de entrada. Conéctese a través de SSH al servidor y verifique qué dirección se usa como externa.
Para hacer esto, es más fácil usar el servicio
ifconfig.co desde la consola. Al solicitar mediante curl, devuelve la dirección IP desde la que se realizó la solicitud.
$ curl ifconfig.co xxx.xxx.38.220
Las últimas cifras muestran que nuestra dirección externa realmente coincide con el punto de salida. Intentemos verificar el correcto funcionamiento de la segunda IP como punto de entrada. Para hacer esto, simplemente use la función proxy SOCKS integrada en SSH.
Los comandos se ejecutan en el cliente:
ssh -D 9999 root@good.citizen.vpn
El primer comando configura una sesión SSH con la dirección good.citizen.vpn y activa simultáneamente un proxy SOCKS dentro de esta sesión, que está disponible en el puerto local. El segundo realiza una solicitud HTTP normal a través de este proxy.
Es importante recordar que nuestros ejemplos usan nombres de dominio ficticios para las consultas. Se mostrarán solo con una resolución PTR, y no se puede hacer una solicitud completa. Por lo tanto, en esta etapa, debe acceder al servidor a través de la dirección IP.
Configuración del servidor IKEv2
IPsec IKEv2 es un protocolo VPN moderno compatible con casi todos los sistemas operativos listos para usar. Se utiliza como protocolo predeterminado en Windows, macOS e iOS. No requiere instalación de software de terceros y en la mayoría de los casos es más rápido que OpenVPN. Ya había
artículos sobre la configuración del servidor IKEv2 en el concentrador , pero todos describen el uso de certificados autofirmados y son inconvenientes porque requieren que instale el certificado raíz en el lado del cliente VPN.
Analizaremos un ejemplo de configuración del servidor utilizando un certificado de confianza de Let's Encrypt. Esto le permite no instalar certificados raíz extraños para el cliente, sino emitir solo un nombre de usuario y contraseña.
Preparación del servidor
Utilizaremos un servidor basado en Ubuntu 18.04, pero la instrucción también es adecuada para la mayoría de las distribuciones modernas.
Actualizamos el sistema e instalamos los paquetes necesarios.
apt update && apt upgrade apt install certbot strongswan libstrongswan-extra-plugins
Emisión de certificado
Para emitir un certificado de confianza, debe dirigir el dominio real a la dirección IP del punto de entrada. No consideraremos este artículo en detalle, ya que está más allá del alcance del artículo. Como ejemplo, utilizaremos el dominio ficticio
good.citizen.vpnSi ya tiene un servidor web en el servidor, use el método apropiado para emitir el certificado a través de certbot u otro cliente para Let's Encrypt. Este ejemplo supone que el puerto HTTP (80) no está ocupado.
certbot certonly --standalone --agree-tos -d good.citizen.vpn
¿Contestando las preguntas del mago? recibiremos un certificado firmado y una clave
Para la autenticación del servidor IKEv2, se utilizan los mismos certificados X.509 que para
Https Para que Strongswan pueda usar estos certificados, deben copiarse en la carpeta /etc/ipsec.d.
Así es como deben ubicarse los certificados:
cp /etc/letsencrypt/live/good.citizen.vpn/cert.pem /etc/ipsec.d/certs/ cp /etc/letsencrypt/live/good.citizen.vpn/privkey.pem /etc/ipsec.d/private/ cp /etc/letsencrypt/live/good.citizen.vpn/chain.pem /etc/ipsec.d/cacerts/
Dado que los certificados de letsencrypt se vuelven a emitir con frecuencia, hacerlo manualmente es un inconveniente. Por lo tanto, automatizamos este proceso utilizando el gancho para certbot.
La tarea del script es copiar tres archivos en la carpeta deseada cada vez que se actualiza el certificado y luego enviar el comando strongswan para volver a leer los certificados.
Cree el archivo
/etc/letsencrypt/renewal-hooks/deploy/renew-copy.sh y
hágalo ejecutable.
#!/bin/sh set -e for domain in $RENEWED_DOMAINS; do case $domain in good.citizen.vpn) daemon_cert_root=/etc/ipsec.d/ # Make sure the certificate and private key files are # never world readable, even just for an instant while # we're copying them into daemon_cert_root. umask 077 cp "$RENEWED_LINEAGE/cert.pem" "$daemon_cert_root/certs/" cp "$RENEWED_LINEAGE/chain.pem" "$daemon_cert_root/cacerts/" cp "$RENEWED_LINEAGE/privkey.pem" "$daemon_cert_root/private/" # Reread certificates /usr/sbin/ipsec reload /usr/sbin/ipsec purgecerts /usr/sbin/ipsec rereadall ;; esac done
Ahora, después de cada nueva emisión del certificado, el script copiará los nuevos archivos a las carpetas de strongswan y enviará un comando al demonio para volver a leer los certificados.
Configuración de Strongswan
Agregue la configuración strongswan /etc/ipsec.conf
config setup
Los inicios de sesión y las contraseñas de los clientes VPN se configuran en el archivo
/etc/ipsec.secretsEn este archivo, también debe especificar el nombre de la clave privada que copiamos previamente de la carpeta letsencrypt:
# /etc/ipsec.d/private/ : RSA privkey.pem # VPN # : EAP "" IrinaYarovaya : EAP "PleaseLoveMe123" Mizooleena : EAP "IwannaLoveToo3332"
En esta etapa, puede reiniciar el servidor strongswan y verificar si la nueva configuración se ha activado:
$ systemctl restart strongswan $ ipsec statusall Virtual IP pools (size/online/offline): 10.0.1.0/24: 254/0/0 Listening IP addresses: xxx.xxx.38.220 Connections: ikev2-mschapv2: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2: local: [CN=good.citizen.vpn] uses public key authentication ikev2-mschapv2: cert: "CN=good.citizen.vpn" ikev2-mschapv2: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear ikev2-mschapv2-apple: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2-apple: local: [good.citizen.vpn] uses public key authentication ikev2-mschapv2-apple: cert: "CN=good.citizen.vpn" ikev2-mschapv2-apple: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2-apple: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear
Puede ver que la configuración se activó correctamente y que el certificado está conectado. En esta etapa, ya puede conectarse al servidor VPN, pero no tendrá acceso a Internet. Para liberar clientes en Internet, debe habilitar el reenvío y configurar NAT.
Configuración NAT
Activamos paquetes de reenvío:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p
Activa NAT. Es importante tener en cuenta que esto es solo un ejemplo de una configuración mínima de iptables. Personalice el resto de las reglas según sus necesidades.
ethName0 : reemplácelo con el nombre de su interfaz
10.0.1.0/24 : el rango de direcciones IP que se emitirán a los clientes VPN. Lo pedimos en
/etc/ipsec.conf111.111.111.111 : la dirección IP del punto de salida, en nuestro ejemplo, es la dirección super.cool.guy.vpn
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o ethName0 -j SNAT --to-source 111.111.111.111
Depuración
En esta etapa de la configuración, deberíamos obtener un servidor que funcione completamente, al que los clientes ya puedan conectarse. Antes de continuar, es mejor verificar esto comprobando la conexión.
En caso de problemas de conexión, puede ver el registro en tiempo real:
journalctl -f -u strongswan
Inicio al inicio
Si todo tiene éxito, puede agregar strongswan al inicio en el inicio:
systemctl enable strongswan
Guardar reglas de iptables
Para guardar las reglas de iptables después del reinicio, hay un paquete especial
persistente en iptables . Es importante recordar que guardará el conjunto actual de reglas y lo agregará al inicio.
apt install iptables-persistent
Configuración del cliente
La configuración en el lado del cliente es extremadamente simple: solo dígale al cliente la dirección, el nombre de usuario y la contraseña del servidor. Para macOS e iOS, puede crear perfiles de configuración automática que serán suficientes para activar con dos clics.
Configuración de WindowsEn las nuevas versiones de Windows, IKEv2 se configura en un asistente simple, al que se puede acceder desde el menú de conexión WiFi.

Windows no establece una ruta predeterminada para dicha conexión, por lo que la instalaremos manualmente. En las propiedades de la conexión VPN, vaya a las propiedades de TCP / IPv4 -> adicionalmente y marque la casilla "Usar una puerta de enlace en una red remota"
clicable Configuración de MacOSMacOS admite IKEv2 a partir de la versión 10.11 (El Capitan). La conexión se crea a través del menú de configuración de red.

Agrega una nueva conexión. El nombre de la conexión es cualquier nombre arbitrario.

Para autenticar un certificado, debe especificar un nombre de dominio. Al mismo tiempo, en el campo "Dirección del servidor", puede especificar la dirección IP del servidor y el dominio solo en "ID remota", luego la resolución DNS no se realizará para la conexión y sucederá un poco más rápido.

El nombre de usuario y la contraseña se especifican en el archivo
/etc/ipsec.secrets
Configuración de iOSLa configuración de IOS se puede hacer manualmente a través del asistente, pero es mucho más conveniente usar el perfil de configuración automática de mobileconfig.
La sintonización manual es similar en significado al macOS de escritorio:
Configuración -> VPN -> Agregar configuración VPN
Perfil de configuración automática para dispositivos Apple
Perfiles de configuración automática .mobileconfig es un archivo XML con configuraciones que pueden configurar cualquier cosa, desde certificados SSL hasta conexiones VPN.
El usuario solo necesita hacer clic en el archivo, y todas las configuraciones necesarias se instalarán automáticamente.
Ejemplo de configuración para conectarse a nuestro servidor IKEv2.
Para configurar un archivo para su configuración, solo edite algunos parámetros en esta plantilla:
AuthName : nombre de usuario del archivo
/etc/ipsec.secretsAuthPassword : contraseña de usuario
/etc/ipsec.secretsRemoteAddress : dominio o dirección IP del servidor
RemoteIdentifier : dominio para el que se emite el certificado
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>IKEv2</key> <dict> <key>AuthName</key> <string>IrinaYarovaya</string> <key>AuthPassword</key> <string>PleaseLoveMe123</string> <key>RemoteAddress</key> <string>123.123.123.123</string> <key>RemoteIdentifier</key> <string>good.citizen.vpn</string> <key>AuthenticationMethod</key> <string>Certificate</string> <key>ChildSecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>DeadPeerDetectionRate</key> <string>High</string> <key>ExtendedAuthEnabled</key> <true/> <key>IKESecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>OnDemandEnabled</key> <integer>1</integer> <key>OnDemandRules</key> <array> <dict> <key>Action</key> <string>Connect</string> </dict> </array> </dict> <key>IPv4</key> <dict> <key>OverridePrimary</key> <integer>1</integer> </dict> <key>PayloadDescription</key> <string>Configures VPN settings</string> <key>PayloadDisplayName</key> <string>VPN</string> <key>PayloadIdentifier</key> <string>com.apple.vpn.managed.96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadType</key> <string>com.apple.vpn.managed</string> <key>PayloadUUID</key> <string>96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadVersion</key> <integer>1</integer> <key>UserDefinedName</key> <string>London VPN</string> <key>VPNType</key> <string>IKEv2</string> </dict> </array> <key>PayloadDisplayName</key> <string>My Super IKEv2 VPN</string> <key>PayloadIdentifier</key> <string>vpn.googd.citizen</string> <key>PayloadUUID</key> <string>F3FAD91C-019C-4A79-87A1-CF334C583339</string> <key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Configuración de AndroidDesafortunadamente, Android es el único de los sistemas operativos populares que aún no tiene soporte incorporado para IKEv2. Para conectarse, puede usar el cliente oficial de
Strongswan de PlayMarket Resumen
Mostramos la opción de configuración del servidor más simple con puntos de entrada y salida espaciados. Esta configuración le permite obtener la velocidad máxima de VPN, ya que no utiliza túneles adicionales entre los servidores, a pesar de que las direcciones IP de los puntos de entrada y salida están en subredes diferentes. Este enfoque le permite experimentar más al conectar más de dos direcciones IP al servidor.
El protocolo IKEv2 es perfecto para usarlo en el sistema operativo de escritorio para el trabajo diario, ya que está integrado de forma nativa en el sistema y, en igualdad de condiciones, le permite obtener más velocidad que a través de programas VPN de terceros.


Suscríbase a nuestro desarrollador de Instagram
