mangle 表

filter 表,负责过滤功能,防火墙。内核模块:iptable_filter

nat 表

filter 表中的链:

# iptables -t filter -L -n 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

来的数据包通过 input 链进行过滤

出去的数据包通过 output 链进行过滤

中间环节 forward 链进行过滤

防火墙

逻辑上讲,防火墙可以大体分为主机防火墙和网络防火墙。

主机防火墙:针对单个主机进行防护。

网络防火墙:往往处于网络入口或边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网。

网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体),主机防火墙主内(个人)。

从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。

硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。

软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。

iptables && netfilter

iptables 其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过 iptables 这个代理,将用户的安全设定执行到对应的“安全框架”中,这个“安全框架”才是真正的防火墙,这个框架的名字叫 netfilter。

netfilter 才是防火墙真正的安全框架(framework),netfilter 位于内核空间。

iptables 其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。

netfilter/iptables(下文中简称 iptables)组成 Linux 平台下的包过滤防火墙,与大多数的 Linux 软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

Netfilter 是 Linux 操作系统核心层内部的一个数据包处理模块,它具有如下功能:

  • 网络地址转换(Network Address Translate)

  • 数据包内容修改

  • 数据包过滤的防火墙功能

所以说,虽然我们使用 service iptables start 启动 iptables “服务”,但是其实准确的说,iptables 并没有一个守护进程,所以并不能算真正意义上的服务,而应该算是内核提供的功能。

iptables 基础

我们知道 iptables 是按照规则来办事的,我们就来说说规则(rules),规则其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了原地址、目的地址、传输协议(如 TCP、UDP、ICMP)和服务类型(如 HTTP、FTP、SMTP)等。当数据包与规则匹配时,iptables 就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)、丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

参考

【小知识】第9期 20分钟掌握iptables指令

朱双印 iptables c 够了

Netfilter hooks