Estoy teniendo algunos problemas extraños con la configuración de Wireguard en un país donde todo lo relacionado con VPN se bloquea constantemente.
Resumen
Wireguard funciona aleatoriamente después de jugar con los puertos, y luego deja de funcionar sin que cambie ninguna configuración. Ni siquiera puedo lograr que funcione de manera consistente por un tiempo después de cambiar los puertos. Cuando funciona, tengo un apretón de manos en wg show, cuando no funciona, no obtengo ningún apretón de manos.
Configuración
VPS: VPS de Digitalocean SO: Debian 10 (Buster) Cortafuegos: UFW Despliegue: Docker - imagen linuxserver.io - Enlace
Estoy usando principalmente la plantilla predeterminada docker-compose, cambiando el puerto 51820, que seguramente está bloqueado, por puertos aleatorios como 55555 o 12345.
Todos los puertos relevantes están abiertos a través de UFW. Incluso intenté deshabilitar UFW por completo.
La única explicación que tengo es que, mágicamente, los ISP detectan dinámicamente los puertos que activan Wireguard y los bloquean, lo cual no puedo ni imaginar cómo podría hacerse.
Aquí tienes una muestra de mi wg show
interface: wg0
clave pública: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
clave privada: (oculta)
puerto de escucha: 51820
peer: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
endpoint: XXX.XXX.XXX.XXX:1727
ips permitidas: 10.13.13.2/32
transferencia: 148 B recibidos, 92 B enviados
peer: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ips permitidas: 10.13.13.3/32
peer: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ips permitidas: 10.13.13.4/32
Ten en cuenta que el peer al que intenté conectar tiene endpoint, allowed ips y transfer, pero no handshake
Los detalles de la conexión en el peer muestran datos enviados, pero no recibidos.
Shadowsocks es un proyecto de protocolo de cifrado gratuito y de código abierto, ampliamente utilizado en China para sortear la censura en Internet. Fue creado en 2012 por un programador chino llamado “clowwindy”, y se han desarrollado varias implementaciones del protocolo desde entonces.
Outline VPN es una herramienta gratuita y de código abierto que despliega servidores Shadowsocks en múltiples proveedores de servicios en la nube. El conjunto de software también incluye software cliente para varias plataformas. Outline fue desarrollado por Jigsaw, una incubadora tecnológica creada por Google.
Solo para aclarar lo que otros solo insinuaron: WireGuard es muy fácil de bloquear, tiene una firma muy obvia y la ocultación no forma parte de su diseño. Si usas WireGuard, tus operadores de red pueden detectarlo. ¿Quieres prueba? Abre wireshark y revisa una conexión: ‘WireGuard’ aparece claramente, sin importar en qué puerto lo pongas.
Si quieres ‘ocultar’ tu tráfico en lugar de simplemente ‘protegerlo’ deberías usar algo como Shadowsocks junto con V2Ray o Cloak. Ten en cuenta que Shadowsocks solo no es seguro tampoco, necesitas uno de esos complementos seguros. Si quieres algo fácil de desplegar, Outline VPN está basado en esta misma tecnología.
Dependiendo de dónde te encuentres en el mundo, la IP objetivo a la que te conectes también puede ser monitoreada y escaneada, sometida a ataques de reproducción, etc., por lo que algunos países terminan bloqueando el tráfico a VPS personales después de un tiempo ‘solo porque sí’. Enrutando tu VPN a través de un CDN puede ayudar con esto. En el caso de Shadowsocks, V2Ray/Cloak, es muy fácil enviar todo el tráfico a través de Cloudflare, lo que probablemente tenga menos listas de bloqueo.
Sé que este es un subreddit de autoservicio. Pero, ¿puedes probar algo como ZeroTier, que ofrece un servicio gratuito? Si solo usas VPN para acceder a tu sistema desde fuera de tu red, ZeroTier debería funcionar.
Si quieres, también podrías usar TailScale en lugar de ZeroTier, si quieres usar Wireguard para la VPN.
Ok, esto puede ser una pista extremadamente buena. Ya sé que los ISP aquí hacen un DPI muy pesado, pero no esperaba que Wireguard fuera vulnerable a ello.
¿Alguna sugerencia sobre cómo ofuscar el tráfico de Wireguard? (agregando una nueva madriguera a mis ya existentes, maravilloso)
Sé sobre TailScale, no lo he probado aún. Pero ya estoy alojando 3 servicios más y pago por un VPS, así que sería genial no tener que dar mi información a un tercero si/cuando pueda.
Estoy considerando desplegar Wireguard para dos propósitos diferentes, el que está en mi VPS sería un VPN de emergencia para sortear restricciones cuando necesite acceder a contenido bloqueado localmente.
Y otro en mi laboratorio casero, que servirá como punto de entrada a mi red local, algo que TailScale no puede hacer hasta donde sé. Puede darme acceso a una sola máquina, pero no a toda la red.
Lo que sé, y todos son bienvenidos a corregirme si me equivoco, es que Inspección Profunda de Paquetes no depende del puerto, por lo que la ofuscación en realidad encripta los paquetes usando un certificado SSL, junto con usar el puerto 443, así que básicamente aparece como tráfico web “normal” https para la DPI
Podría ejecutarlo a través de un subdominio como wg.mydomain.com usando el puerto 443, pero la DPI detectará que estos son paquetes de Wireguard de todas formas.
Tailscale puede hacer eso, solo tienes que configurar las rutas para que esté disponible. Funciona bien y Wireguard en China no está restringido, solo el que pasa por la pared causa problemas. Lo uso para streaming cuando no estoy en casa usando Emby.
Usar Wireguard para acceder a tu VPS no es realmente viable, Wireguard “funciona” en China, pero no de manera confiable, como has visto, tiene una firma que puede ser vista fácilmente. Las otras tecnologías VPN que usan las personas en China para acceder a contenido externo son solo proxies y no proporcionan la misma protección que una VPN, son más tecnologías anti-censura.
Necesitarías ejecutar un proxy transparente y luego Wireguard debajo de eso para estar seguro de que la conexión a tu VPS es segura, aunque tal vez SSH esté bien, no lo sé. Ya me rendí con los VPS en China, no vale la pena. No te ayudarán cuando no estés en China viajando y cuando vuelvas, la servicio será más difícil de acceder.
Sí, la DPI no se preocupa por los números de puerto.
Busca patrones en el tráfico.
Dependiendo de tu ISP, usar puertos comunes como 53 puede funcionar, pero también puede levantar una bandera roja.
Esto se debe a que algunos ISP/reguladores requieren que se registre el tráfico DNS, DNS es muy pequeño, por lo que tunelizarlo sobre DNS es muy fácil de detectar.
Fuente: He hecho todo lo anterior… y más.
Lo mejor es salir por protocolos conocidos y permitidos (por ejemplo, HTTPS) y tunelizar dentro de eso.
He tenido éxito alojando wg en el puerto 53. DNS también usa UDP, así que quizás tu censor sea ingenuo y simplemente omita cualquier tráfico que pase por allí. Me funcionó dentro de aeropuertos y perímetros empresariales.