zoukankan      html  css  js  c++  java
  • iptables四表五链

    如下是具有双网卡的Linux服务器,数据入口网卡是eth0,数据出口网卡是eth1:

    而Linux**防火墙**的工作区域为下图中的绿色阴影部分(防火墙的概念这里不赘述):

    Linux系统中防火墙功能的两大角色:iptables和netfilter。iptables是Linux系统下应用层内置控制防火墙的工具,netfilter则是防火墙功能的具体实现,是内核空间的功能模块。所谓的iptables“控制”防火墙,就是用户利用iptables将防火墙规则设置给内核的netfilter功能模块,这中间涉及“四表五链”:

    “四表五链”其实是对用户设置规则的管理,是看待用户设置的规则的两个维度。举个例子,看图中深蓝色箭头的数据流向,数据包要到达用户层,需要经过PREROUTING链(路由前链),INPUT链(输入链),在这个链路中存放着用户设置的规则,这些规则根据功能不同又会被分组存放在RAW表、Mangle表和NAT表中。当数据包抵达PREROUTING链时,netfilter程序会依次从RAW表、Mangle表和NAT表中取出针对PREROUTING链的用户规则并执行相应操作;同理,INPUT链上的规则也会被分组存放在Mangle表和Filter表中,netfilter程序会依次从这两个表中取出针对INPUT链设置的用户规则并执行相应操作。(特别强调,转发的数据包不经过 OUTPUT 链)

    其他链同理。

    这里需要强调的一点是FORWARD链,它是转发链,也就是说只有在网卡个数>=2的系统中才具有的功能:开启系统转发功能后,当网络层发现数据包并非发给本机时会从另一网卡转发出去。中间经过FORWARD链,FORWARD链上的规则由Filter表、Mangle表读取操作。所以对于单网卡的系统中,上图应更改为:

    综上,Linux将用户规则依据功能和规则所处链路位置进行分组,“四表”存放着功能一致的规则,“五链”存放着数据包所处链路一致的规则。
    这四个表分别存放什么功能的规则?如下归类:


    Filter表:过滤数据包
    NAT表:用于网络地址转换(IP、端口)
    Mangle表:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
    Raw表:决定数据包是否被状态跟踪机制处理

    五条链分别存放什么链路的规则?如下归类:

    INPUT链——进来的数据包应用此规则链中的规则
    OUTPUT链——外出的数据包应用此规则链中的规则
    FORWARD链——转发数据包时应用此规则链中的规则
    PREROUTING链——对数据包作路由选择前应用此链中的规则
    POSTROUTING链——对数据包作路由选择后应用此链中的规则

    最后附另一张“四表五链”图,该图来源自网络,相当经典:

    ————————————————
    版权声明:本文为CSDN博主「mybright_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_29344757/article/details/81128150

  • 相关阅读:
    带参数的装饰器
    python清空文件夹
    sqlalchemy的filter使用
    git pull命令的用法
    通过jenkins打包ipa包报错:Command CodeSign failed with a nonzero exit code(errSecInternalComponent)
    postman上传图片,及接口上传图片
    liunx中crontab没有生效
    liunx正则危险符号“*”星号
    rqalpha的改造工作
    Qt浅谈之一:内存泄露(总结)
  • 原文地址:https://www.cnblogs.com/gaoyanbing/p/13323673.html
Copyright © 2011-2022 走看看