之前的文章<<nf_ct_deliver_cached_events崩溃分析>>分析了nf_conntrack
内核模块中存在的一个BUG。由于CentOS7
一直没有修复该问题,甚至到当前最新的CentOS8 stream
的kernel-4.18.0-383.el8
版本,这个问题依旧没有修复,这样就无法通过升级官方内核的方法来解决该问题了,只能我们自己来想办法进行修复或规避。
最直观的思路是修改代码后重新编译相关的内核模块进行替换。但在我们无法直接控制的环境中替换模块不是太理想,理想的方案还是能在我们的内核模块中进行修复或者规避。
类似于LivePatch
的思路,可以直接HOOK
存在BUG的函数:nf_conntrack_confirm
, 重新实现正确的逻辑。但该函数是inline
函数, 在内核中没有符号:
1 | [root@k8smaster ~]# cat /proc/kallsyms |grep nf_conntrack_confirm |