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. 史莱姆KING说道:
    Google Chrome Windows 10
    路由器上安装到最后,查看自动启动的命令之后,出现两个数字的 ls /etc/rc.d/S*tailscale* /etc/rc.d/S80tailscale /etc/rc.d/S95tailscaler 这种情况下,我重启了路由,然后再进去查看发现它并未运行,tailscale网页上,设备lastseen显示灰色。 我应该如何排查问题出现在哪里- -?
    1. 史莱姆KING说道:
      Google Chrome Windows 10
      好吧,我后来又测试了一轮,貌似把“系统”——“启动项”里面的“tailscale”先关闭,然后再重新启用。 再用查看自动启动的命令,就只剩下一个S80开头的。再重启软路由就好了。总之目前是解决了
      1. 博主说道:
        Google Chrome Windows 10
        好的
  2. HMaster说道:
    Google Chrome Windows 10
    天呐,你就仿佛肚子里的蛔虫,想要什么来什么哈哈哈哈 :huaji2: :huaji:
    1. 博主说道:
      Google Chrome Windows 10
      嘿嘿
  3. 史莱姆KING说道:
    Google Chrome Windows 10
    咨询博主,博主自己制作的openwrt,是否有更新记录?我最近看网盘上的貌似一周或者几天就有更新,但是不知道更新了啥- -?
    1. 博主说道:
      Google Chrome Windows 10
      博主编译的Openwrt源代码来自https://github.com/coolsnowwolf/lede,如果你想了解更新内容,建议去看一下作者的更新说明。
      1. 史莱姆KING说道:
        Google Chrome Windows 10
        好的,感谢~~
  4. 史蒂夫说道:
    Google Chrome Windows 10
    up,我现在是出现了一个这样的情况,设备重启后的90s内dns解析是没啥问题的,90s后就会开始解析的特别慢,使用自带的诊断显示bad address 'baidu.com'
    1. 博主说道:
      Google Chrome Windows 10
      信息量太少,没法判断。我这边是正常的。
  5. vakarian说道:
    Firefox Windows 10
    请问在路由器用shellclash的情况下,要怎么才能连回家就科学呢?目前我的shellclash使用黑名单模式,只有选中设备不走代理,同时打开本地流量代理,但用手机连回家后还是不能科学
  6. 飞翔的企鹅说道:
    Google Chrome Windows 10
    ikuai做主路由它系统经常升级,有必要更着升吗? :ku:
    1. 博主说道:
      Google Chrome Windows 10
      没有问题啊,我就是一直升级的。
  7. ReignSwords说道:
    Google Chrome Windows 10
    大佬..能发布一篇群晖魔兽映射外网的教程吗...大佬的技术太给力了...
    1. 博主说道:
      Google Chrome Windows 10
      群晖魔兽映射外网?你是想跟朋友联网打魔兽吗?那你可以试一下按照这个教程(https://wp.gxnas.com/12873.html)在电脑里面装个Tailscale,然后你朋友那边也装个Tailscale,登录同一个账号,就可以联网了。
  8. jingl说道:
    Google Chrome Windows 10
    博主,请教一下,按照你教程只能访问openwrt,其他的内网设备不能访问,要怎么设置呢?谢谢!
    1. jingl说道:
      Google Chrome Windows 10
      主路由是爱快,旁路由是openwrt,还有pve和黑群都不能访问,都是在同一ip网段
      1. 博主说道:
        Google Chrome Windows 10
        初步判断应该是你有哪个步骤没做对吧,再去认真检查看看吧。
  9. Q110说道:
    Google Chrome Windows 7
    好 好 好 好
  10. laoge说道:
    Google Chrome Windows 10
    博主能否演示用OpenWrt作为主路由,如何使主路由下面设备不安装Tailscale也能访问Tailscale网络? 自己根据网上教程试了几次都没成功。
    1. 博主说道:
      Google Chrome Windows 10
      你都没搞清楚Tailscale的原理吧?Tailscale使用的是WireGuard的VPN方式来组虚拟局域网的网络,你不装Tailscale不登录同一个账号,怎么能加入该网络?VPN以外的设备与VPN是隔离的,不加入到同一个网络,你怎么能访问别的设备?
      1. laoge说道:
        Google Chrome Windows 10
        你确定? 原理好像是走路由表。 请看这个哔哩哔哩教程:【Tailscale玩法之内网穿透、异地组网、全隧道模式、纯IP的双栈DERP搭建、Headscale协调服务器搭建,用一期搞定,看一看不亏吧?】 【精准空降到 02:09】 https://www.bilibili.com/video/BV1Wh411A73b/?share_source=copy_web&vd_source=95582c3cf7395b38120e4f62bc201e4c&t=129
        1. 博主说道:
          Google Chrome Windows 10
          拜托你去认真看一下视频,从2分20秒开始到2分27秒,人家明明说了:局域网1的Tailscale安装在openwrt主路由上,局域网2的Tailscale安装在openwrt旁路由上,局域网3的Tailscale安装在nas上。我还以为你真找到哪路神仙不需要安装Tailscale也能去访问Tailscale内的虚拟局域网设备呢。
          1. Q110说道:
            Google Chrome Windows 7
            楼主是不是说的子网路由设置(Subnet Router)?博主的设置已经有演示了,将openwrt的tailscale设置了子网路由,这样虚拟组网后Exit node,群晖也可以访问,主路由也可以访问,,,
          2. Q110说道:
            Google Chrome Windows 7
            上一条多打了Exit node 应该是这样:楼主是不是说的子网路由设置(Subnet Router)?博主的设置已经有演示了,将openwrt的tailscale设置了子网路由,这样虚拟组网后,群晖也可以访问,主路由也可以访问,,,前提是指能打开设置了子网路由的局域网下的设备,我三台群晖都在一个虚拟网里,三个局域网的内网ip段不一样,我开了子网节点的是可以访问内网其他设备,有一些不行,比如小米路由管理就进不去
          3. laoge说道:
            Google Chrome Windows 10
            可能是我一开始描述有问题? 其实我的意思是:主路由当然要安装Tailscale,然后希望主路由下面的设备不用安装也能访问Tailscale网络的其他设备。 目前我根据你的教程和网上的教程,从外面Tailscale设备(比如我安卓手机通过手机网络)可以访问主路由(已安装Tailscale)下的其他设备,但是主路由下的其他的设备不能访问外面的Tailscale设备。
          4. 博主说道:
            Google Chrome Windows 10
            嗯,你这么说的话就能说的通了,意思是某台安装了Tailscale的openwrt下的设备,想访问同一个Tailscale网络里面另外一台远程的设备,是这个意思吧?这个功能可以实现,无非就是配置好出口的网络,Tailscale的官网其实都有详细的说明,只不过是英文版的,你可以在浏览器翻译一下。
    2. 博主说道:
      Google Chrome Windows 10
      教程已经更新,你想外网设备互联的话,去看一下吧。
      1. laoge说道:
        Google Chrome Windows 10
        按照【外网互访局域网设备的设置步骤】设置后: A网络主路由(openwrt,Tailscale)下的设备只能访问B网络Tailscale分配的虚拟ip(100.112.XX.XX),并不能访问B网络的内网其他设备ip(192.168.1.X)。 说明:B网络也是开了子路由模式(Subnet routes)的,用单独win电脑安装Tailscale测试可以访问B网络内网的ip(192.168.1.X)。 博主可以验证一下,我不确定是不是我网络环境问题 :jingku:
        1. 博主说道:
          Google Chrome Windows 10
          我的教程是在OpenWrt下开启exit node,局域网内的设备会通过OpenWrt出去访问到别的网络,而你是在电脑上安装单独Tailscale,这是两种不同的场景设置是有区别的哦,你需要在电脑的Tailscale菜单上选择exit node出口设备,才可以访问到别的网络啊,你再去看看吧。
          1. laoge说道:
            Google Chrome Windows 10
            博主呀 我们到底是不是八字不合?这沟通理解,,看问题不要只看后半句嘛,我真的有点想哭了。。。。本贴第一次发问是我描述不够全面 是我的问题。 但,但,但这上面这个描述已经很直白了 :lei:
          2. 博主说道:
            Google Chrome Windows 10
            我就问你:A网络和B网络你都在OP里面按照本教程开启exit node了吗
          3. laoge说道:
            Google Chrome Windows 10
            我重新全面描述网络情况和遇到的问题: AB点的OpenWrt都开了相关设置,在https://login.tailscale.com/admin/machines看到的状态都显示:Expiry disabled、Subnets、Exit Node A网络主路由OpenWrt(192.168.0.1),B网络OpenWrt部署在旁路由(192.168.1.2). AB下面的设备都不安装tailscale, A1是A网络的PC,B1是B网络的PC。 A1能访问B网络OpenWrt的tailscale分配的虚拟ip(100.112.12.35),但不能访问192.168.1.2 。 A1不能访问B1内网ip(192.168.1.8)和其他内网设备。 为了测试B网络正确的tailscale设置,现在:C网络(主路由不安装tailscale)下的C1 winPC安装了tailscale :C1可以访问B1内网ip(192.168.1.8)和其他内网设备。 造成这样的原因我认为是本教程第4步:《4、把上一步骤记录的IP地址(是哪个局域网的exit node出口设备IP就写哪个,别搞混淆了),填写到下图的“IPv4地址”处,IPv4子网掩码选“255.0.0.0”;》 导致了能访问的出口ip只能是tailscale分配的虚拟ip,如果是192.168.X.X这类ip就不会走这个网口,所以连不上tailscale网络。 但是我按照上面bilibili那个教程,这个网口设置为不配置协议也不行。所以就不知道问题出在哪里了。 博主你可以先测试一下访问不通网络下的内网ip能否访问?
          4. laoge说道:
            Google Chrome Windows 10
            我的排版没有了,比较乱。 :han:
        2. 史莱姆KING说道:
          Google Chrome Windows 10
          我目前遇到和你类似的情况了。不知道你最终是如何解决的?

发表回复