关于我通过代理优化 Tailscale 连接速度的小妙招😋

字号
字体
版心
外观
天空

关于我通过代理优化 Tailscale 连接速度的小妙招😋

I

Incohua

•7 分钟阅读

前言#

作者为了保证服务器的安全,贯彻落实"Zero-Trust"原则,长期使用 Tailscale 来连接自己服务器。

但是呢,Tailscale 存在一点小小的问题。Tailscale 的官方"Derp"看着很多很棒对不对。打洞成功走直连听起来很棒对不对?

⚠️ BUT:

当你的服务器在国外,并且没有优化线路的时候,你就会察觉到一丝不对劲——布什戈门,你这连接速度也太慢了吧。

直连后反而不如中继(虽然中继也挺垃圾的,官方的 Derp 也普遍绕路)。

这个时候,有的观众朋友就会说了:那你可以自建"Derp"来优化连接速度呀。

那还是避不开那个问题——如果他打洞成功了,不走中继怎么办,还不是一样绕路吗?

直连后 300ms 的延迟和中继 150ms 的延迟,你选谁?

「回答我!」「你回答我!」「Look in my eyes!」「Tell me, why? Why? Baby why?」「说话!」

并且自建"Derp"需要一台额外的服务器,最好还得是中国优化线路,不然效果依旧是一言难尽。

作者的三网优化机刚好在写文的这一晚到期,所以迫切地需要找其他方案来优化 SSH 的连接速度,不然那输一个命令卡几秒,谁受得了。

另外,请壁垒"破碎工坊云",毫无契约精神

作为作者玩服务器 Baby 阶段用过的商家,这一家搞过的骚操作在我印象中,包括但不限于:

  • 无公告临时换 IP 导致机器失联
  • 称机柜供电不足,降配机器(EPYC→E5)
  • 使用期间数据不保
  • 降配限速,美名"智能带宽策略调整"
  • 大事故后,补偿使用时间,再找借口通知业务变更,机器全部清退😋

所以意外折腾下,想到之前写过一篇文章,可以在服务器上部署 Tailscale 后,当做代理节点访问。

俺寻思之力发动🌟——既然能直接访问服务器上的 Tailscale,那岂不是也能用来当跳板机?


正文#

效果展示#

为了吸引读者兴趣,对比一手前后速度。

连接的服务器是一台三网绕的香港服务器

优化前:

bash
❯ time ssh -o BatchMode=yes hk-ser exit

ssh -o BatchMode=yes hk-ser exit  0.03s user 0.01s system 0% cpu 7.553 total

优化后:

bash
❯ time ssh -o BatchMode=yes hk-ser exit

ssh -o BatchMode=yes hk-ser exit  0.02s user 0.01s system 5% cpu 0.630 total

速度对比:

项目连接速度
优化前7.553s
优化后0.630s

前置要求#

  • 一个机场订阅(优化线路) 不对,你都有优化线路的服务器了,为什么不直接当跳板机呢
  • 一台落地服务器(也就是出口)
  • 了解什么是链式代理
  • 一个爱折腾的心

思路#

Before#

tailscale-before

当你的服务器在国外,并且没有优化线路的时候,你就会察觉到一丝不对劲。布什戈门,你这连接速度也太慢了吧。

直连后反而不如中继(虽然直连也挺垃圾的)

Now#

tailscale-now

既然机场一般有优化线路,那咱就可以利用下,用来加速😋


Xray 配置#

这一部分请参考作者的另外一篇文章


代理软件配置#

这里作者仅以自己目前使用的代理软件为例,进行测试举例。

此处默认读者已经了解如何自行添加代理节点,并创建对应的规则和分组

Surge#

Surge 默认开放的 Socks5 端口为 6153

conf
# > Tailscale
; PROCESS-NAME,tailscale,DIRECT
; PROCESS-NAME,tailscaled,DIRECT
AND,((DEST-PORT,22), (IP-CIDR,100.64.0.0/10,no-resolve)),Tailscale
; DOMAIN-SUFFIX,ts.net,Tailscale
; IP-CIDR,100.64.0.0/10,Tailscale
; IP-CIDR6,fd7a:115c:a1e0:ab12::/64,Tailscale

Mihomo#

规则#

Mihomo 默认开放的 Socks5 端口为 7890

yaml
# - PROCESS-NAME,tailscaled,DIRECT
- AND,((IP-CIDR,100.64.0.0/10,no-resolve), (DST-PORT, 22)), Tailscale
# - DOMAIN-SUFFIX,ts.net,Tailscale
# - IP-CIDR,100.64.0.0/10,Tailscale,no-resolve
# - IP-CIDR,fd7a:115c:a1e0::/48,Tailscale,no-resolve
链式代理#
  1. 阅读 Mihomo Wiki关于dialer-proxy的部分
  2. 为自己手动配置的节点或组添加 dialer-proxy
  3. 以 ss2022 协议的配置示例:

这里就是通过[香港节点]链式代理到[test-node]的意思

yaml
- name: "test-node"
  type: ss
  server: blog.inmoe.org
  port: 11451
  cipher: 2022-blake3-aes-128-gcm
  password: "16位passwd"
  udp: true
  udp-over-tcp: false
  udp-over-tcp-version: 2
  ## 关键部分
  dialer-proxy: 香港节点

终端配置#

此处以默认自带的终端和 SSH 软件 Termius 举例。

SSH-Config#

  1. 安装组件(二选一):

    • nmap(推荐)
    • netcat-openbsd
  2. 调整 ssh-config,添加:

    text
    ProxyCommand ncat --proxy 127.0.0.1:6153 --proxy-type socks5 %h %p
  3. 参考示例:

    bash
    Host hk-ser
    HostName 100.117.105.24
    User root
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    AddKeysToAgent yes
    ProxyCommand ncat --proxy 127.0.0.1:6153 --proxy-type socks5 %h %p

Termius#

两图流启动:

配置示例
配置示例

小小问题#

  1. 这样的规则可能误伤本地的 SSH 连接。其实可以分开配置 SOCKS5,只有需要的服务器才配置代理

    此处有乌龙:最开始测试 AND 规则的时候,发现总是匹配不到。写完一版后,测试的时候发现——诶,我 CIDR 怎么写错了,100.64 → 10.64,me → 🤡

  2. 代理软件和 Tailscale 没配置好会打架

    加油孩子,问问 ChatGPT、Gemini、Claude 老师,或者看我 Xray 那篇文章。

  3. 这安全吗?

    我也不确定这样到底是不是安全的,落地机得保护好。或者说 Tailscale 的 ACL 规则要配置好。但是实打实快了对吧 😋

结语#

以上操作纯属作者瞎折腾呀,如果读者宝贝们有更好的方案, 或者相关的疑问,欢迎指出💗!!

评论 0

按时间排序
评论还没开通
  1. 还没有评论。