iptables 命令实战详解

一.iptables介绍
iptables并不是真正意义上的防火墙,我们可以理解为一个客户端工具,用户通过ipatbles这个客户端,将用户 的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字?.NET?lter 。net?lter才是防火墙真正的安全框架,net?lter位于内核空间 。
iptables是一个命令行工具,位于用户空间,通过这个命令行工具来操作net?lter 。net?lter/iptables(简称为iptables)组成linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包 过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能
二.iptables的四表五链

说明
【iptables 命令实战详解】filter
过滤,防火墙
nat
网络地址转换 ;用于修改源ip或目标ip,也可以改端口
mangle
拆解报文,做出修改,并重新封装起来
raw
关闭nat表上启用的连接追踪机制
 
链(内置):
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
在实际使用中,我们通常是用表来操作,这里列出表和链的关系:


raw
PREROUTING,OUTPUT
mangle
PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat
REROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,
centos6中没有)
filter
INPUT,FORWARD,OUTPUT

iptables 命令实战详解

文章插图
 
报文流向:
流入本机:PREROUTING --> INPUT
由本机流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
 
三.iptables基本用法
规则格式:iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
-t table:
raw, mangle, nat, filter(默认)
COMMAND
链管理:
-F:flush,清空规则链:省略链,表示清空指定表上的所有的链;
-N:new, 自定义一条新的规则链;
-X: delete,删除自定义的规则链;
-Z: zero,清零,置零规则计数器;
注意:仅能删除 用户自定义的 引用计数为0的 空的 链;
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
-E: rEname 重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;
规则管理
-A:Append,追加;
-I:insert, 插入,要指明位置,省略时表示第一条;
-D:delete,删除;
(1) 指明规则序号;
(2) 指明规则本身;
-R:replace,替换指定链上的指定规则;
-F:flush,清空指定的规则链;
-Z:zero,置零;
iptables的每条规则都有两个计数器:
(1) 匹配到的报文的个数;
(2) 匹配到的所有报文的大小之和
查看
-L:list, 列出指定鏈上的所有规则;
-n:numberic,以数字格式显示地址和端口号; -v:verbose,详细信息; -vv, -vvv -x:exactly,显示计数器结果的精确值;--line-numbers:显示规则的序号;chain
PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
-j targetname(处理动作)
iptables 命令实战详解

文章插图
 
常用规则匹配器
iptables 命令实战详解

文章插图
 
命令用法总结
iptables 命令实战详解

文章插图
 
四.iptables进阶用法
扩展匹配条件:
隐式扩展:在使用-p选项指明了特定的协议时,无需再同时使用-m选项指明扩展模块的扩展机制;
显式扩展:必须使用-m选项指明要调用的扩展模块的扩展机制;


推荐阅读