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

       以前写过一篇关于群晖安装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客户端,相互之间都可以访问,实现大内网组网。

点赞
  1. Matt说道:
    Google Chrome Mac OS X 10.15.7
    谢谢大神,一直受益于你的网站,第一次发言。按操作现在可以实现外网访问,也可以用tailscale翻墙了,但翻墙之后外网流畅,内网比如微信就完全连不上,但如果不是用tailscale连,其他客户端同样节点就不会出现这情况,不知道什么原因,请教一下。
    1. 博主说道:
      Google Chrome Windows 10
      你试一下这个https://wp.gxnas.com/10078.html
  2. JackyWei说道:
    Google Chrome Windows 10
    大大你好,请求更新一下内核,现在这个tailscale安装不上,提示pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.86~a2cc28b19,我只能利用系统自带的更到6.1.85,官方的6.1.86装了没用……
    1. JackyWei说道:
      Safari iPhone iOS 17.5
      固件版本OpenWrt_x64_全功能版 by GXNAS build 2024.04.14 @ OpenWrt R24.4.4 / Lede - 18.06 内核版本6.1.85
      1. 博主说道:
        Google Chrome Windows 10
        基本上每周五晚上会更新,如果周五晚上没空就周六上午更新。到时你自己下载固件升级一下吧。
  3. jccfcv说道:
    我在istore安装的时候会报错 * pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.86~a2cc28b19a03432fc8450a077f7bd580-r1) for kmod-tun 我的系统和内核是 固件版本 bleachwrt plus 20231025 @ R23.10.24 / LuCI Master (git-23.291.46448-4898ed2) 内核版本 6.1.59
    1. 博主说道:
      Google Chrome Windows 10
      因为你这个固件不是lean的源码
  4. aolygc说道:
    Google Chrome Windows 10
    大佬,感谢你的openwrt的固件。但是有几个建议,不知道是否合适提出。 1,能否增加samba4 server的插件,我尝试了安装,但是似乎只能手工改samba4的配置文件。菜单里没法出现; 2,能否增加DDNS的插件,我也尝试安装了,但是配置后,报错,可能是冲突; 3,vi/vim 没法查看/编辑 文件中的中文字符,显示是 ... 。用more来看却可以。我在vimrc的文件里设置了编码好像也不行,不知道能否帮忙解决一下? 再次感谢您的固件,非常好用!
    1. 博主说道:
      Google Chrome Windows 10
      我不知道你装的是哪个版本,全功能版和主路由版都有DDNS的插件(DDNS-GO)不需要额外设置啊。至于增加插件的话,目前暂时没有计划。
      1. aolygc说道:
        Google Chrome Windows 10
        全功能版本里有DDNS-GO,哦哦哦,这个我以前没用过,原来就是DDNS。谢谢
  5. wonitor说道:
    Google Chrome Windows 10
    找不到地方问,借此楼问一下博主。我刷了4月5日的openwrt旁路由版(路由里面手动更新),后面发现软路由热爆了,查看进程发现coremark一直占用100%。请教是何原因导致。
    1. 博主说道:
      Google Chrome Windows 10
      敲命令kill杀死进程
      1. wonitor说道:
        Google Chrome Windows 10
        但这个怎么会莫名运行呢。我防它以后再莫名运行热死我的路由,我已经把bin下面的coremark改成.old了。
  6. 史莱姆KING说道:
    Google Chrome Windows 10
    我现在两地的主路由上都按照教学安装,设置好了。但是A地的设备如何访问B地的设备? 我A,B两地的设备都是192.168.11开头。 直接在windows的文件浏览器输入NAS的IP(例如\\192.168.11.99),无法访问。 如果是在浏览器上输入A,B两地的路由器自己的地址,可以进去到路由器自身的页面。 这里还需要再调整什么设置?
    1. 博主说道:
      Google Chrome Windows 10
      AB两端都是相同的网段应该不行,需要换不同的网段。
      1. 史莱姆KING说道:
        Google Chrome Windows 10
        经过测试,更换网段依然无法互访。比如A地192.168.11.X,B地192.168.12.X。感觉还是可能缺一些步骤。题外话,顺便按照网上其他教学测试了zero组网,这个确实不同网段下才可以。但是后来我又遇到zero速度慢,以及A地的机器后来重启之后上不去正常网络等奇怪问题,暂时放弃了zero。

发表回复