使用Tailscale组网实现外网访问fnos NAS服务
一、文档说明
1.1 核心目的
通过Tailscale组建虚拟专用网络(VPN),实现外网环境下对fnos NAS服务的稳定访问。适用于多局域网场景(如公司、家庭、外部移动网络)的设备无感互通,打破地域和网络边界限制。
1.2 环境依赖
- 需一台带有公网IP的服务器(本文以阿里云ECS为例,配置:Ubuntu 20.04系统、3M带宽,年付约99元)。
- 说明:内网穿透需依赖公网IP中转,国内第三方内网穿透服务普遍价格较高,自建方案更经济。
二、部署Tailscale国内中继DERP服务
Tailscale是基于WireGuard的P2P组网工具,可实现内网穿透;当P2P直连失败时(如复杂NAT环境),流量会通过DERP中继服务中转。由于Tailscale官方未在中国大陆部署DERP节点,自建国内DERP可提升大陆地区网络连通性。
2.1 前置准备
- 公网服务器需提前安装
docker和 docker-compose(用于部署DERP服务)。
- 公网服务器需安装Tailscale客户端(用于验证DERP节点合法性)。
2.2 安装Tailscale客户端
在公网服务器上执行以下命令:
# 一键安装Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# 登录Tailscale账号(需在浏览器中完成验证)
tailscale login
执行 tailscale login后,控制台会输出登录URL,用浏览器访问并按指引完成授权,确保服务器成功加入Tailscale网络。
2.3 部署DERP中继服务
步骤1:创建部署目录
# 新建文件夹存放配置
mkdir -p /opt/tailscale-ip-derper && cd /opt/tailscale-ip-derper
步骤2:编写docker-compose配置
创建 docker-compose.yml文件,内容如下(端口可自定义,建议使用10000以上高位端口):
services:
derper:
image: ghcr.io/yangchuansheng/ip_derper:latest # 基于官方DERP修改的适配镜像
container_name: derper
restart: always # 容器异常时自动重启
ports:
- "12345:12345" # DERP服务端口(宿主机端口:容器端口,需保持一致)
- "3478:3478/udp" # STUN协议端口(用于NAT类型检测,建议不变)
volumes:
# 映射Tailscale客户端的sock文件,用于验证节点合法性(防止被未授权设备滥用)
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
environment:
- DERP_ADDR=:12345 # 容器内DERP服务监听地址(需与端口映射一致)
- DERP_CERTS=/app/certs # 证书存放路径(自签名证书自动生成)
- DERP_VERIFY_CLIENTS=true # 启用客户端验证(必须开启,防止DERP节点被滥用)
步骤3:启动DERP服务
# 启动容器(后台运行)
docker-compose up -d
# 查看容器状态(确保状态为Up)
docker-compose ps
2.4 配置Tailscale ACL启用自定义DERP节点
登录Tailscale管理控制台,在“Access Controls”中修改 derpMap配置,添加自定义DERP节点(保留官方节点需设置 OmitDefaultRegions: false)。

配置模板示例(需替换为你的公网IP和端口):
"derpMap": {
"OmitDefaultRegions": false, // false=保留官方节点;true=仅使用自定义节点
"Regions": {
"900": { // 900-999为Tailscale预留的自定义DERP区域ID
"RegionID": 900,
"RegionCode": "cn-aliyun", // 自定义区域代码(如阿里云节点)
"RegionName": "China Alibaba Cloud", // 区域名称(便于识别)
"Nodes": [
{
"Name": "derp-aliyun-1", // 节点名称
"RegionID": 900, // 需与上级RegionID一致
"IPv4": "1.1.1.1", // 替换为你的公网服务器IP
"DERPPort": 12345, // 替换为docker-compose中配置的端口
"InsecureForTests": true // 自签名证书需设为true(生产环境建议配置HTTPS证书并改为false)
}
]
}
// 如需添加多个自定义节点,可复制上述结构并修改RegionID、IP、端口等
}
}
修改后点击“Save”生效,Tailscale会自动将配置同步到所有节点。
三、客户端安装与配置
所有需要访问fnos NAS的设备(如电脑、手机)需安装Tailscale客户端,并加入同一Tailscale网络。
3.1 客户端下载
访问Tailscale官方下载页,根据设备系统选择对应版本:

3.2 客户端登录
安装完成后,打开Tailscale客户端,使用与公网服务器相同的账号登录,完成授权后即可加入网络。登录成功后,客户端会显示分配的Tailscale私有IP(如 100.x.y.z)。
四、组网路由配置(可选)
若需访问客户端所在局域网内未安装Tailscale的设备(如fnos NAS所在局域网的其他设备),需将Tailscale客户端配置为“子网路由器”,共享局域网路由。
4.1 Linux系统配置
# 开启IP转发(临时生效,重启后需重新执行)
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
# 共享局域网子网(替换为实际子网,可通过ip a查看)
# 示例:共享192.168.1.0/24(fnos NAS所在局域网)和10.0.0.0/24
sudo tailscale up --advertise-routes=192.168.1.0/24,10.0.0.0/24

4.2 Windows系统配置
# 以管理员身份运行PowerShell,共享局域网子网
tailscale up --advertise-routes=192.168.1.0/24,10.0.0.0/24
# 开启IP转发
netsh interface ipv4 set interface "Tailscale" forwarding=enabled
netsh interface ipv6 set interface "Tailscale" forwarding=enabled
4.3 控制台启用路由
登录Tailscale管理控制台,进入“Machines”页面,找到配置了路由的设备,点击“... > Edit route settings”,勾选需要启用的子网路由,点击“Save”生效。


五、验证与使用
- 查看节点状态:在任意客户端执行
tailscale status,确认fnos NAS所在设备及公网服务器在线(状态为 active)。
- 访问fnos NAS:通过fnos NAS的Tailscale私有IP(如
100.123.45.67或使用名称)或局域网IP(如 192.168.1.100,需配置路由),在外网环境直接访问其服务(如Web管理界面、文件共享等)。
- tailscale控制台可以查看在线设备

注意事项
- 自定义DERP节点的
InsecureForTests: true仅适用于测试,生产环境需配置HTTPS证书(如Let's Encrypt)并改为 false。
- 公网服务器需开放配置的DERP端口(如12345)和STUN端口(3478/udp),确保防火墙规则允许入站流量。
- 若访问速度慢,可通过
tailscale netcheck查看当前使用的DERP节点,优先选择延迟低的节点(国内节点通常延迟更低)。