编程笔记

lifelong learning & practice makes perfect

网络|组网工具-tailscale

什么是 tailscale

Tailscale 是一个开源的 VPN 服务器,它允许用户使用自己的互联网连接来创建一个安全的、无备案的 VPN 网络。

direct vs relayed connection

直连和中继网络的区别,如果建立连接后不同终端间的网络延迟很大,可检查下是否使用了中继节点(relay),考虑使用direct connection优化延迟
经测试,relay模式延迟300ms左右情况下,改用direct模式延迟在10ms左右

1
2
3
4
5
6
7
# 查看当前节点,网络状态
tailscale status
# 如下是直连模式:direct connection
# xxxxx windows active; direct 27.xx.xxx.xxxx:xxxx, tx xxxxx rx 18832

# 使用ping 或 tailscale ping xxxx,查看延迟
ping xxx

relayed connection可能的优化:
在某个节点的防火墙放开UDP协议的41641端口

都没有公网ip的节点间延迟优化

偶尔使用还是ssh方便

ssh端口转发

上一级提到过,有公网ip的服务器可以通过开启UDP协议的41641端口建立direct connection,减少节点间的网络延迟,
在两台设备都没有公网固定ip的情况下,尝试在同样开启端口没有效果,延迟仍然很大(300~1000ms)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 查看网络情况
tailscale netcheck (base)

Report:
* UDP: true
* IPv4: yes, 27.38.xxx.xxxx:xxxx
* IPv6: no, but OS has support
* MappingVariesByDestIP: true
* HairPinning: false
* PortMapping:
* Nearest DERP: San Francisco
* DERP latency:
- sfo: 175ms (San Francisco)
- lax: 175.9ms (Los Angeles)
- tok: 184.4ms (Tokyo)
- dfw: 192.6ms (Dallas)
- ord: 205.8ms (Chicago)
- tor: 218.1ms (Toronto)
- hkg: 220.6ms (Hong Kong)
- hnl: 222ms (Honolulu)
- nyc: 223.9ms (New York City)
- fra: 231.7ms (Frankfurt)
- sin: 238ms (Singapore)
- waw: 249.2ms (Warsaw)
- par: 254.3ms (Paris)
- ams: 257.3ms (Amsterdam)
- lhr: 265ms (London)
- mad: 271.1ms (Madrid)
- sao: 343ms (São Paulo)
- dbi: 350.9ms (Dubai)
- syd: 382.2ms (Sydney)
- jnb: 420.1ms (Johannesburg)
- nai: 464.5ms (Nairobi)
- blr: (Bangalore)
- sea: (Seattle)
- den: (Denver)
- mia: (Miami)

可以看到通过derp单程最短延迟在170ms+,roundtrip至少延迟300ms

此时如果有一个公网ip的节点,可以尝试将它作为中继节点,将其他节点连接到它上,这样其他节点的网络延迟就会变小
例如使用ssh的端口转发,a,b是没有固定公网ip的节点,c是公网ip的节点,c和a,c和b之间均可以建立direct connection,延迟很
小在10ms左右
通过ssh本地端口转发将本地请求通过c转发到b,这样a和b就可以直连了,参考这篇文章

自建DERP节点

参考

参考

欢迎关注我的其它发布渠道