使用 TailScale 组建虚拟专用网络,高速免费跨网络访问内网服务器设备。
一,为什么选择搭建虚拟专用网络 ?
当我们在内网搭建好如 Nas 等服务,我们常需要从外网访问。这时候要么我们需要有公网 IP,要么我们需要通过通过 FRP 等实现内网穿透。但是常常面临以下问题:
- 公网 IP 在国内要么申请动态公网 IP,但是在 IPV4 不够用的大背景下,即使申请到了,很容易被运营商偷偷收回去。要么购买付费的固定公网 IP 价格到 2000 每月。
- 使用 FRP,如果自己搭建,首先我们需要一个有公网的服务器,国内商业宽带较贵,往往带宽很低。而国外的服务器 就算很好的路线就会存在延迟丢包等等,且网速受限于带宽,除非花大价钱购买更好的网络节点。并且费用长期积累起来也是不小的费用,主要不是每天都用。
那么,我们这里来演示如何用 TailScale 搭建一个虚拟局域网,它是免费的,并且带宽很高,足够支撑起高画质的 4K 电影播放。
二,搭建过程
2.1 注册 TailScale,生成密钥。
首先我们需要去官网注册 TailScale。
来到 TailScale 官网,点击右上角的 Get Started,可以选择 Google 登录等方式登录账号。
我们直接填入基本信息,并跳过引导,来到 Machines 页面,点击中间右边的 Settngs

找到左栏的 Personal Settings 的 Keys,去生成密钥。

点击 Generate Auth Key
Description 里随便填,其它都不用选,直接生成密钥。


常见好密钥,我们复制下来,粘贴到一个地方,之后要用。
2.2 通过 Docker Compose 为服务器运行 TailScale
这里我们为服务器运行 TailScale 作为虚拟专用局域网内的设备之一。
我们这里直接使用 Docker Compose 即可,我这里使用飞牛 NAS 系统构建 Docker。

输入 docker-compose.yml 构建用 yml。
权限最小化,只访问当前设备(推荐):
version: '3.8'
services:
tailscale:
image: tailscale/tailscale:latest
container_name: tailscale
hostname: fnos-nas
environment:
- TS_AUTHKEY=tskey-auth-YourKEY # 替换为你的authkey
- TS_STATE_DIR=/var/lib/tailscale
- TS_EXTRA_ARGS=--accept-dns=false
volumes:
- ./tailscale-state:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
network_mode: host
cap_add:
- NET_ADMIN
restart: unless-stopped
如果需要作为 Exit Node 接管整个虚拟专用网络流量,实现访问局域网下多设备,可以使用以下的:
version: '3.8'
services:
tailscale:
image: tailscale/tailscale:latest
container_name: tailscale
hostname: fnos-nas
environment:
- TS_AUTHKEY=tskey-auth-knTRL-Your_Auth_Key # 替换为你的 Auth Key
- TS_STATE_DIR=/var/lib/tailscale
- TS_EXTRA_ARGS=--advertise-exit-node # NAS 作为出口节点
volumes:
- ./tailscale-state:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
network_mode: "host"
cap_add:
- NET_ADMIN
- SYS_MODULE
restart: unless-stopped
然后我们构建完成,启动 Docker 容器即可。
2.3 要连接的设备下载 TailScale 客户端
这时候我们的服务器已经在 TailScale 的我们账户下的虚拟专用局域网上线了,接下来我们需要为连接的设备上线。
比如我这里使用 iPhone 连接,直接去 App Store 下载 TailScale 即可,登录相同的账号,让 TailScale 创建 VPN 并连接,我们的设备也就上线了。
之后我们能在 TailScale 客户端里看到虚拟局域网里的服务器设备,它会为我们的每个上线的设备生成一个 虚拟 IP,我们直接用虚拟 ip 作为访问 ip 即可。
完成
之后我们就可以直接连接了,用我们的虚拟 IP连接。
注意:每当连接时,我们需要开启 TailScale 的 VPN 连接,连接进虚拟专用网络,也就是我们的虚拟的局域网。