Tailscale 基础教程
tailscale 是什么 ?
-
背景知识: 在现代网络体系中,因为ipv4的数量有限和网络安全的问题,普通的PC之间大多采用NAT(网络地址转换)进行交流,但是这样有个问题,当PC之间的交流必须依赖NAT的时候,两个普通PC(也就是没有公网ipv4的个人电脑)是没有办法相互联系的.现在使用的诸多应用或者软件, 都是通过 C(client)/S(server) 架构进行工作的(比如微信, 有一个中央服务器,A 和 B两台PC都连接这个有公网ip的中央服务器, 然后所有数据都存储在服务器上, 由此进行交流).
-
tailscale 则实现了两个节点的直接交流, 主要使用 WireGuard 加密算法, 传输的流量的具体内容不会被中间人攻击(除非你自己的私钥泄漏了, 那谁也保不住你). tailscale通过官方的中继服务器, 将两个PC连接起来, 这个过程叫做 NAT 穿透(当然是针对ipv4的), 如果你的电脑有公网ipv6, 就可以直接直连而不用做NAT打洞了.
-
大概的工作原理: A -> 中继服务器 -> 服务器根据A的请求来推断出A对应的位置(也就是A所在的网络和A具体是局域网的哪个设备), 之后, 如果有一台 B 要来找 A, 服务器发现记录里面有A的位置 -> 发送给B -> B 给 A 发送数据包 -> A 也知道了 B 的位置。
由此, A 和 B这两台设备就实现了 “直连”, 注意这里的直连并不是说可以没有中间媒介就直接通信, 而是说两台设备可以直接相互发送信息, 而中间自然要经过诸如路由器, 交换机之类的东西, 还有网线, 但是这个过程中的流量是加密的, 即使是官方的服务器也不能破解你的数据包.
tailscale 能干什么 ?
这是重头戏, 当你:
- 家里有一台老设备, 可以24小时通电运行, 并且有网络
- 或者你有那种放在实验室或者随便哪个有电有网的地方的机器
如果你符合上面的条件, 恭喜你可以用tailscale搭建一个私人(或者属于家庭的)服务器
所有的服务都可以跑在你的老旧或者无头服务器上面
可以用来
- 当家庭的网盘 (速度不限, 容量取决于你自己配置的硬盘)
- 个人的工具小网站 (比如说可以部署一个 siyuan 笔记)
- 真正学习远程linux运维和相关的网络配置
- 部署好玩的项目让家里人使用(只要把他们的设备也加入到你的tailnet中就可以了)
- 硬件远程开发, 部署, 监控(不需要公网ip)
- 跟好友组建一个属于你们的网络, 可以一起在这个网络里面玩游戏, 聊天等, 所有的数据都不上中心服务器, WireGuard 加密保证了你们的秘密对话不会泄漏
如何上手 ?
tailscale 是开箱即用的, 不需要配置任何的端口, 代理或者其他的东西, 你需要做的只有两件事
- 打开你的 linux 服务器并用官方的脚本进行安装 并启动
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
- 上面一步做完之后就会出现一个链接, 用你的浏览器打开并选择一个方式登录
这一步做完之后, 你就创建了一个属于自己的网络, 你可以往这个网络里面添加其他的设备, 并进行ssh连接, 网络访问等
ssh秘钥过期了怎么办 ?
只要在 tailscale console 里面配置好了ACL规则, 保证你的电脑有ssh的权限, 就可以通过下面的命令重置秘钥, 然后就可以顺利ssh了
ssh-keygen -R your-server-ip