【问题标题】:libipq not supported in Ubuntu 12.04Ubuntu 12.04 不支持 libipq
【发布时间】:2014-03-06 09:26:45
【问题描述】:

作为我大学研究项目的一部分,我需要更改数据包,并且遇到了两个库。分别是 libnetfilter_queuelibipq,这是已弃用的版本。 libnetfilter_queue 关于数据包更改的文档几乎为零,我遇到的唯一好的文档是通过 libipq 完成的。

因此,当我运行我的代码时,我得到了错误 passer: Unable to create netlink socket: Protocol not supported 我发现这是因为新的 linux 内核不支持 libipq

我的问题是,是否有解决方法使 libipqUbuntu 12.04 LTS 或任何有助于通过 libnetfilter_queue 实现数据包更改的文档或教程的参考。

我在这个问题上待了几天,找不到解决方案。您的帮助将不胜感激。 :)

非常感谢:)

P.S:问题也贴在这里(https://askubuntu.com/questions/430234/libipq-not-supported-in-ubuntu-12-04-lts

【问题讨论】:

    标签: c ubuntu-12.04 iptables packet raw-sockets


    【解决方案1】:

    一旦ip_queue 模块消失,您就不能使用libipq,因为它直接利用了该模块;所以不,除非您安装仍然具有 ip_queue 模块的旧内核,否则没有解决方法。

    也就是说,您完全没有提到您实际尝试过的内容。如果您从基本的libnetfilter_queue 示例开始,当您设置判定时,您应该使用nfq_set_verdict,传入包含混合数据包数据的data_lenbuf 参数。

    【讨论】:

    • 感谢您提供这个非常描述性的答案 :) 我尝试了一些代码,从您的回复中我知道我走错了方向。再次感谢,我会用我所做的更新问题:) +1
    • 先生,小查询..我正在试验您的信息,是否可以通过nfq_set_verdict 更改标题信息,因为我不太了解它的概念:)
    • 只要您使用了nfq_set_mode(qh, NFQNL_COPY_PACKET, 0xffff),一旦您检索到它,您就应该拥有数据包有效负载的完整副本。当您使用nfq_get_payload()检索数据包时,它将包含所有数据包数据,包括标头,例如,如果您想从数据中获取ip标头,您可以将返回的指针转换为struct iphdr *跨度>
    • 非常感谢先生!!!你的帮助刚刚救了我!!谢谢!!我希望我能给你的答案多点赞:D
    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 2015-08-16
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多