OpenWrt安装Tailscale设置内网穿透+科学出国+外网互访局域网设备

本文由 简悦 SimpRead 转码, 原文地址 wp.gxnas.com

以前写过一篇关于群晖安装 Tailscale 的教程(如果还不了解 Tailscale 是什么的,去看 “这篇教程”),考虑到有些小伙伴的 NAS 并非 7*24 小时开机或者有些小伙伴没有使用群晖,因此博主把在 OpenWrt 安装 Tailscale 设置内网穿透的方法发出来,如果你在使用 OpenWrt 但是宽带没有公网又想远程访问的,可以按照本教程设置。

       以前写过一篇关于群晖安装 Tailscale 的教程(如果还不了解 Tailscale 是什么的,去看 “这篇教程”),考虑到有些小伙伴的 NAS 并非 7*24 小时开机或者有些小伙伴没有使用群晖,因此博主把在 OpenWrt 安装 Tailscale 设置内网穿透的方法发出来,如果你在使用 OpenWrt 但是宽带没有公网又想远程访问的,可以按照本教程设置。

【准备工作】

在操作之前,需要做一些准备工作:

1、需要准备一个邮箱(支持:谷歌 Gmail 邮箱、微软 outlook 邮箱、微软 hotmail 邮箱、苹果 Apple 邮箱)或者一个账号(支持:github 账号、passkey 账号),如果你都没有,建议先去注册(推荐注册微软邮箱):https://outlook.live.com/owa/

2、安装好 OpenWrt 软路由系统,并设置好网络环境,保证能正常运行和访问。

【内网穿透的设置步骤】

1、本教程使用的 OpenWrt 固件是博主于 2024 年 3 月 1 自行编译的(博主编译的全功能版、主路由版、旁路由版均可使用),如果你使用的 OpenWrt 固件并非博主编译的固件或者 OpenWrt 固件不带应用商店的有可能无法正常使用,如果你使用的 OpenWrt 固件版本低于该版本的建议升级到此版本或者升级到最新的版本;

2、在 OpenWrt 左边菜单,iStore,全部软件,搜索栏输入 tailscale 回车,在下图位置显示的 tailscale,点 “安装”;

3、软件在安装中,请耐心等待;

4、安装完成后点右边绿色的按钮关闭本窗口;

5、点 OpenWrt 左边菜单,服务,Tailscale,右边显示的服务状态为 “未运行”,由于直接在图形界面不好设置,所以需要到命令行去设置;

6、点 OpenWrt 左边菜单,系统,TTYD 终端,输入超级管理员账号 root 以及密码,进入 root 状态下(如果你使用的 OpenWrt 固件不带 TTYD 终端,也可以在电脑上使用 MobaXterm、Xshell、Putty 之类的软件登录到 OpenWrt 的 root 状态下);

7、输入以下命令回车,启动 tailscale:

/etc/init.d/tailscale start

8、输入以下命令回车,设置本设备为局域网出口,如果你的局域网不是 192.168.1.X 的网段,需要将命令中的 192.168.1.0 修改你的局域网实际的网段(假设你的 openwrt 的 IP 是 10.10.10.222,那么命令应该写 tailscale up --accept-dns=false --advertise-routes=10.10.10.0/24 --advertise-exit-node,注意命令行中有空格),运行后会弹出一个链接让我们登录,点击该链接:

tailscale up --accept-dns=false --advertise-routes=192.168.1.0/24 --advertise-exit-node

9、在浏览器会弹出需要登录的窗口,登录 tailscale(注意:所有的设备必须要登录同一个账号才可以组网);

10、登录账号后,点 “Connect”;

11、登录成功,耐心等待一会,会自动进入 tailscale 的管理后台;

12、在 tailscale 的管理后台,可以看到当前组网的设备清单(博主有 NAS、台式电脑、OpenWrt 旁路由、手机一共 4 台设备一起组网),其中名称为 “openwrt-gxnas” 的就是刚刚添加进入的 Openwrt 软路由,有个绿灯并显示 Connected 就表示该设备正常联网了,点右边三个小点;

13、选择 “Disable key expiry”,设置该设备的密钥为永不过期;

14、看到该设备下方有显示 “Expiry disabled” 就设置成功,再继续点三个小点;

15、选择 “Edit route settings”;

16、在 “192.168.1.0/24”(第 8 个步骤命令中你写的网段是什么,这里就显示什么)和“Use as exit node” 这两处打勾,再点“Save”;

17、输入命令回车,让 tailscale 开机自动启动:

/etc/init.d/tailscale enable

18、输入命令回车,查看 tailscale 是否已经生成开机自动启动的服务,看到有 / etc/rc.d/S**tailscale 字样(注意 S 后面的数字不一定跟我的一样)就表示设置成功;

ls /etc/rc.d/S*tailscale*

19、来测试一下远程访问的效果,关闭手机的 WIFI 使用手机流量来模拟远程访问,先在手机上打开 tailscale(登录与 OpenWrt 同一个账号),然后在手机浏览器打开家里主路由内网 IP 看看,可以访问;

20、接着试一下 openwrt 旁路由的内网 IP,OK 的;

21、再试一下群晖 NAS,全部使用内网 IP,也是没有问题的,相当方便;

22、好了,操作到这里,你已经可以内网穿透回家,在外网访问家里局域网的设备了。

【科学出国的设置步骤】

      如果你的 OpenWrt 不具备科学出国的环境,那么请无视此步骤的设置。

      如果你使用的 OpenWrt 具备科学出国的环境,那么可以使 tailscale 网络内的设备通过 OpenWrt 代理来实现科学出国,设置步骤(本教程以手机 app 为例,其他客户端设置方法一样):

1、打开 tailscale 手机 app,先激活功能(左上角开关处于 Active 状态),然后点右上角三个小点的下拉菜单,选择 “Use exit node...”;

2、在弹出的小窗口选择在 “【内网穿透的设置步骤】” 第 16 步骤中设置的 exit node 出口设备名称(我这里的设备是“openwrt-gxnas”);

3、tailscale 手机 app 会多出一行绿色的状态栏,显示 exit node 出口设备和名称;

4、手机浏览器可以出国了。

【外网互访局域网设备的设置步骤】

       如果你有多个局域网想组成虚拟局域网,每个局域网内的设备不需要安装 tailscale 客户端也可以相互访,那么除了做完 “【内网穿透的设置步骤】” 以外,在每个局域网内的 exit node 出口设备上,还需要设置以下地方:

1、在 Openwrt 的菜单,网络,接口,添加新接口;

2、新接口的名称我写的是 tailscale,新接口的协议选择 “静态地址”,在“包括以下接口” 处选择“以太网适配器:tailscale0”,提交;

3、登录【tailscale 后台】,找到 “【内网穿透的设置步骤】” 第 16 步骤中设置的 exit node 出口设备 IP 地址,记录下来(不要抄我的,写你的 exit node 出口设备实际 IP);

4、把上一步骤记录的 IP 地址(是哪个局域网的 exit node 出口设备 IP 就写哪个,别搞混淆了),填写到下图的 “IPv4 地址” 处,IPv4 子网掩码选“255.0.0.0”;

5、点击 “防火墙设置”,创建 / 分配防火墙区域选择 “LAN”,点 “保存 / 应用”;

6、把以下三行内容复制,到 “防火墙”、“自定义规则” 处粘贴,再点一下“重启防火墙”;

iptables -I FORWARD -i tailscale0 -j ACCEPT
iptables -I FORWARD -o tailscale0 -j ACCEPT
iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE

7、把需要做互通的网络,全部按照上面的设置好以后,所有局域网内的设备不需要安装 tailscale 客户端,相互之间都可以访问,实现大内网组网。

Comments