在 OpenWrt 上配置 Tailscale 实现 WireGuard 点对点 VPN
当前家庭宽带可用的 IPv4 公网 IP 越来越少,访问内网资源变得困难。部分内网穿透方案(如 frp)只能针对特定协议和端口,无法访问任意设备的任意端口。最佳选择是通过 VPN 组建大内网,而 WireGuard 就是 VPN 的未来。
WireGuard 相比传统 VPN 的核心优势是没有 VPN 网关,所有节点之间都可以点对点(P2P)连接,效率高、速度快、成本低。但它本身只是内核级数据平面,需要用户空间应用来实现密钥交换、UDP 打洞、ACL 等高级功能。
Tailscale 正是基于 WireGuard 的组网工具,无需公网地址,通过去中心化节点实现点对点连接,配置简单,支持多平台。以下是在 OpenWrt 上的配置过程。
下载软件
从 GitHub 下载 openwrt-tailscale-enabler,或用 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”,地址填写 Tailscale 管理页面分配的 IP,掩码设置为 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 节点之间即可正常互访。
觉得内容不错?我要