- iptables是Linux中内核防火墙,可以对出入计算机的流量进行控制。
- iptables -t --table [tablename]:系统中默认的表有五个:
- filter表:(如果没有提供-t选项,默认使用filter表)。filter表中有 INPUT,FORWARD,OUTPUT三条链,INPUT链对入站数据包进行检测,FORWARD链对路由数据包进行检 测,OUTPUT对本机产生的出站数据包进行检测。
- nat表:使用本机做NAT转换时使用这个表。nat表中有PREROUTING,OUTPUT,POSTROUTING三条链:当数据包到达本机时PREROUTING链就起作用,对数据包进行检 查;OUTPUT链对本机产生的即将被路由的数据包发挥作用;当数据将要离开时,POSTROUTING链发挥作用。
- mangle表:修改包中的参数。mangle表中有INPUT,OUTPUT,PREROUTING,POSTROUTING,FORWARD五条链:INPUT对入站数据包做更改,OUTPUT对本机产生的出 站数据包参数做出更改;PREROUTING对即将进行路由的数据包做更改;POSTOUTING对将要出站的数据包进行更改;FORWARD对经过本机路由的数据包进 行参数修改。
- raw表:修改数据链路层数据。有PREROUTING,OUTPUT两条链。PREROUTING对到达本机网络接口的数据发挥作用,OUTPUT对本机产生的数据发挥作用。
- security表:配置MAC(Mandatory Acess Control)规则,有INPUT,OUTPUT,FORWARD三条链;INPUT对入站数据设置规则,OUTPUT对出站数据配置规则, FORWARD对经过本站路由的数据设置规则。
OPTIONS
COMMANDS
-A --append chain rule-specification 向一条链中追加一条规则
-C --check chain rule-specification 检查某条链中是否包含匹配的规则,和-D有同样的作用,但是-C不更改已经存在的规则,仅返回代码表示成功或者失败。
-D --delete chain rule-specification
-D --delete chain rule-number 删除某一个或多个规则
-I --insert chain [rulenum] rule-specification 在某条链路规则前添加一条规则,默认规则是1
-R --replace chain rulenum rule-specification 替换选定链中的某条规则,如果源目标或者目的目标涉及多个名字,这条命令将会执行失败。
-L --list chain 列出所有的链,如果未指定表名,则默认为filter表。
-S --list-rules 列出所有的链,如果未指定表名,则默认为filter表。
-F --flush chain 删除选定链中的左右规则,如果未指定规则,将会删除所有链中的所有规则
-Z --zero [chain[rulenum]] 重置选定链指定规则中的计数器,如果未制定链和规则,将重置所有计数器
-P --policy chain target 只有内建的链可以使用策略(用户建立的链不可以使用策略),内建链和用户链都不可以成为策略目标
-E --rename-chain old-chain new-chain 重命名链名称(没有实质性作用)
-h help 提供语法描述
PARAMETERS
以下参数用在OPTION中(add,delete,insert,append,replace)组成规则
-4 --ipv4
-6 --ipv6
[!] -p --protocol protocol 协议名称,可以是tcp,udp,udplite,icmp,icmpv6,esp,ah,sctp,mh或者是all(表示全部协议)也可以是某一个数字,0代表全部协议。!表示对 规则取反
[!] -s --source(或者--src) address[/mask][,...] 指定源目标地址
[!] -d --destination(或者--dst) address[/mask][,...] 指定目标地址
-m --match match 指定一个匹配规则
-j --jump target 指定规则要跳转的目标,如果target为一个rule而没有提供-g选项,规则的计数器值会自动增加,但是将不会对数据包起作用
-g --goto chain 指定一个链将会对数据包继续起作用,而不像--jump那样返回而不再起作用
[!] -i --in-interface name 接收数据的端口名称,仅对INPUT,FORWARD,PREROUTING三条链起作用,如果interface name以+结束,那么任何以这个名字开始的端口都将 被匹配
[!] -o --out-interface name 发送数据端口名称,仅对OUTPUT,FORWARD,POSTOUTING三条链起作用,如果interface name以+结束,那么任何以这个名字开始的端 口都将被匹配
[!] -f --fragement 仅匹配IPV4第二个或者以后的数据片(fragement)
-c --set-counters packets bytes