IPTables 和 Netfilter 框架

前言

防火墙是保护服务器的重要工具。 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钩子触发。对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

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

时间: 2024-09-29 04:34:53

IPTables 和 Netfilter 框架的相关文章

iptables和netfilter

1.iptables和netfilter说明 netfilter/iptables组成Linux平台下的包过滤防火墙,iptables是用户空间的管理工具,netfilter是内核空间的包处理框架. 2.数据包处理流程 首先数据包进入PREROUTING链,之后根据路由决策进入INPUT(本机)还是FORWARD(转发),进入INPUT后会继续进入OUTPUT链,最后都走到POSTROUTING链. 另外,如果加入各种规则之后,则数据包进入某个链之后,还要顺序执行链上的规则,如果匹配某个规则,则

深入理解 iptables 和 netfilter 架构

Published at 2019-02-18 | Last Update 译者序 本文翻译自 2015 年的一篇英文博客 A Deep Dive into Iptables and Netfilter Architecture . 这篇对 iptables 和 netfilter 的设计和原理介绍比较全面,美中不足的是没有那张 内核协议栈各 hook 点位置和 iptables 规则优先级的经典配图,这里补充如下(来自 Wikipedia ): 另外,本文只讲理论,而下面这篇则侧重实战(基于

编译内核启用iptables及netfilter

在Network Packet Filtering Framework(Netfilter)一节中还有两个额外的配置节--Core Netfilter Configuration(核心Netfilter配置)和IP:Netfilter Configuration(IP:Netfilter配置). 1. 核心Netfilter配置 核心Netfilter配置节中包含的一些重要选项都应该被启用: l    Comment match support(comment匹配支持): l    FTP su

防火墙、Iptables、netfilter/iptables、NAT 概述

防火墙.Iptables.netfilter/iptables.NAT 概述 - 如果你真的想做一件事,你一定会找到方法: 如果你不想做一件事,你一定会找到借口. - ITeye技术网站 一.防火墙的简介 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性.它通过访问控制机制,确定哪些内部服务允许外部访问,以及 允许哪些外部请求可以访问内部服务.它可以根据网络传输的类型决定IP包是否可以传进或传出内部网 防火墙通过审查经过的每一个数据包,判断它是否有相匹配的

针对Red Hat Enterprise Linux 6.5 的防火墙详细讲解,iptables(netfilter)规则的

防火墙基础 Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或网络层防火墙).基于Linux内核编码实现,具有非常稳定的性能和高效率,因此获得广泛使用. 在Linux系统中,netfilter和iptables都用来指Linux防火墙. netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"(Kernel Space,又称为内核空间)的防火墙功能体系. iptables:指的是

iptables与netfilter基础与示例

该怎么描述防火墙的实现呢?既然说不明白那就不说了,自己领悟吧! 一.防火墙是什么? 通过一些规则在网络数据报文必经的几个钩子上做端口的限制,实现数据过滤的功能. 二.数据报文传输的路径是怎样的? 1. 客户端发出数据报文---->到达服务器的网络接口-----(判断目标是服务器自己)将报文送入内核处理---->将处理好的数据报文转发出去---->通过网络接口发还给客户端 2.客户端发出数据报文---->到达服务器的网络接口-----(判断目标不是服务器)将数据转发出去---->

iptables or netfilter

netfilter 内部有三个表:filter .nat .mangle 每个表又有不同的操作链: 1.在filter这个防火墙功能的表中有三个chain:INPUT.FORWARD.OUTPUT. 也就是对包的入.转发.出进行定义的三个过滤链 2.在nat(Network Address Translation,网络地址翻译 )表中,也有三个chain:PREROUTING POSTROUTING OUTPUT三个链 3.mangle是个自定义的表,里面包含上边的filter nat所有的ch

【Linux 驱动】Netfilter/iptables (八) Netfilter的NAT机制

NAT是Network Address Translation的缩写,意即"网络地址转换". 从本质上来说,是通过改动IP数据首部中的地址,以实现将一个地址转换成还有一个地址的技术. 当然在某种情况下.改动的不仅仅是IP首部的来源或目的地址.还包含其他要素. 随着接入Internet的计算机数量不断猛增.IP地址资源也就愈加显得捉襟见肘.这也是Ipv6出现的一大原因. 我们如今全部的IP地址是32位,意味着其代表的主机数量是有限的(2^32 ~= 42亿).实际是不够用的(计算机.路由

Linux中使用LVS实现负载均衡

什么是LVS     LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统. 同时LVS又被称为四层路由,工作于传输层上. LVS技术简介     LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转 移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的. 高可用的虚拟服务器.整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序. 为此,在设计时需