sjtuross / syno-iptables

Some missing iptables modules for Synology
188 stars 23 forks source link

【求助】textsearch.ko无法加载,最终导致一共三个模块无法加载 #17

Closed beep0909 closed 2 years ago

beep0909 commented 2 years ago

内核版本和iptabls版本:

iptables v1.6.0
Linux mqnpdzl 4.4.59+ #25556 SMP PREEMPT Sat Aug 28 02:17:26 CST 2021 x86_64 GNU/Linux synology_apollolake_218+

加载这个三个的时候报错:

insmod /lib/modules/textsearch.ko
insmod /lib/modules/ts_bm.ko
insmod /lib/modules/xt_string.ko

有两个变量找不到 Unknown symbol rcu_read_lock (err 0) Unknown symbol rcu_read_unlock (err 0)

[6847845.319814] xt_string: Unknown symbol textsearch_destroy (err 0)
[6847845.326756] xt_string: Unknown symbol textsearch_prepare (err 0)
[6847948.294970] textsearch: Unknown symbol __rcu_read_lock (err 0)
[6847948.301885] textsearch: Unknown symbol __rcu_read_unlock (err 0)
[6848076.009154] textsearch: Unknown symbol __rcu_read_lock (err 0)
[6848076.015935] textsearch: Unknown symbol __rcu_read_unlock (err 0)
[6848076.030540] ts_bm: Unknown symbol textsearch_unregister (err 0)
[6848076.037595] ts_bm: Unknown symbol textsearch_register (err 0)
[6848077.833446] xt_string: Unknown symbol textsearch_destroy (err 0)
[6848077.840512] xt_string: Unknown symbol textsearch_prepare (err 0)

这三个模块没法加载导致出现[/sjtuross/syno-iptables/issues/11]同样的问题。

beep0909 commented 2 years ago

这是容器生成的log文件:v2raya.csv 在docker里面启动v2rayA以后,进到UI界面里面不能启动节点,看log应该是有个‘filter'表没法初始化,麻烦大佬帮忙看看有没有解决办法: ”DROP_SPOOFING iptables v1.8.8 (legacy): can't initialize iptables table `filter': Permission denied (you must be root)“

beep0909 commented 2 years ago

这是容器生成的log文件:v2raya.csv 在docker里面启动v2rayA以后,进到UI界面里面不能启动节点,看log应该是有个‘filter'表没法初始化,麻烦大佬帮忙看看有没有解决办法: ”DROP_SPOOFING iptables v1.8.8 (legacy): can't initialize iptables table `filter': Permission denied (you must be root)“

这个解决了, 新建容器时忘了加上--privileged

sjtuross commented 2 years ago

这个问题确实存在于apollolake的6.X系统(DS918+ 6.2.3也可以复现),uname -a中含有PREEMPT,说明开启了RCU,但是相关API(就是那2个unknown symbol)并没有包含在群晖的这个自制内核中,textsearch.ko碰巧又用到了

除非重整整个内核,否则这个问题可能无法解决。一个选择是可以升级到7.1系统,apollolake内核没有开PREEMPT,所以这问题就不存在了

sjtuross commented 2 years ago

@beep0909 开启了CONFIG_PREEMPT_RCU=y的内核中,那2个RCU函数其实是空的,因此魔改了一下textsearch.c,你下载最新的模块试一下

beep0909 commented 2 years ago

@beep0909 开启了CONFIG_PREEMPT_RCU=y的内核中,那2个RCU函数其实是空的,因此魔改了一下textsearch.c,你下载最新的模块试一下

@sjtuross 感谢您的做付出!可惜目前没法测试了。昨天刚刚升到7.1系统,绕过了6.X系统的RCU的问题,已经实现了透明代理。

sjtuross commented 2 years ago

好的,没问题,也感谢你的反馈。我这边DS918+ 6.2.3系统测试可以加载textsearch.ko,留给将来有需要的人吧!