前言

自己折腾nas或者linux小机器,都会碰到内网穿透的需求,tailscale就是其中一个非常方便、好用又免费的方案。

但我之前只是用它的最简单、基础的vpn组网功能,这两天偶尔看到别人分享它的子网路由(subnet routers)功能,发现非常契合我的使用场景,所以抓紧时间折腾了一遍,顺便做个记录。


子网路由

简单文字描述这个功能,约等于就是个跳板机:

  • 局域网内有很多个服务器
  • 这些机器在内网都用192.168.*.*ip进行访问
  • 并不是每台机器都能装tailscale
  • 在一台机器上部署tailscale,开启subnet routers,通过这台机器,在已经用tailscale组网的机器上,可以直接用192.168.*.*ip访问内网的机器

看上去还是比较拗口,那就直接看官网的图片解释吧


部署

先贴上官网的subnet routers的指导手册:Subnet routers and traffic relay nodes

然后我自己部署过程的步骤拆解:

第一步:安装tailscale

官网下载页面指路:https://tailscale.com/download

注意:到安装完成那一步即可,不需要启动。

第二步:开启ip转发

使用子网路由功能必须开启本机的ip转发。

这里以linux为例,这里直接照搬官网内容:

如果你的linux系统存在/etc/sysctl.d目录,使用如下命令:

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

否则使用如下命令:

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

第三步:启动tailscale,广播子网路由

命令如下

sudo tailscale up --advertise-routes=192.168.1.0/24

注意路由的网段,根据自己的情况调整即可。

比如

sudo tailscale up --advertise-routes=192.168.0.0/24,192.168.1.0/24

我的内网所有机器使用的都是192.168.1.0/24网络,所以只广播这一个网段。

第四步:网页端开启subnet routers功能

在第三步中,使用tailscale up启动tailscale以后,会跳出链接要求绑定到账号,这里不做赘述。

绑定成功以后,在官网管理台找到机器,点击右边三个点号出现菜单,选择edit route settting

在下一窗口子网路由的网段,保存。

到此,tailscale子网路由的功能部署完毕。在另外一台安装了tailscale并加入组网的机器上,就可以直接通过192.168.1.*的内网ip直接访问内网服务了。


结语

tailscale除了subnet router,还有一个exit node功能,看官网描述,大概就是通过tailscale组网的机器,可以指定一台机器作为网络出口。这功能我首先想到的合适的使用场景就是买个国外的vps当出口用来翻墙。

😄