linux平台下防火墙iptables原理

article/2025/8/15 22:08:36
转载自:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html
linux平台下防火墙iptables原理(转)

iptables简介

    netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

iptables基础


    规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

iptables和netfilter的关系:

    这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。

iptables传输数据包的过程

① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。 
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。 
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。




iptables的规则表和链:

    表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。

   链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。

    Iptables采用“表”和“链”的分层结构。在REHL4中是三张表五个链。现在REHL5成了四张表五个链了,不过多出来的那个表用的也不太多,所以基本还是和以前一样。下面罗列一下这四张表和五个链。注意一定要明白这些表和链的关系及作用。



规则表:

1.filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包  内核模块:iptables_filter.
2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
4.Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理  内核模块:iptable_raw
(这个是REHL4没有的,不过不用怕,用的不多)

规则链:


1.INPUT——进来的数据包应用此规则链中的策略
2.OUTPUT——外出的数据包应用此规则链中的策略
3.FORWARD——转发数据包时应用此规则链中的策略
4.PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5.POSTROUTING——对数据包作路由选择后应用此链中的规则
(所有的数据包出来的时侯都先由这个链处理)


规则表之间的优先顺序:

Raw——mangle——nat——filter
规则链之间的优先顺序(分三种情况):

第一种情况:入站数据流向

    从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。

第二冲情况:转发数据流向

    来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

第三种情况:出站数据流向
     防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

管理和设置iptables规则



文章参考

  http://netfilter.org/ iptables官方网站
  http://www.linux.gov.cn/netweb/iptables.htm iptables配置手册
  http://man.chinaunix.net/
  http://man.chinaunix.net/network/iptables-tutorial-cn-1.1.19.html iptables配置手册
  http://blog.csdn.net/thmono/archive/2010/04/08/5462043.aspx
  http://netsecurity.51cto.com/art/200512/14457.htm
  http://blog.sina.com.cn/s/blog_40ba724c0100jz12.html
  http://qiliuping.blog.163.com/blog/static/1023829320105245337799/

分类: Linux/Unix
好文要顶 关注我 收藏该文
ggjucheng
关注 - 6
粉丝 - 1219
+加关注
3
0

« 上一篇: vim 代码提示功能,让vim可以媲美IDE(转)
» 下一篇: iptables用法简介
</div><div class="postfoot">posted on <span id="post-date">2012-08-19 15:47</span> <a href="http://www.cnblogs.com/ggjucheng/">ggjucheng</a> 阅读(<span id="post_view_count">17890</span>) 评论(<span id="post_comment_count">0</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=2646466" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(2646466);return false;">收藏</a>
</div>

刷新评论 刷新页面 返回顶部
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】Google机器学习认证项目首推价末班车
huozige
最新IT新闻:
· 周鸿祎:商业模式不是想出来的,想不清就不要想了
· 谷歌Doodle庆祝“全球首个黑人超级女明星”约瑟芬·贝克
· WWDC 2017最年长参与者今年82岁
· Github用户总结各大网站服务愚蠢密码规则
· Pokémon Go用户减少九成 但还是很赚钱
» 更多新闻…
美团云
最新知识库文章:
· 程序员的工作、学习与绩效
· 软件开发为什么很难
· 唱吧DevOps的落地,微服务CI/CD的范本技术解读
· 程序员,如何从平庸走向理想?
· 我为什么鼓励工程师写blog
» 更多知识库文章…
fixPostBody(); setTimeout(function () { incrementViewCount(cb_entryId); }, 50); deliverAdT2(); deliverAdC1(); deliverAdC2(); loadNewsAndKb(); loadBlogSignature(); LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid); GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate); loadOptUnderPost(); GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);


http://chatgpt.dhexx.cn/article/MTabRqFc.shtml

相关文章

简述防火墙

什么是防火墙&#xff1f; 在遭受入侵时&#xff0c;做内外网隔离的策略叫做防火墙。 防火墙分类 按物理特性划分&#xff1a;软件防火墙、硬件防火墙&#xff1b;按性能划分&#xff1a;百兆级防火墙、千兆级防火墙……按防火墙结构划分&#xff1a;单一主机防火墙、路由集…

【计算机基础】防火墙

工程师CCNAHCIA 资深工程师CCNPHCIP 技术专家CCIEHCIE IPS&#xff1a;入侵防御系统&#xff0c;发现攻击和入侵进行阻断IDS&#xff1a;入侵检测系统&#xff0c;检测有无攻击漏洞扫描&#xff1a;发现本地服务器/PC&#xff0c;存在哪些中高低危的风险&#xff0c;解决漏洞…

下一代防火墙概述

目录 1.防火墙概述 1.1定义 1.2防火墙分类 1.3防火墙功能 1.4防火墙的策略 2.防火墙发展史 2.1 包过滤防火墙&#xff1a;一个严格的规则表 2.2 应用代理防火墙&#xff1a;为每个应用添加代理 2.3 状态检测防火墙&#xff1a;建立会话表 2.4 入侵检测系统&#xff0…

上海交通大学考研复试模块小结——防火墙技术

既然上次开了这个系列&#xff0c;索性就把这个信息安全这一块的主流技术都介绍一遍好了。上篇博客讲了密码学&#xff0c;今天就来说说防火墙技术。 防火墙技术 防火墙技术是位于两个新人程度不同的网络之间的软件或者硬件设备的组合&#xff0c;实质上是一种控制隔离技术。…

防火墙入门实验

第一章 iptable的使用 一、实验原理 1.1 Iptables Iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表&#xff0c;每个表都包含几个内部的链&#xff0c;也能包含用户定义的链。每个链都是一个规则列表&#xff0c;对对应的包进行匹配&#xf…

NAT和防火墙

网络地址翻译没文化的酒鬼 防火墙和NAT NAT路由器是安装了NAT软件的路由器&#xff0c;拥有至少一个全球通用的外部IP。 在计算机网络中&#xff0c;NAT最直接的作用是IP映射&#xff1a;将内网终端A的IP和端口号经过NAT映射后&#xff0c;转成公网服务器B的IP和新端口号&am…

快速了解防火墙

快速了解防火墙 防火墙是一种由计算机硬件和软件组成的系统&#xff0c;部署于网络边界&#xff0c;是连接内部网络和外部网络(或内部网络不同安全级别的部门)之间的桥梁&#xff0c;同时对进出网络边界的数据进行保护&#xff0c;防止恶意入侵、恶意代码的传播等&#xff0c;…

防火墙概述

AC是为了防御从内网到外网的攻击防火墙是为了防御从外网到内网的攻击 防火墙的定义 防火墙通常用于两个网络之间的隔离 主要用于保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为路由器与交换机的本质是转发&#xff0c;防火墙的本质是控制和防护 防火墙的工…

防火墙(firewall)

前言 计算机的安全性历来就是人们热衷的话题之一。而随着Internet的广泛应用&#xff0c;人们在扩展了获取和发布能力的同时也带来信息被污染和破坏的危险。这些安全问题主要是由网络的开放性、无边界性、自由性造成的&#xff0c;还包括以下一些因素。 1. 计算机操作系统本身…

华为防火墙的学习

防火墙 - 含义和定义 什么是防火墙&#xff1f; 防火墙的工作原理 防火墙的区域&#xff1a; 包过滤防火墙----访问控制列表技术---三层技术 代理防火墙----中间人技术---应用层 状态防火墙---会话追踪技术---三层、四层 UTM---深度包检查技术----应用层 下一代防火墙 防火墙的…

潘多拉 STM32L475 VE——开发板学习 (持续更新)

首先就是开发板的各个硬件的介绍&#xff1a; ◆ MCU &#xff1a; STM32L475VET6 &#xff0c; LQFP100 &#xff0c; SRAM &#xff1a; 128K &#xff0c; FLASH &#xff1a; 512K ◆ 外扩 SPI FLASH &#xff1a; W25Q128 &#xff0c; 16M 字节 ◆ 1 个电源指示灯…

WiFi 移植记录及心得 一

平台环境:IMX6-sabresd_6dq Android4.4.2 Linux3.0.35 WiFi模块:AP6181 (BCM43362) Linux3.0.35已经是支持博通的芯片,可以看到 kernel_imx/drivers/net/wireless 下面有几款博通芯片(bcm4329/bcm4330/bcmdhd)的驱动源码,AP6181WiFi模块用的bcm43362这款,所以这里选…

imx6ull linux下wifi驱动移植

linux下wifi移植&#xff0c;首先要保证硬件gpio相关配置正确&#xff0c;第二步是才是软件相关的配置 一、硬件篇 硬件模块选的是正基ap6745的三合一模块&#xff08;wifi、bt、fm&#xff09;&#xff0c;wifi通讯用sdio模式传输数据&#xff0c;sdio_vsl决定sdio工作电压是…

物联网中你需要了解的ESP8266最基本的知识!

若要涉及到物联网&#xff0c;必然绕不开ESP8266。由于其低廉的价格、超高的性能和便利的开发环境&#xff0c;其毫无疑问成为了业界里程碑一样的存在。 在本文中&#xff0c;我们采购的是正点原子的ESP8266模块&#xff0c;连接的单片机为正点原子的STM32 MINI开发板。 本文…

WiFi蓝牙FM三合一模块AP6356S

AMPAK正基AP6356S&#xff0c;这是一款可同时双频工作的双通道SDIO接口WiFi支持11ac级双频、蓝牙支持BT4.1标准的WiFi 蓝牙 FM三合一模块;其中蓝牙和WiFi共用天线(也就是双天线),还有一款硬件尺寸完全一样的&#xff0c;蓝牙WiFi天线分开的AP6398S3R(也就是三天线) 技术问题 模…

正基WiFi模块STA模式基本操作示例(2)

接上一篇文章&#xff01; 4. STA 模式基本操作示例 4-1 加载驱动 步骤 1. 加载驱动。 ap6181/ap6212/ap6212a/ap6214a/ap6255 himm 0x100d0004 0x1 himm 0x12098034 0x10101070 insmod cfg80211.ko insmod bcmdhd.ko firmware_path/etc/firmware/fw_bcm40181a2.bin nvram_path…

android+wifi驱动移植,全志R16 android4平台移植wifi资料下载

2. 模块概述 目前R16 android4.4 平台上已支持wifi 模组有5款&#xff0c;本文档将以R16 y3方案为例 说明如何配置每款wifi 模组。Rtl8723au暂不支持 wifi 模组可分USB 接口和SDIO 接口两种类型&#xff0c;部分模组带蓝牙和FM 功能(FM 功能尚未支持)&#xff0c;wifi 的全功能…

ap8161驱动移植

平台&#xff1a;imx287 linux内核&#xff1a;2.6.35 开机设置&#xff1a;正常开机&#xff0c;跳线帽在jp4, SD烧写JP3 JP4 正常启动后&#xff0c;sd卡的内容读取&#xff0c;拔掉jp4跳线帽&#xff0c;在串口控制台输入&#xff1a;df -m 找到盘号。然后在板子的/media…

[RK3288 Android7.1.2 ]新增wifi模块ap6256

Platform: ROCKCHIP Chip: RK3288 OS: Android7.1.2 Kernel: 4.4.143 背景 旧板wifi模块ap6235&#xff0c;硬件将wifi模块替换成ap6256,未改代码情况下&#xff0c;wifi不能用&#xff0c; 设备打印如下 代码修改 1.新增固件&#xff1a;wifi在externa\wlan_loader\firmw…