资讯详情

资讯详情

子网路由器与出口节点:Headscale Routes配置完全指南

子网路由器与出口节点Headscale Routes配置完全指南Headscale 是开源的 Tailscale 控制服务器自托管实现其中 Routes路由功能可以让你轻松配置子网路由器Subnet Router与出口节点Exit Node把内网设备接入 tailnet或让所有流量安全地从一个出口转发。本文将带你用最短的步骤完成配置。两种路由角色一个网络搞定角色作用典型场景 子网路由器连接私有云、机房内网等无法安装 Tailscale 的设备远程访问家里/公司的内网服务 出口节点将节点的全部互联网流量经此节点转发在不可信 Wi-Fi 下安全上网、固定出口 IP两者的配置逻辑几乎一致都需要双重确认double opt-in客户端先宣告能力控制服务器再批准。下面分别讲解。一键搭建子网路由器3 步完成第 1 步让节点宣告子网路由在希望充当子网路由器的机器上注册节点并用逗号分隔列出要处理的路由网段sudo tailscale up --login-server 你的Headscale地址 --advertise-routes10.0.0.0/8,192.168.0.0/24如果节点已注册也可以用sudo tailscale set --advertise-routes...随时更新宣告的路由。第 2 步在控制服务器批准路由用headscale nodes list-routes查看当前可用的路由命令实现见 cmd/headscale/cli/nodes.go$ headscale nodes list-routes ID | Hostname | Approved | Available | Serving (Primary) 1 | myrouter | | 10.0.0.0/8 | | | | 192.168.0.0/24 |可以看到路由可用但尚未批准。执行批准命令$ headscale nodes approve-routes --identifier 1 --routes 10.0.0.0/8,192.168.0.0/24 Node updated再次运行list-routes路由会出现在Approved列中子网路由器即刻生效 ✅第 3 步其他节点接受路由在需要访问内网的客户端上执行sudo tailscale set --accept-routes至此tailnet 内的其他设备就可以通过子网路由器访问 10.0.0.0/8 和 192.168.0.0/24 中的设备了。出口节点配置比子网路由器更简单出口节点的配置流程与子网路由器高度一致只是宣告的是特殊路由0.0.0.0/0IPv4和::/0IPv61️⃣ 节点上宣告出口能力sudo tailscale up --login-server 你的Headscale地址 --advertise-exit-node2️⃣ 控制服务器批准只需批准 IPv4 或 IPv6 其中一条另一条会自动批准$ headscale nodes list-routes 1 | myexit | | 0.0.0.0/0 | $ headscale nodes approve-routes --identifier 1 --routes 0.0.0.0/03️⃣ 客户端指定出口节点sudo tailscale set --exit-node myexit从这一刻起该节点的所有互联网流量都会经由myexit转发 进阶技巧用策略自动批准路由每次新增路由都要手动批准Headscale 的策略文件Policy支持autoApprovers可以实现路由宣告后自动批准。自动批准子网路由给路由节点打上tag:router标签策略中声明该标签拥有自动批准权{ tagOwners: { tag:router: [alice] }, autoApprovers: { routes: { 192.168.0.0/24: [tag:router] } }, grants: [ { src: [autogroup:member], dst: [autogroup:member], ip: [*] } ] }节点加入时带上标签--advertise-tags tag:router --advertise-routes 192.168.0.0/24路由即刻自动生效。自动批准出口节点写法类似只需在autoApprovers中写exitNode: [tag:exit]。完整策略语法可参考 docs/ref/policy.md。用策略限制路由的使用者默认情况下所有节点都能使用已批准的路由和出口节点。想精细管控时在策略中使用autogroup:internet即可限制谁可以使用出口节点甚至可以用via字段为不同用户指定专属出口节点{ grants: [ { src: [alice], dst: [autogroup:internet], via: [tag:exit1], ip: [*] } ] }这样 alice 只能经由tag:exit1标记的出口节点上网其他出口节点对她不可见。常见问题排查 路由不生效首先确认路由器节点是否开启了IP 转发IP forwarding——子网路由器和出口节点都要转发流量这是最常见的坑。路由不在列表中检查节点是否在线以及--advertise-routes参数是否拼写正确多个网段用逗号分隔不要加空格。客户端看不到路由确认客户端执行过tailscale set --accept-routes且策略允许其访问目标。想要高可用Headscale 默认支持多路由冗余——当至少两个节点宣告同一前缀时自动启用 HA任一节点下线时流量自动切换到另一个配置项为node.routes.ha见 docs/ref/configuration.md。总结操作客户端命令服务器命令宣告子网up --advertise-routesnodes approve-routes宣告出口up --advertise-exit-nodenodes approve-routes接受/使用set --accept-routes/set --exit-node—更多细节请阅读官方路由文档 docs/ref/routes.md。掌握子网路由器与出口节点后你的 Headscale tailnet 就能无缝覆盖内网设备并随时拥有一把安全的互联网钥匙 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →