linux iptables 详解

语法如下:
iptables [-t table] command [match] [TARGETS]

[-t table]

有三个可用的表选项:filter、nat、raw和mangle,默认是filter。如果你不想用标准的表,就要在[table]处指定表名。
filter:包过滤。包括INPUT、FORWARD、OUTPUT链。
nat:转换包的源或目标地址。包括PREROUTING、POSTROUTING、OUTPUT链。
mangle、raw:基本不会用到。

command:

告诉 程序该做什么,比如:插入一个规则,还是在链的末尾增加一个规则,还是删除一个规则。


-A, --append chain rule-specification
在所选择的链末添加规则

-D, --delete chain rule-specification
-D, --delete chain rulenum
从所选链中删除规则。有两种方法指定要删除的规则:一是 把规则完完整整地写出来,再就是指定规则在所选链中的序号(每条链的规则都各自从1被编号)。


-I, --insert chain [rulenum] rule-specification
根据给出的规则序号向所选链中插入规则。如果序号为1, 规则会被插入链的头部,其实默认序号就是1。

-R, --replace chain rulenum rule-specification
在所选中的链里指定的行上(每条链的规则都各自从1被编 号)替换规则。
            
-L, --list [chain]
显示所选链的所有规则。
           
-F, --flush [chain]
清空所选的链。
             
-Z, --zero [chain]
把指定链的所有计数器归 零。
            
-N, --new-chain chain
根据用户指定的名字建立新的链。
            
-X, --delete-chain [chain]
删除指定的用户自定义链。这个链必须没有被引用,如果被 引用,在删除之前你必须删除或者替换与之有关的规则。
             
-P, --policy chain target
为链设置默认的target(可用的是DROP 和ACCEPT,如果还有其它的可用,请告诉我),这个target称作策略。所有不 符合规则的包都被强制使用这个策略。
             
-E, --rename-chain old-chain new-chain
对自定义的链进行重命名,原来的名字在前,新名字在后。


[match]:

细致地描述了包的某个特点,以使这个包区别于其它所有的包。在这里,我们可以指定包的来源IP 地址,网络接口,端口,协议类型,或者其他什么。

[TARGETS]:

若数据包符合所有的match,内核就用target来处理它,或者说把包发往 target,常用target如下:
ACCEPT target
指定-j ACCEPT,一旦包满足了指定的匹配条件,就会被ACCEPT,并且不会再去匹配当前链中的其他规则或同一个表内的其他规则,但它还要通过其他表中的链,而且在那儿可能会被DROP。

DNAT target
这个target是用来做目的网络地址转换的,就是重写包的目的IP地址。如果一个包被匹配了,那么和它 属于同一个流的所有的包都会被自动转换,然后就可以被路由到正确的主机或网络。用-j DNAT --to-destination 指定。

DROP target

如果包符合条件,这个target就会把它丢掉。用-j DROP 指定。

REDIRECT target
在防火墙所在的机子内部转发包或流到另一个端口。用-j REDIRECT --to-ports 指定。

REJECT target
EJECT和DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息。用-j REJECT 指定。

 

你可能感兴趣的:(linux,职场,iptables,休闲)