首页 > Web开发 > 详细

IPTables 和 Netfilter 框架

时间:2018-11-22 23:26:35      阅读:223      评论:0      收藏:0      [点我收藏+]

前言

防火墙是保护服务器的重要工具。 Linux中最常用的基本防火墙软件是iptables。iptables通过与Linux内核网络堆栈(networking stack)中的包过滤钩子(packet filtering hooks)进行交互来工作。 出入网络系统的数据包将在通过网络堆栈时会触发这些钩子。这些内核钩子称为netfilter框架。

Netfilter 钩子

一个程序可以注册5个netfilter钩子。 当数据包通过网络堆栈时,将触发与被注册钩子相关的内核模块。下面介绍钩子

  • NF_IP_PRE_ROUTING:刚刚进入网络层的数据包通过此点
  • NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此点,INPUT包过滤在此点进行
  • NF_IP_FORWARD:要转发的包通过此点,FORWARD包过滤在此点进行
  • NF_IP_POST_ROUTING:所有马上便要通过网络设备出去的包通过此检测点,内置的源地址转换功能(包括地址伪装)在此点进行
  • NF_IP_LOCAL_OUT:本机进程发出的包通过此检测点,OUTPUT包过滤在此点进行。

技术分享图片

IPTables和链

iptables防火墙使用表来组织规则。 例如,如果规则处理网络地址转换,它将被放入nat表中。 如果规则决定数据包是否继续发往目的地,它将被放入filter表中。

Filter表

Filter表是iptables中使用最广泛的表之一。 Filter表用于决定是否让数据包继续发完目的地,还是拒绝其请求。 Filter表提供了人们在讨论防火墙时所考虑的大量功能。

NAT表

NAT表用于实现网络地址转换。 当数据包进入网络堆栈时,此表中的规则将确定是否以及如何修改数据包的源地址或目标地址,以便影响数据包和任何响应流量的路由方式。 这通常用于在无法直接访问时将数据包路由到网络。

Mangle表

mangle表用于以各种方式更改数据包的IP头。 例如,您可以调整数据包的TTL(生存时间)值,或者延长或缩短数据包可以承受的有效网络跳数。 其他IP头可以以类似的方式更改。

该表还可以在数据包上放置内部内核“标记”,以便在其他表和其他网络工具中进一步处理。 此标记不会触及实际数据包,但会将标记添加到内核的数据包表示中。

在每个iptables表中,规则在单独的“链”中进一步组织。 虽然表是根据规则一般作用定义的,但内置链表示触发iptables表的netfilter钩子。 链决定何时执行规则。内置链的名称反映了与它们关联的netfilter钩子的名称:

  • PREROUTING:由NF_IP_PRE_ROUTING钩子触发。对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
  • INPUT:由NF_IP_LOCAL_IN钩子触发。进来的数据包应用此规则链中的策略
  • FORWARD:由NF_IP_FORWARD钩子触发。转发数据包时应用此规则链中的策略
  • OUTPUT:由NF_IP_LOCAL_OUT钩子触发。外出的数据包应用此规则链中的策略
  • POSTROUTING:由NF_IP_POST_ROUTING钩子触发。对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

 

 

 

IPTables 和 Netfilter 框架

原文:https://www.cnblogs.com/kelamoyujuzhen/p/10004569.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!