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

相关推荐
碧海银沙音频科技研究院3 小时前
炬芯ATS3089X手表的HFP通话不自动路由到设备BT的问题解决
网络·人工智能·嵌入式硬件·算法
EasyDSS7 小时前
连锁扩张管控难?一套视频会议/直播/点播/集群对讲EasyDSS音视频云平台打通门店全流程数字化
网络·音视频·easydss
曦夜日长8 小时前
Git系统篇,Git本地使用(一):从“究极进化版“到三个区域的底层原理
大数据·linux·git·elasticsearch
shimly1234569 小时前
给断网无 sudo ubuntu22.04 机器安装 nodejs
linux
比兔代理9 小时前
游戏、直播、远程办公遇到动态IP怎么办?
网络
Lzg_na9 小时前
ARP 地址解析协议详解
网络·网络协议
上海广测检测科技有限公司10 小时前
消费类智能联网设备安全分级国标征求意见要点解析:三级五维框架与跨境对标逻辑
网络·经验分享
别动我齐刘海10 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
Lsetea10 小时前
OpenSSL报certificate chain too long:error 22与verify_depth深度排查
linux·https·ssl证书·openssl·证书链
QZ1665609515911 小时前
金融数据流转监测排行:从看见到拦截的距离
网络·安全·网络安全·金融