|
Netfilter架构
iptables命令是netfilter的用户层配置工具,所以要用好iptables命令,首先要熟悉其实现原理。
IPv4协议栈为了实现对netfilter架构的支持,在IP packet在
IPv4协议栈上的游历路线之中,仔细选择了五个参考点‘241。在这五个参考点上,各引入了一行对NF—HOOK()宏函数的~个相应的调用。这五个参考点被分别命名为PREROUTING,LOCALIN,FORWARD,LOCALOUT和POSTROUTING。Linux内置的防火墙模块都是以这五个点(以下称为钩子点或HOOK点)作为调用的入口。
如下图所示,描述了ip 封包的处理流程,我们在应用层通过iptables命令实现在这5个钩子点创建不同的规则,从而实现所需功能。
Iptables命令:
-t:用来指定规则表,目前netfilter内建3个规则表:filter、nat、mangle。
其中
filter表:主要用来建立对数据包进行过滤的规则,该表是默认规则表,当不指定表的类
型时即为filter表,该表包括3个chain,分别是INPUT、OUTPUT、FORWARD
Nat表:该表主要用来进行一对一、一对多、多对多的地址转换功能,该表包括
PREROUTING、POSTROUTING两个chain
Mangle表:此规则表拥有PREROUTING、FORWARD和POSTROUTING三个规则链。除了
进行网址转换工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在mangle规则表中,使用率不高
-A:新增加一个规则到一个指定的规则chain中(存放在规则chain的表尾)
Iptables –t filter –A INPUT --dport 80 –j DROP
-D:删除一个规则chain中的一条指定规则
Iptables –t filter –D INPUT index
-R:替换一个规则chain中的一条指定规则
Iptables –t filter –R INPUT 1 –dport 80 –j ACCEPT
-I:向一个指定的规则chain中插入一个新的规则(存放在规则chain的表头)
Iptables -t filter -I INPUT --dport 80 -j DROP
-L:(--list)列出一条规则chain中的所有规则
Iptables -L -t filter INPUT
-F:(--flush)删除一条规则chain中的所有规则
Iptables -t filter -F INPUT
Iptables -F -t filter
-Z:(--zero)将一个chain或所有chain的数据包计数清零
Iptables -Z -t filter
-N:(--new)新建一个chain
-X:( --delete-chain)删除一个用户链
-P:( --policy)设置一条链的默认规则
Iptables -t filter -P INPUT DROP
-E:( --rename-chain) 修改一个链的名称
Iptables –E INPUT NEW_INPUT
OPTIONS:
--proto -p:协议类型
--source -s:源地址/掩码
--destination -d:目的地址/掩码
--in-interface –i:入口接口名称
--out-interface –o:出口接口名称
--sport,--source-port:源端口
--dport,--destination-port:目的端口
--tcp-flags:设置TCP包的状态标志,包括SYN
(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(强迫推送)等
均可使用于参数中,除此之外还可以使用关键词ALL和NONE进行匹配。匹配标志时,可
以使用! 运算符行反向匹配。
--icmp-type:ICMP包的类型标志
-m mac ,--mac-source:源mac地址
-j:(--jump)跳转动作,有ACCEPT、DROP、REJECT、REDIRECT、MASQUERADE、LOG、DNAT、
SNAT、MIRROR、QUEUE、RETURN、MARK.
其中
REDIRECT:封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续匹配
其它规则。这个功能可以用来实现透明代理或用来保护web服务器
MASQUERADE:改写封包来源IP 为防火墙NICIP,可以指定port对应的范围,进行完此
处理动作后,直接跳往下一个规则链(manglepostrouting)。这个功能与SNAT略有不同,
当进行IP 伪装时,不需指定要伪装成哪个IP,IP会从网卡直接读取,当使用拨号接连
时,IP通常是由ISP公司的DHCP服务器指派的,这个时候MASQUERADE特别有用。
SNAT:改写封包来源IP 为某特定IP 或IP 范围,可以指定port对应的范围,进行完此
处理动作后,将直接跳往下一个规则。
DNAT:改写封包目的地IP 为某特定IP 或IP 范围,可以指定port对应的范围,进行完
此处理动作后,将会直接跳往下一个规则链(filter:input 或filter:forward)
版权声明:本文为博主原创文章,未经博主允许不得转载。 |
|
|
|
|
|
|