V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qsnow6
V2EX  ›  宽带症候群

tailscale site to site 设置问题:非 tailscale 客户端添加路由表后无法连接 tailscale 网络

  •  
  •   qsnow6 · 2023-08-07 15:35:53 +08:00 · 1996 次点击
    这是一个创建于 472 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在局域网内 192.168.2.101 上运行了 tailscale ,希望能实现 192.168.2.x 网段内的机器可以在不安装 tailscale 客户端的情况下接入 tailscale 网络。

    按照教程设置: https://tailscale.com/kb/1214/site-to-site/

    这个是 tailscale 网关的命令行: tailscale up --accept-routes --advertise-routes=192.168.2.0/24 --snat-subnet-routes=false --advertise-exit-node

    在没有安装客户端的机器上添加路由表: route -n add -net 100.64.0.0/10 192.168.2.101 route -n add -net 192.168.1.0/24 192.168.2.101 #这个是另一个 LAN 的网段

    添加完后,在没有 tailscale 的客户端无法连接另一个 LAN 192.168.1.2 的 traceroute 记录

    zed@zeddeMac-mini ~ % traceroute 192.168.1.2   
    traceroute to 192.168.1.2 (192.168.1.2), 64 hops max, 52 byte packets
     1  192.168.2.101 (192.168.2.101)  0.564 ms  0.290 ms  0.177 ms
     2  100.122.96.133 (100.122.96.133)  9.264 ms  10.946 ms  10.446 ms
     3  * * *
    

    这是网关 192.168.2.101 连接 192.168.1.2 的 traceroute 记录

    root@debian:~# traceroute 192.168.1.2
    traceroute to 192.168.1.2 (192.168.1.2), 30 hops max, 60 byte packets
     1  100.122.96.133 (100.122.96.133)  12.245 ms  12.215 ms  12.705 ms
     2  192.168.1.2 (192.168.1.2)  13.740 ms  13.970 ms  14.608 ms
    

    网关可以连接到另一个 LAN ,但是非 tailscale 客户端的就不行,是缺少什么设置吗

    第 1 条附言  ·  2023-08-07 18:08:15 +08:00
    如果网关使用的是 OpenWRt ,把 Masquerading 打开就好。
    16 条回复    2023-08-08 09:40:05 +08:00
    mmtromsb456
        1
    mmtromsb456  
       2023-08-07 16:37:46 +08:00
    --snat-subnet-routes=false
    为什么会把 srcnat 显式关闭了?正常你从别的机器通过 tailscale client FORWARD 出去需要 srcnat 呀,不然 peer 会找不到回程路由吧
    mmtromsb456
        2
    mmtromsb456  
       2023-08-07 16:44:00 +08:00
    tailscale 给的 s2s 文档关闭这个选项是因为 s2s 场景需要双向互访,但你的需求实际上没有对端 site 回程访问(并且正确添加路由表)的话就得 srcnat 了
    qsnow6
        3
    qsnow6  
    OP
       2023-08-07 17:06:34 +08:00
    @mmtromsb456 #2 我试了下开启,也是不行
    qsnow6
        4
    qsnow6  
    OP
       2023-08-07 17:09:06 +08:00
    @mmtromsb456 #2 但是我从对向 LAN 是可以访问过来的。
    mmtromsb456
        5
    mmtromsb456  
       2023-08-07 17:11:08 +08:00
    转发机器的 ip_forward 都正常开启了吧
    qsnow6
        6
    qsnow6  
    OP
       2023-08-07 17:30:47 +08:00
    @mmtromsb456 #5
    都启用了的
    qsnow6
        7
    qsnow6  
    OP
       2023-08-07 17:34:48 +08:00
    @mmtromsb456 #5
    干!找到问题了,对向的网关是 OpenWRT ,LAN>Tailscale 这里要开启 Masquerading 才可以。

    难怪 traceroute 进入到网关后就没响应了。
    f165af34d4830eeb
        8
    f165af34d4830eeb  
       2023-08-08 00:03:02 +08:00
    op 是配置的旁路由么?

    我有两个 openwrt 网关开启 tailscale 并配置 subnet ,不开启 Masquerading 的情况下两个 subnet 内设备互访是没有问题的。
    f165af34d4830eeb
        9
    f165af34d4830eeb  
       2023-08-08 00:06:06 +08:00
    @f165af34d4830eeb #8

    tailscale 使用参数 -accept-routes --advertise-routes={内网 IP} --advertise-exit-node

    openwrt 上 tailscale 会自动将 ts 设备 ip 及 subnet 网段添加到路由表内,我这边不需要额外配置路由即可实现互访。
    qsnow6
        10
    qsnow6  
    OP
       2023-08-08 00:31:59 +08:00
    OpenWRT 和 debian 11,
    问题出在 deiban->OpenWRT 上,不打开 Masquerading 的情况下无法访问到 LAN 内的设备;但是反向是可以的.
    @f165af34d4830eeb #9
    f165af34d4830eeb
        11
    f165af34d4830eeb  
       2023-08-08 01:50:22 +08:00 via iPhone
    @qsnow6 #10 192.168.2.101 是旁路由么?是旁路由我就没啥好说的了,不是很懂旁路由的搞法。

    顺带一提,#7 的防火墙配置很奇怪。lan 后面那个 masq 打勾不是对 lan -> tailscale 开启 masq ,是给 lan zone 开启 masq ( srcnat+dstnat ),一般情况下不会给 lan zone 开 masq ;至于 wan zone 的三个 accept ,如果是接外网的路由这么干无异于大开家门欢迎黑客(如果是旁路由当我没说)

    反正我个人很讨厌旁路由这种畸形的玩意。我这边 op 做主路由的情况下,ts 会自动将其它 subnet 加入到路由表中,跨 subnet 互访不需要 nat ,保留了原始 ip ; ts 下设备访问其它 subnet 下非 ts 的设备也是正常的。
    qsnow6
        12
    qsnow6  
    OP
       2023-08-08 09:03:38 +08:00
    192.168.2.101 是旁路由。
    防火墙配置感谢提建议,我把 wan zone 的 Forward 关了试试,这个原本是关了的。
    qsnow6
        13
    qsnow6  
    OP
       2023-08-08 09:03:45 +08:00
    qsnow6
        14
    qsnow6  
    OP
       2023-08-08 09:05:25 +08:00
    关了好像也不影响访问,感谢提醒
    @f165af34d4830eeb #11
    f165af34d4830eeb
        15
    f165af34d4830eeb  
       2023-08-08 09:36:55 +08:00 via iPhone   ❤️ 1
    @qsnow6 #14 wan zone 一般开个出站 accept 就行,入站和 forward 用 drop/refuse 就好。原因是很多程序用的 0.0.0.0 当监听地址,你要是开了入站 accept 容易被扫端口。
    f165af34d4830eeb
        16
    f165af34d4830eeb  
       2023-08-08 09:40:05 +08:00 via iPhone
    @f165af34d4830eeb #15
    refuse-> reject
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   998 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:09 · PVG 06:09 · LAX 14:09 · JFK 17:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.