Tailscale 暴露 Socks5 端口供代理软件使用

Tailscale 暴露 Socks5 端口供代理软件使用

Neurocoda

💡本人长期使用 Clash 或 Quantumult X 等软件,在通过 Tailscale 搭建好内网服务后,每次需要访问内网服务时都需要切换软件(Tailscale 客户端与 上述代理软件同一时间只能运行一个),很不方便。故考虑添加内网代理节点到代理软件并配置分流规则使得不再需要频繁切换软件。

部署 Tailscale 容器

参考 **Userspace networking mode (for containers)** ,部署 tailscale 容器并暴露 socks5 端口。

1
2
3
4
5
6
7
8
9
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:1055

检查是否监听 :1055 端口:

1
docker exec -it tailscale-socks5 ss -tuln

启动 tailscale 并完成登录:

1
docker exec -it tailscale-socks5 tailscale up --accept-dns=false --accept-routes

登录成功后,测试 tilscale 容器暴露的 socks5 端口是否能正常使用:

1
curl --socks5 127.0.0.1:1055 <http://tailscale> 内网服务

但是这个 socks5 不带鉴权(用户名密码),为了稍显安全地暴露到公网,可以考虑部署一个带用户名/密码鉴权的 SOCKS5 代理,其 出站流量 转发给 tailscale 的不带鉴权 SOCKS5 服务。

部署 kechangdev/s2s 容器

项目地址:https://github.com/kechangdev/s2s

以下示例会启动本容器,监听本机 45675 端口,用户名/密码均设置为 username / password,并将流量转发给本机的无鉴权 SOCKS5 代理 127.0.0.1:1055

1
2
3
4
5
6
7
8
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
变量名默认值说明
SOCKS5_USERNAMEusername入站 SOCKS5 鉴权使用的用户名
SOCKS5_PASSWORDpassword入站 SOCKS5 鉴权使用的密码
TS_SOCKS5_HOST127.0.0.1出站 SOCKS5 的地址(例如 Tailscale 提供的 socks5)
TS_SOCKS5_PORT1055出站 SOCKS5 的端口
INBOUND_PORT45675本容器对外暴露的 SOCKS5 端口(带用户名/密码鉴权)

说明:

  • -network host 通常用于让容器与宿主机共享网络命名空间,方便连接到本机的 Tailscale SOCKS5。也可根据需要使用其他网络模式,只要容器能访问 TS_SOCKS5_HOST:TS_SOCKS5_PORT 即可。
  • 如果想修改监听端口,只需在启动时更改 INBOUND_PORT 并相应映射端口。

测试:

1
curl -v --socks5 127.0.0.1:45675 -U username:password <http://tailscale> 内网服务

若能正确返回目标页面内容,则说明整个代理链路正常。

软件配置

以 Quantumult X 为例:

  • 配置 Socks5 节点:
1
socks5=IP:Port, username=XXX, password=XXX, fast-open=false, udp-relay=false, server_check_url=http://tailscale 内网服务, tag=tailscale
  • 配置策略组:
1
static=Tailscale, tailscale
  • 配置分流规则:
1
2
; Tailscale
ip-cidr, 100.64.0.0/10, Tailscale

好啦,你可以无感访问你的 tailscale 内网了:

提醒

强烈建议使用 TLS/SSH 隧道 或 Fail2Ban 等其他方式加固安全。仅使用 SOCKS5 + 用户名/密码在公网暴露仍存在潜在风险(暴力穷举、抓包等)。

  • Title: Tailscale 暴露 Socks5 端口供代理软件使用
  • Author: Neurocoda
  • Created at : 2025-01-26 11:30:58
  • Updated at : 2025-01-26 11:30:58
  • Link: https://neurocoda.com/p/2ccf300b.html
  • License: This work is licensed under CC BY-ND 4.0.
Comments
On this page
Tailscale 暴露 Socks5 端口供代理软件使用