问题背景

现有两台设备:

  • 电脑 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

通常几分钟内即可完成配置并恢复访问。