Tailscale虚拟私有网络指南

原文链接

🌎 一. Tailscale介绍

Tailscale 是一款基于 WireGuard 协议的零配置虚拟私有网络(VPN)工具,能让多台设备在互联网上形成一个加密的私有网络。

核心优势:

  • ⚡️ 零配置:基于 WireGuard 协议,安装后即可自动建立安全连接
  • 🔐 安全加密:所有流量通过端到端加密隧道传输
  • 🌐 跨平台支持:支持 Windows、macOS、Linux、Android、iOS 等多种设备
  • 🏠 私有网络:设备获得 100.x.x.x 私有 IP,如同在同一个局域网
  • 🚀 智能路由:自动选择最优路径(UDP 直连或 DERP 中继)

适用场景:

  • 访问内网服务(如数据库、Web 服务)
  • 远程办公访问公司资源
  • 服务器管理与运维
  • 安全访问家庭网络设备

🎀 二. 安装配置

2.1 安装Tailscale

2.1.1 Ubuntu/Debian
bash 复制代码
# 安装命令
curl -fsSL https://tailscale.com/install.sh | sh

# 启动并加入网络(执行后复制链接到浏览器打开,使用(Google、GitHub等账号登录)
sudo tailscale up
2.1.2 Windows/macOS

Tailscale 官网 下载安装客户端, 登录并选择账号。

2.2 配置AuthKey

2.2.1 生成AuthKey
  • 登录 Tailscale 控制台 ,进入 SettingsAuth keys

  • 点击 Generate one-off key (一次性密钥)或 Generate reusable key(可重复使用)。

  • 按需配置密钥参数:

    • Expiry:设置密钥有效期(如 1 小时、7 天)。
    • Ephemeral:"临时节点",离线后自动从网络中移除。
    • Tags :给设备添加标签(用于权限控制,如 tag:server)。
  • 生成后,立即复制密钥。

2.2.2 加入网络

有两种方式可以使用 AuthKey 加入网络:

方式一:使用 up 命令(推荐)

bash 复制代码
sudo tailscale up --authkey=tskey-auth-xxxxxx-yyyyyy

方式二:使用 login 命令

bash 复制代码
sudo tailscale login --authkey=tskey-auth-xxxxxx-yyyyyy
2.2.3 配置验证
bash 复制代码
# 控制台的Machines页面,会出现该设备的名称和状态(在线/离线)
tailscale ip

📙 三. 基本命令

3.1 常用命令

查看设备状态

bash 复制代码
tailscale status

获取设备私有 IP

bash 复制代码
tailscale ip

断开连接

bash 复制代码
sudo tailscale down

重新连接

bash 复制代码
sudo tailscale up

退出登录

bash 复制代码
sudo tailscale logout

查看详细状态

bash 复制代码
tailscale status --json

查看网络拓扑

bash 复制代码
tailscale netcheck

3.2 高级命令

SSH 连接到其他设备(如果启用了 SSH 功能):

bash 复制代码
ssh <user>@<device>.tailnode.net

文件传输

bash 复制代码
# 发送文件到其他设备
tailscale file cp file.txt <user>@<device>.tailnode.net:~

# 接收来自其他设备的文件
tailscale file cp <user>@<device>.tailnode.net:~/file.txt ./

端口转发

bash 复制代码
# 将本地端口转发到 Tailscale 网络中的其他设备
tailscale serve tcp:3000 tcp://100.x.x.x:3000

🛠️ 四. 应用案例

4.1 Web安全访问

场景:某个Web 应用,主站使用外网访问,Admin管理后台使用 Tailscale内网访问(隔离外网),Nginx建议配置如:

nginx 复制代码
server {
    listen 80;
    server_name example.com;

    # Web主站(外网访问)
    location / {
        root html;
        index index.html index.htm;
    }

    # Admin平台(内网访问)
    location ^~ /admin {
        #root D:/wwwroot;  			# root是路径拼接  
        alias D:/wwwroot/admin;		# alias是路径替换
        index index.html index.htm;
        
        allow 127.0.0.1;            # localhost
        allow 172.16.0.0/12;        # 172内网段 (172.16.0.0 - 172.31.255.255)
        allow 192.168.0.0/16;       # 192内网段 (192.168.0.0 - 192.168.255.255)
        allow 100.64.0.0/10;        # 运营商级NAT保留地址段(100.64.0.0 - 100.127.255.255)
        deny all; 
    }
}

4.2 防火墙配置

若想更贴近真实场景(服务器的 8080 端口不允许"公网"访问,但允许 Tailscale 访问):

  • 在服务器中设置防火墙,禁止 8080 端口被"非 Tailscale 网络"访问(以 Ubuntu 的 UFW 为例):

    bash 复制代码
    # 允许 Tailscale 网段(100.64.0.0/10)访问 8080 端口
    sudo ufw allow in from 100.64.0.0/10 to any port 8080
    
    # 禁止其他所有来源访问 8080 端口
    sudo ufw deny 8080
  • 此时,外部若通过服务器的"公网 IP"访问 公网IP:8080 会被拒绝,但通过 Tailscale IP 100.xxx.xxx.xxx:8080 仍可正常访问,完美模拟"公网端口封闭但 Tailscale 可访问"的效果。

🏆 五. 安全实践

5.1 访问控制

在 Tailscale 控制台的 ACL 设置中,可以精确控制哪些设备可以访问哪些服务。

  • 登录 Tailscale 控制台

  • 进入Settings → ACL Policies

  • 编辑或粘贴上述ACL策略

  • 点击 Save 保存配置

json 复制代码
{
  "acls": [
    {
      "action": "accept",
      "src": ["tag:server"],
      "dst": ["tag:database:5432,3306"]
    }
  ]
}

5.2 标签管理

为不同类型的设备分配标签,便于统一管理(需要在Auth Key中预设):

  • tag:server - 服务器类设备
  • tag:database - 数据库类设备
  • tag:admin - 管理员设备
  • tag:employee - 员工设备

设置标签的Auth Key

bash 复制代码
# 创建带标签的Auth Key
#!/bin/bash

# 首次认证入网 + 宣告单标签(需密钥)
sudo tailscale up --authkey=tskey-xxx --advertise-tags=tag:server

# 重置所有配置 + 重新宣告单标签(无密钥,配置异常时用)
sudo tailscale up --reset --advertise-tags=tag:server

# 已有认证下,宣告多个标签(仅改标签,无重置/认证)
sudo tailscale up --advertise-tags=tag:server,tag:prod

# 查看节点状态(包含Tag信息)
tailscale status

# 移除Tag
sudo tailscale up --advertise-tags= "" --reset

5.3 安全清单

  • 定期检查已授权设备(控制台 Machines 页面)

  • 生产服务器使用一次性Auth Key登录

  • 为敏感服务设置ACL访问策略

  • 定期轮换Auth Key(建议每90天)

  • 启用2FA保护账户安全

  • 关闭不必要的服务端口暴露

📚 六. 常见问题

Q: 设备无法连接到 Tailscale 网络怎么办?

A: 检查以下几点:

  • 确认网络连接正常,能够访问互联网

  • 确认 Tailscale 服务正在运行:sudo systemctl status tailscaled

  • 重启 Tailscale:sudo tailscale down 然后 sudo tailscale up

Q: 无法通过 Tailscale IP 访问服务?

A: 检查:

  • 两端设备是否在同一 Tailscale 网络中

  • 防火墙是否阻止了相应端口的访问

  • 服务是否正在运行并监听正确的地址

参考连接

https://tailscale.com

相关推荐
水天需0102 小时前
shift 命令详解
linux
wdfk_prog2 小时前
[Linux]学习笔记系列 -- 内核支持与数据
linux·笔记·学习
枷锁—sha3 小时前
彻底解决 Google Gemini 报错:异常流量与 IP 地址冲突排查指南
网络·网络协议·tcp/ip
Xの哲學3 小时前
深入剖析Linux文件系统数据结构实现机制
linux·运维·网络·数据结构·算法
深圳市恒讯科技3 小时前
Linux 文件权限指南:chmod 755、644、drwxr-xr-x 解析
linux·服务器·xr
朝阳5813 小时前
Ubuntu 22.04 安装 Fcitx5 中文输入法完整指南
linux·运维·ubuntu
xingzhemengyou13 小时前
Linux taskset指令设置或查看进程的 CPU 亲和性
linux·服务器
开开心心就好3 小时前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
永远在Debug的小殿下3 小时前
wsl安装Ubuntu and ROS2
linux·运维·ubuntu