Closed Steve-xmh closed 11 months ago
找不到符号,是因为你的库版本低了,libnetfilter-queue应该用1.0.5。 1.0.4的时候改了一些东西,我也不确定之前版本的行为和现在的一不一样,也不打算去做这个兼容。
找不到符号,是因为你的库版本低了,libnetfilter-queue应该用1.0.5。 1.0.4的时候改了一些东西,我也不确定之前版本的行为和现在的一不一样,也不打算去做这个兼容。
那就难办了,这台机器的最新版本也才基于 OpenWRT 18.06,查询了一下所处的 libnetfilter-queue 也是 2017 年的旧版本了,各种工具链都也都比较旧了。 时间和难度上都不太允许我自己继续解决这些兼容性问题,可能只能放弃了,用不了作者大佬的模块太可惜了。总之非常感谢帮助!
(自己第一次折腾这个东西,所以会尽可能描述我的构建过程和发生的问题,如果需要什么信息我会尽力提供,还请大佬不吝赐教!)
自己有一个 GL-ST1200 的路由器,因为这个架构比较另类(
mips_siflower
),然后想使用大佬的工具处理一下 HTTP 流量,因此尝试了从源码构建:构建过程
使用的仓库对应的 Commit 是 https://github.com/Zxilly/UA2F/tree/6be399f59e15549d883701a40916a1875cfcbabe
构建的时候我使用了这个路由器开源仓库里提供的一个 SDK 套件 https://github.com/gl-inet/sdk ,通过里面描述的方法一步步进行了构建
起初是遇到了 CMake 版本不足,应该是 SDK 自己准备的 CMake 版本太低,然后我将此处的最低版本修改成了
3.12
以匹配 SDK 的 CMake 版本。 https://github.com/Zxilly/UA2F/blob/6be399f59e15549d883701a40916a1875cfcbabe/CMakeLists.txt#L1第二次报告未知
CMAKE_C_STANDARD
值(应该也是 CMake 太旧的原因),我就又改动了CMakeFile.txt:4
到11
。 https://github.com/Zxilly/UA2F/blob/6be399f59e15549d883701a40916a1875cfcbabe/CMakeLists.txt#L4第三次构建在链接阶段时出现符号未定义的问题:
根据错误输出我找到了这个函数在 UA2F 的位置: https://github.com/Zxilly/UA2F/blob/6be399f59e15549d883701a40916a1875cfcbabe/src/handler.c#L305
我已经确认了这个函数对应的库
netfilters-queue
已经安装在 SDK 中了,但是好像无法通过grep
搜索到这个函数的任何定义:作为对比我尝试搜索了
nfq_tcp_mangle_ipv4
:然后这个是搜索出
nfq_tcp_mangle_ipv4
的那个头文件(sdk/1806/siflower/staging_dir/target-mipsel_mips-interAptiv_musl/usr/include/libnetfilter_queue/libnetfilter_queue_tcp.h
)的内容:想了一下自己的环境并没有 IPv6,所以我就斗胆注释掉了这行调用了
nfq_tcp_mangle_ipv6
的函数实际运行
最后顺利编译出来一个 ipk 产物。我就放入路由器中安装并尝试启动 UA2F,下面是我的 UCI 配置:
随后使用以下指令启动了 UA2F:
但是启动之后在我的其他机器上使用 CURL 测试请求
http://httpbin.org/headers
的时候却超时了,但 HTTPS 流量还是正常的:查阅了 OpenWRT 的系统日志后,发现几行和 UA2F 相关的日志:
想要解决的问题
如上,希望能在 GL-ST1200 这个路由器上正常运行 UA2F 并正确处理 HTTP 流量
非常感谢大佬!