实名推荐虚拟组网套件——Tailscale

网络安全
查看原帖
你正在查看历史版本 v1。返回最新版本

在模态框中查看主贴与评论的删除、修改和新增情况。

906051999
906051999 楼主
#1

关键词

  • Tailscale
  • Subnet routes
  • Exit node

引言

使用Tailscale配置好虚拟组网生态后,我个人沉浸式使用了半年时间,非常好用,非常优雅的满足了我的各种使用需求,忍不住要向大伙儿分享

先说句题外话,之前分享自建Tailscale节点教程的时候,很多佬友在评论区留言说觉得Tailscale用起来太复杂了,还是Zerotier更简单上手。

从我个人的使用体验来说,Zerotier的优势在于节点认证十分简单,设备只需要一串代码就能入网,而基于官方认证系统的Tailscale就需要良好的网络环境,仅从认证这一环节来看,Tailscale确实没有优势(Headscale自建认证系统虽然能解决这个问题,但是对我来说又太麻烦了)

那我为什么最后还是选择使用Tailscale作为我的个人家庭虚拟组网套件呢?

正文

设备情况

首先介绍我的个人设备网络情况,两个局域网不在一个城市:

局域网A下部署一个主路由,该网关下有我的NAS、Ubuntu和软路由;

在另一个局域网B中部署一个副路由,该网关下有我的PC、iPad、手机。

我的需求就是能够随时随地、便捷地访问和配置A网下的所有设备。

graph TD
    subgraph "局域网A"
        A_GW[主路由] --> NAS[NAS]
        A_GW --> Ubuntu[Ubuntu 主机]
        A_GW --> SoftRouter[软路由]
    end

    subgraph "局域网B"
        B_GW[副路由] --> PC[PC]
        B_GW --> iPad[iPad]
        B_GW --> Phone[手机]
    end

    A_GW <-->|虚拟组网| B_GW

    style A_GW fill:#cde4ff,stroke:#333
    style B_GW fill:#ffe4cd,stroke:#333 

Subnet routes(子网路由器)

这时就要使用到Tailscale的Subnet routes(子网路由器)功能,这也是最吸引我的功能。

虚拟组网会给子网设备分配虚拟的IP地址,这个地址可以自定义。

但是这就有一个不方便的地方,比如说我在局域网环境下访问NAS上的站点服务(如emby、群晖主页)时,已经保存有cookie和历史记录,很多站点服务的端口、账号、密码,我都完全依赖chrome的联想和自动补全,如果在虚拟局域网环境下NAS的IP改变了,就意味着我需要重新输一遍,这对我来说太麻烦了。

而 Subnet routes(子网路由器)可以实现将局域网的某个子网设备作为路由器将一个网段共享,什么意思呢,就是我在虚拟组网环境下,依然可以直接通过访问局域网IP来直接访问设备,不需要做任何调整

这是一种极大便利,因为我会在手机、平板、电脑上访问局域网下的多个设备,这涉及到十几个应用或窗口,如果都需要一一调整IP,我会裂开的。

而且这个功能的优势在于,你只需要将局域网中一台设备设置为Subnet routes(子网路由器),就可以在虚拟网络环境下访问整个局域网中同网关下的任意设备,甚至可以远程使用打印机(连WIFI的那种),对于局域网设备多的用户来说,减少了太多配置成本。

特别是当你的设备回到局域网环境中时,一切配置都不需要调整的感觉,你想象那种爽感吗?

Exit node(出口节点)

接下来这个功能,我用的不多,但是对于某些场景,实用性是相当高的。

Exit node(出口节点)就是可以将任意一个虚拟组网设备a配置为流量出口节点,如果你在另一个虚拟组网设备b中将设备a选中为出口节点,那么此时你的设备b的所有流量都会通过a中转。

是不是很像VPN?

已经有了clash,这个功能有什么意义呢?

举例子:

  1. 在手机上同时只能启动一个VPN,如果你使用了Tailscale,你就不能同时使用clash。但如果此时你刚好有一个组网设备实现了科学上网,那么将它作为Exit node(出口节点),在手机上选择它,你就能同时实现虚拟组网+科学上网。

  2. 又或者有一些设备突然需要科学上网,但是不方便配置clash,或者懒得折腾,直接使用Exit node(出口节点)功能,就能瞬间解决这个难题。

  3. 再或者在一些业务场景中,某些APP或网站不允许异地登录或者频繁更换IP,你也可以将一个固定家宽设备作为Exit node(出口节点),其他登录设备都将其选择它作为流量出口。

这个功能虽然对我来说使用频率并不高,但是用起来几乎没有任何成本,偶尔用上了就会感到爽的不行。

STUN内网穿透强行实现P2P

接下来这个玩法,我怀疑全网估计都没人说过,虽然原理并不复杂。

Tailscale之所以需要自建derp,一个是增加NAT打洞概率,一个是为了设备NAT打洞失败情况下,也能回退到中继保持联通

但是现实的网络环境并不总受自己掌控,特别是在外租房,那网络环境更是一个比一个逆天,一个比一个复杂,所以NAT打洞几乎是不可能的。

如果我只能使用中继节点的3Mbps“大”水管看emby,那真不如看在线资源

所以之前我在主路由部署了lucky,使用STUN内网穿透随便给一个端口打了一个洞

没想到无心插柳柳成荫,这个穿透出来的地址就相当于我的局域网的公网IP,此时在Tailscale虚拟组网环境中ping我的局域网设备,都自动从STUN穿透地址实现了直连。

总结

实际上我在使用Tailscale时,并没有进行很复杂的配置,也没有仔细研究它的功能,我就是在使用过程中慢慢解锁了上面这些能力,然后才发现它帮我省了多少时间和精力,我非常乐意向你推荐这个宝藏虚拟组网套件。

这篇文章并不是教程,如果有佬友需要更具体的配置,可以留言说一下,我觉得使用起来还是很符合逻辑的。

优点小结

优点1:设备支持
我的个人设备几乎涵盖了所有主流操作系统:Windows、Ubuntu、OpenWrt、群晖、Mac OS、iPad OS、Android,而Tailscale支持以上所有设备,且你很方便的就能实现安装(应用商城、命令行、安装包)。

优点2:支持局域网IP
不管在什么网络环境下,都使用一个固定局域网IP访问设备,使用体验极好。

优点3:自选流量出口
将子网设备作为出口节点,实现流量转发功能。

题外话

说到STUN内网穿透,之前我也分享了一个内网穿透的使用手册,但是现在cloudflare调整了Free计划,好像已经用不了了。

而且之前的域名跳转也很不优雅,我最近想做一个STUN内网穿透2.0教程,并且开发了一个支持动态更新域名的轻量导航站,不知道有没有佬友觉得有意思的,对于导航站的建议可以随时提。

:heart:139:+1:19:clap:1:open_mouth:1
TOPIC OWNER
168楼层
167回复
88用户
906051999 momeo Chaosm Cat73 Xinalin marsgh

评论第 1 页,共 4 页

momeo
momeo
#2

感觉不错,感谢分享!

:heart:2
Chaosm
Chaosm
#3

不错的教程,感谢分享。虽然我选择直接内网穿透放在公网上,但是你这个方案更私密安全。

:heart:5
Cat73
Cat73
#4

请谨慎在 Linux 服务器上安装,有概率造成服务器失联或断网

:heart:4
2个回复
906051999
906051999 楼主

目前没有出现这个问题,我认为应该是更大可能是个人配置问题

:heart:1
TOPIC OWNER
Debrief3669
Debrief3669

从未遇到过,已经装了几十台服务器了

:heart:1
↓ 跳到帖子
Xinalin
Xinalin
#5

其实Zerotier配Managed Routes也可以实现子网路由

我从zerotier换tailscale的核心动力是原生的自建derp支持moon真难用吧、控制平面转发的保底连接可靠性以及更方便的连接性debug工具。以前用zerotier连不上的时候根本查不出来为什么

以及tailscale感觉比zerotier完善一些,web控制台、客户端应用和各种功能都更好用

:+1:1:heart:1
906051999
906051999 楼主 ↶ @Cat73
#6

目前没有出现这个问题,我认为应该是更大可能是个人配置问题

:heart:1
TOPIC OWNER
marsgh
marsgh
#7

我在路由器上面装了Zerotier和Tailscale
Zerotier秒打洞成功,Tailscale一直只能走中转,不知道是什么原因

:heart:2
1个回复
Xinalin
Xinalin

个人感觉tailscale可能没适配好网络边界的设备,有公网v4还是打洞失败

这个问题我选择摆烂,端口转发41641 udp解决拉倒

:heart:2
↓ 跳到帖子
Sullivan
Sullivan
#8

哇塞,终于有大佬细聊整个配置内容了,我先看看对网络的要求程度如何,谢谢分享。

:heart:2
1个回复
Mi_Manchi
Mi_Manchi

很简单易用,我现在组网就是用这个和surge,无缝衔接家里设备,我上班都是带着ipad ,然后远程桌面家里电脑,延迟6ms,带宽30M

:heart:5
↓ 跳到帖子
wangyelinux
wangyelinux
#9

感谢佬友分享,回头有空研究研究

:heart:2
Mi_Manchi
Mi_Manchi ↶ @Sullivan
#10

很简单易用,我现在组网就是用这个和surge,无缝衔接家里设备,我上班都是带着ipad ,然后远程桌面家里电脑,延迟6ms,带宽30M

:heart:5
2个回复
Sullivan
Sullivan

我想给家人也装一个,取代无公网V4的困恼。

:heart:3
a569781231
a569781231

ios怎么用 家庭电脑作为exit node吗

:heart:2
↓ 跳到帖子
Xinalin
Xinalin ↶ @marsgh
#11

个人感觉tailscale可能没适配好网络边界的设备,有公网v4还是打洞失败

这个问题我选择摆烂,端口转发41641 udp解决拉倒

:heart:2
Sullivan
#12

我想给家人也装一个,取代无公网V4的困恼。

:heart:3
a569781231
a569781231 ↶ @Mi_Manchi
#13

ios怎么用 家庭电脑作为exit node吗

:heart:2
1个回复
Xinalin
Xinalin

配置好子网路由,在ipad上开tailscale,请求会按路由规则走对应节点

exit node的作用是转发所有而非指定子网流量,只是连回去没必要

:heart:1
↓ 跳到帖子
Sullivan
Sullivan
#14

我对这个相当感兴趣,等有空了试试。多写分享。

:heart:3
1个回复
906051999
906051999 楼主

这个还蛮神奇的哈哈

TOPIC OWNER
↓ 跳到帖子
Sanc
#15

是不是同运营商?
现在跨运营商时候,我电信链接家里联通基本不可用,经常丢包卡顿

:heart:1
1个回复
906051999
906051999 楼主

各种跨,什么联通、电信、移动,三家都有

TOPIC OWNER
↓ 跳到帖子
906051999
906051999 楼主 ↶ @Sanc
#16

各种跨,什么联通、电信、移动,三家都有

1个回复
Sanc

那很奇怪,我家里还是联通公网。
不管是公网直连还是打洞,都很卡顿

:heart:1
↓ 跳到帖子
TOPIC OWNER
906051999
906051999 楼主 ↶ @Sullivan
#17

这个还蛮神奇的哈哈

TOPIC OWNER
#18

那很奇怪,我家里还是联通公网。
不管是公网直连还是打洞,都很卡顿

:heart:1
1个回复
906051999
906051999 楼主

你在命令行看看连接情况

tailscale status

然后再ping一下你要链接的设备

tailscale ping device
TOPIC OWNER
↓ 跳到帖子
Xinalin
#19

配置好子网路由,在ipad上开tailscale,请求会按路由规则走对应节点

exit node的作用是转发所有而非指定子网流量,只是连回去没必要

:heart:1
1个回复
a569781231
a569781231

感谢 晚点研究下

:heart:1
↓ 跳到帖子
NiceBo
NiceBo
#20

支持,支持,搞一套在公司玩玩

:heart:1
906051999
906051999 楼主 ↶ @Sanc
#21

你在命令行看看连接情况

tailscale status

然后再ping一下你要链接的设备

tailscale ping device
TOPIC OWNER
Sanc
#23

不稳定,比如我远程桌面,用着就相当卡顿
甚至不如我wireguard走中转流畅

:heart:2
2个回复
906051999
906051999 楼主

远程桌面试试rustdesk :laughing:

TOPIC OWNER
xiaoxiDo
xiaoxiDo

我的组网打洞成功后,自带的远程桌面几乎没延迟。可能跟距离和运营商也有关系 :grinning_face_with_smiling_eyes:

:heart:1
↓ 跳到帖子
EthanTien
EthanTien
#24

[!error]
又要学习了 :expressionless_face: 之前只是简单玩了下 Zerotier

:heart:2
uuuv
#25

singbox 可以作为 tailscale 客户端,配合本身的分流规则用起来也很舒服

:heart:2
906051999
906051999 楼主 ↶ @Sanc
#26

远程桌面试试rustdesk :laughing:

TOPIC OWNER
wokul
wokul
#27

和easytier比起来有什么优缺点呢

:heart:1
1个回复
906051999
906051999 楼主

本期介绍的功能,easytier似乎没有哦 :laughing:

:heart:1
TOPIC OWNER
↓ 跳到帖子
906051999
906051999 楼主 ↶ @wokul
#28

本期介绍的功能,easytier似乎没有哦 :laughing:

:heart:1
TOPIC OWNER
thisCookie
thisCookie
#29

很好。干货满满。安利住了,有空我也打通一下我家和对象家

:laughing:1
1个回复
906051999
906051999 楼主

那还需要虚拟组网吗,直接物理打通 :laughing:

TOPIC OWNER
↓ 跳到帖子
906051999
906051999 楼主 ↶ @thisCookie
#30

那还需要虚拟组网吗,直接物理打通 :laughing:

TOPIC OWNER
wilile
wilile
#31

感谢分享!

:heart:1
jrerrq
jrerrq
#32

不用这么麻烦, 直接把clash/singbox的端口frp出来就是一个socks5节点了, 集规则/内网/科学上网一体

:heart:4
howecc
howecc
#33

感谢分享

:heart:1
xiaoxiDo
xiaoxiDo ↶ @Sanc
#34

我的组网打洞成功后,自带的远程桌面几乎没延迟。可能跟距离和运营商也有关系 :grinning_face_with_smiling_eyes:

:heart:1
2个回复
906051999
906051999 楼主

如果打洞成功,那就是P2P了,可惜这边很难成功

TOPIC OWNER
Sanc

你应该没有跨运营商

:heart:1
↓ 跳到帖子
906051999
906051999 楼主 ↶ @xiaoxiDo
#35

如果打洞成功,那就是P2P了,可惜这边很难成功

TOPIC OWNER
bluthondyoub
bluthondyoub
#36

:tieba_025: 好用

:heart:1
lo-qz
#37

感谢佬友分享,学习下

:heart:1
hengbo
hengbo
#38

多谢分享,之后试试在公司服务器上搞一个 :nerd_face:

:heart:1
dawfwaf
#39

tailscale确实好用

:heart:1
magot
#40

自己的设备基本都走了taiscale,用腾讯的轻量云搭的derp节点很爽,windows直接远程都很流程,都不要向日葵那些了,taiscale做内网环境,家里服务器都通过taiscale里面来连接,公共服务通过Cloudflare Tunnel 来放出去,感觉安全性还是很高的,避免服务器和内网环境直接暴露公网

:heart:5
leonqiu
leonqiu
#41

需求不高的话 我觉得直接2个路由直接openvpn更实用

:heart:1
PKYF
#43

我在香港搭建了一个中转。就是不走自己的路。什么情况呢

:heart:1
2个回复
906051999
906051999 楼主

看看走的是什么中转

TOPIC OWNER
Debrief3669
Debrief3669

你可以在ACL里面配置关掉其他的derp,强制他走你自己的derp

:heart:1
↓ 跳到帖子
906051999
906051999 楼主 ↶ @PKYF
#44

看看走的是什么中转

TOPIC OWNER
a6083450
a6083450
#45

感谢分享,之前我是用 Headscale + Tailscale来组网的 :laughing:

:heart:1
Debrief3669
Debrief3669 ↶ @Cat73
#46

从未遇到过,已经装了几十台服务器了

:heart:1
toou1234
#47

都用过,现在我在用easytier

:heart:1
Debrief3669
Debrief3669 ↶ @PKYF
#48

你可以在ACL里面配置关掉其他的derp,强制他走你自己的derp

:heart:1
1个回复
PKYF

acl在哪里呢

:heart:1
↓ 跳到帖子
Lilo
Lilo
#49

除了这些之外,ACL、 Tailnet lock 也非常优秀。

Tailnet lock 保证了即使你的账号被盗/tailscale控制平面本身被攻破,其他人也无法把设备加入到网络中,除非他还拿下了你的一个 signing node

ACL 访问控制使用 json 在线编辑,保存立即生效,安全又方便。更妙的是还能在里面写测试用例,保存时会自动检查测试用例是否都满足,不满足会报错不生效,防止你意外的配错规则,爱死这功能了。

:heart:3
ccqc
ccqc
#50

确实挺好用的,用来组网很不错,这个怎么看是否打洞成功啊

:heart:1