码迷,mamicode.com
首页 > 其他好文 > 详细

iptables之基础知识

时间:2015-06-20 22:16:18      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:iptables   ip_conntrack   chain   

hook funciton(钩子函数):
    prerouting 进本机未过路由表
    input 进来本机
    output 从本机出去
    forward 转发
    postrouting 路由后从本机出去

规则链:
    每个钩子函数上的规则合集构成链。
    PREROUTING
    INPUT
    OUTPUT
    FORWARD
    POSTROUTING

    自定义链:
        只能被调用,有跳转和返回机制。用户可以删除自定义的空链,默认链无法删除。

计数器:
    每个规则都有内置的计数器。
    1.被匹配到的报文个数
    2.被匹配到的报文大小之和


多个规则链构成表:
    filter(过滤);
        INPUT
        OUTPUT
        FORWARD

    nat(地址转换):
        PREROUTING SNAT
        OUTPUT
        POSTROUTING DNAT

    mangle(拆分修改封装报文首部):
        PREROUTING
        INPUT
        OUTPUT
        FORWARD
        POSTROUTING

    raw(原始格式):
        PREROUTING
        OUTPUT

规则链中表的优先级:
    优先级从高到底。

    PREROUTING
        raw
        mangle
        nat

    INPUT
        mangle
        filter

    OUTPUT
        raw
        mangle
        nat
        filter

    FORWARD
        mangle
        filter

    POSTROUTING
        mangle
        nat

数据包过滤匹配流程:

    入站数据流 --> PREROUTING --> 路由选择 (FORWARD --> POSTROUTING -->出站数据流)--> INPUT --> 本机应用程序 --> 路由选择 --> OUTPUT -->POSTROUTING -->出站数据流
 

匹配标准:
    通用匹配
        依赖自身。
    扩展匹配
        依赖扩展模块。
        对应的扩展模块为/lib/iptables/libipt_*.so
        1.隐含匹配。
            不用特别指明扩展模块。例如使用了-P {tcp|udp|icmp} 指明协议。

        2.显式扩展。
            必须使用-m指明对应的扩展模块。


iptables 不是服务,但是有服务脚本,所有的规则都应用在内核中。服务脚本的作用是管理保存的规则。装载及移除相关内核模块。使用lsmod可以查看相关的模块

脚本:
    /etc/init.d/iptables


保存和读取规则:
        #service iptables save
            /etc/sysconfig/iptables  配置文件
        
        或
        
        #iptables-save > FILE 保存配置文件
        #iptables-restore < FILE 读取配置文件

配置文件:
    /etc/sysconfig/iptables-config



ICMP 类型
    TYPE CODE
    0 0 Echo Reply ping应答
    8 0 Echo Request ping请求


#lsmod |grep ip 列出内核模块


ip_conntrack 内核模块,监听并追踪连接状态
    依赖iptable_nat和ip_nat模块
    /proc/net/ip_conntrack 内核文件,保存连接状态信息

    #cat /proc/net/ip_conntrack

    #iptstate [OPTION] 显示并追踪iptables状态信息
        [OPTION]
            -t 显示所有连接的个数

    /proc/sys/net/ipv4/netfilter/*  ip_conntrack的相关设置文件夹
        ip_conntrack_max  最大连接条目,默认32768。超出部分则会被丢弃。
        ip_conntrack_tpc_timeout_established tcp连接超时时间,默认432000秒,即5天。
        ip_conntrack_icmp_timeout icmp连接超时时间,默认30秒

    注意:一旦使用#iptables -t nat -L 命令,将会启用ip_conntrack模块,若设备连接数大,则会造成丢包。

本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1663822

iptables之基础知识

标签:iptables   ip_conntrack   chain   

原文地址:http://ggvylf.blog.51cto.com/784661/1663822

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!