一、Iptables
1、Linux Kernel中的包过滤防火墙
(1)Ipfw/ipfwadm
2.0.*中使用移植于BSD的ipfw缺点:包过滤、NAT等代码混杂在整个网络相关代码中
(2)Ipchains
2.2.*中使用(3)Netfilter/iptables
2.4.*iptables
模块化,支持状态跟踪
2、Netfilter/iptables
(1)可以实现完整的基于连接跟踪的包过滤防火墙(2)Netfilter is the framework in Linux 2.4 kernels that allow for firewalling, NAT.
(Netfilter是Linux kernel 中对数据包进行处理的框架)
(3)Iptables is the userspace tools that works with the Netfilter framework
3、iptables结构示意图
4、表和链
(1)表
filter:实现数据报过滤
nat:网络地址转换 (NAT:Network Address Translator)
Mangle: 数据报处理
(2)链
INPUT:位于 filter 表,匹配目的 IP 是本机的数据包
FORWARD:位于 filter 表,匹配穿过本机的数据包
PREROUTING:位于 nat 表,用于修改目的地址(DNAT)
POSTROUTING:位于 nat 表,用于修改源地址 (SNAT)
5、Iptables 语法
iptables [-t 要操作的表]
<操作命令>
[要操作的链]
[规则号码]
[匹配条件]
[-j 匹配到以后的动作]
6、命令概述
操作命令(-A、-I、-D、-R、-P、-F)查看命令(-[vnx]L)
(1)-A <链名>
APPEND,追加一条规则(放到最后)
例如:
iptables -t filter -A INPUT -j DROP
在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则),匹配所有访问本机 IP 的数据包,匹配到的丢弃
(2)-I <链名> [规则号码]
INSERT,插入一条规则
例如:
iptables -I INPUT -j DROP
在 filter 表的 INPUT 链里插入一条规则(插入成第 1 条)
i