最近听说了两个服务,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 服务器上测试,打开其它设备上的网页、传输文件都很慢。
简单查询资料,有两个优化的方向:
- 只创建和替换 Derper 服务,这里有一个 derper 的 Docker 镜像 derper-docker,可参考:(tailscale内网穿透之自建的derper服务器,无需域名,无需备案,全流程教程)
- 借助 Headscale 替换了整个 Control Server,可以使用 Tailscale 的客户端连接服务,不能使用 Tailscale 的 Web Console 进行管理。可参考:Headscale 搭建 P2P 内网穿透 或 Tailscale 基础教程:Headscale 的部署方法和使用教程