iptables/ip6tables 手册【转】

(转自:https://blog.csdn.net/lockey23/article/details/77414093

名称

iptables/ip6tables — 实现IPv4/IPv6包过滤以及网络地址转换(NAT)的管理员工具

摘要

iptables [-t table] {-A|-C|-D} chain rule-specificationip6tables [-t table] {-A|-C|-D} chain rule-specificationiptables [-t table] -I chain [rulenum] rule-specificationiptables [-t table] -R chain rulenum rule-specificationiptables [-t table] -D chain rulenumiptables [-t table] -S [chain [rulenum]]iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]iptables [-t table] -N chainiptables [-t table] -X [chain]iptables [-t table] -P chain targetiptables [-t table] -E old-chain-name new-chain-namerule-specification = [matches...] [target]match = -m matchname [per-match-options]target = -j targetname [per-target-options]

描述

Iptables和ip6tables是用来通过Linux kernel设置、维护、以及检测IPv4和IPv6数据包过滤规则表的工具。有多种规则表可以被定义,每一张表都包含了一系列内建的链或者用户自定义的链,每一个链都是由一列规则组成,并且匹配一组数据包,每一个规则明确指出了对应匹配的包进行什么操作,这种方式叫做目标选择,是同一张表中用户自定义链上的跳跃转移

目标

一条防火墙规则指明了对于一个数据包或者目标所应用的规则,如果数据包不匹配,下一条规则将会继续进行匹配,如果数据包匹配了,那么下一条规则将会被选中目标的值所指明,这可能是一个用户自定义的链名称,一个在iptables-extensions(8)中被描述过的目标,或者是特定值ACCEPT、DROP、RETURN中的一个。ACCPET意味着允许数据包通过,DROP意味着将数据包丢弃,RETURN意味着停止这条链的贯穿,然后在当前链的下一条链中重新开始。如果内建链结束了或者说内建链内的一条带有目标RETURN的规则匹配了,这条链所指明的目标的策略决定了这个包的命运。


目前有五个各不相关的表(当前或者任意时间使用的表是由内核配置选项和当前运行模块决定的).

-t, --table table此选项指出了匹配某个表的数据包将被执行什么样的操作,如果内核被配置为自动模块加载且不存在已加载模块,那么内核将会尝试为这张表加载适当的模块各表如下:filter:默认的表(如果没有指明-t选项),此表包含了内建的链INPUT (对于到达本地套阶层的数据包), FORWARD (对于经过此路由的包), 和OUTPUT  (本地产生的数据包)nat:当一个创建了新的连接的包被遇到的时候,nat表将会被查找。nat表里包含三个内建链PREROUTING (只要包到达就对其进行改变), OUTPUT (在路由之前改变本地数据包), 和POSTROUTING (改变将要发出去的数据包).在kernel 3.7. IPv6 NAT已经被支持了。mangle:这张表是专门进行数据包更改的.直到kernel 2.4.17 mangle表包含两条内建链PREROUTING(在路由之前改变进来的数据包)和OUTPUT (在路由之前改变本地产生的数据包).自kernel 2.4.18起mangle也开始支持了其他的三张表INPUT (对于自己进到盒子里的数据包),  FORWARD (改变将要经过box进行路由的数据包), and POSTROUTING (改变将要出去的数据包).raw:这张表主要是为了配置免连接的追踪很无踪迹目标的结合。他用高优先级来注册网络筛选系统钩子,北称作before ip_conntrack或者其他ip表.raw表提供以下内建链PREROUTING (对于通过任何其他网络接口到达的数据包) OUTPUT (对于本地进程产生的数据包)security:这张表是用来进行强制访问控制(Mandatory Access Control (MAC))的网络规则, 比如被SECMARK禁用和CONNSECMARK的目标.强制访问控制被linux的安全模块继承了,例如SELinux.安全表被称作后过滤表,它允许过滤表中任何自由访问控制规则(Discretionary Access Control )DAC在MAC规则之前生效. security表提供了以下的内建链INPUT  (对于自动进入盒子的数据包), OUTPUT (在路由之前改变本地生成的数据包),和FORWARD(改变通过盒子进行路由的数据包).

选项参数

由iptables和ip6tables表明的选项可以被分成几组。

命令
以下选项指明了将要被执行的操作. 以下选项只能单独在命令行中被指明使用,除非其他被指出的情况。

-A, --append chain rule-specification在选定的链后添加一个或者多个规则-C, --check chain rule-specification检测一条规则是否匹配此链中指定的规则,或者说检测匹配规则是否存在C-D, --delete chain rule-specification-D, --delete chain rulenum删除一个或者多个从链中指定的规则,可以使用规则号码或者匹配的规则信息-I, --insert chain [rulenum] rule-specification向选定的链中以给定序号向对应位置插入一条或者多条规则。-R, --replace chain rulenum rule-specification替换选定链中的一条规则-L, --list [chain]列出链中的所有规则,如果没有指定链,则所有的链中的规则都将被显示用法:iptables -t nat -n -L用法:iptables -L -v-S, --list-rules [chain]显示所与选中链中的规则,如果未选中具体的链,则所有链的规则将以iptables-save形式打印出来-F, --flush [chain]刷新选中的链或者所有的链(如果未指定具体的链)。此操作等于删除了所有的规则-Z, --zero [chain [rulenum]]将所有链中的数据包归零,或者清零给定的链,或者指定链中的具体规则-N, --new-chain chain用给定的名称创建一条用户自定的链-X, --delete-chain [chain]删除用户自定的链. 要删除的链必须不存在其他参考.-P, --policy chain target对于给定的目标设置链的策略-E, --rename-chain old-chain new-chain用给定的链名称重命名一条旧的链-h     帮助.  给出(当前最简)语法描述.

参数陈列
以下参数明组成了一条规则的设置(例如添加、删除、插入、替换、附加等命令).

-4, --ipv4此选项对iptables和iptables-restore无效.-6, --ipv6如果一条规则使用了-6参数插入iptables-restore此操作将会被默默忽略,其他的用法会报错[!] -p, --protocol protocol检测规则或者数据包的传输协议.[!] -s, --source address[/mask][,...]指明源,地址可以是网路名称,主机名,网络地址 (with /mask), 或者普通ip[!] -d, --destination address[/mask][,...]指明目的-m, --match match指明一条匹配的规则进行使用-j, --jump target指明规则的目标(下一跳)-g, --goto chain指明进程应该在用户指定的链中继续执行[!] -i, --in-interface name数据包要通过或者接收的接口名称(只有进入INPUT, FORWARD and PREROUTING链的数据包需要指明)[!] -o, --out-interface name指明数据包将要被送往的接口名称-c, --set-counters packets bytes此参数可以使管理员初始化数据包和字节计数(在 INSERT,  APPEND,  REPLACE操作中).

更多选项参数
以下为附加的参数选项以及用法讲解

-v, --verbose显示操作的详细输出信息-w, --wait [秒]等待xtables锁,阻止一个程序的多实例同时运行,并且一段时间试图去获得执行锁。默认的,如果不能获取执行锁,程序将会退出。此参数将会使进程等待,一直到获得执行锁-n, --numeric数字化输出,ip地址和端口号将会以数字格式显示出来。默认的,此程序会尝试列出主机名称或者网络名称或者服务名称-x, --exact数字详述.显示具体的数据包值以及字节数,而不是大约的K's(multiples of 1000) M's (multiples of 1000K)G's (multiples of 1000M),此参数只与-L参数相关--line-numbers在列出规则时为每一行的开头天加一个行号,并且对应着规则在链中的位置--modprobe=command当向一个链中添加或者插入规则时,使用此命令去加载任意所需模块(目标,匹配扩展等).

匹配与目标拓展

iptables可以使用扩展的数据包匹配和目标模块,可用列表可以查看iptables-extensions(8)

问题诊断

各种错误将会显示到标准输出.退出码为0表示正确的执行.一般的错误原因是因为无效的或者命令参数的滥用,这些错误将会产生一个错误码2,其他的错误将会产生退出码1

ip链的兼容

此iptable与Rusty Russell的ipchains非常相似.主要的区别在于链INPUT和OUTPUT是分别由本地生成的数据包和外部进入的数据包的贯穿。所以每一个数据包只通过以下三个链(除了回环阻塞,因为其既包含INPUT也包含OUTPUT链; 在此之前一个向前的数据包将通过所有三个链另一个差别在于 -i代表着输入接口; -o代表着输出接口, 两个参数都可以使数据包进入FORWARD链.不同形式的NAT已经被剔出;当使用默认的`filter'表时, iptables是一个带有扩展选项的完全的包过滤模块.这将明了先前的许多关于ip伪装和包过滤的疑虑,所以下列选项的处理完全不同-j MASQ-M -S-M -L对于iptables还有其他一些不同点,可自寻.

拓展阅读

iptables-apply(8), iptables-save(8), iptables-restore(8), iptables-extensions(8),如何过滤数据包详细讲述了iptables对于数据包过滤的用法,如何进行NAT详述了NAT,如何进行网络过滤详述了没有在标准中指出的关于此部分内容的扩展网络过滤奇技详述了网络过滤的内部实现,详细文档请浏览http://www.netfilter.org/.
(0)

相关推荐