Tailscale组网
利用Tailscale构建自己的NAT网络方案:
Tailscale 是一个用户友好的 VPN 服务,允许用户在不同设备之间创建安全的网络连接。它利用 WireGuard 协议的高效性和安全性,提供了一个易于配置和管理的虚拟专用网络,它通过简化网络配置和增强安全性,使得创建和管理虚拟网络变得更加高效和便捷。
主要特点
- 易于设置:
- Tailscale 的安装和配置非常简单。用户只需在设备上安装客户端应用程序,并通过一个简单的登录过程即可连接到网络。
- 自动化网络配置:
- Tailscale 自动处理网络配置和防火墙设置,用户无需手动配置复杂的网络参数。
- 跨平台支持:
- 支持多种操作系统,包括 Windows、macOS、Linux、iOS 和 Android,使得不同设备之间的连接变得无缝。
- 安全性:
- 基于 WireGuard 协议,Tailscale 提供了强大的加密和安全性,确保数据在传输过程中的安全。
- 去中心化架构:
- Tailscale 使用点对点连接,减少了对中心服务器的依赖,提高了连接速度和可靠性。
- 访问控制:
- 提供细粒度的访问控制,用户可以轻松管理谁可以访问网络中的哪些资源。
使用场景
- 远程工作:帮助分布式团队安全地访问公司内部资源。
- 家庭网络:在家庭设备之间创建安全连接。
- 开发者环境:为开发者提供安全的测试和开发环境。
并且对于个人用户来说是免费的:
这是来自于官方手册,为了良好的使用,可以将服务器开启允许IP转发,如果您的 Linux 系统有一个/etc/sysctl.d
目录,请使用:
1 | echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf |
否则使用:
1 | echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf |
启动IP转发后可以使用命令来启动子网路由,
1 | sudo tailscale up --advertise-routes=192.168.233.0/24 |
--advertise-routes=192.168.233.0/24
: 这个选项用于指定当前节点将向 Tailscale 网络中的其他节点“广告”或“广播”的路由。广告路由的作用是 其他 Tailscale 节点可以通过这个节点访问这两个子网中的设备。这通常用于连接不同的网络或子网,使得它们可以通过 Tailscale 网络进行通信。
使用方法
使用邮箱注册登录账号,下载符合自己平台的安装程序:
安装好后,可以点击自己的admin console,我喜欢这个界面风格设计:
要添加设备,可以点击右上角Add device,这里选择添加服务器,因为服务器可以选择做出口节点,这里只是赋予服务器可以用来做出口节点的属性:
随后点击下边的生成脚本:
复制命令到服务器上执行,安装完成后会自动启动。如果要将服务器作为出口IP,拿windows举例,右键任务栏的图标里即可切换出口节点:
linux用户可以在启动时候添加命令:
1 | sudo tailscale set --exit-node=<exit-node-ip> |
要取消出口节点设置就在命令中添加空:
1 | sudo tailscale up --exit-node= |
自建节点
Tailscale在某些地区是没有节点的,会导致延迟特别的大,约等于不能用,官方有一篇自建节点的文章:
1 | https://tailscale.com/kb/1118/custom-derp-servers |
但是给我看的云里雾里的,首先默认需要所要搭载节点环境的服务器开放80,443,3478分别用来监听运行HTTP、HTTPS、STUN服务,可以自定义,但暂时不考虑自定义,先默认配置跑起来再说,首先安装derper,需要golang环境,而且比较新,我这里装的是1.23.3:
1 | https://go.dev/doc/install |
1 | go install tailscale.com/cmd/derper@latest |
然后启动服务,需要一个域名,官方文档里需要一个域名,但是据说也能用IP,我有域名,不过我推荐用域名,毕竟域名还可以CDN加速的:
1 | sudo derper --hostname=your-hostname.com --verify-clients |
装好之后会在服务器443端口开放一个web服务:
然后应该是在tailscale官方管理面板,我一直以为是自己服务器会开一个管理面板,然而它并不是。在用户Access Controls面板中:
仿照以下格式添加您自定义的节点:
1 | "derpMap": { |
注意末尾的逗号,官方文档中没有”,”,需要自己添加,否则会报错。编辑完成后同样在官方管理面板中点击添加设备,一路按自己要求选择,然后添加设备,操作如上一样。
开启自启
创建服务:
1 | sudo nano /etc/systemd/system/derper.service |
1 | [Unit] |
载入服务变更:
1 | sudo systemctl daemon-reload |
启动服务:
1 | sudo systemctl start derper |
创建开机启动:
1 | sudo systemctl enable derper |