Tailscale就是基于Wireguard的一个联网工具,无需公网地址,通过去中心化,实现各个节点之间点对点的连接.配置简单友好,支持的各类平台和客户端.
对比zerotier和wireguard,tailscale更容易连上官方的中转服务器,webui界面更简单,适合小白上手,并且可以一键更新,不需要公网ip.zerotier在没有ipv6的情况下很容易连接不上官方中转服务器导致设备掉线.wireguard需要公网ip,配置繁琐而且每次公网ip更换都需要重启wireguard接口.
如果有自建中转服务器的需求,tailscale需要80及443端口,对国内的用户和国内的政策要求不太友好,虽然有其他解决办法不过很麻烦不建议大家使用.如有自建节点的需求,建议使用zerotier自建moon服务器.
将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