红联Linux门户
Linux帮助

iptables-1.1.9指南(超经典) (5)

发布时间:2006-08-06 11:58:55来源:红联作者:bear10214
在使用iptables时,如果必须的参数没有输入就按了回车,那么它就会给出一些提示信息:告诉你需要哪些参数等等。iptables的选项-v用来显示iptables的版本,-h给出语法的简短说明。。下面将要介绍的就是部分选项,还有它们的作用。

Table 6-3. Options
Option(选项) -v, --verbose(详细的)
可用此选项的命令 --list, --append, --insert, --delete, --replace
Explanation(说明) 这个选项使输出详细化,常与--list 连用。与--list连用时,输出中包括网络接口的地址、规则的选项、TOS掩码、字节和包计数器,其中计数器是以K、M、G(这里用的是10的幂而不是 2的幂哦)为单位的。如果想知道到底有多少个包、多少字节,还要用到选项-x,下面会介绍。如果-v 和--append、--insert、--delete 或--replace连用,iptables会输出详细的信息告诉你规则是如何被解释的、是否正确地插入等等。
Option -x, --exact(精确的)
Commands used with --list
Explanation 使--list输出中的计数器显示准确的数值,而不用K、M、G等估值。注意此选项只能和--list连用。
Option -n, --numeric(数值)
Commands used with --list
Explanation 使输出中的IP地址和端口以数值的形式显示,而不是默认的名字,比如主机名、网络名、程序名等。注意此选项也只能和--list连用。
Option --line-numbers
Commands used with --list
Explanation 又是一个只能和--list连用的选项,作用是显示出每条规则在相应链中的序号。这样你可以知道序号了,这对插入新规则很有用哦。
Option -c, --set-counters
Commands used with --insert, --append, --replace
Explanation 在创建或更改规则时设置计数器,语法如下:--set-counters 20 4000,意思是让内核把包计数器设为20,把字节计数器设为4000。
Option --modprobe
Commands used with All
Explanation 此选项告诉iptables探测并装载要使用的模块。这是非常有用的一个选项,万一modprobe命令不在搜索路径中,就要用到了。有了这个选项,在装载模块时,即使有一个需要用到的模块没装载上,iptables也知道要去搜索。
6.4. Matches

这一节,我们会详细讨论一些matche,我把它们归为五类。第一类是generic matches(通用的匹配),适用于所有的规则;第二类是TCP matches,顾名思义,这只能用于TCP包;第三类是UDP matches,当然它只能用在UDP包上了;第四类是ICMP matches ,针对ICMP包的;第五类比较特殊,针对的是状态(state),所有者(owner)和访问的频率限制(limit)等,它们已经被分到更多的小类当中,尽管它们并不是完全不同的。我希望这是一种大家都容易理解的分类。
6.4.1. 通用匹配

无论我们使用的是何种协议,也不管我们又装入了匹配的何种扩展,通用匹配都使可用的。也就是说,它们可以直接使用,而不需要什么前提条件,在后面你会看到,有很多匹配操作是需要其他的匹配作为前提的。

Table 6-4. Generic matches
Match -p, --protocol
Example iptables -A INPUT -p tcp
Explanation 匹配指定的协议。指定协议的形式有以下几种:

1、名字,不分大小写,但必须是在/etc/protocols中定义的。

2、可以使用它们相应的整数值。例如,ICMP的值是1,TCP是6,UDP是17。

3、缺省设置,ALL,相应数值是0,但要注意这只代表匹配TCP、UDP、ICMP,而不是/etc/protocols中定义的所有协议。

4、可以是协议列表,以英文逗号为分隔符,如:udp,tcp

5、可以在协议前加英文的感叹号表示取反,注意有空格,如: --protocol ! tcp 表示非tcp协议,也就是UDP和ICMP。可以看出这个取反的范围只是TCP、UDP和ICMP。
Match -s, --src, --source
Example iptables -A INPUT -s 192.168.1.1
Explanation 以IP源地址匹配包。地址的形式如下:

1、单个地址,如192.168.1.1,也可写成 192.168.1.1/255.255.255.255或192.168.1.1/32

2、网络,如192.168.0.0/24,或 192.168.0.0/255.255.255.0

3、在地址前加英文感叹号表示取反,注意空格,如--source ! 192.168.0.0/24 表示除此地址外的所有地址

4、缺省是所有地址
Match -d, --dst, --destination
Example iptables -A INPUT -d 192.168.1.1
Explanation 以IP目的地址匹配包。地址的形式和 -- source完全一样。
Match -i, --in-interface
Example iptables -A INPUT -i eth0
Explanation 以包进入本地所使用的网络接口来匹配包。要注意这个匹配操作只能用于INPUT,FORWARD和 PREROUTING这三个链,用在其他任何地方都会提示错误信息。指定接口有一下方法:

1、指定接口名称,如:eth0、ppp0等

2、使用通配符,即英文加号,它代表字符数字串。若直接用一个加号,即iptables -A INPUT -i +表示匹配所有的包,而不考虑使用哪个接口。这也是不指定接口的默认行为。通配符还可以放在某一类接口的后面,如:eth+表示所有Ethernet接口,也就是说,匹配所有从Ethernet接口进入的包。

3、在接口前加英文感叹号表示取反,注意空格,如:-i ! eth0意思是匹配来自除eth0外的所有包。
Match -o, --out-interface
Example iptables -A FORWARD -o eth0
Explanation 以包离开本地所使用的网络接口来匹配包。使用的范围和指定接口的方法与--in-interface完全一样。
Match -f, --fragment
Example iptables -A INPUT -f
Explanation 用来匹配一个被分片的包的第二片或及以后的部分。因为它们不包含源或目的地址,或ICMP类型等信息,其他规则无法匹配到它,所以才有这个匹配操作。要注意碎片攻击哦。这个操作也可以加英文感叹号表示取反,但要注意位置,如:! -f 。取反时,表示只能匹配到没有分片的包或者是被分片的包的第一个碎片,其后的片都不行。现在内核有完善的碎片重组功能,可以防止碎片攻击,所以不必使用取反的功能来防止碎片通过。如果你使用连接跟踪,是不会看到任何碎片的,因为在它们到达任何链之前就被处理过了。
6.4.2. 隐含匹配

这种匹配操作是自动地或隐含地装载入内核的。例如我们使用--protocol tcp 时,不需再装入任何东西就可以匹配只有IP包才有的一些特点。现在有三种隐含的匹配针对三种不同的协议,即TCP matches,UDP matches和 ICMP matches。它们分别包括一套只适用于相应协议的判别标准。相对于隐含匹配的是显式匹配,它们必须使用-m或--match被明确地装载,而不能是自动地或隐含地,下一节会介绍到。
6.4.2.1. TCP matches

TCP matches只能匹配TCP包或流的细节,它们必须有--protocol tcp作为前提条件。

Table 6-5. TCP matches
Match --sport, --source-port
Example iptables -A INPUT -p tcp --sport 22
Explanation 基于TCP包的源端口来匹配包,端口的指定形式如下:

1、不指定此项,则暗示所有端口。

2、使用服务名或端口号,但名字必须是在/etc/services 中定义的,因为iptables从这个文件里查找相应的端口号。从这可以看出,使用端口号会使规则装入快一点儿,当然,可读性就差些了。但是如果你想写一个包含200条或更多规则的规则集,那你还是老老实实地用端口号吧,时间是主要因素(在一台稍微慢点儿地机子上,这最多会有10秒地不同,但要是1000 条、10000 条呢)。

3、可以使用连续的端口,如:--source-port 22:80这表示从22到80的所有端口,包括22和80。如果两个号的顺序反了也没关系,如:--source-port 80:22这和 --source-port 22:80的效果一样。

4、可以省略第一个号,默认第一个是0,如:--source-port :80表示从0到80的所有端口。

5、也可以省略第二个号,默认是65535,如:--source-port 22:表示从22到 65535的所有端口

6、在端口号前加英文感叹号表示取反,注意空格,如:--source-port ! 22表示除22号之外的所有端口;--source-port ! 22:80表示从22到80(包括22和80)之外的所有端口。

注意:这个匹配操作不能识别不连续的端口列表,如:--source-port ! 22, 36, 80 这样的操作是由后面将要介绍的多端口匹配扩展来完成的。
Match --dport, --destination-port
Example iptables -A I
文章评论

共有 0 条评论