使用 Headscale 和 Exit Node 转发流量

2024-09-30#Headscale

是使用 Headscale 搭建网格网络时,除了能让网络中的各个节点互联互通,还可以将网络中的某个节点当作中转站,用于转发流量。比如,在家里只需搭建一台 Tailscale 节点,然后将其设置为路由中转节点,就可以访问家里其他的电脑了。这个中转节点叫做 Exit Node (退出节点)。 Tailscale 的官网网站里有一篇《Exit nodes (route all traffic)》 对它进行了介绍。

启用 Exit Node 🔗

Headscale 的 《Exit Nodes》 页面介绍了配置的步骤。包括如下几步:

  1. 在中转节点上启用 Exit Node。然后,开启 IP 转发。如果只有 IPv4 流量,那么也可不开启 IPv6 的转发。
  2. 在控制服务器上启用中转节点的路由。当启用了 0.0.0.0/0::/0 时,该节点会转发所有目的地的流量。但是,如果只想是转发某个网段的流量,那么可以先使用 tailscale up 命令与 --advertise-routes 选项创建路由,再进行启用。具体见文档 《Advertise subnet routes 》

配置 ACL 🔗

ACL 的配置可参考 Tailscale 的文档 《Add access rules for the advertised subnet routes》。目的地为子网网段,与--advertise-routes 的值相同。

如果期望使用中转流量转发互联网请求,那么可以在 dst 中使用 autogroup:internet:*。比如:

{
  "action": "accept",
  "src": ["group:users"],
  "dst": ["autogroup:internet:*"]
}

autogroup:internet 是 Headscale 所支持的仅有的 autogroup (也可能是“之一”)。

配置完成后,重启 Headscale。

使用 Exit Node 🔗

headscale 运行后,等待一小会儿,配置信息就会被推送到各个客户端。在图形界面的客户端上,找到 Exit Nodes,选中刚刚配置的节点。此后的网络流量,就会按照配置好的路由,进行转发了。


加载中...