Tailscale 异地组网服务使用体验记录

Published: 2024-05-14

Tags: 内网穿透

本文总阅读量

最近听说了两个服务,Tailscale 和 CloudFlare Tunnel,它们都是商业公司的产品,对于个人用户有免费的额度,之前从未用过,本篇整理了 Tailscale 的使用记录

添加客户端

访问 Tailscale 官网,登陆后,首先添加一个 Linux 客户端

在 Linux 主机运行脚本,安装后根据提示运行 tailscale up 打开链接进行确认

添加后,提示继续添加,接下来我添加了 Windows 和 macOS 系统的机器

添加后,可以看到每台机器都有自己的内网 IP

现在,这些添加的设备都已组网,可以相互访问。

另外,支持群晖 NAS,通过 Tailscale 组网后,即使家庭宽带没有公网 IP,也能从外部组网设备访问到

补充

卸载命令参考 Uninstalling Tailscale

# Debian & Ubuntu
$ sudo apt-get remove tailscale

# Centos
$ sudo apt-get remove tailscale

# Fedora
$ sudo dnf remove tailscale

示例一:SSH 访问 Linux 设备

假设我的 Linux 服务器没有公网 IP,现在可以在 Tailscale 组网的机器上通过内网 IP 访问到。

Host dc3
  HostName 100.117.157.2
  User root
  Port 29345

示例二:Ping 设备

不仅可以通过 IP 访问主机,也可以使用设备的 MACHINE 名称访问,以下是 Ping Windows 设备的示例

可以看到返回的 IP could-windows.tail0042e4.ts.net (100.113.198.34) 即设备的内网 IP

这是 MagicDNS 提供的功能,如果不需要,可以在 DNS 页面关闭掉

示例三:分享文件到其它设备

从 macOS 分享文件,在待分享的文件上点击 “右键” - “共享”(如果找不到 Tailscale 则点击 “编辑扩展” 启用后再分享)

出现的页面,点击目标设备即可发送到设备上

Windows 下会存储在 “下载” 文件夹

Linux 下会存储在 /var/lib/tailscale/files/ 下的用户目录

Windows 发送文件同理,右键可以发送到 Tailscale,Linux 发送文件的命令如下:

$ tailscale file cp <files> <name-or-ip>:

示例四: Tailscale Funnel

Tailscale Funnel 是一项功能,可让您将流量从更广泛的互联网路由到 Tailscale 网络(称为 tailnet)中的计算机上运行的本地服务。您可以将其视为公开共享本地服务,例如网络应用程序,供任何人访问 —— 即使他们自己没有 Tailscale。

关于 Funnel 介绍参考文档:https://tailscale.com/kb/1223/funnel

分配权限

为用户分配权限,否则用户没有权限开启 “外部匿名访问的链接”

以下是操作记录,首先开启 HTTPS

(可选)然后在 “Access Controls” 中的右侧面板,启用 Funnel(下图是已启用状态)

如果刚刚没启动 Funnel,会在在运行命令时弹出链接授权,效果是一样的,在 Access Controls 面板查看,都是添加的 nodeAttrs 配置段进行授权。

{
    "nodeAttrs": [
        {
            // Funnel policy, which lets tailnet members control Funnel
            // for their own devices.
            // Learn more at https://tailscale.com/kb/1223/tailscale-funnel/
            "target": ["autogroup:member"],
            "attr":   ["funnel"],
        },
    ]
}

启动一个示例服务

以下命令在 Linux 设备下执行

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello, World!</title>
</head>
<body>

<h1>Hello, World!</h1>
<p>This is a basic HTML page displaying "Hello, World!".</p>

</body>
</html>

启动 HTTP Demo 服务

$ nohup python3 -m http.server 3000 &

启动 Tailscale Funnel

此时,可以从互联网通过 https://dc3.tail00**.ts.net/ 访问到刚刚启动的服务

唯一的问题:国内访问速度

我在国内云 Windows 服务器上测试,打开其它设备上的网页、传输文件都很慢。

简单查询资料,有两个优化的方向:

  1. 只创建和替换 Derper 服务,这里有一个 derper 的 Docker 镜像 derper-docker,可参考:(tailscale内网穿透之自建的derper服务器,无需域名,无需备案,全流程教程)
  2. 借助 Headscale 替换了整个 Control Server,可以使用 Tailscale 的客户端连接服务,不能使用 Tailscale 的 Web Console 进行管理。可参考:Headscale 搭建 P2P 内网穿透Tailscale 基础教程:Headscale 的部署方法和使用教程

参考