NETLINK_FIREWALL (和NETLINK_IP6_FW)和NETLINK_NETFILTER两种网络链接协议都用于管理Linux防火墙。
所以,有什么不同吗?如果是,哪一种网络链接协议服务于哪个目的?
发布于 2013-12-14 18:37:43
代码中的快速grep显示,NETLINK_FIREWALL只在内核中发生过两次:
include/uapi/linux/netlink.h
11:#define NETLINK_FIREWALL 3 /* Unused number, formerly ip_queue */
security/selinux/hooks.c
1184: case NETLINK_FIREWALL:
1185: return SECCLASS_NETLINK_FIREWALL_SOCKET;因此,它是定义的,注释声称它未使用,并且在selinux的类型转换代码中只提到过一次。从来没有对netlink_kernel_create()的调用,因此NETLINK_FIREWALL从来没有连接起来。它什么也做不了。
NETLINK_NETFILTER确实有一个与其关联的netlink_kernel_create()调用,所以您需要查看这个接口。
已经有一段时间了,但我曾经为配置netfilter规则实现了(部分)代码,我记得是通过setsockopt()调用而不是通过netlink套接字来实现的。我不知道NETLINK_NETFILTER到底做了什么。
快速查看git日志似乎表明,NETLINK_NETFILTER用于与thinks类似于连接跟踪,而不是实际配置防火墙规则( iptables userspace命令所做的)。
如果您实际上希望创建防火墙规则(即执行iptables所做的操作),则应该查看libiptc (它是iptables源代码树的一部分)。用于配置这些规则的接口非常复杂,而且没有文档说明。
https://stackoverflow.com/questions/20584967
复制相似问题