【发布时间】: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