好文集ChatGPT Plus¥119

用 Tailscale 把 ESP32 和家里的设备连成一张网

文章目录

部分视频或图片暂未收录,已在正文保留提示;需要时可查看原文。查看原文 ↗

最近因为两个实际需求才了解到 Tailscale。

  1. 人在外面,想通过 SSH 连接家里的电脑,继续用 Codex 干活。

  2. 把 ESP32 设备带出门后,希望它仍然能访问家里的服务。

以前经常看到推上大家使用 Tailscale 却从来没关注过,直到自己遇到问题才发现这东西是真好用。大改整理了下,分享给还没用过的同学。

一、提前了解几个概念

  1. 公网 IP / 私有 IP 公网 IP 可以在互联网上自由连接;私有 IP 用于内部网络,不同家庭可以使用相同的私有地址。人在外面,通常不能直接用家里的 192.168.x.x 地址访问设备。即使有公网 IP,也要看路由、防火墙和服务配置。

  2. VPN / Tailnet VPN 是虚拟专用网络,常见用途是让不同地点的设备安全通信。Tailnet 就是通过 Tailscale 建立的私有网络,让加入其中的设备跨网络访问彼此的服务。

  3. NAT / 打洞 NAT 是网络地址转换,家里的路由器通常靠它让多台设备共用一个对外地址。“打洞”就是尝试穿过 NAT 等网络限制,让两端设备建立直连。

  4. 协调服务器 可以把它理解为 Tailscale 的“通讯录管理员”:协调设备身份、公钥和访问规则,帮助设备互相发现,不负责转发日常业务流量。

  5. P2P 直连 两台设备直接交换加密数据,不经过中继。能否直连,取决于两端的网络条件。

  6. DERP 中继 帮助设备建立连接,也能在无法直连时转发加密数据。走中继时仍然是端到端加密,DERP 服务器无法解密业务内容。

二、同一台 ESP32设备的访问场景

  1. 在家:ESP32 和 Mac mini 在同一局域网,可以通过内网 IP 访问服务。

  2. 外出:ESP32 连上手机热点后,因为无法访问内网 IP不能再访问家里的 Mac mini。

  3. 外出用上 Tailscale:两端加入同一个 Tailnet,在访问规则允许、目标服务可用的前提下,可以通过 Tailscale IP 通信。

文章配图

图中第三种画的是“网关代接入”方案;下文介绍的 MicroLink 则让 ESP32 本身加入 Tailnet。两种方式都可以实现远程访问,但配置方法不同。

三、控制台只需要看两个地方

  1. Network → Machines 查看已加入网络的设备,包括设备名、Tailscale IP 和连接状态。设备右侧的菜单可以进行重命名等管理操作。

  2. Settings → Keys 这里可以生成 Auth key,用来让 ESP32、服务器等设备免去浏览器交互登录,完成入网认证。它不是设备通信使用的公私钥;设备之间能访问哪些服务,还要看访问控制规则。

刚开始连接自己的设备,先看懂这两个位置就够用了,其他配置遇到需求再研究。

文章配图

四、普通电脑怎么连?

最省事的办法,还是把你的具体需求告诉 Codex,如:

我想在外面用笔记本,通过 Tailscale 连接家里的 Mac mini,并使用 SSH。请根据两台电脑的系统,带我完成配置和连通性测试。

基本思路是:两台电脑安装 Tailscale,加入同一个 Tailnet,再用目标电脑的 Tailscale IP 连接。SSH 服务、访问规则和防火墙也要配好。

不用所有配置细节都懂,大改指导就可以:谁能访问哪台设备,设备连接状态大概会看就可以。

五、ESP32 怎么加入这张网

把 MicroLink 集成进 ESP32 固件,让设备自己加入 Tailscale 网络。

我的 Stopwatch 做了一个显示推特信息的功能,服务代码运行在家里的 Mac mini 。把 stopwatch 带出门后,它仍然需要访问这个服务,才能获取通知信息。

MicroLink 是一个兼容 Tailscale 协议的第三方 ESP32 客户端,负责设备注册、WireGuard 加密通信,以及直连和 DERP 中继等连接过程。具体能否运行,还要看开发板型号、内存和固件环境。

这里要分清两件事:手机热点负责让 ESP32 上网;MicroLink 负责让 ESP32 加入 Tailnet。仅仅连上热点,并不等于加入了 Tailscale 网络。

我目前的固件配置是:家庭 Wi-Fi 优先,手机热点备用。

在我这套方案里,烧录前会把家庭 Wi-Fi 和热点的名称、密码配置好。因此,设备只能自动连接已配置的网络;更换网络后,也需要更新配置。

具体怎么集成、编译、烧录,依然可以问 AI。把开发板型号、现有固件和目标说清楚,让 Codex 带你一步一步做,并实际验证连接是否成功。

媒体暂未收录,可在原文中查看

抱歉 AI 味,自己写完让 Astra 帮我排版整理下就变成这样了,逻辑还挺清晰的,凑合看吧。

有了 AI 其实根本就不需要任何教程,只需要输出个想法让 AI 去干就好了,如果没有想法和 AI 讨论迸发出想法。

全文完
查看原文