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 原理性知识(存在少许的问题)

posted @ 2016-05-08 12:39  平林新袖  阅读(1087)  评论(0编辑  收藏  举报