月初直播看完了《2023腾讯·技术创作特训营 第一期 | 成为优秀技术创作者有捷径吗?》讲座,听完嘉宾们分享的方法论之后对写作产生了新的认知,决定借这个机会分享一下近期自己基于 Tailscale 进行异地组网的一些折腾吧
为了避免上来就介绍 Tailscale 中的专业术语导致本文晦涩难懂,先抛开技术详情不谈,快速画个图介绍一下自己的需求吧
现在有三个家庭宽带网络和一个手机移动数据网络
“访问”指的是可以访问目标网络内网中的资源。举个例子,在外面用手机远程访问家里的 HomeAssistant 服务器,查看控制家中的智能家居比如到家前提前开启热水器,这就算是一种常见的“访问目标网络内网中的资源”的场景了
2. 需要实现可以直接使用目标网络的外网 IP 作为自己的外网 IP
用于访问一些有地域限制的网络服务,比如网易云解锁版权歌曲或破站解锁港澳台独占
那么可能有人会谈起 OpenVPN。但本文要介绍的是一种新一代的基于 WireGuard 的组网工具——Tailscale!
TL;DR
【如果有了解过 Tailscale,此章节可跳过】
官网:https://tailscale.com/
Secure remote access to shared resources
Tailscale 可以将设备和开发环境连接到一起,轻松实现安全访问远程资源
Tailscale 让组网变得轻松,使用场景有:
这四个场景自己也算是都有用到了。并且基于个人身份使用完全免费,是不是很良心?
那么话不多说,直接装起来,看看它到底用起来怎么样,能不能满足自己的需求
目前官方提供了 65+ 种集成,常见的平台都可以进行安装,自己会依次介绍 6 种常见平台上的安装
家里的树莓派上跑着 homeassistant 操作系统,选择直接在它上面安装是最合适的方案
安装时依次选择:配置,加载项,加载项商店,Tailscale
安装完成后,开启【自启动】&【守护】并【启动】
【打开 WEB UI】登录完成后,即可看到被分配了 100. 开头的 IP 地址,这就算是安装并配置完成了
TL;DR:一图安装
家里有 7x24h 开机运行的物理服务器,选择在上面的 AlmaLinux 虚拟机上面进行安装
查看系统版本
[root@cn-py-dl-a8 ~]# cat /etc/redhat-release
AlmaLinux release 8.8 (Sapphire Caracal)
安装并运行
[root@cn-py-dl-a8 ~]# dnf config-manager --add-repo https://pkgs.tailscale.com/stable/centos/8/tailscale.repo
[root@cn-py-dl-a8 ~]# dnf install tailscale -y
[root@cn-py-dl-a8 ~]# systemctl enable --now tailscaled
可以看到 tailscaled 服务已经在运行中了
[root@cn-tx-bj7-c8 ~]# systemctl status tailscaled
● tailscaled.service - Tailscale node agent
Loaded: loaded (/usr/lib/systemd/system/tailscaled.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2023-08-14 17:42:00 CST; 1 weeks 5 days ago
Docs: https://tailscale.com/kb/
Process: 1248433 ExecStartPre=/usr/sbin/tailscaled --cleanup (code=exited, status=0/SUCCESS)
Main PID: 1248462 (tailscaled)
Status: "Connected; yuangezhizao@github; 100.<rm> fd7a:<rm>"
Tasks: 13 (limit: 23718)
Memory: 49.2M
CGroup: /system.slice/tailscaled.service
└─1248462 /usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=41641
然后需要启动连接(tailscale up),并接受路由(--accept-routes)
[root@cn-tx-bj7-c8 ~]# tailscale up --accept-routes
[root@cn-tx-bj7-c8 ~]# tailscale ip
100.<rm>
fd7a:<rm>
同理,登录完成后,也可看到被分配了 100. 开头的 IP 地址,这就也算是安装并配置完成了
家中的路由器刷了第三方潘多拉固件,拓展程序中包含了 tailscale 功能,故尝试在路由器上面安装
安装时依次选择:扩展功能,SS,tailscale
首先需要“【开启】Tailscale”
在日至中可以看到 tailscaled 运行成功,但是现在还是没有登录的状态
然后“【开启】Tailscale & 登录本机管理页面”。可惜启动失败了,也看不到原因
SSH 登录到路由器上,尝试手动运行/opt/bin/tailscale up
。原来是产生了 OOM,内存不足,壮烈牺牲
因此就没法儿继续演示了,毕竟整个路由器只有 60M 内存,附图 top 也就只有这些进程
TL;DR:一图安装
扫码或在 Play 商店(https://play.google.com/store/apps/details?id=com.tailscale.ipn)下载,安装并登录即可
在 App Store 中下载安装,安装并登录即可,上方菜单栏中可以看见状态
下载 .exe 安装,安装完成点击【Log in...】
登录完成后点击【Connect】
登录完成后,也可看到被分配了 100. 开头的 IP 地址,这就也算是安装并配置完成了
客户端安装完成之后,可以进入网页的 Admin console 查看客户端列表
并且针对每个客户端,可以按需修改路由配置
这里介绍下自己用到的如下 2 个路由功能
当然,客户端中需要勾选如下两处与之分别对应的开关
这样,0x01 中的 2 个需求就全部实现了,是不是很简单
开关倒是打开了,那么具体到底好不用呢?来验证一下
1. 在 PYDL 访问 HA,ping 192.168.2.10 成功!ipv6 地址同样可以成功访问,即家庭宽带网络可以如图示远程(互相)访问
2. 手机切换至移动数据网络并开启 Tailscale 客户端,确认也可以远程访问家庭宽带网络
使用 Tailscale 组网非常方便,正如标题中的“新一代”,比 OpenV*P*N 之类的别的方案方便多了
本文介绍的只是 Tailscale 的冰山一角,它还有 Services,Access Controls,logs,MagicDNS 等高级功能
本着收尾呼应的原则,贴一张现在的实现结构好了。图中的 L2TP 不再本文的范畴内,但后续可以考虑单出一篇文章
之所以选择该选题是因为异地组网是老生常谈的话题,而网上关于 OpenV*P*N 或其他工具的文章比较多,而使用 Tailscale 作为组网工具是新一代的,为了赶在时代的前线,故选择本话题进行分享,希望这篇文章给有同样需求的读者带来一定的参考价值。
通过本篇文章,讲解如何使用 Tailscale 实现异地组网,包含了详细 6 种客户端的安装方法,最终实现需求
文章类型:业务实践总结
面向读者/选题:对网络感兴趣,有同样的异地组网、内网穿透、远程访问需求的人群
作品亮点:呈现形式图文结合,内容较新
文章框架要点
1. 异地组网需求(引入话题)
2. Tailscale 介绍, 安装,使用 & 验证(详细讲解 Tailscale 的使用)
3. 后记(总结全文)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。