V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sirz
V2EX  ›  程序员

headscale 组网问题求教

  •  
  •   sirz · 350 天前 · 1939 次点击
    这是一个创建于 350 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在局域网 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 的隧道口也抓不到包
    19 条回复    2023-10-05 22:35:34 +08:00
    sirz
        1
    sirz  
    OP
       350 天前
    这么搞的场景是内网设备太多,挨个安装 headscale-cli 过于麻烦,或者有一些设备不支持安装 headscale-cli 的情况。所以需要写路由到 HS_1
    jimmy980352
        2
    jimmy980352  
       350 天前
    tailscale 自带子网路由的功能,看看帮助文档应该就可以搞定
    PaperPlanePlus
        3
    PaperPlanePlus  
       350 天前
    对端是不是没有回包路由?
    tsanie
        4
    tsanie  
       350 天前
    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
        5
    ctermiii  
       350 天前
    需要的是 A 其他设备设置 访问 B 的路由通过 hs_1 , 最简单是 hs 作为网关,其他设备网关指向 hs
    sansam
        6
    sansam  
       350 天前
    tailscale 启动的时候配置改节点的网络,例如 192.168.1.0/24 ,然后在 headscale 侧 enable ,其他节点自动获取全网路由信息。
    当然你描述的这个故障应该是没有设置回去的路由。
    greenskinmonster
        7
    greenskinmonster  
       350 天前
    headscale 是管理服务端,整个系统存在一个服务端就好,流量处理是 tailscale 客户端做的,安装也不麻烦吧。
    hs_1 那台允许 ip forward 就好

    https://tailscale.com/kb/1214/site-to-site/
    tsanie
        8
    tsanie  
       350 天前
    看了下 tailscale 自带路由功能,安装在两个局域网各自的网关上,启动参数加上 --accept-routes=true --advertise-routes=<各自子网段 /24> 即可。
    fortitudeZDY
        9
    fortitudeZDY  
       350 天前 via Android
    你可能需要在 hs_1 上把到 ts ip 端的流量 snat 到 ts ip 上
    sirz
        10
    sirz  
    OP
       349 天前
    @ctermiii hs 作为网关也试过,也是没有回包
    sirz
        11
    sirz  
    OP
       349 天前
    @jimmy980352
    @greenskinmonster
    谢谢,这个看起来是解决方案,待会试下
    sirz
        12
    sirz  
    OP
       349 天前
    @tsanie 谢谢,话说 zerotier 体验怎么样
    tsanie
        13
    tsanie  
       349 天前
    @sirz 我的网络环境下 zerotier 体验还不错,偶尔有打不通的时候就还 tailscale ,算是两手准备。
    wolfmei
        14
    wolfmei  
       349 天前
    假如你 tailscale 客户端在通局域网 A 同事能访问局域网 B, 然后在 tailscale 客户端在 headscale 注册的时候加上 --advertise-routes=<局域网 B 的网段> /24 ,注册成功之后,在 headscale 那边使用 headscale routes enable 命令来启动路由,这样其他 headscale 里面的客户端就可以通过之前客户端的路由来访问局域网 B 。
    ronnie9211
        15
    ronnie9211  
       346 天前
    tailscale up --login-server=XXXX --accept-routes=true --accept-dns=false --advertise-routes=192.168.X.X/24
    sirz
        16
    sirz  
    OP
       345 天前
    @ronnie9211 这个是 ts 节点广播路由,只有加入了 ts 的设备才能访问到,我的需求是内网设备未加入 ts 的情况下写路由下一跳到 ts 的设备上
    ronnie9211
        17
    ronnie9211  
       345 天前
    @sirz HS_1 是什么设备
    sirz
        18
    sirz  
    OP
       345 天前
    @ronnie9211 1U 设备,设备是加入了 ts 组网的一台设备,可以访问 ts 其它节点,内网未加入 ts 组网的设备要访问 ts 其它节点时,写路由下一跳到这个 HS_1 设备上,由它来做转发
    garryforreg420
        19
    garryforreg420  
       203 天前
    @sirz hs_1 上做 snat 或者在 hs_1 所在的路由器上把回程路由加上,两种都可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5355 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:51 · PVG 13:51 · LAX 22:51 · JFK 01:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.