码迷,mamicode.com
首页 > Web开发 > 详细

iptables和netfilter

时间:2019-03-04 14:27:14      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ima   报文   条件   got   默认   指定表   处理   源地址   添加   

1.iptables和netfilter说明


  netfilter/iptables组成Linux平台下的包过滤防火墙,iptables是用户空间的管理工具,netfilter是内核空间的包处理框架。

2.数据包处理流程


 

  技术图片

  首先数据包进入PREROUTING链,之后根据路由决策进入INPUT(本机)还是FORWARD(转发),进入INPUT后会继续进入OUTPUT链,最后都走到POSTROUTING链。

  另外,如果加入各种规则之后,则数据包进入某个链之后,还要顺序执行链上的规则,如果匹配某个规则,则根据匹配的规则来处理数据包(例如ACCEPT、DROP或者REJECT),如果都不匹配则使用默认的策略处理数据包。

3.表、链、规则


  理论上,只要在链上添加规则就可以了,这样每个链上就有一个规则链表,只要数据包到链上之后,顺序检查这些规则就可以了。实现中又根据规则的功能的不同,又分为了四张表,即raw、mangle、nat、filter(优先级raw > mangle > nat > filter)。最终,数据包依次进入链中进行处理,然后根据每个链上的表的优先级,依次执行每个链上的表(里面的规则)。关于表链的关系,其实这个很简单,实际使用时以表作为入口,就是根据规则的功能添加规则到特定的表中,然后再把这个规则放到链上,另外就是一个表上的规则只存在固定的几个链上,例如raw表的规则只能在PREROUTING和OUTPUT链。

  filter表   :负责包过滤功能

  nat表  :负责地址转换

  mangle表:修改数据包的TOS、TTL,和为数据包设置标记,用来实现Qos调整以及策略路由功能

  raw表  :主要用来关闭连接跟踪,即配置参数时使用-j NOTRACK

       技术图片

4.iptables工具用法


 

-t table          指定表名,默认为"filter"表

-A chain          向链上追加规则
-D chain          从链上删除规则
-L [chain]        列出链上的规则,这个打印的是规则列表,即把规则参数放到一个表格中
-S [chain]        打印链上的规则,这个打印的是规则的命令行参数,例如-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT 
-F [chain]        清除链上的规则
-P chain target   设置指定链的策略,也就是默认策略

-v                verbose mode,用作输出命令,表示详细输出
-p proto          规则指定的协议,proto可以为tcp、udp、icmp、all。
-s address[/mask] 源地址[掩码]。
-d address[/mask] 目的地址[掩码]。 
-i input name     匹配报文入接口
-o output name  
-j target         规则匹配后跳转到的目标,也就是动作,因为在内核函数中,匹配某个条件后,使用goto的方式跳转到下一个流程,所以是jump target。
                  target可以为ACCEPT、DROP、REJECT、SNAT、DNAT、REDIRECT、NOTRACK、LOG
      
扩展匹配项:
--src-range from[-to]   匹配源IP的范围
--dst-range from[-to]   匹配目的IP的范围
--mark value[/mask]     匹配标记,而不是打标记,和匹配IP地址一样有掩码。   


这些只是常用的选项,基本每条规则都要用到,主要的目的是实际用。

  例子:

    [1]iptables -P INPUT DROP              //设置链的策略

    [2]iptables -A INPUT -i eth0 -s 10.0.1.1 -j DROP     //阻止某个IP地址

    [3]iptables -t mangle -A PREROUTING !-d 10.0.1.1 -p tcp -j TPROXY --on-port 10000 --on-ip 0.0.0.0 --tproxy-mark 0x1/0x1  //对非目的地址10.0.1.1,并且标记匹配0x1/0x1的报文,透明代理到0.0.0.0:10000地址

iptables和netfilter

标签:ima   报文   条件   got   默认   指定表   处理   源地址   添加   

原文地址:https://www.cnblogs.com/iamwho/p/10470354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!