我在局域网内 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
mmtromsb456 2023-08-07 16:37:46 +08:00
--snat-subnet-routes=false
为什么会把 srcnat 显式关闭了?正常你从别的机器通过 tailscale client FORWARD 出去需要 srcnat 呀,不然 peer 会找不到回程路由吧 |
2
mmtromsb456 2023-08-07 16:44:00 +08:00
tailscale 给的 s2s 文档关闭这个选项是因为 s2s 场景需要双向互访,但你的需求实际上没有对端 site 回程访问(并且正确添加路由表)的话就得 srcnat 了
|
3
qsnow6 OP @mmtromsb456 #2 我试了下开启,也是不行
|
4
qsnow6 OP @mmtromsb456 #2 但是我从对向 LAN 是可以访问过来的。
|
5
mmtromsb456 2023-08-07 17:11:08 +08:00
转发机器的 ip_forward 都正常开启了吧
|
6
qsnow6 OP @mmtromsb456 #5
都启用了的 |
7
qsnow6 OP @mmtromsb456 #5
干!找到问题了,对向的网关是 OpenWRT ,LAN>Tailscale 这里要开启 Masquerading 才可以。 难怪 traceroute 进入到网关后就没响应了。 |
8
f165af34d4830eeb 2023-08-08 00:03:02 +08:00
op 是配置的旁路由么?
我有两个 openwrt 网关开启 tailscale 并配置 subnet ,不开启 Masquerading 的情况下两个 subnet 内设备互访是没有问题的。 |
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 网段添加到路由表内,我这边不需要额外配置路由即可实现互访。 |
10
qsnow6 OP OpenWRT 和 debian 11,
问题出在 deiban->OpenWRT 上,不打开 Masquerading 的情况下无法访问到 LAN 内的设备;但是反向是可以的. @f165af34d4830eeb #9 |
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 的设备也是正常的。 |
12
qsnow6 OP 192.168.2.101 是旁路由。
防火墙配置感谢提建议,我把 wan zone 的 Forward 关了试试,这个原本是关了的。 |
13
qsnow6 OP @f165af34d4830eeb #11
|
14
qsnow6 OP 关了好像也不影响访问,感谢提醒
@f165af34d4830eeb #11 |
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 容易被扫端口。
|
16
f165af34d4830eeb 2023-08-08 09:40:05 +08:00 via iPhone
@f165af34d4830eeb #15
refuse-> reject |