headscale 组网问题求教

2023-05-12 10:26:12 +08:00
 sirz
在局域网 A 中有一台加入了 headscale 的设备,目前能够正常访问局域网 B 中的其它节点(暂称 HS_1 )

目前的需求是:局域网 A 的其它普通设备通过 HS_1 访问到局域网 B 的节点

配置:在路由器上配置了静态路由,100.64.0.0/24 -> 下一跳 HS_1
( 100.64.0.0 是 headscale 的虚拟局域网段)

目前情况:普通设备访问 100.64.0.0/24 下一跳到 HS_1 ,HS_1 也能抓到请求包,但是没有回包,在局域网 B 的隧道口也抓不到包
2366 次点击
所在节点    程序员
19 条回复
sirz
2023-05-12 10:33:25 +08:00
这么搞的场景是内网设备太多,挨个安装 headscale-cli 过于麻烦,或者有一些设备不支持安装 headscale-cli 的情况。所以需要写路由到 HS_1
jimmy980352
2023-05-12 11:10:12 +08:00
tailscale 自带子网路由的功能,看看帮助文档应该就可以搞定
PaperPlanePlus
2023-05-12 11:14:57 +08:00
对端是不是没有回包路由?
tsanie
2023-05-12 11:20:14 +08:00
tailscale 不太清楚,zerotier 除了需要添加 route 之外还需要对流量进行 nat ,例如

chain forward {
type filter hook forward priority filter; policy drop;
iifname "ztly53basn" accept
oifname "ztly53basn" accept
}

chain srcnat {
type nat hook postrouting priority srcnat; policy accept;
meta nfproto ipv4 oifname "ztly53basn" masquerade
}
ctermiii
2023-05-12 11:20:51 +08:00
需要的是 A 其他设备设置 访问 B 的路由通过 hs_1 , 最简单是 hs 作为网关,其他设备网关指向 hs
sansam
2023-05-12 11:22:00 +08:00
tailscale 启动的时候配置改节点的网络,例如 192.168.1.0/24 ,然后在 headscale 侧 enable ,其他节点自动获取全网路由信息。
当然你描述的这个故障应该是没有设置回去的路由。
greenskinmonster
2023-05-12 11:28:39 +08:00
headscale 是管理服务端,整个系统存在一个服务端就好,流量处理是 tailscale 客户端做的,安装也不麻烦吧。
hs_1 那台允许 ip forward 就好

https://tailscale.com/kb/1214/site-to-site/
tsanie
2023-05-12 11:29:33 +08:00
看了下 tailscale 自带路由功能,安装在两个局域网各自的网关上,启动参数加上 --accept-routes=true --advertise-routes=<各自子网段 /24> 即可。
fortitudeZDY
2023-05-12 12:48:01 +08:00
你可能需要在 hs_1 上把到 ts ip 端的流量 snat 到 ts ip 上
sirz
2023-05-12 14:46:06 +08:00
@ctermiii hs 作为网关也试过,也是没有回包
sirz
2023-05-12 14:47:15 +08:00
@jimmy980352
@greenskinmonster
谢谢,这个看起来是解决方案,待会试下
sirz
2023-05-12 14:48:22 +08:00
@tsanie 谢谢,话说 zerotier 体验怎么样
tsanie
2023-05-12 16:32:14 +08:00
@sirz 我的网络环境下 zerotier 体验还不错,偶尔有打不通的时候就还 tailscale ,算是两手准备。
wolfmei
2023-05-12 22:54:35 +08:00
假如你 tailscale 客户端在通局域网 A 同事能访问局域网 B, 然后在 tailscale 客户端在 headscale 注册的时候加上 --advertise-routes=<局域网 B 的网段> /24 ,注册成功之后,在 headscale 那边使用 headscale routes enable 命令来启动路由,这样其他 headscale 里面的客户端就可以通过之前客户端的路由来访问局域网 B 。
ronnie9211
2023-05-16 09:46:20 +08:00
tailscale up --login-server=XXXX --accept-routes=true --accept-dns=false --advertise-routes=192.168.X.X/24
sirz
2023-05-16 18:00:05 +08:00
@ronnie9211 这个是 ts 节点广播路由,只有加入了 ts 的设备才能访问到,我的需求是内网设备未加入 ts 的情况下写路由下一跳到 ts 的设备上
ronnie9211
2023-05-17 09:01:56 +08:00
@sirz HS_1 是什么设备
sirz
2023-05-17 10:49:12 +08:00
@ronnie9211 1U 设备,设备是加入了 ts 组网的一台设备,可以访问 ts 其它节点,内网未加入 ts 组网的设备要访问 ts 其它节点时,写路由下一跳到这个 HS_1 设备上,由它来做转发
garryforreg420
2023-10-05 22:35:34 +08:00
@sirz hs_1 上做 snat 或者在 hs_1 所在的路由器上把回程路由加上,两种都可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/939413

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX