前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 Tailscale 实战新一代异地组网|技术创作特训营第一期

基于 Tailscale 实战新一代异地组网|技术创作特训营第一期

原创
作者头像
远哥制造
修改2023-08-28 11:28:05
1.6K0
修改2023-08-28 11:28:05
举报
文章被收录于专栏:远哥制造远哥制造

0x00. 前言

月初直播看完了《2023腾讯·技术创作特训营 第一期 | 成为优秀技术创作者有捷径吗?》讲座,听完嘉宾们分享的方法论之后对写作产生了新的认知,决定借这个机会分享一下近期自己基于 Tailscale 进行异地组网的一些折腾吧

0x01. 需求

为了避免上来就介绍 Tailscale 中的专业术语导致本文晦涩难懂,先抛开技术详情不谈,快速画个图介绍一下自己的需求吧

现在有三个家庭宽带网络和一个手机移动数据网络

  1. 需要实现互相访问
  • 家庭宽带网络可以如图示远程互相访问,正好是中国联通、中国电信和中国移动三大运营商
  • 手机移动数据网络可以远程访问家庭宽带网络

“访问”指的是可以访问目标网络内网中的资源。举个例子,在外面用手机远程访问家里的 HomeAssistant 服务器,查看控制家中的智能家居比如到家前提前开启热水器,这就算是一种常见的“访问目标网络内网中的资源”的场景了

2. 需要实现可以直接使用目标网络的外网 IP 作为自己的外网 IP

用于访问一些有地域限制的网络服务,比如网易云解锁版权歌曲或破站解锁港澳台独占

那么可能有人会谈起 OpenVPN。但本文要介绍的是一种新一代的基于 WireGuard 的组网工具——Tailscale!

0x02.Tailscale 介绍

TL;DR

【如果有了解过 Tailscale,此章节可跳过】

官网:https://tailscale.com/

Secure remote access to shared resources

Tailscale 可以将设备和开发环境连接到一起,轻松实现安全访问远程资源

Tailscale 让组网变得轻松,使用场景有:

  • 远程访问(Remote Access):安全地访问共享的开发人员资源,包括虚拟机、容器和数据库,无论它们位于何处
  • 站点到站点的网络(Site-to-site Networking):轻松连接跨云/基础设施环境,在私有资源之间安全地传输数据
  • 家庭实验室(Homelab):免费使用 Tailscale 安全地远程连接家庭实验室或个人开发环境

这四个场景自己也算是都有用到了。并且基于个人身份使用完全免费,是不是很良心?

那么话不多说,直接装起来,看看它到底用起来怎么样,能不能满足自己的需求

0x03.Tailscale 安装

目前官方提供了 65+ 种集成,常见的平台都可以进行安装,自己会依次介绍 6 种常见平台上的安装

1. HA(Docker 平台)

家里的树莓派上跑着 homeassistant 操作系统,选择直接在它上面安装是最合适的方案

安装时依次选择:配置,加载项,加载项商店,Tailscale

安装完成后,开启【自启动】&【守护】并【启动】

【打开 WEB UI】登录完成后,即可看到被分配了 100. 开头的 IP 地址,这就算是安装并配置完成了

2. PYDL(Linux 平台)

TL;DR:一图安装

家里有 7x24h 开机运行的物理服务器,选择在上面的 AlmaLinux 虚拟机上面进行安装

查看系统版本

代码语言:javascript
复制
[root@cn-py-dl-a8 ~]# cat /etc/redhat-release
AlmaLinux release 8.8 (Sapphire Caracal)

安装并运行

代码语言:javascript
复制
[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 服务已经在运行中了

代码语言:javascript
复制
[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)

代码语言:javascript
复制
[root@cn-tx-bj7-c8 ~]# tailscale up --accept-routes
[root@cn-tx-bj7-c8 ~]# tailscale ip
100.<rm>
fd7a:<rm>

同理,登录完成后,也可看到被分配了 100. 开头的 IP 地址,这就也算是安装并配置完成了

3. KD(路由器平台)

家中的路由器刷了第三方潘多拉固件,拓展程序中包含了 tailscale 功能,故尝试在路由器上面安装

安装时依次选择:扩展功能,SS,tailscale

首先需要“【开启】Tailscale”

在日至中可以看到 tailscaled 运行成功,但是现在还是没有登录的状态

然后“【开启】Tailscale & 登录本机管理页面”。可惜启动失败了,也看不到原因

SSH 登录到路由器上,尝试手动运行/opt/bin/tailscale up。原来是产生了 OOM,内存不足,壮烈牺牲

因此就没法儿继续演示了,毕竟整个路由器只有 60M 内存,附图 top 也就只有这些进程

4. 4G(安卓系统)

TL;DR:一图安装

扫码或在 Play 商店(https://play.google.com/store/apps/details?id=com.tailscale.ipn)下载,安装并登录即可

5. macOS(苹果系统)

在 App Store 中下载安装,安装并登录即可,上方菜单栏中可以看见状态

6. Windows(win 系统)

下载 .exe 安装,安装完成点击【Log in...】

登录完成后点击【Connect】

登录完成后,也可看到被分配了 100. 开头的 IP 地址,这就也算是安装并配置完成了

0x04. Tailscale 使用

客户端安装完成之后,可以进入网页的 Admin console 查看客户端列表

并且针对每个客户端,可以按需修改路由配置

这里介绍下自己用到的如下 2 个路由功能

  • Subnet routes:子网路由。即可以设置一个“子网路由器”(以前称为中继节点或中继节点)来从 Tailscale 访问这些设备。 子网路由器充当网关,将流量从 Tailscale 网络中继到物理子网。 子网路由器尊重访问控制策略等功能,故可以轻松地将大型网络迁移到 Tailscale,而无需在每台设备上安装该应用程序。说人话就是打开第一个开关 192.168.2.0/24,这样其他客户端就都能访问到 homeassistant 所在的网段(192.168.2.0/24)了,原理是通过它暴露路由
  • Exit node:出口节点。出口节点功能允许通过 Tailscale 网络(称为 tailnet)上的特定设备路由所有非 Tailscale 互联网流量。 路由流量的设备称为“出口节点”,如下图。同理说人话,就是打开开关之后,其他客户端就可以使用目标网络的外网 IP 作为自己的外网 IP

当然,客户端中需要勾选如下两处与之分别对应的开关

这样,0x01 中的 2 个需求就全部实现了,是不是很简单

0x05. Tailscale 验证

开关倒是打开了,那么具体到底好不用呢?来验证一下

1. 在 PYDL 访问 HA,ping 192.168.2.10 成功!ipv6 地址同样可以成功访问,即家庭宽带网络可以如图示远程(互相)访问

2. 手机切换至移动数据网络并开启 Tailscale 客户端,确认也可以远程访问家庭宽带网络

0x06.后记

使用 Tailscale 组网非常方便,正如标题中的“新一代”,比 OpenV*P*N 之类的别的方案方便多了

本文介绍的只是 Tailscale 的冰山一角,它还有 Services,Access Controls,logs,MagicDNS 等高级功能

本着收尾呼应的原则,贴一张现在的实现结构好了。图中的 L2TP 不再本文的范畴内,但后续可以考虑单出一篇文章

0x07.选题思路

之所以选择该选题是因为异地组网是老生常谈的话题,而网上关于 OpenV*P*N 或其他工具的文章比较多,而使用 Tailscale 作为组网工具是新一代的,为了赶在时代的前线,故选择本话题进行分享,希望这篇文章给有同样需求的读者带来一定的参考价值。

通过本篇文章,讲解如何使用 Tailscale 实现异地组网,包含了详细 6 种客户端的安装方法,最终实现需求

0x08.创作提纲

文章类型:业务实践总结

面向读者/选题:对网络感兴趣,有同样的异地组网、内网穿透、远程访问需求的人群

作品亮点:呈现形式图文结合,内容较新

文章框架要点

1. 异地组网需求(引入话题)

2. Tailscale 介绍, 安装,使用 & 验证(详细讲解 Tailscale 的使用)

3. 后记(总结全文)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00. 前言
  • 0x01. 需求
  • 0x02.Tailscale 介绍
  • 0x03.Tailscale 安装
    • 1. HA(Docker 平台)
      • 2. PYDL(Linux 平台)
        • 3. KD(路由器平台)
          • 4. 4G(安卓系统)
            • 5. macOS(苹果系统)
              • 6. Windows(win 系统)
              • 0x04. Tailscale 使用
              • 0x05. Tailscale 验证
              • 0x06.后记
              • 0x07.选题思路
              • 0x08.创作提纲
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档