一些 iptables 命令(包括在一个特定 chain 中添加、追加、删除、插入或替换规则)需要不同的参数来组成一条数据包过滤规则。
-c — 为特定的规则重设计数器。这个参数可以使用 PKTS 和 BYTES 选项来指定重设哪个计数器。
-d — 设定匹配这个规则的数据包的目的地主机名,IP 地址或网络。当匹配一个网络时,以下的 IP 地址/网络掩码格式被支持:
N.N.N.N/M.M.M.M — 这里,N.N.N.N 是 IP 地址范围,M.M.M.M 是子网掩码。
N.N.N.N/M — 这里,N.N.N.N 是 IP 地址,M 是位掩码。
-f — 只对分段的数据包应用这个规则。
您可用在这个参数后面使用 (!) 选项来指定只有未分段的数据包才匹配。
虽然分段的数据包是 IP 协议的一个标准部分,准确指出分段和未分段数据包是需要的。
它最初是被设计来允许 IP 数据包使用不同大小的数据段来在网络中传输,而在当前,数据分段却被一些人利用来使用非法格式化的数据包进行 DoS 网络攻击。您还应该注意,IPv6 完全禁止使用数据分段。
-i — 设置入站的网络接口,如 eth0 或 ppp0。使用 iptables 时,如果是 filter 规则表,这个选项参数只用于 INPUT 和 FORWARD chain;如果是 nat 和 mangle 规则表,它只用于 PREROUTING chain。
这个参数也支持以下特殊的选项:
! — 表示不包括在这个规则中的接口。
+ — 用来代表匹配特定字符串的所有接口的通配符。例如, -i eth+ 表示所有 Ethernet 接口,但不包括其它接口(如ppp0)。
如果使用了 -i 参数而没有指定接口,则所有接口都受这条规则的影响。
-j — 当一个数据包匹配一条特定规则时,跳到指定的 target。
标准的 target 是 ACCEPT、DROP、QUEUE 和 RETURN。
红帽企业 Linux iptables RPM 软件包默认加载的模块也包括了扩展的选项。在这些模块中包括的有效 target 有 LOG、MARK、 REJECT 和其它 target。请参阅 iptables 说明书页来获得更多关于这些 target 的信息。
这个选项也可以用来把匹配特定规则的一个数据包导向到当前 chain 以外的一个用户定义的 chain 中,从而可以对这个数据包应用其它规则。
如果没有指定 target,这个数据包会通过这个规则而没有任何行动被执行。但是,这个规则的计数器会增加一个数值。
-o — 为一个规则设置出站网络接口。在 filter 规则表中,这个选项只对 OUTPUT 和 FORWARD chain 有效,而在 nat 和 mangle 规则表中,这个选项对 POSTROUTING chain 有效。这个参数接受和入站网络接口参数 (-i) 相同的选项。
-p <protocol> — 设置受这条规则影响的 IP 协议。这可能是 icmp、tcp、udp 或 all;或是代表这些或一个不同协议的数值。您也可以使用在 /etc/protocols 文件中列出的任何数值。
"all" 协议意味着这条规则适用于所有支持的协议。如果这条规则中没有指定协议,它的默认值则为 "all"。
-s — 为一个特定的数据包设定源地址。它使用和目的地址 (-d) 参数相同的语法。