zoukankan      html  css  js  c++  java
  • iptables分析(一)

    四表五链
    四表:filter , nat, manager, raw
    五链: 五个HOOK点的链接,pre_rout, foward, post_rout, in ,out

    iptables 命令查看命令,默认显示的是filter表的配置,如果要显示其他表的情况,使用-t参数,插入删除的操作亦然。

    各个表的作用于功能

    1. filter表

    2. mangle表

    mangle表的作用,主要是根据规则修改包的一些标志位,其他程序和规则可以利用这些标志位,执行过滤规则和策略路由。

    iptable 中配置-j MARK --set-mark 用于给匹配规则的数据包,打上标签。-m mark 用于匹配规则。

    使用iptables -j mark --help 命令查看,设置规则:

    使用iptables -m mark --help 查看匹配规则:

    设置mask掩码,用于设置相应的标志位。

    上面的规则,标示匹配mark为0x2掩码为0x3的标记。在匹配规则的时候,先用skb的mark和mask取与,然后和掩码匹配。

    参见内核code:

    修改的标志位,主要有:

    3. nat 表

    4. raw表

    内核模块

    问题:
    内核如何匹配,内核使能

    iptable 命令转换,和内核交互
    libiptc库和内核交互


    最终是转换到hook点的处理函数上来.

    match模块被添加到系统的链表中
    当iptables 调用命令,会把这个过滤规则添加到过滤表中.

    在每个HOOK点用操作表组成了操作链,分别调用表中的匹配和过滤函数.


    内和match注册:
    xt_register_match


    filter表分析


    match 模块查找
    do_command4
    command_match
    xtables_find_match


    表的插入
    insert_entry
    iptc_insert_entry <libiptc.h>


    libiptc和内核交互
    http://blog.chinaunix.net/uid-29732842-id-4975834.html
    get_socket
    set_socket

    网络命名空间相关

    struct netns_ipv4
    #ifdef CONFIG_NETFILTER
    struct xt_table *iptable_filter;
    struct xt_table *iptable_mangle;
    struct xt_table *iptable_raw;
    struct xt_table *arptable_filter;
    #ifdef CONFIG_SECURITY
    struct xt_table *iptable_security;
    #endif
    struct xt_table *nat_table;
    #endif

    问题1

    mangle表在添加的时候

    欢迎评论交流
  • 相关阅读:
    ContentProvider与ContentResolver使用
    ASP.NET Web API 控制器创建过程(二)
    Yii PHP Framework有用新手教程
    图像切割之(五)活动轮廓模型之Snake模型简单介绍
    使用CXF+spring创建一个web的接口项目
    使用spring @Scheduled注解运行定时任务、
    Oracle11g新特性之动态变量窥视
    yum命令常见方法
    Linux负载均衡软件LVS之一(概念篇)
    Linux查看CPU和内存使用情况
  • 原文地址:https://www.cnblogs.com/linengier/p/9222126.html
Copyright © 2011-2022 走看看