文中的部分图片来源于网上其他作者,但网址忘记了,若有知道的读者麻烦评论里添加一下,再补充上来。
使用注意:
使用iptables首先要确认内核配置了,即linux内核要支持该功能,否则用户态下直接执行iptables命令是不能正常使用的。
具体配置那些选项需要根据实际需要确定。具体选项很多,一般选常用的就可以了。
内核选项
CONFIG_PACKET : 允许程序直接访问网络设备,tcpdump 和 snort也要使用这个功能。严格地说,iptables并不需要CONFIG_PACKET,但由于其他程序需要,一般涉及网络的应用都会将它选上。
CONFIG_NETFILTER: 允许计算机作为网关或防火墙。要使用iptables,这个是必须选的。
下面是4.4内核的menuconfig
根据需要进入选择即可。内核支持后,就可以在用户态下使用了。
下面主要原理图,引用的其他网页上的图片,版权归原作者所有
Netfilter防护原理
在内核中的TCP/IP协议栈上选择了5个点(又称为“卡哨”),这5个点是报文一定会流经的位置,并配置5个钩子函数(hook_function);当有报文经过时,被钩子函数钩起,对规则进行检查,并按照一定的机制(又可称为“功能”)完成处理
原理图
说明:上图显示了Netfilter的实现原理,以及其主要的4大功能:raw,mangle,nat,filter
数据包经Netfilter的过滤匹配流程
raw:PREROUTING OUTPUT
nat : PREROUTING OUTPUT POSTROUTING
图1:
图2:
说明1:图1和图2都是数据包流向的描述,个人感觉图2更加形象,可以看出数据包经Netfilter的过滤匹配流程就是针对Netfilter的4大功能,在5个卡哨间停留匹配的过程
说明2:借用的网络上的2张图片,版权归原作者所有
具体使用命令,可以参考其他网页
https://blog.csdn.net/sdytlm/article/details/6544913/
原理说明好文,可以看看