asvow / luci-app-tailscale

LuCI support for tailscale
GNU General Public License v3.0
134 stars 23 forks source link

添加访问控制的防火墙转发规则时使用区域名称 #18

Closed ky-bd closed 2 months ago

ky-bd commented 2 months ago

/etc/init.d/tailscale 在启动服务时会添加一个名为 tailscale 的网络接口,并在设置了访问控制的情况下使用接口名称创建防火墙规则,例如:

 config_get access $cfg 'access'
 if [ "${access//tsfwlan/}" != "$access" ]; then
    uci set firewall.tsfwlan=forwarding
    uci set firewall.tsfwlan.dest='lan'
    uci set firewall.tsfwlan.src='tailscale'
else
    uci -q delete firewall.tsfwlan
fi

但是防火墙只接受区域名称作为转发规则的参数,不接受接口名称。在重载防火墙规则时会有如下错误信息:

Section tsfwlan option 'src' specifies invalid value 'tailscale'
Section tsfwlan skipped due to invalid options

手动创建一个名为 tailscale 的防火墙区域并将接口加入后报错消失。

在接受子网路由的情况下会创建一个名为 tszone 的区域,此处可以去掉子网路由的条件,然后让访问控制规则同样使用 tszone 这个区域。

系统版本:23.05.3 防火墙版本:firewall4 - 2023-09-01-598d9fbb-1

asvow commented 2 months ago

默认配置下,问题无法复现。/etc/init.d/tailscale中已定义区域名称为tailscale https://github.com/asvow/luci-app-tailscale/blob/ac0b1c5080ad17391a9c5311084454b5c8d5a8a6/root/etc/init.d/tailscale#L97

ky-bd commented 2 months ago

抱歉,看区域名的时候看岔了。

但是从代码上下文来看,这个区域应该也只在开启了 acceptRoutes 的情况下才会创建?这样的话这个问题就会和 #17 相关,源地址是虚拟网的转发规则应该只和广播子网路由或者广播出口节点的设置相关,和接受其他节点广播的子网路由关系不大。我在想是不是 accept routes 选项其实完全不需要添加防火墙规则。

asvow commented 2 months ago

你是对的,这个问题将在下个版本修复。