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 控制台 ,进入 Settings → Auth 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

相关推荐
Sw1zzle20 分钟前
Go入门(零):Linux Ubuntu 22.04 安装 Go
linux·ubuntu·golang
device_Any22 分钟前
接口文档写着三个字段,接口返回了五个
android·java·linux
安易算力29 分钟前
智算中心网络架构:RDMA/IB/以太网选型深度解析与优化实践
网络·架构·php
无足鸟ICT1 小时前
【RHCA+】dstat命令(监控系统资源)
linux·服务器
时空无限1 小时前
ubuntu 26.04 sudo 连不上主机卡住然后失败问题处理
linux·服务器·ubuntu
路溪非溪2 小时前
C++标准库之智能指针
linux·开发语言·c++
B1118521Y462 小时前
网络安全案例1:远程登陆实战
网络
程序员大雄学编程2 小时前
Linux 磁盘满了怎么排查?df / du / find 三步定位大文件
linux·运维·php
|_⊙2 小时前
传输层协议UDP和TCP
网络·tcp/ip·udp
RuoyiOffice2 小时前
Hyper-V+Kubernetes 搭建实战:保留 Windows,构建三节点 Linux 容器集群
linux·spring boot·kubernetes·containerd·hyper-v·微服务部署·ruoyi office