问题背景
现有两台设备:
- 电脑 A
- 电脑 B
两台设备均已加入 Tailscale 网络,实现异地组网。
目标网站:
http://118.xxx.xxx.xxx:8080
测试结果:
| 设备 | 访问结果 |
|---|---|
| 电脑 A | 正常访问 |
| 电脑 B | 无法访问 |
因此需要借助 Tailscale,使电脑 B 也能够访问目标网站。
网络拓扑
Internet
│
118.xxx.xxx.xxx:8080
│
┌───────┴───────┐
│ │
电脑A 电脑B
│ │
└── Tailscale ──┘
其中:
- A 与 B 已建立 Tailscale 连接
- A 可以正常访问目标网站
- B 无法直接访问目标网站
原因分析
出现这种情况通常有以下几种原因:
1. 网络出口差异
目标服务器可能对来源 IP 做了限制。
例如:
允许:
A 所在网络出口
拒绝:
B 所在网络出口
此时即使 A、B 已经通过 Tailscale 联通,B 仍然无法直接访问目标网站。
2. A 存在额外网络环境
例如:
- 公司 VPN
- 专线网络
- 白名单出口
- 特殊路由策略
导致:
A → 目标网站
成功
B → 目标网站
失败
解决方案
方案一:使用 Exit Node(推荐)
让电脑 A 作为 Tailscale 出口节点。
网络流向变为:
B
│
│ Tailscale
▼
A
│
▼
118.xxx.xxx.xxx:8080
即:
B → A → 目标网站
A 端配置
Windows PowerShell(管理员):
tailscale set --advertise-exit-node=true
或者:
tailscale up --advertise-exit-node
随后在 Tailscale 管理后台批准该 Exit Node。
B 端配置
在 Tailscale 客户端中:
Settings
→ Exit Node
→ 选择电脑A
或者命令行:
tailscale set --exit-node=<A的Tailscale-IP>
配置完成后:
B 的网络流量
↓
经过 A
↓
访问目标网站
方案二:SOCKS5 代理
如果不希望所有流量都经过 A,可以在 A 上部署代理服务:
例如:
- gost
- xray
- clash
- dante
开放:
A的TailscaleIP:1080
B 通过 SOCKS5 代理访问目标网站:
socks5://A的TailscaleIP:1080
这种方式仅代理指定应用流量。
方案三:静态路由
如果目标网络允许路由转发,可配置:
仅访问目标网站时
通过 A 转发
优点:
- 不影响其它网络流量
- 带宽利用率更高
缺点:
- 配置复杂
- 需要开启 IP Forward
推荐方案
对于个人用户或小型运维场景:
优先推荐使用 Tailscale Exit Node。
优点:
- 配置简单
- 官方支持
- 无需额外软件
- 兼容 Windows、Linux、macOS
整体流程如下:
电脑B
│
▼
Tailscale
│
▼
电脑A(Exit Node)
│
▼
118.xxx.xxx.xxx:8080
通常几分钟内即可完成配置并恢复访问。