本文最后更新于 2025-09-03,文章内容还可用检查日期2025年8月27日

本文使用绿联DXP4800部署,其他私有云和本文部署教程大致相同。

为什么要部署Tailscale全屋+异地私有网络

  • 核心目是:让你在任何外网环境下,都能像在家里一样安全地访问家中所有设备。

  • 安全访问内网设备:远程访问NAS、摄像头、Home Assistant、打印机等所有设备,无需将每个服务单独暴露到公网,极大增强安全性。

  • 安全连接公网:在公共Wi-Fi下,所有设备流量都通过VPN隧道加密流回家里,再访问互联网,防止窃听和中间人攻击。

  • 绕过地域限制:访问家庭网络所在地的特定网络服务。

  • 强烈推荐使用 Tailscale。它比传统的 OpenVPN 更快、更现代、配置更简单、资源占用更低,非常适合NAS。

Tailscale注册,安装,连接

创建Tailscale账户(点击跳转)

选择自己喜欢的注册方式进行注册,注册后自动登录,使用谷歌和GitHub需要梯子,谨慎选择。

注册后会填写部分信息根据自己的情况填写,不知道改写什么,可以随便输入也能够进入下一步。

创建密钥

Tailscale提供了很多连接方式,这里我们暂时不需要,点击下方跳过教程来到我们的控制面板。

进入设置,选择Keys,然后再点击Generate authkey。

名称根据自己喜好进行填写,可以选择勾选Reusable也可以不用,根据自己的用途来选择,填写完成后我们直接点击下方按钮,这样我们钥匙就已经创建完成。这里一定要注意,生成的密钥只会显示一次,记得将其保存,否则需要重新生成密钥,记住你的密钥后面再部署DockerCompose时需要使用。

DockerCompose部署

接下来我们访问NAS来安装我们的DockerCompos。(名称存放路径就自己写咯!)

DockerCompos代码

version: '3.8'

services:
  tailscale:
    image: tailscale/tailscale
    container_name: tailscale
    hostname: tailscale-docker # 设备名称可以换
    network_mode: "host"
    cap_add:
      - NET_ADMIN
      - NET_RAW
    environment:
      - TS_AUTHKEY=xxx  # 替换成你的前面生成的key
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_ROUTES=192.168.31.0/24  # 替换成你实际内网段
    volumes:
      - ./tailscale-var-lib:/var/lib/tailscale
      - /dev/net/tun:/dev/net/tun
    restart: unless-stopped

volumes:
  tailscale-var-lib:

解释一下代码的用处

  • 设备名称:就是到时候Docker显示的名称,建议不要修改,直接使用。

  • Key:形如这样的,直接复制粘贴上去,会自动分行,没有自动分行的从-后面的换到下一行即可,要是两行才可以,一行是运行不了的(tskey-auth-ks12345Y3o11CjTRL-NKGyNcuFEtL89qdBZrRtsLkgpwmgziiM7)这个密钥仅作参考。

  • 内网网段:查看你的NAS网关是多少就填写多少,例如:192.168.3.1就写192.168.3.0/24,一定要修改这一项,不然转发不了。

  • 容器出现问题,开关机后都会自动重启

完成创建

完成配置后点击创建,等待一会就能够再Tailscale中看到我们的设备了,接着我们点击刚刚自己部署的设备名称tailscale-docker进入到配置页面。

Tailscale配置

能够看到我们现在是等待批准状态,要将其转为批准,点击Edit进行编辑

勾选我们的内网网段,点击保存这样,我们的网段就已经批准成功。

禁用密钥

刚刚配置密钥时,密钥有有效期,我们将密钥进行禁用过期处理,这样就不会出现密钥过期了,这样就不需要我们来网站上进行密钥的更新。

安装Tailscale客户端实现安全访问(点击跳转)

安装好后,使用注册账号进行登录。

手机软件,使用谷歌商店下载,可能有些兄弟手机上没有,我将软件上传到云盘,有需要的可以直接下载。

百度网盘:点击跳转 提取码:5kdh

123网盘:点击跳转 提取码:zwHI

每次需要使用时,只需要打开软件,在浏览器中输入,内网,ipv4,ipv6,任意一个,即可,由于NAS有端口所以我们还要在后面加上端口号才能够访问,否则连接会被拒绝。(ipv6记得需要在前后加上[]后面再跟冒号和端口)