iStoreOS安装Tailscale内网穿透,并通过VPS出口节点功能实现科学上网

Tailscale是一款简单易用的VPN内网穿透工具,基于WireGuard协议,将不同网络环境的设备组成一个虚拟局域网,使其可以互相访问。无需复杂的设置就能轻松实现多平台设备(Windows、macOS、Linux、iOS、Android)互联,无论是远程访问家庭设备、协作办公,还是保护网络隐私,Tailscale都能提供便捷且高效的解决方案。通过身份认证系统(如 Google、Microsoft 登录),你可以轻松管理网络设备,确保连接安全可靠。

准备工作

在安装Tailscale之前,需要做一些准备工作:

  1. 需要准备一个邮箱(支持:谷歌Gmail邮箱、微软outlook邮箱、微软hotmail邮箱、苹果Apple邮箱)或者一个账号(支持:github账号、passkey账号)。

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

内网穿透设置

[!info]
iStoreOS固件版本24.10.x带应用商店的全功能版,主路由版、旁路由版均可。如果iStoreOS固件版本低于该版本的建议升级到此版本或者升级到最新的版本。

安装Tailscale

1、在左边菜单点击iStore全部软件,搜索栏输入tailscale回车,在下图位置显示的Tailscale标签卡内点 安装

2、安装完成后点右上角的绿色按钮关闭本窗口。

3、在左边菜单 服务 就可以看到Tailscale选项,如果没有就刷新一下页面应该就会出现了。

配置Tailscale

1、在左边菜单依次点击 服务Tailscale,此时右边显示的服务状态为 未运行由于直接在图形界面设置,会出现一些奇奇怪怪的问题,所以需要到命令行去设置

2、点击左边菜单的 服务终端 ,输入iStoreOS的超级管理员账号root以及密码,进入root状态下(也可以在电脑上使用Finalshell、Xshell、Putty之类的软件登录到iStoreOS的root状态)

[!caution]
在终端中输入密码时,是不会有任何显示的,这是正常的,只要确认密码输入是正确的,直接回车即可。

3、输入以下命令回车,启动Tailscale

1
/etc/init.d/tailscale start

4、设置本设备的局域网网段并将设备设置为Exit-Node出口节点,在终端中输入下面的命令。

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

[!warning]
如果iStoreOS内网IP不是192.168.100.X网段,需要将命令中的IP修改成局域网实际的网段;例如:iStoreOS的内网IP是10.10.10.222,那么命令应该写成tailscale up --accept-dns=false --advertise-routes=10.10.10.0/24 --advertise-exit-node注意命令行中的空格!

5、运行后会弹出一个链接地址,提示我们登录。

6、点击或在浏览器中输入链接地址后,会弹出需要登录的窗口,输入准备好的E-Mail点击Sign in

7、首次登陆会出现一个安装向导页面,按图下图所示填写后点击Next:Add your first device,然后关闭页面,重新点击或在浏览器中输入链接地址登陆。

8、登录账号后,点Connect连接设备。

9、登录成功,耐心等待一会,会自动进入Tailscale的管理后台;如果没有自动进入后台,可以点击页面中visit the console进入Tailscale的管理后台后台。

[!tip]
如果此处再次出现添加设备的安装向导,直接点击页面下方的Skip this introduction即可跳过向导页,进入管理后台页面。

8、在Tailscale的管理后台,可以看到当前组网的设备清单,其中名称为iStoreos的就是刚刚添加进入的软路由,并列出了Tailscale给设备在虚拟内网中分配的内网IPv4地址;右侧显示绿色圆点和Connected就表示该设备正常联网了。

9、点···图标,选择Disable key expiry,设置该设备的密钥为永不过期。看到该设备下方有显示Expiry disabled说明设置成功。

10、再次点···图标,选择Edit route settings,设置该设备的内网路由。

11、在192.168.100.0/24(在步骤4的命令中你写的网段是什么,这里就显示什么)和Use as exit node这两处打勾,再点Save

12、回到iStoreOS的终端页面,输入下面的命令回车,设置Tailscale开机自动启动。

1
/etc/init.d/tailscale enable

Tailscale_Intranet_Penetration_18.png

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

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

配置iStoreOS网络接口

1、添加网络接口

通过iStoreOS创建一个新的非托管接口:网络接口添加新接口

按下面的内容配置对应参数后点击 创建接口

  • 名称:tailscale
  • 协议:静态地址
  • 设备:tailscale0

接口tailscale 页面下补充填写下列参数后点击 保存

  • IIPv4地址:100.68.14.112(tailscale分配给软路由设备的内网地址)
  • IPv4子网掩码:255.0.0.0

最后点击 保存并应用

2、创建防火墙

iStoreOS创建新的防火墙区域:网络防火墙 常规设置区域 列表中点击 添加

  1. 按下面的内容在常规设置标签页中配置对应参数,具体参数参考下图。
  • 名称:tailscale
  • 入站数据: 接受 (ACCEPT)
  • 出站数据: 接受 (ACCEPT)
  • 区域内转发: 接受 (ACCEPT)
  • IP动态伪装:勾选
  • MSS钳制:勾选
  • 涵盖的网络:tailscale
  • 允许转发到目标区域:选择您的LAN(以及其他内部区域,如果计划使用此设备作为出口节点则还需要添加WAN)
  • 允许源区域转发:选择您的LAN(以及其他内部区域或如果不想将LAN流量路由到其它Tailscale主机,则留空)

  1. 参考下图在连接跟踪设置标签页中配置允许“无效”流量on (只有开启这个开关,Tailscale才能从外部访问) ;然后单击保存

3、编辑Lan区域转发防火墙

iStoreOS中创建新的防火墙区域:网络防火墙区域“lan” 编辑

按下面的内容在常规设置标签页中配置对应参数,具体参数参考下图。

  • 入站数据: 接受 (ACCEPT)
  • 出站数据: 接受 (ACCEPT)
  • 区域内转发: 接受 (ACCEPT)
  • 允许转发到目标区域:包含Tailscale
  • 允许源区域转发:包含Tailscale

最后点击 保存并应用

此时,iStoreOS软路由下所有子网设备,就都接入了Tailscale的虚拟局域网,并能从外网直接通过设备的子网IPv4地址访问了。

[!caution]
要从外网访问iStoreOS软路由及其所有子网设备,外网的设备必须要安装Tailscale客户端,并登陆同一个Tailscale账户!

开启Exit-Node科学上网功能

要开启科学上网能能,需要一台在外网环境下的VPS服务器;在VPS上安装Tailscale并开启Exit-Node出口节点,让流量都从VPS上的Tailscale Exit-Node出口节点走,从而实现科学上网。

添加Tailscale仓库与GPG密钥

1、Tailscale仓库使用GPG签名确保包完整性,需先导入密钥;用SSH工具连接登陆VPS主机,依次添加Tailscale的包签名密钥和仓库。

密钥

1
curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

仓库

1
curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.tailscale-keyring.list | tee /etc/apt/sources.list.d/tailscale.list

2、在VPS主机上更新包索引并安装Tailscale客户端。

1
apt update && apt install tailscale -y

登录Tailscale并配置Exit-Node出口节点

1、Tailscale 依赖 tailscaled 后台服务,需确保其运行并开机自启。

1
systemctl enable --now tailscaled

2、登录并加入Tailscale网络

1
tailscale up

此时会输出一个登录链接(如 https://login.tailscale.com/a/xxxxxx ),需在浏览器中打开并完成身份验证(支持 Google、GitHub、Microsoft 等账号);验证通过后,终端会显示成功信息。

[!caution]
若设备无图形界面(如VPS服务器),可将链接复制到本地浏览器登录。所有要组网的设备必须登录同一个账号才可以组网;登录后设备会自动加入网络。

3、在VPS主机上打开终端会话并启用IP转发。

如果Linux系统有目录/etc/sysctl.d,使用下面的命令

1
2
3
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf

否则,则使用如下命令

1
2
3
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.conf
sysctl -p /etc/sysctl.conf

4、将设备设置为Exit-Node出口节点。

1
tailscale set --advertise-exit-node

5、在控制台管理的页面的列表中找到VPS设备。此时设备会显示Exit-Node出口节点标识。

6、点击···图标,然后选择 编辑路线设置

7、勾选Exit-Node出口节点的选项框,然后选择保存。

8、再次点击···图标,然后选择Disable key expiry,设置该设备的密钥为永不过期。

现在,所有Tailscale虚拟局域网内的设备将Exit Node设置为VPS的机器名称并点击Enable,就可以实现数据流量从VPS走了。