收起左侧

使用Tailscale组网实现外网访问fnos NAS服务

0
回复
86
查看
[ 复制链接 ]

2

主题

8

回帖

0

牛值

江湖小虾

使用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 前置准备

  1. 公网服务器需提前安装 dockerdocker-compose(用于部署DERP服务)。
  2. 公网服务器需安装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)。

6f453b7017f64ca993928980094f2283.png

配置模板示例(需替换为你的公网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官方下载页,根据设备系统选择对应版本:

a6a4c81ba4cd4dea866e2b8c294e8cb6.png

  • Windows/macOS:直接下载安装包,按向导完成安装。
  • Linux:通过脚本安装:
    curl -fsSL https://tailscale.com/install.sh | sh && tailscale up
    
  • iOS/Android:在应用商店搜索“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

7cfc13bb78b94d5789b19dd49fc39510.png

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”生效。

50d1d04046184b94891933610ae62c08.png

0824134dcaf44d29aa214b4ef6f5453c.png

五、验证与使用

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

e10df0df0d394be9a4b285b32a479620.png

注意事项

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则