一、架构图
二、防火墙
1、iptables与Netfilter
-
防火墙是一组规则。当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。下面是一个简单的例子:
-
iptables是Linux的防火墙管理工具而已,真正实现防火墙功能的是Netfilter,我们配置了iptables规则后Netfilter通过这些规则来进行防火墙过滤等操作
Netfilter模块:
-
它是主要的工作模块,位于内核中,在网络中的五个位置(也就是防火墙四表五链)注册了一些函数,用来抓取数据包;把数据包的信息拿来匹配各个各个链位置在对应表中的规则:匹配之后,进行相应的处理ACCEPT、DROP等等
两者间的关系
2、四表五链(重要)
四表五链:
一个表----->多个链链
一个链------->多个规则
链就是位置:共有五个:进路由(PREROUTING)、进系统(INPUT)、转发(FORWARD)、出系统(OUTPUT)、出路由(POSTROUTING)
进出路由做数据转换时用到,一般用不到
表就是存储的规则:数据包到了该链接,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。
1)、具体的四表
# filter表——涉及FORWARD、INPUT、OUTPUT三条链,多用于本地和转发过程中数据过滤;
# Nat表——涉及PREROUTING、OUTPUT、POSTROUT三条链,多用于源地址/端口转换和目标地址/端口的转换;
# Mangle表——涉及整条链,可实现拆解报文、修改报文、重新封装,可常见于IPVS的PPC下多端口会话保持。
# Raw表——涉及PREROUTING和OUTPUT链,决定数据包是否被状态跟踪机制处理,需关闭nat表上的连接追踪机制。
2)、具体的五链
# INPUT——进来的数据包应用此规则链中的策略
# OUTPUT——外出的数据包应用此规则链中的策略
# FORWARD——转发数据包时应用此规则链路中的策略
# PREROUTING——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时候都先由这个链处理)
# POSTROUTING——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时候都先由这个链处理)
3、iptables语法格式
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型 ]
iptables常用参数
-P 设置默认策略 iptable
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址 IP/MASK,加叹号“ !”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据 入站口
-o 网卡名称 匹配从这块网卡流出的数据 出站口
-p 匹配协议,如tcp,udp,icmp
–dport num 匹配目标端口号
–sport num 匹配来源端口号
4、Iptables流程图
流入本机: A ---> PREROUTING ---> INPUT ---> B
流出本机:OUTPUT ---> POSTROUTING ---> B
经过本机: A ---> OUTPUT ---> POSTROUTING | ---> PREROUTING ---> FORWARD ---> POSTROUTING ---> C ---> PREROUTING ---> INPUT ---> B
filter : INPUT 、OUTPUT 、FORWARD
nat : PREROUTING 、 OUTPUT、 POSTROUTING
raw : PREROUTING、 OUTPUT
mangle : PREROUTING INPUT FORWARD OUTPUT POSTROUTING