根据我的理解,iptables在传输层(第4层)上工作,而发生的任何数据包过滤都是基于第4层的ip协议,比如tcp和udp。所以,如果我们在iptables -p选项中输入诸如esp、gre和l2tp这样的协议,这有什么意义吗?我们能使用iptables过滤基于第2/3层协议的数据包吗?如果不是,那么iptables如何过滤基于icmp协议的数据包?
我还是新手,我还在学习。谢谢!
发布于 2020-08-10 12:44:12
iptables支持在数据链路、网络和传输层进行过滤。
-p (协议)选项并不局限于第4层协议。手册页特别提到了icmp和esp。我知道gre也是受支持的(无论是“gre”还是协议“47”)。可以通过名称或在/etc/protocols中指定的整数将指定的协议传递给此选项。我不确定这个列表中的所有协议都被iptable所支持。
如果指定了-p或--协议,并且只有在遇到未知选项时,iptables将尝试加载与该协议同名的匹配模块,以尝试使该选项可用。
此“匹配模块”语法是扩展的数据包匹配模块,将使用-m --match选项指定。
您可以在这里找到支持的扩展列表:iptables扩展。可用netfilter内核模块的列表位于/lib/modules/$(uname -r)/kernel/net/netfilter。
https://unix.stackexchange.com/questions/603789
复制相似问题