Tailscale expone el puerto SOCKS5 para software de proxy
💡 He estado usando software como Clash o Quantumult X durante mucho tiempo. Después de configurar servicios de red interna a través de Tailscale, cada vez que necesito acceder a los servicios de la red interna, tengo que cambiar de software (el cliente de Tailscale y el software proxy mencionado no pueden ejecutarse al mismo tiempo), lo cual es muy incómodo. Por lo tanto, considero agregar un nodo proxy de red interna al software proxy y configurar reglas de división para no tener que cambiar de software con frecuencia.
Implementar el contenedor Tailscale
Consulte **Modo de red en espacio de usuario (para contenedores)** , implemente el contenedor tailscale y exponga el puerto socks5.
docker run -d \\ --name tailscale-socks5 \\ --restart=unless-stopped \\ --cap-add=NET_ADMIN \\ -e TS_USERSPACE=true \\ -e TS_SOCKS5_SERVER=0.0.0.0:1055 \\ -p 127.0.0.1:1055:1055 \\ -v /var/www/tailscale-socks5:/var/lib/tailscale \\ tailscale/tailscale:latest tailscaled --tun=userspace-networking --socks5-server=0.0.0.0:1055Verifique si está escuchando en el puerto :1055:
docker exec -it tailscale-socks5 ss -tulnInicie tailscale y complete el inicio de sesión:
docker exec -it tailscale-socks5 tailscale up --accept-dns=false --accept-routesDespués de iniciar sesión correctamente, pruebe si el puerto socks5 expuesto por el contenedor tailscale funciona correctamente:
curl --socks5 127.0.0.1:1055 <http://tailscale> 内网服务Pero este socks5 no tiene autenticación (nombre de usuario y contraseña). Para exponerlo de manera algo más segura a la red pública, considere implementar un proxy SOCKS5 con autenticación de nombre de usuario/contraseña, cuyo tráfico saliente se reenvíe al servicio SOCKS5 sin autenticación de tailscale.
Implementar el contenedor kechangdev/s2s
Proyecto: https://github.com/kechangdev/s2s
El siguiente ejemplo iniciará este contenedor, escuchará en el puerto local 45675, el nombre de usuario/contraseña se establecerá en username / password, y reenviará el tráfico al proxy SOCKS5 sin autenticación local 127.0.0.1:1055.
docker run -d --network host \\ --name tailscale-s2s \\ -e SOCKS5_USERNAME="username" \\ -e SOCKS5_PASSWORD="password" \\ -e TS_SOCKS5_HOST="127.0.0.1" \\ -e TS_SOCKS5_PORT="1055" \\ -e INBOUND_PORT="45675" \\ kechangdev/s2s:latest| Variable | Predeterminado | Descripción |
|---|---|---|
SOCKS5_USERNAME | username | Nombre de usuario para autenticación SOCKS5 de entrada |
SOCKS5_PASSWORD | password | Contraseña para autenticación SOCKS5 de entrada |
TS_SOCKS5_HOST | 127.0.0.1 | Dirección SOCKS5 de salida (por ejemplo, el socks5 proporcionado por Tailscale) |
TS_SOCKS5_PORT | 1055 | Puerto SOCKS5 de salida |
INBOUND_PORT | 45675 | Puerto SOCKS5 expuesto por este contenedor (con autenticación de nombre de usuario/contraseña) |
Nota:
-network hostse usa generalmente para que el contenedor comparta el espacio de nombres de red con el host, facilitando la conexión al Tailscale SOCKS5 local. También se pueden usar otros modos de red según sea necesario, siempre que el contenedor pueda acceder aTS_SOCKS5_HOST:TS_SOCKS5_PORT.- Si desea modificar el puerto de escucha, simplemente cambie
INBOUND_PORTal iniciar y asigne el puerto correspondientemente.
Prueba:
curl -v --socks5 127.0.0.1:45675 -U username:password <http://tailscale> 内网服务Si puede devolver correctamente el contenido de la página de destino, significa que toda la cadena de proxy funciona correctamente.
Configuración del software
Con Quantumult X como ejemplo:
- Configurar el nodo Socks5:
socks5=IP:Port, username=XXX, password=XXX, fast-open=false, udp-relay=false, server_check_url=http://tailscale 内网服务, tag=tailscale- Configurar grupo de estrategias:
static=Tailscale, tailscale- Configurar reglas de división:
; Tailscaleip-cidr, 100.64.0.0/10, Tailscale¡Bien! Ahora puedes acceder a tu red interna de Tailscale sin problemas:

Advertencia
Se recomienda encarecidamente usar túneles TLS/SSH o Fail2Ban u otros métodos para reforzar la seguridad. Exponer solo SOCKS5 + nombre de usuario/contraseña en la red pública todavía conlleva riesgos potenciales (fuerza bruta, captura de paquetes, etc.).