Tailscale是一个基于Wireguard的联网工具,其独特之处在于无需公网地址,通过去中心化实现各个节点之间点对点的连接。它的配置简单友好,支持各类平台和客户端。
相比其他组网工具,Tailscale具有诸多优势。与zerotier和wireguard相比,Tailscale更容易连上官方的中转服务器,其webui界面更为简单,适合小白用户上手。此外,Tailscale可以一键更新,无需公网IP。相比之下,zerotier在没有IPv6的情况下很容易连接不上官方中转服务器,而wireguard则需要公网IP,配置繁琐,每次公网IP更换都需要重启wireguard接口。
然而,Tailscale也存在一些缺点。如果有自建中转服务器的需求,Tailscale需要80及443端口,这对国内用户和国内的政策要求并不太友好。尽管有其他解决办法,但相对麻烦,不建议大家使用。对于自建节点的需求,建议使用zerotier自建moon服务器。
接下来,我们将介绍在OpenWrt上配置Tailscale的过程。
将Tailscale软件包下载到指定目录。进入tailscale的github releases地址,找到最新的软件包,下载到本地。然后使用Winscp工具将下载的软件上传到OpenWrt的/tmp目录下,也可以找到下载链接,直接使用wget命令下载。
wget https://github.com/adyanth/openwrt-tailscale-enabler/releases/download/v1.60.0-e428948-autoupdate/openwrt-tailscale-enabler-v1.60.0-e428948-autoupdate.tgz
tar x -zvC / -f openwrt-tailscale-enabler-v1.60.0-e428948-autoupdate.tgz
opkg update
opkg install libustream-openssl ca-bundle kmod-tun
/etc/init.d/tailscale enable
ls /etc/rc.d/S*tailscale*
/etc/init.d/tailscale start
tailscale up
复制显示的地址,并在浏览器中打开,使用谷歌或微软帐号登录Tailscale的管理主页进行验证。
不建议使用谷歌账号,因为使用谷歌后你手机在外面链接需要先开科学再登录谷歌账号才能链接上Tailscale的app。
在OpenWrt上输入以下命令,打开本地子路由。子网地址是OpenWrt的lan网络。
10.1.2.0/24是我的子网,不要无脑复制我的!!!!!
tailscale up --advertise-routes=10.1.2.0/24 --accept-dns=false
在Tailscale的管理页面上,单击设备列表右侧的更多图标,禁用密钥过期,并打开子网路由。
现在在OpenWrt上已经可以ping通其他Tailscale节点了,但其他节点还无法连接OpenWrt节点,还需要在OpenWrt上添加Tailscale接口。
在OpenWrt上新建一个接口,协议选静态地址,设备选tailscale0,地址为Taliscale管理页面上分配的地址,掩码255.0.0.0。防火墙区域选lan区域。
配置完成后如下图所示:
将以下内容,加到防火墙的自定义规则当中,并重启防火墙。
iptables -I FORWARD -i tailscale0 -j ACCEPT
iptables -I FORWARD -o tailscale0 -j ACCEPT
iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE