当前对家庭宽带而言,可以使用的IPv4公网IP越来越少,访问家庭内网的资源将会变得越来越困难。部分网友可能会选择使用frp等针对特定协议和端口的内网穿透方案,但这种方案不是十分完美,无法访问家庭内网任意设备的任意端口。最佳的选择还是通过VPN来组建大内网。就当前技术发展而言,毫无疑问必须选择WireGuard,WireGuard就是VPN的未来。
WireGuard相比于传统VPN的核心优势是没有VPN网关,所有节点之间都可以点对点(P2P)连接,效率高,速度快,成本低。
但WireGuard目前最大的痛点就是上层应用的功能不够健全,WireGuard本身只是一个内核级别的模块,它只是一个数据平面,至于上层的更高级的功能,比如秘钥交换机制,UDP打洞,ACL等,需要通过用户空间的应用来实现。
Tailscale就是基于Wireguard的一个联网工具,无需公网地址,通过去中心化,实现各个节点之间点对点的连接。配置简单友好,支持的各类平台和客户端。下面介绍在OpenWrt上的配置过程。
下载软件
下载openwrt-tailscale-enabler,然后使用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*
启动tailscale
/etc/init.d/tailscale start
获取登录链接
tailscale up
复制显示的地址,并在浏览器中打开,使用谷歌或微软帐号登录Tailscale的管理主页进行验证。
编辑子网路由
在OpenWrt上输入以下命令,打开本地子路由。子网地址是OpenWrt的lan网络。
tailscale up --advertise-routes=192.168.18.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
现在各个tailscale节点之间已经可以正常互访了。




