zoukankan      html  css  js  c++  java
  • iptables 详解

    前言

      最近在看Docker的一些知识,其中在Docker 容器内联或容器访问外部或外部访问容器章节,处处涉及到了iptables的一些知识。不甚了解,所以记录一下,全当作自己的学习笔记了。  

    iptables简介

      iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。【来自百度百科】

      在Linux的包过滤系统,也就是Linux防火墙,包含两部分,由netfilter 和 iptables 两个组件组成。

      其中,netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

      另外,iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。  

    iptables组成  

    iptables -> Tables -> Chains -> Rules

      iptables基础知识详解

      iptables将若干规则组成Chain,应用于网络包上。又因为不同的Chain处理的场景不同,又将这些Chain划分到不同的集合中,这些集合称之为table。

      Linux提供了四种处理不同场景的table,它们分别是:filter,nat,mangle,raw。

    iptables 四种table介绍

      1 . filter                                                                                                                                                      

        filter是默认的表。它包含三种Chain:INPUT , OUTPUT ,FORWARD,处理的数据,都是和本机有关的数据

        INPUT:处理流向本机的数据

        OUTPUT:处理流出本机的数据。

        FORWARD:将数据通过本机转发到本机的其他设备。

      2 . nat                                                                                                                                                         

      与本机无关。主要处理源与目的地址IP和端口的转换,它包含四种Chain(有文章说是三种,没有INPUT。本文作者使用阿里云centos 6.5):                                                                               PREROUTING,INPUT,OUTPUT,POSTROUTING

        

      3 . mangle                                                                                                                                                   

        用于高级路由信息包,如包头内有更改(如tos改变包的服务类型,ttl包的生存时间,mark特殊标记)。包含五种Chain:

              PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

      4 . raw                                                                                                                                                         

        Raw表用于处理异常,它具有2个Chain:PREROUTING ,OUTPUT。

        上述五种Chain的介绍:

         1、PREROUTING:进入netfilter后的数据包在进入路由判断前执行的规则。改变包内容(通常是改变D-IP)。
         2、INPUT:当经过路由判断后,要进入本机的数据包执行的规则。
         3、OUTPUT:由本机产生,需向外发的数据包执行的规则。
         4、FORWARD:经过路由判断后,目的地不是本机的数据包执行的规则。与nat 和 mangle表相关联很高,与本机没有关联。
         5、POSTROUTING:经过路由判断后,发送到网卡接口前。即数据包准备离开netfilter时执行的规则(通常是改变S-IP)。

    iptables中的rules

      Chain中的规则的格式,可以分为5个字段:

      target     prot  opt  source               destination

      总的来说,后面四个是判断一条规则的条件,只有在条件满足的情况下才可以执行target,否则将会执行下面的一条规则。  

      • Rules包括一个条件和一个目标(target)
      • 如果满足条件,就执行目标(target)中的规则或者特定值。
      • 如果不满足条件,就判断下一条Rules。

      目标值(Target Values)

        下面是你可以在target里指定的特殊值:
    • ACCEPT – 允许防火墙接收数据包
    • DROP – 防火墙丢弃包
    • QUEUE – 防火墙将数据包移交到用户空间
    • RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。

      

      


      【参考】

        1 . http://drops.wooyun.org/tips/1424 比较详细的介绍了iptables 中的一些命令的使用

        2 . http://blog.chinaunix.net/uid-26000296-id-4111127.html 从访问流程上介绍了iptables的作用。

        3 . http://www.open-open.com/lib/view/open1410922014555.html 原理性知识(存在少许的问题)

  • 相关阅读:
    with admin option 和 with grant option 的区别 (转)
    压缩数据块
    建表时pctfree和pctused参数作用
    Oracle哪些错误会写进alert日志
    Oracle 差异、增量、零级备份
    模拟原生的promise
    react-loadable 实现组件按需加载
    react 中配置 http-proxy-middleware
    craco 配置 less.module
    ESLint: 'React' was used before it was defined.(no-use-before-define)
  • 原文地址:https://www.cnblogs.com/plxx/p/5470296.html
Copyright © 2011-2022 走看看