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

2023-08-07 15:35:53 +08:00
 qsnow6

我在局域网内 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 客户端的就不行,是缺少什么设置吗

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

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

我有两个 openwrt 网关开启 tailscale 并配置 subnet ,不开启 Masquerading 的情况下两个 subnet 内设备互访是没有问题的。
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
2023-08-08 00:31:59 +08:00
OpenWRT 和 debian 11,
问题出在 deiban->OpenWRT 上,不打开 Masquerading 的情况下无法访问到 LAN 内的设备;但是反向是可以的.
@f165af34d4830eeb #9
f165af34d4830eeb
2023-08-08 01:50:22 +08:00
@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
2023-08-08 09:03:38 +08:00
192.168.2.101 是旁路由。
防火墙配置感谢提建议,我把 wan zone 的 Forward 关了试试,这个原本是关了的。
qsnow6
2023-08-08 09:03:45 +08:00
qsnow6
2023-08-08 09:05:25 +08:00
关了好像也不影响访问,感谢提醒
@f165af34d4830eeb #11
f165af34d4830eeb
2023-08-08 09:36:55 +08:00
@qsnow6 #14 wan zone 一般开个出站 accept 就行,入站和 forward 用 drop/refuse 就好。原因是很多程序用的 0.0.0.0 当监听地址,你要是开了入站 accept 容易被扫端口。
f165af34d4830eeb
2023-08-08 09:40:05 +08:00
@f165af34d4830eeb #15
refuse-> reject

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

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

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

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

© 2021 V2EX