iptables 使用教程
ipatbles 是 Linux 下的网络防火墙规则管理/修改工具,通过控制 Linux 内核 netfilter 模块,来管理网络数据包的处理和转发。用来识别路由表中特定的流量然后执行设定的规则。只用于处理 IPv4 数据包;而对于 IPv6 数据包,则使用类似的 ip6tables 命令。
基本概念
netfilter 模型如下:
结构:
- Tables 路由表:用来区分不同类型的数据包,如 filter,nat,mangle,每个表包含几个路由链
- Chain 路由链:流量的类型,如 INPUT ,FORWARD ,OUTPUT ,每种类型流量可以设置不同规则
- Rule 规则:用来匹配特定类型的流量,如匹配来自 192.168.1.230 的流量
- Target 目标:用来处理匹配到的流量,如 ACCEPT, DROP, QUEUE.
- Policy 策略:是默认的处理动作,用来处理没有匹配到的流量,如 ACCEPT or DROP.
iptables、ip6tables等都使用Xtables框架。存在“表(tables)”、“链(chain)”和“规则(rules)”三个层面。
每个“表”指的是不同类型的数据包处理流程,如filter表表示进行数据包过滤,而nat表针对连接进行地址转换操作。每个表中又可以存在多个“链”,系统按照预订的规则将数据包通过某个内建链,例如将从本机发出的数据通过OUTPUT链。在“链”中可以存在若干“规则”,这些规则会被逐一进行匹配,如果匹配,可以执行相应的动作,如修改数据包,或者跳转。跳转可以直接接受该数据包或拒绝该数据包,也可以跳转到其他链继续进行匹配,或者从当前链返回调用者链。当链中所有规则都执行完仍然没有跳转时,将根据该链的默认策略(“policy”)执行对应动作;如果也没有默认动作,则是返回调用者链。