1.iptables 简介
关于iptables的准确定义,这里可以参考[维基百科] :
iptables,一个运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的流动与转送。在大部分的Linux系统上面,iptables是使用/usr/sbin/iptables来操作,文件则放置在手册页(Man page[2])底下,可以通过 man iptables 指令获取。通常iptables都需要内核层级的模块来配合运作,Xtables是主要在内核层级里面iptables API运作功能的模块。因相关动作上的需要,iptables的操作需要用到超级用户的权限。
iptables称为规则(hook function:钩子函数)管理工具,分为五表五链;framework netfilter即网络过滤器框架,起到防火墙的功能。
添加规则时考量点
1.要实现哪种功能,判断添加在哪张表;
2.报文流经的路径,判断添加在哪个链上;
2.五表五链
1.五表
filter: 用于控制到达某条链上的数据包是继续放行,直接丢弃(drop)或拒绝(re-ject)
nat: 用于修改数据包的源和目的地址
mangle: 用于修改数据包的IP头信息
raw: iptables是有状态的,即iptables对数据包有连接追踪(connection tracking)机制,而row是用来去除这种追踪机制的.
security 最不常用的的表(通常:我们说iptables只有4张表,security表新加入特性) 用于在数据包上应用SELinux.
2.五链
- INPUT 链:一般用于处理输入本地进程的数据包
- OUTPUT 链: 一般用于处理输出本地进程的数据包
- FORWARD链: 用于处理转发到其他机器/network namespace 的数据包.
- POSTROUTING链:在对数据包作路由选择之后,应用此链中的规则,如SNAT,
- PREROUTING链: 在对数据包作路由选择之前,应用此链中的规则,如DNAT.
3 表和链的关系
- row 表包含: PREROUTING,OUTPUT
[root@xiaolige~]#iptables -t raw -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source
- mangle 表包含: All-hooks (PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING)
[root@xiaolige~]# iptables -t mangle -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destination 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 Chain POSTROUTING (policy ACCEPT) target prot opt source destination
- filter表包含: INPUT,FORWARD,OUTPUT
[root@xiaolige ~]# 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
- nat 表包含: PREROUTING,INPUT,OUTPUT,POSTROUTING
[root@xiaolige]# iptables -t nat -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination
- security 表包含:INPUT,FORWARD,OUTPUT
[root@xiaolige~]# iptables -t security -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
4.表和链关系表格
- Y 通过
- N 不通过
表/链 | PREROUTING | POSTROUTING | FORWARD | INPUT | OUTPUT |
---|---|---|---|---|---|
raw | Y | N | N | N | Y |
mangle | Y | Y | Y | Y | Y |
nat(SNAT) | N | Y | N | Y | N |
nat(DNAT) | Y | N | N | N | Y |
filter | N | N | Y | Y | Y |
security | N | N | Y | Y | Y |
5.5个表的优先级
5个表的优先级由高到低的顺序为:raw-->mangle-->nat-->filter-->security
6.filter 表
关于数据包过滤
包过滤比分组转发还要多。虽然数据包转发只使用路由表来做出决定,包过滤还采用了一系列规则。内核将检查数据包,并根据这些规则决定如何处理每个数据包。
filter
iptables中的过滤器表具有三个链(规则集)
INPUT链用于进入系统的任何数据包。OUTPUT链适用于任何离开系统的数据包。FORWARD链适用于通过系统转发(路由)的数据包。
7.关于NAT
network address translation
NAT设备是一个路由器,它也在更改数据包中的源和/或目标ip地址。它通常用于将专用地址范围内的多台计算机与(公共)互联网连接。NAT可以从Internet隐藏私有地址。
NAT的开发是为了减少对真实IP地址的使用,允许专用地址范围到达Internet并返回,并且不向外部公开有关内部网络的详细信息。
iptables中的nat表添加了两个新链。PREROUTING允许在数据包到达INPUT链之前对其进行更改。POSTROUTING允许在数据包退出OUTPUT链后对其进行更改。
来源:oschina
链接:https://my.oschina.net/u/4365667/blog/4331822