首页 > 系统相关 >iptables 工作过程整理

iptables 工作过程整理

时间:2024-09-09 10:52:07浏览次数:12  
标签:iptables -- 数据包 policy anywhere 规则 整理 过程


1.概念和工作原理 

  iptables是Linux系统中用来配置防火墙的命令。iptables是工作在TCP/IP的二、三、四层,当主机收到一个数据包后,数据包先在内核空间处理,若发现目标地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目标不是自身,则会将包丢弃或进行转发。

1.1 四表:

  •  filter(用于过滤)
  • nat(用于 NAT)
  • mangle(用于修改分组数据)
  •  raw(用于原始数据包)

  最常用的是filter 和 nat。

                                

iptables 工作过程整理_内网

 

 

1.2 五链:

  • PREROUTING:用于路由判断前所执行的规则,比如,对接收到的数据包进行 DNAT。
  • POSTROUTING:用于路由判断后所执行的规则,比如,对发送或转发的数据包进行 SNAT 或 MASQUERADE。
  • OUTPUT: 类似于 PREROUTING,但只处理从本机发送出去的包。
  • INPUT: 类似于 POSTROUTING,但只处理从本机接收的包。
  • FORWARD

  流入本机:PREROUTING --> INPUT-->用户空间进程
  流出本机:用户空间进程 -->OUTPUT--> POSTROUTING
  转发:PREROUTING --> FORWARD --> POSTROUTING

  内网至外网用postrouting SNAT

  外网至内网用prerouting DNA

                                 

iptables 工作过程整理_内网_02

   下图中白色背景方框,则表示链(chain)

 

iptables 工作过程整理_用户空间_03

 

2.iptables命令

2.1 链管理:

  -N: new 自定义一条新的规则链

  -X: delete 删除自定义的空的规则链

  -P:policy 设置默认策略

          ACCEPT:接受

          DROP:丢弃

  -E:重命名自定义链

2.2 查看:

  -L: list

   -n:以数字格式显示地址和端口号

  -v:详细信息

2.3 规则管理:

  -A : append 追加

  -I:insert 插入

   -D:delete 删除

  -F:flush 清空指定规则链

  -R:replace 替换指定链上的规则编号

  -Z: zero :置零

3.iptables命令使用

  iptables -L 列出规则,默认为filter表的规则。

  iptables -t nat -L 列出nat表的规则。

[root@node100 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.17.0.0/16        anywhere

Chain DOCKER (2 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

  iptables中的第一个选项可以是-A, 表明向链(chain)中添加一条新的规则,也可以是-I,表明将新的规则插入到规则集的开头。接下来的参数指定了链。

  所谓链就是若干条规则的集合

   OUTPUT链它可以控制所有的出站流量(outgoing traffic)。

  INPUT链它能够控制所有的入站流量(incoming traffic)。

  •   -d指定了所要匹配的分组目的地址,
  •   -s指定了分组的源地址。
  •   -j指示iptables执行到特定的处理(action)

 



标签:iptables,--,数据包,policy,anywhere,规则,整理,过程
From: https://blog.51cto.com/u_15535797/11959428

相关文章

  • 深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
    深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析1.语音合成任务简介1.1.语音与文本对比语音来说,NLP技术在深度学习中更为普及。在介绍语音合成任务前,我们先来了解语音这一模态的特点,并将其与文本模态对比。文本模态语音模态表现方式......
  • FZU软件工程课程学习过程中的自我评估以及软件工程学习指南
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标初步了解博客园和github的使用,体会AIGC在辅助完成任务上的效率和便捷,理解程序与程序员在AI时代的关系......
  • 中国各省GDP平减指数(1980-2022年)(原始计算代码(计算过程和计算的文字说明)、最终计算结果
    GDP平减指数是一个关键的经济指标,用于衡量一个国家或地区在不同时间点的GDP价格水平变化。它通过比较现价GDP(名义GDP)与不变价GDP(实质GDP或真实GDP)之间的比例,帮助分析经济增长的实际表现,剔除了通货膨胀或紧缩的影响。GDP平减指数的定义GDP平减指数定义为:\text{GDP平减指数}=......
  • MySQL 存储过程
    本章介绍了什么是存储过程以及为什么要使用存储过程。我们介绍了存储过程的执行和创建的语法以及使用存储过程的一些方法。目录存储过程为什么要使用存储过程使用存储过程执行存储过程创建存储过程创建代码说明执行存储过程删除存储过程使用参数变量示例一创建......
  • 强化学习指南:训练过程与评估过程的区别
    强化学习指南:训练过程与评估过程的区别在强化学习(RL)中,训练和评估是两个截然不同但密切相关的过程。本指南将详细解释这两个过程的区别,以及如何正确实施它们。1.训练过程训练是RL中最核心的部分,它是智能体学习策略的过程。1.1训练的目的训练的目的是让智能体通过与环......
  • 文件加密管理软件哪个好?加密文件的8款软件推荐(2024干货整理)
    据统计,2024年上半年发生了多起重大数据泄露事件,其中包括名为“泄漏之母”的超级数据泄露库,其规模之大前所未有,共包含260亿条记录,文件体积高达12TB。此外,宝马、中信银行等知名企业的数据泄露事件也引起了广泛关注,凸显了数据保护的重要性。面对如此严峻的数据安全形势,选择一款......
  • ConFuzzius复现过程
    模糊测试:ConFuzzius:Adatadependency-awarehybridfuzzerforEthereumsmartcontracts1.安装系统依赖1.1更新系统包首先,更新系统包管理器的索引:输入指令:sudoapt-getupdate安装Python3.8Ubuntu18.04默认没有Python3.8,需要手动添加存储库并安装:sudoadd-ap......
  • helm chart rollback实现过程是什么?
    HelmChart的回滚(rollback)功能允许用户将应用程序恢复到先前的版本。这一过程涉及多个步骤和关键组件。以下是HelmChart回滚的实现过程:1.Release版本管理每次安装或升级Chart时,Helm会为该Release创建一个新的版本,并将其状态保存在Kubernetes集群中。每个版本包含:......
  • Linux 下 C/C++ 程序编译的过程
    目录一、GCC工具链二、编译过程1、预处理2、编译3、汇编4、链接本文将介绍如何将C/C++语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking)。在此之前,首先来看一下GCC工具链。......
  • linux启动过程
    当按下电源按钮启动Linux时,幕后发生了什么?一个名为BIOS或UEFI的程序会启动运行;改程序的基本用途是让计算机所有主要部分做好操作准备(这些部分包括:键盘,屏幕硬盘等)POST检查;测试可确保在安全打开所有设备之前,所有不同的硬件都正常工作;如果POST发现问题,通常会在屏幕上显示错误......