iptables基础用法介绍

来源:互联网 发布:sip服务器 linux 编辑:程序博客网 时间:2024/06/07 18:06

iptables由四个表和五个链以及一些规则组成

四个表table:
      filter、nat、mangle、raw

  1. filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包
  2. nat表:network address translation 地址转换规则表
  3. mangle:修改数据标记位规则表
  4. Raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
    优先级由高到低的顺序为:raw–>mangle–>nat–>filter

五个内置链chain:
内置链也称为钩子函数,iptables这款用户空间的软件可以在这5处地方写规则,对经过的数据包进行处理,规则一般的定义为“如果数据包头符合这样的条件,就这样处理数据包”
         INPUT:处理来自外部的数据
         OUTPUT:处理向外发送的数据
         FORWARD:将数据转发到本机的其他网卡设备上
         PREROUTING:处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址
         POSTROUTING:处理即将离开本机的数据包。它会转换数据包中的源IP地址
这里写图片描述
iptables规则:
    根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动作作出处理
匹配条件:默认为与条件,同时满足
    基本匹配: IP,端口,TCP的Flags(SYN,ACK等)
    扩展匹配:通过复杂高级功能匹配
处理动作:称为target,跳转目标
    内建处理动作:
        ACCEPT(accept允许),
        REJECT(reject强硬的拒绝),
        SNAT/DNAT(地址转换使用),      
        MARK(打标签),
        LOG(记日志)…
自定义处理动作:自定义chain,利用分类管理复杂情形规则要添加在链上,才生效;添加在自定义上不会自动生效
    链chain:
        内置链:每个内置链对应于一个钩子函数
        自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效
iptables命令
    man 8 iptables查看帮助。
    扩展用法: man iptables-extensions
    

iptables [-t table] {-A|-C|-D} chain rule-specificationiptables [-t table] -I chain [rulenum] rule-specificationiptables [-t table] -R chain rulenum rule-specificationiptables [-t table] -D chain rulenum iptables [-t table] -S [chain [rulenum]]iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]iptables [-t table] -N chainiptables [-t table] -X [chain]iptables [-t table] -P chain targetiptables [-t table] -E old-chain-name new-chain-namerule-specification = [matches...] [target]match = -m matchname [per-match-options]target = -j targetname [per-target-options]

-A 在指定链的末尾添加(append)一条新的规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-E 重命名用户定义的链,不改变链本身
-F 清空(flush)
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-P 设置指定链的默认策略(policy)
-Z 将所有表的所有链的字节和数据包计数器清零
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
  -vv
  -vvv :越多越详细
-t 指定表
-V 查看版本(version)
-h 获取帮助(help)
简单示例:

拒绝进入防火墙的所有ICMP协议数据包

iptables -I INPUT -p icmp -j REJECT

删除INPUT链的第一条规则

iptables -D INPUT 1

允许防火墙转发除ICMP协议以外的所有数据包

iptables -A FORWARD -p ! icmp -j ACCEPT  #叹号取反

允许防火墙转发除ICMP协议以外的所有数据包

iptables -A FORWARD -p ! icmp -j ACCEPT #叹号取反

禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包

iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP

文章参考
  http://netfilter.org/ iptables官方网站
  http://www.linux.gov.cn/netweb/iptables.htm iptables配置手册
  http://man.chinaunix.net/network/iptables-tutorial-cn-1.1.19.html iptables配置手册
  http://blog.csdn.net/u010677323/article/details/78320369同学详解iptables

原创粉丝点击