Linux虚拟网络基础——iptables

239 篇文章 3 订阅
52 篇文章 5 订阅
iptables可以实现防火墙、NAT等功能,不过这句话也对,也不对。说它对,我们确实是通过iptables相关命令行,实现了防火墙、NAT的功能;说它不对,是因为iptables其实只是一个运行在用户空间的命令行工具,真正实现这些功能的是运行在内核空间的netfilter。
它们之间的关系如下图:
不必太在意这个图是什么意思,只需要有个直观的感觉即可。主要关注iptables命令方框。
iptable内置了三张表:filter、nat和mangle。
filter和nat顾名思义,是为了实现防火墙和NAT功能而服务的。mangle,翻译为汉语是“乱砍;损坏”等意思,它在这里指的是“主要应用在修改数据包内容上,用来做流量整形”。
iptables内置的既是三张表,也是三条链,或者换个角度说,iptables内置的是三种策略,而这些策略,是由不同规则串接而成。什么叫规则呢?我们以防火墙为例,讲述一条规则:
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
这条规则表达的意思是:允许所有从eth0端口进入且协议是ICMP的报文可以接受(可以进入下一个流程)的。
这就是一条规则,至于iptables的命令行格式只是一个表象,它的本质是对进入的IP报文进行说明,如:符合什么样的条件(比如本条命令的条件是“允许所有从eth0端口进入且协议是ICMP的报文”)、做什么样的处理(比如本条命令的处理是“接受”,可以进入下一个流程)。
iptable可以定义很多策略/规则,从上图可知,这些规则最终会传递到内核netfilter模块,netfilter模块会根据这些规则做相应的处理。netfilter的处理方式时:从报文进入本机(linux host或vm)的那一刻起,到报文离开本机的那一刻为止,中间这段时间,netfilter会在某些时刻点插入处理模块,这些处理模块根据相应的策略/规则对报文进行处理。
nat、filter、mangle三张表也可以这样理解:仅仅是为了达到不同目的(功能)而实现的三个模块而已。
netfilter插入的这些时刻点如下图:
在这些时刻点,上文提到三张表(模块)并不是所有时刻都可以处理。在同一个时刻点,也可以有多个模块可以进行处理,那么这些模块就有一个处理顺序,谁先处理,谁后处理呢?见下图:
图中几个关键时刻点,含义如下:
(1)PREROUTING:报文进入网络接口尚未进入路由之前的时刻;
(2)INPUT:路由判断是本机接收的报文,准备从内核空间进入用户空间的时刻;
(3)FORWARD:路由判断不是本机接收的报文,需要路由转发,路由转发的那个时刻;
(4)OUTPUT:本机报文需要发出去,经过路由判断选择好端口以后,准备发送的那一刻;
(5)POSTROUTING:FORWARD/OUTPUT已经完成,报文即将出网络接口的那一刻。
三张表,所能对应的时刻点,如下表
参考
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值