Entonces siguió nuestro tutorial sobre cómo configurar su propio servidor VPN usando OpenVPN y un servidor Amazon EC2, y funcionó muy bien. Es decir, hasta que de repente se bloqueó. Tal vez reinició la instancia y obtuvo una nueva dirección IP. Funciona muy bien otra vez por otros dos días, luego se bloquea. Parece que su oficina, ISP o gobierno está bloqueando activamente los servidores OpenVPN. Entonces, Qué haces?
Los firewalls básicos bloquean las conexiones en función del puerto utilizado y la dirección IP de destino, pero los firewalls más avanzados utilizan la inspección profunda de paquetes (DPI) y / o la inspección de paquetes con estado (SPI) para distinguir entre diferentes tipos de algoritmos de cifrado y protocolos VPN. Eso significa que pueden detectar el tráfico de OpenVPN y marcarlo para que el administrador pueda bloquear el servidor.
Hay tres opciones para evitar esto: un proxy de ofuscación, un túnel SSL y un túnel SSH. En este tutorial, discutiremos lo último. El túnel SSH envuelve su conexión ya encriptada en otra capa de encriptación para que el firewall no pueda hacer la distinción. Cada uno de estos métodos debe pasar por alto los cortafuegos DPI y SPI establecidos por las corporaciones o los gobiernos con mucha censura como el de China.
OpenVPN sobre SSH tiene un par de inconvenientes. Primero es un golpe de rendimiento debido al doble cifrado. En segundo lugar, la huella digital de OpenVPN ya no se puede detectar cuando se hace un túnel a través de SSH, pero algunos firewalls también bloquean el tráfico de SSH. Este es el caso de servicios como Netflix, que detienen el uso de cualquier tipo de proxy cifrado, OpenVPN, SSH u otros. En este caso, le recomendamos que configure Obfsproxy en su lugar, lo que hace que el tráfico cifrado parezca normal y sin cifrar. Obfsproxy es mucho más poderoso por este motivo, pero también es más complicado de configurar y ejecutar.
Desafortunadamente, Obfsproxy combinado con OpenVPN actualmente solo funciona en un escritorio, hasta donde sabemos. El túnel SSH se puede usar en un dispositivo móvil Android o iOS.
Este tutorial asume que ya tiene un servidor OpenVPN funcionando y que puede conectarse a él utilizando la GUI de OpenVPN o la aplicación OpenVPN Connect. También debe poder SSH en su servidor usando Terminal en una Mac o PuTTy en una PC. Para fines de demostración, usaremos PuTTy. Si no tiene todo eso configurado, consulte nuestro tutorial anterior.
Configurar OpenVPN sobre SSH en una PC
En nuestro último tutorial, discutimos cómo configurar un proxy SSH simple, luego lo ampliamos para crear un servidor VPN completo. Este enfoque combina los dos, lo que significa que ya debe tener todo lo que necesita.
Abra PuTTy y cargue la configuración de su servidor VPN. En la barra lateral, navegue hasta Conexión > SSH > Túneles Asegúrese de que D8080 esté incluido en la lista. De lo contrario, escriba 8080 en “Puerto de origen” y marque Automático y Dinámico. Luego presiona Agregar. Ahora tiene un proxy SSH que se ejecuta a través del puerto 8080. Puede guardarlo como una configuración de sesión separada si desea volver a la pestaña Sesión del árbol de navegación.
Haga clic en Abrir e inicie sesión en su servidor. Recuerde que en la nueva AMI de Amazon Linux, el nombre de usuario es “ec2-user”.
Navegue a su archivo openvpn.conf y verifique el contenido con estos comandos
cd / etc / openvpn
gato openvpn.conf
Esto debería mostrar el contenido de su archivo de configuración del servidor OpenVPN. Debe tener un aspecto como este:
puerto 1194
proto tcp-server
dev tun1
ifconfig 10.4.0.1 10.4.0.2
status server-tcp.log
verbo 3
ovpn.key secreto
Lo importante es que la segunda línea está configurada en TCP, no en UDP. Si necesita cambiarlo, puede editarlo con este comando:
sudo nano openvpn.conf
Luego haga clic CTRL + O (la letra “o”, no cero) para guardar el archivo, luego CTRL + X para salir del editor.
Configuración del cliente
En su máquina local, navegue a los archivos de configuración de su cliente OpenVPN. Si utilizó el directorio de instalación predeterminado, este será C: / Archivos de programa / OpenVPN / config.
Cree una copia de su archivo de configuración de OpenVPN existente del último tutorial o cree uno nuevo. Busque el Bloc de notas u otro editor de texto sin formato y haga clic con el botón derecho para Ejecutar como administrador. Abra o cree su nuevo archivo de configuración, que debería verse así:
proto tcp-client
localhost remoto 1194
puerto 1194
dev tun1
ovpn.key secreto
redirect-gateway def1
ifconfig 10.4.0.2 10.4.0.1
calcetines-proxy-reintento
calcetines-proxy 127.0.0.1 8080
Tenga en cuenta que la segunda línea “remota” usa localhost en lugar de la IP del servidor OpenVPN, más las dos líneas en el extremo que configuran OpenVPN para usar un proxy SOCKS. Todo lo demás es igual que antes..
Guarde su nuevo archivo de configuración en la carpeta de configuración de su directorio OpenVPN.
Configurar aplicaciones
El último paso es configurar sus aplicaciones para usar el proxy a través del puerto 8080. Esto es similar a lo que hicimos con el proxy SSH básico del último tutorial. Muchas aplicaciones tendrán una configuración de proxy disponible en la configuración, y algunas incluso pueden detectarlo automáticamente. Si necesita configurarlo manualmente, las tres piezas de información que necesita son:
- Anfitrión: 127.0.0.1
- Puerto: 8080
- Tipo de proxy: SOCKS5 (o SOCKS v5)
Aquí están las instrucciones para Firefox y Chrome:
En Firefox:
- Ir a herramientas > Opciones > Avanzado > Red > Conexión > Configuraciones > Configuración manual del proxy
- Establezca SOCKS Host como 127.0.0.1 y el puerto como 8080 (o lo que sea que configure el puerto del túnel en PuTTy).
- Haga clic en Aceptar para guardar
En Chrome Proxy Switchy
- Deberá aparecer una página de configuración tan pronto como instale la extensión, o haga clic en el icono en la parte superior derecha de Chrome y haga clic en Opciones.
- Nombra el perfil como quieras. En Configuración manual, configure el host SOCKS en 127.0.0.1 y el puerto en 8080 (o lo que sea que configure en el puerto del túnel en PuTTy. Deje todo lo demás en blanco.
- Presione Guardar, luego haga clic nuevamente en el icono para seleccionar su perfil de proxy.
Ahora conéctese a su servidor primero con PuTTy usando la configuración anterior, luego con la VPN usando el nuevo archivo de configuración que creamos.
Ahora está conectado a Internet con OpenVPN a través de SSH!
Móvil
Vamos a explicar cómo adaptar su túnel OpenVPN + SSH para Android, aunque iOS no debería ser tan diferente.
Antes de comenzar, hay un par de advertencias. Primero, este método solo funciona para la navegación web. Esto se debe a que, a diferencia de una computadora de escritorio, no puede simplemente abrir puertos como desee en un dispositivo Android o iOS de serie. Eso significa que los puertos utilizados por otras aplicaciones no serán dirigidos a través del proxy SSH. Para superar esto, puede rootear o hacer jailbreak a su dispositivo y usar una aplicación como ProxyDroid o las aplicaciones Unix de Cydia para configurar el proxy.
Ese es un tutorial para un día posterior. Por ahora, pongámoslo en funcionamiento en Android con Firefox. Deberá instalar las siguientes aplicaciones:
- OpenVPN para Android (nota: NO OpenVPN Connect, que es más exigente con la autenticación)
- ConnectBot, o una aplicación de terminal SSH equivalente (JuiceSSH es bueno pero cuesta más para reenviar puertos)
- Un administrador de archivos como File Commander
- Firefox u otro navegador que te permite configurar proxies
También necesitará algunos medios para transferir archivos desde su computadora a su teléfono. Un cable USB está bien. Usé la carpeta de sincronización de IBackup.
Localice su ovpn.key y el archivo de configuración .ovpn que creó anteriormente en su escritorio, y muévalos al almacenamiento interno o tarjeta SD de su teléfono. También mueva el archivo de clave .pem proporcionado por el servidor host. Probablemente esté ubicado en el mismo lugar que el archivo .ppk que usa para autenticarse con PuTTy. Si lo ha perdido, deberá crear otro en el panel de Amazon EC2, o desde el servicio de alojamiento del servidor que utilice.
Opcionalmente, puede tomar el archivo de configuración estándar .ovpn que usa para conectarse sin SSH. Luego puede usar su VPN con todas las aplicaciones en lugar de solo el navegador, y es útil para solucionar problemas.
Configuración de ConnectBot
Ejecute ConnectBot en su teléfono. Haga clic en los tres puntos en la esquina superior derecha y vaya a Administrar Pubkeys. Haga clic en los puntos nuevamente en la página siguiente y haga clic en Importar. Esto debería iniciar el administrador de archivos que instaló. Busque el archivo .pem que acaba de mover a su teléfono y selecciónelo. Ahora debería aparecer en la lista de claves públicas con un candado rojo al lado. Toque para que se vuelva verde. Presione el botón Atrás para volver a la página principal en ConnectBot.
En el campo de la terminal inferior al lado de “ssh”, ingrese los detalles de SSH. Debe tener un aspecto como este:
ec2-usuario @: 22
Reemplace con la dirección IP de su servidor OpenVPN. Toque la tecla Intro para SSH en su servidor. Todo esto debe guardarse para que no tenga que volver a ingresarlo nuevamente, pero es posible que deba alternar la clave pública nuevamente en el futuro.
Una vez que te hayas conectado correctamente, vuelve a presionar los tres puntos y desconéctate. Su perfil debe guardarse en la pantalla de inicio de ConnectBot. Manténgalo presionado para abrir un menú contextual y toque “Editar puertos hacia adelante”. En la página siguiente, toque los tres puntos y elija “Agregar puerto hacia adelante”.
Nómbralo como quieras. Establezca Tipo en Dinámico (SOCKS) y el puerto de origen en 8080 (o lo que esté en la línea de proxy de calcetines de su archivo de configuración OpenVPN). Toque “crear puerto hacia adelante”.
ConnectBot está listo para funcionar, pero todavía no nos conectaremos. Primero configuremos OpenVPN.
OpenVPN para la configuración de Android
Ejecute OpenVPN para Android.
Haga clic en el botón cuadrado con una flecha hacia abajo en la esquina superior derecha para importar un perfil. Navegue a su archivo de configuración .ovpn y selecciónelo. En la página siguiente, presione el botón que dice “Seleccionar”.
Esta vez, navegue a su archivo ovpn.key y selecciónelo. Presiona el botón amarillo Guardar en la esquina inferior derecha.
Su nuevo perfil ahora debería aparecer en la lista en la pantalla de inicio de la aplicación.
Antes de conectarnos, verifiquemos nuevamente el firewall de nuestro servidor. Inicie sesión en AWS, seleccione Instancias y resalte su servidor OpenVPN. En el campo Grupos de seguridad, haga clic en el utilizado para esta instancia. Haga clic derecho y seleccione “Editar reglas de entrada”.
Agregue reglas TCP personalizadas para los puertos 22, 1194 y 8080, ajustándolas según sea necesario para su configuración personal.
Ahora es tiempo de conectarse. Abra ConnectBot primero. Toque el perfil que acabamos de crear para SSH en su servidor. Asegúrese de que la clave pública esté activada; de lo contrario, recibirá un error sobre una contraseña. Una vez que te hayas conectado correctamente, cambia a la aplicación OpenVPN. Toque su perfil allí para conectarse.
Al final del registro de OpenVPN que aparece cuando te conectas, deberías ver un mensaje que dice “CONECTADO, ÉXITO”.
Tenga en cuenta que debido a que estamos usando los mismos archivos .pem y .key que en nuestro escritorio, solo puede usar estas credenciales en un dispositivo a la vez. Asegúrate de no estar conectado a tu escritorio primero. Si desea conectarse simultáneamente en varios dispositivos, deberá generar nuevas credenciales (.key y .pem) para cada.
Configurar Firefox para usar un proxy
Finalmente, necesitamos configurar Firefox para usar el proxy. Chrome y Safari en dispositivos móviles no incluyen opciones de configuración de proxy, por eso recomendamos Firefox. Puedes intentar configurar el proxy en la configuración de wi-fi, pero luego tendrás que cambiarlos cada vez que quieras conectarte sin un proxy.
En la barra de URL de Firefox, escriba “about: config”. En la barra de búsqueda en esa página, escriba “network.proxy”. Esto mostrará todos los campos que nos interesan. Ingrese la siguiente configuración en los campos indicados:
- network.proxy.socks: 127.0.0.1
- network.proxy.socks_port: 8080 (o lo que haya configurado en su configuración OpenVPN y ConnectBot)
- network.proxy.type: 1
Eso debería enrutar el tráfico del navegador de Firefox a través de OpenVPN y SSH. Ahora puede navegar por la web desde un dispositivo móvil a través de una VPN sin temor a una inspección profunda de paquetes!
Si desea conectarse a través del proxy SSH sin OpenVPN, simplemente SSH en su servidor con ConnectBot y no se conecte con OpenVPN. Por el contrario, puede importar su archivo de configuración .ovpn no SSH básico a la aplicación OpenVPN y conectarse con ese proxy SSH sin.
“Tunnel” de jo.sau con licencia CC BY 2.0
o para usar el protocolo TCP. Si está utilizando UDP, deberá cambiarlo a TCP para que funcione con el túnel SSH. Ahora, abra una nueva ventana de PuTTy y cargue la misma configuración de servidor VPN. En la barra lateral, navegue hasta Conexión > SSH > Túneles. Esta vez, asegúrese de que L8080 esté incluido en la lista. De lo contrario, escriba 127.0.0.1:8080 en “Origen” y marque “Local” y “Auto”. Luego presiona Agregar. Ahora tiene un túnel SSH que se ejecuta a través del puerto 8080. Puede guardar esta configuración como una sesión separada si desea volver a ella más tarde. Haga clic en Abrir e inicie sesión en su servidor. Ahora, abra su aplicación OpenVPN y conéctese a su servidor como lo haría normalmente. Debería poder conectarse sin problemas a través del túnel SSH. Configuración del cliente Si desea usar el túnel SSH en lugar de un proxy, deberá configurar su cliente OpenVPN para que se conecte a través del túnel. Para hacer esto, abra su archivo de configuración de OpenVPN y agregue estas líneas: remote localhost 8080 http-proxy 127.0.0.1 8080 Estas líneas le dicen a OpenVPN que se conecte a través del túnel SSH en lugar de un proxy. Guarde el archivo y vuelva a conectarse a su servidor. Debería poder conectarse sin problemas a través del túnel SSH. Configurar aplicaciones Ahora que tiene un túnel SSH en funcionamiento, puede configurar sus aplicaciones para que lo usen. Por ejemplo, si desea usar Firefox a través del túnel SSH, abra Firefox y vaya a Opciones > Avanzado > Red > Configuración. Seleccione “Configuración manual del proxy” y agregue estas líneas: SOCKS Host: 127.0.0.1 Puerto: 8080 Seleccione “SOCKS v5” y marque “Proxy DNS cuando se usa SOCKS v5”. Luego presione Aceptar. Ahora, Firefox usará el túnel SSH para todas sus conexiones. Mó