Tailscale:基于 WireGuard 异地组建虚拟局域网
Tailscale是一种基于WireGuard的虚拟组网工具,它能帮助我们把安装了Tailscale服务的机器,都放到同一个局域网内,即公司或者家里的PC机器连到同一网络,甚至云服务器都能放到同一个局域网。
Tailscale 官网
Tailscale 文档
使用Tailscale远程访问局域网1. 工具介绍
介绍该工具的有点和特性
没有公网IP,又想能满足远程办公需求?担心暴露公网IP而被频繁的恶意扫描、攻击?Tailscale的诞生,成为解决这些痛点的全新选择。
无需注册/授权登录/开箱即用
无需配置防火墙
没有额外的配置
高安全性/私密性
自动密钥轮换
基于WireGuard??保护
点对点连接
支持用户审查端到端的访问记录
访问/连接/高度可控
支持使用节点共享与指定的Tailscale用户共享您的设备
支持使用CL限制对设备的访问。
低延时/不限速
设备间在不跨运营商的前提条件下,设备所在网络环境的上行带宽就是访问下载的最大带宽
使用Tailscale远程访问局域网
我们知道TailScale是基于 Wireguard 开发而来的,所以天生支持协议加密,安全性更高,而且是P2P连线,流量不经服务器,延迟更低。并且,对个人用户免费。
[1] 传输文件
TailScale内置taildrop,可以在设备间传输文件,因为其支持全平台,所以实际上这也是一个很好用的全平台文件传输工具。而且如果设备处在同一个局域网的话,传输速度也会非常快。
[2] 远程开发
通过笔记本可以远程台式主机或者服务器,进行开发。优点在于,台式机硬件的售价非常便宜,可以用很低的成本组装一台超强配置的机器。移动办公的精髓应该在与你可以随时随地的连接上一个统一且强大的工作环境, 而不是抱着同一台笔记本走南闯北。
[3] 服务代理
TailScale节点间是点对点tls连接,所以实际上也可以用来做网络代理。
2. 使用方式
介绍 Tailscale 官网的在线使用方式
使用Tailscale远程访问局域网当你登录并授权登录成功后,会自动为该设备分配一个 Tailscale IP(可用于局域网内设备间的访问),之后可以看到这么一份带有 IP 的列表了。
使用Tailscale远程访问局域网有了 Tailscale 的虚拟组网服务后,办公室和自由职业时期的居家办公体验,相差已经变得很小了。下来,我们就慢慢了解一下其用法和使用场景吧!3. 使用场景
安装上之后,我们可以怎么玩呢?
[1] 访问内网服务
如果你使用的Mac电脑的话,肯定存储是一个头痛的问题,因为一般情况下都会购买128G和256G版本的机器(不要问为什么,问的话就是穷)。这样当磁盘不够的时候,就让人感觉到焦虑。但是当我们使用Tailscale并拥有WebDav之后,就能很好的拓展存储空间,可以内网连接我的群晖NAS提供的WebDav了。
使用Tailscale远程访问局域网 – 网络采集而来[2] 远程访问机器 – 群晖
远程使用PC的情况,可以通过TeamViewer完成。但是使用RDP协议来远程操作,效果体验更佳而且更稳定。但是PC机需要一直开机状态,如果我们只是偶尔使用一下的话,这有些费电了。
当我们使用Tailscale之后,通过群晖(或者机器机器也可以)做一个反向代理方便进入家里的梅林路由器,并修改本地Mac的hosts文件来解析我们自定义的域名。群晖 NAS 的控制面板中自带了配置反向代理的地方,可以省的我们折腾。进入梅林路由器,进入网络工具中的通过网络唤醒界面,选择对应的PC即可。
使用Tailscale远程访问局域网 – 网络采集而来
当然,首先这台PC机需要配置好通过WOL唤醒才行,而配置可以自己参考网络唤醒全攻略。等待电脑唤醒完成后,使用远程桌面进行远程连接,就可以得到一个用户体验很不错的体验了。
[3] 远程访问机器 – 主机
上面我们知道群晖会自带反向代理的功能,但是并不是每个人都会买这个的,那有没有其他方式来处理这个问题呢?肯定是可以的,我们这里通过Linux接入TailScale服务,让其充当网关,这样就可以问整个内网网段了。
这样做的好处,还有一个就是,家里或者公司不是每一部设备都可以安装到TailScale服务的,比如打印机之类的。这样设定PC机充当子路由(Subnet Route),其他所有的外网的TailScale装置都可以透过这部Linux装置作为网关访问家里内网所有的设备。
#Linux机器设置IP转发(临时)$echo’net.ipv4.ip_forward=1’|sudotee-a/etc/sysctl.conf$echo’net.ipv6.conf.all.forwarding=1’|sudotee-a/etc/sysctl.conf$sudosysctl-p/etc/sysctl.conf
TailScale不需要防火墙配置,会自动管理规则,以允许转发。设定过程也没涉及到iptable的设置,一条指令可以完成。
#替换为自己的网段(IPV4或IPV6)$sudotailscaleup–advertise-routes=20.13.3.0/24
这里设置完成之后,默认并没有开启转发功能。需要我们登陆网页,在控制台页面找到我们这台机器,打开路由设置功能。基于安全特性,Tailscale每隔6个月需要重新授权装置,我们这里可以选择关掉这个。
使用Tailscale远程访问局域网 – 网络采集而来
使用Tailscale远程访问局域网 – 网络采集而来[4] 代理服务 – 科学上网
比如我在境外服务器上安装一个tailscale的节点,然后再在境外服务器上安装一个cow(用来做http proxy server)。那我就可以在任意一台机器上,访问境外服务器的tailscale子网IP cow端口的形式实现HTTP/SOCKS代理。
#安装cow工具(梯子机器)$curl-Lgit.io/cow|bash#修改配置文件$cat/home/escape/.cow/rclisten=http://100.100.100.100:17777#将其添加到systemd服务中$sudovim/etc/systemd/system/cow.service\[Unit\]Description=cowserviceAfter=network.targetStartLimitIntervalSec=0\[Service\]Type=simpleRestart=alwaysRestartSec=1User=escapeExecStart=/usr/local/bin/cow-c/home/escape/.cow/rc\[Install\]WantedBy=multi-user.target
Tailscale提供的relays数量有限,而且全部在国外。你也可以自建中继。自建中继服务器被称为derper,是用go开发的,建议先安装go环境。go是预编译的,安装起来很简单,下载、解压即可。
启动derper的参数,其中-hostname表示有效的公网域名,derper会自动为这个域名申请Let’s Encrypt TLS证书,其中-a表示指定derper监听的tcp端口,默认为443,修改为其他端口的话似乎转发流量会有问题,其中-stun表示stun协议的udp端口,health check的时候会用到。
#安装$goinstalltailscale.com/cmd/derper@main#启动$sudoderper-c=/root/derper.conf-hostname=xx.xx.xx-a=:443-stun#加入自启动里面sudovi/etc/systemd/system/derper.service\[Unit\]Description=derperserviceAfter=network.targetStartLimitIntervalSec=0\[Service\]Type=simpleRestart=alwaysRestartSec=1User=rootExecStart=/home/escape/.go/bin/derper-c=/root/derper.conf-hostname=x.x.x.x-a:443-stun\[Install\]WantedBy=multi-user.target
需要注意的是,因为derper会申请公网TLS证书,如果你的服务器在国内,那么域名必须要备案。而且由于中国封锁了Let’s Encrypt,所以你的derper在启动一会儿后,很可能会报错表示证书申请失败。所以,使用香港、日本、新加坡的主机会好很多。
4. 命令使用
这里主要介绍 tailscale 命令的使用
一图搞定
TailScale 实现远端访问整段局域网
近期折腾 tailscale 的一些心得
Tailscale:基于 WireGuard 异地组建虚拟局域网
2022 年正確的内外網穿透,内網翻墻,高速翻墻
Tailscale wireguard 協議安全加密隧道内網建站教程
END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com