【问题标题】:Unable to create netlink socket: Protocol not supported无法创建 netlink 套接字:不支持协议
【发布时间】:2013-04-29 09:01:45
【问题描述】:

我找到了一个使用 netfilter 和 libipq 库拦截 IPv6 数据包的示例。

首先声明和创建一个 ipq_handle 结构:

struct ipq_handle *h;
h = ipq_create_handle(0, NFPROTO_IPV6);
if (!h) die(h);

对应的die()函数如下

static void die(struct ipq_handle *h)
ipq_error("Passer");
ipq_destroy_handle(h);
exit(1);

但是,程序无法正常运行,生成以下内容:

Passer: Unable to create netlink socket: Protocol not supported

有人知道问题的可能原因吗?

【问题讨论】:

  • 您在操作系统中启用了 IPv6 吗?
  • 显而易见的答案:该版本不支持 IPv6?
  • 我在我的虚拟机上使用 ubuntu 12.04。我猜默认情况下启用了 IPv6。实际上,我在尝试使用 netlink 套接字之前配置了全局 IPv6 地址并设法发送 IPv6 UDP 套接字!
  • 我认为您需要 ip6_queue 内核模块。至少它不是我的 ubuntu 13.04 默认桌面安装的一部分。编辑:也许我有点过时了:lxr.linux.no/#linux+v3.9/Documentation/ABI/removed/ip_queue(我希望 libipq 开发人员没有)
  • @thuovila 显然它已被弃用!

标签: linux sockets ipv6 netlink


【解决方案1】:

与 ip(6)_queue 一起,libipq 已被弃用。引用自Wikipedia article

Libipq 已被弃用,取而代之的是 Linux 内核 2.6.14 及更高版本的 libnetfilter_queue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多