Tailscale+自定义域名:零成本安全远程访问方案

目录

现有方案的痛点

Tailscale虽然解决了远程访问问题,但仍存在以下使用不便:

  • 需要记忆复杂的Tailscale分配IP
  • 必须记住各种服务端口
  • MagicDNS方案存在局限:
    • 域名后缀固定且冗长
    • 单设备仅支持单一域名
    • 证书申请常遇技术障碍

常见错误示例:执行tailscale cert ds3617xs.tailxxxxx.ts.net获取证书时出现:

500 Internal Server Error: acme.GetReg: Get "https://acme-v02.api.letsencrypt.org/directory": tls: failed to verify certificate: x509: certificate signed by unknown authority

理想解决方案需求

完美的远程访问方案应具备:

  • 无需公网IP,节省VPS成本
  • 支持自定义短域名(如Freenom申请的域名)
  • 支持Tailscale网络内的泛域名解析
  • 使用标准80/443端口,无需记忆端口号

完整解决方案架构

实现原理:

  1. 所有访问设备安装Tailscale客户端
  2. 群晖安装Tailscale套件(假设Tailscale IP为100.x.y.z)
  3. 将自定义域名解析到Tailscale IP
  4. 使用DNS验证方式获取SSL证书
  5. 修改群晖WebStation默认端口
  6. 使用Nginx Proxy Manager作为反向代理服务器

DNS解析配置

使用Cloudflare进行DNS解析:

  1. 登录Cloudflare控制台
  2. 添加站点
  3. 创建两条A记录:
    • 名称:@ → 指向Tailscale IP
    • 名称:* → 指向Tailscale IP
  4. 关闭代理功能,仅使用DNS解析

Cloudflare API令牌创建

  1. 访问API令牌页面
  2. 创建自定义令牌
  3. 设置权限:
    • 区域 - 区域:读取
    • 区域 - DNS:编辑
  4. 生成并保存令牌

重要提示:API令牌仅显示一次,请妥善保存!

WebStation端口修改

通过SSH修改群晖默认端口:

# 进入nginx配置目录
cd /usr/syno/share/nginx

# 修改以下文件中的端口(80→15080, 443→15443):
# server.mustache
# DSM.mustache 
# WWWService.mustache

# 重启WebStation服务
synoservice --restart pkgctl-WebStation

修改后效果:

  • 原访问地址:http://192.168.0.197/phpMyAdmin/
  • 新访问地址:http://192.168.0.197:15080/phpMyAdmin/

Nginx Proxy Manager安装

使用Docker Compose安装:

version: '3'

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: npm
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

安装命令:

# 创建目录
mkdir -p /volume1/docker/npm/{data,letsencrypt}

# 进入目录
cd /volume1/docker/npm

# 启动容器
docker-compose up -d

SSL证书配置

在Nginx Proxy Manager中配置Let's Encrypt证书:

  1. 选择"Add SSL Certificate" → "Let's Encrypt"
  2. 启用"Use a DNS Challenge"
  3. 配置参数:
    • Domain Names: *.yourdomain.com
    • DNS Provider: Cloudflare
    • Credentials: 填入之前获取的API令牌

证书申请成功后,有效期3个月,系统会自动续期。

配置示例

反向代理NPM管理界面:

  1. 创建新的Proxy Host
  2. 域名:npm.yourdomain.com
  3. 目标地址:http://localhost:81
  4. SSL证书:选择之前创建的Cloudflare证书

配置完成后即可通过https://npm.yourdomain.com访问管理界面。

服务共享

如需共享服务给其他用户:

  1. 登录Tailscale管理后台
  2. 找到目标设备
  3. 生成分享链接

方案优势总结

本方案是目前最安全、经济的远程访问解决方案:

  • 更省钱 - 无需购买VPS
  • 更安全 - 无公网IP暴露风险
  • 更易用 - 免记IP和端口
  • 无限制 - 相比Cloudflare Tunnel没有带宽和流量限制

该方案同样适用于Zerotier等其他VPN工具,原理相通。

 

版权声明:
作者:lwtool
链接:https://lwtool.org/?p=190
来源:老王工具箱
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>