一. 综述iptables
iptables 实际上就是一种包过滤型防火墙。就是通过书写一些接受哪些包,拒绝哪些包的规则,实现数据包的过滤。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
iptables由两部分组成:
1.framework:netfilter hooks function钩子函数,实现网络过滤器的基本框架。
2.rule utils:iptables 规则管理工具
总体说来,iptables就是由“四表五链”组成。
四表:
- filter:过滤,防火墙
- nat :network address translation 网络地址转换
- mangle:拆解报文,作出修改,封装报文
- raw: 关闭nat表上启用的链接追踪机制
五链:
- PREROUTING 数据包进入路由之前
- INPUT 目的地址为本机
- FORWARD 实现转发
- OUTPUT 原地址为本机,向外发送
POSTROUTING 发送到网卡之前
iptables中表与链的对应关系,其实就是一个表中包含哪几个链
二. iptables命令常用方法
iptables [-p table] 链管理 chain
-t table : filter,nat,mangle,raw (默认为 filter)
链管理:
- -F : 清空规则链
- -N:创建新的自定义规则链
- -X : drop 删除用户自定义的规则链
- -P : Policy 为指定链设置默认策略;iptables -t filter -P FORWARD DROP
- -E:重命令自定义链
规则管理:
- -A:蒋新规则添加到指定的链上
- -I:将新规则插入到指定的位置
- -D:删除链上的指定规则
- -R:替代指定链上的规则
查看:
- -L:列表,列出指定链上的指定的规则
-n -v –line-numbers -x 等参数
匹配条件:
基本匹配:
-s 原地址IP
-d 目的IP
-p 协议{tcp|udp|icmp}
-i 数据报文的流入接口
-o 数据报文的流出接口
扩展匹配:-m match_name
–dport PORT:目标端口,可以是单个端口
–sport PORT:源端口
-p udp|tcp|icmp
–icmp-type
0 : echo-reply
8 : echo-request
目标:
-j TARGET:jump至指定的TARGET
- ACCEPT 接受
- DROP 丢弃
- REJECT 拒绝访问
- RETURN 返回调用链