美文网首页
Iptables 详解

Iptables 详解

作者: android_赵乐玮 | 来源:发表于2019-01-19 20:23 被阅读0次

    一、Iptables说明

    1.0 概述

    netfilter/iptables :

    IP信息包过滤系统,实际上是由两个组件netfilter和iptables组成
    

    netfilter/iptables 关系:

    netfilter组件也称内核空间,是内核的一部分,由一些包过滤表组成的规则集来对信息包进行过滤处理.
    
    iptables组件称为用户空间, 它是一种可以通过插入、修改、删除包过滤表中的规则的一种工具。配置完成后立即生效,内置了filter、nat、mangle三张表。
    

    iptables 三张表

    filter: 负责过滤数据包,影响的规则链:input, output,forword
    nat: 负责网络地址的转换,影响的规则链:prerouting, postrouting, output
    mangle: 负责修改数据包内容,可以用来做流量整形、数据包标识等。影响的规则链:input, output,forword, prerouting, postrouting
    

    raw 用于处理异常,包括的规则链: prerouting, output, 一般用不到。

    iptables 五个链

    input: 处理数据包目标地址是本机的规则
    output: 处理本机发送的数据包,即包源地址是本机的规则
    forward: 匹配流经过本机的数据包
    prerouting: 用来修改目标地址,用来做DNAT(网络地址转换)例:端口映射
    postrouting: 用来修改源地址,用来做SNAT(源地址转换)例:内网通过路由器NAT实现内网多个PC公用一个公网IP地址进行上网。
    

    1.1 数据过滤流程

    二、Iptables语法

    语法结构:

    iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 动作]
    

    [-t 表名]:默认为filter表
    [链名]: 默认所有链
    [匹配条件]: 如需要所有ip生效可不填写或填入:0:0:0:0/0

    Iptables-cmd.png

    管理选项

    -A  在指定链的末尾添加(append)一条新的规则
    -I  在指定链中插入(insert)一条新的规则,默认在第一行添加
    -D  删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
        需要确保链中的存在这条规则,否则报错
    -R  替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
    -E  重命名用户定义的链,不改变链本身
    -F  清空(flush),不影响-P默认规则
    -N  新建(new-chain)一条用户自己定义的规则链
    -X  删除指定表中用户自定义的规则链(delete-chain)
    -P  设置指定链的默认策略(policy)
        iptables -P INPUT DROP  ==>修改默认规则为DROP
    -Z 将所有表的所有链的字节和数据包计数器清零
    -[vn]L  列出(list)指定链中所有的规则进行查看,输出样式可追加:
        -n  使用数字形式(numeric)显示输出结果
        -v  查看规则表详细信息(verbose)的信息
        例:iptables -nvL
    

    匹配条件

    1.按网络接口匹配

    1. -i eth0
      匹配是否从网络接口eth0进来
    2. -o eth0
      匹配是否往网络接口eth0流出
    3. -s <ip>
      匹配是来自<ip>的数据 ip: 来源地址
    4. -d <ip>
      匹配目的地址

    2.按网络协议匹配

    1. -p [tcp|udp|icmp]
      匹配网络协议

    3.按源端口匹配

    1. --sport <源端口号> 注: 可以是端口,也可是范围
      例: --sport 1000 匹配源端口是1000的数据包
      --sport 1000:3000 匹配源端口是1000~3000的数据包(含1000,3000)
    2. --dport <目的端口号>

    动作

    • ACCEPT 允许数据包通过
    • DROP 直接丢弃数据包,不给任何回应信息
    • REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
    • MASQUERADE 伪装一个公网IP
    • SNAT 源地址转换
    • 例: iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT 1.1.1.1 => 将内网ip转换成公网ip(路由器原理)
    • LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

    附加模块 -m

    1. 按包状态匹配 : -m mac --mac-source <mac地址>
    2. 按来源mac地址匹配
    3. 按包速率: -m limit --limit <速率>
    4. 多端口匹配: -p tcp -m multiport --dport <ip1>,<ip2>,<ip3> 必须与-p一起使用

    相关文章

      网友评论

          本文标题:Iptables 详解

          本文链接:https://www.haomeiwen.com/subject/wdasattx.html