Linux Iptables 的基本原理

简介: 【2月更文挑战第29天】iptables有5种链(PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTE),对应不同数据包处理阶段。

Netfilter是Linux内核提供的一套完善的数据包处理框架,通过一整套的钩子(hook)管理机制,可以实现数据包过滤、网络地址转换以及基于协议类型的连接跟踪等功能,Iptables是基于Netfilter的数据包过滤系统,通过自己设定的规则以及处理动作对数据报文进行检测和处理。


Iptables分为内核模块和用户态两部分,用户空间的Iptables位于/sbin/目录下,是用于设置规则的命令行工具,通过命令行制定相应的规则,指定内核模块进行相应的数据访问控制。链、表和规则是Iptables内核处理中非常重要的几个概念。

1、链

链也可以称为钩子,是指Iptables过滤的时机。Iptables当前有PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTE 5种链,其中PREROUTING用于在路由选择前处理数据包,POSTROUTE用于在路由选择后处理数据包,INPUT用于处理发送到本机的数据包,OUTPUT负责处理本机发送出去的数据包,FORWARD负责对转发数据包进行处理。


针对不同的数据流,有如下3种典型的链处理时机。

1)发送给本机的数据包:当数据包从物理层和数据链路层传输过来,如果数据包是访问Linux主机本身,则经过PREROUTING和INPUT钩子函数,到达传输层和应用层。

2)转发数据包:数据包从物理层和数据链路层传输过来,如果数据包需要转发,则经过PREROUTING、FORWARD和POSTROUTE 3个钩子函数。

3)发送数据包:当数据包从Linux主机本身向外发送数据包,要经过OUTPUT和POSTROUTE两个钩子函数。

2、表

表是负责完成某个过滤功能的模块,Iptables当前有Filter表、NAT表、mangle表和raw表4个,它们在内核中对应4个不同的模块,这几个模块对应的功能和包含的钩子函数如下。

1)Filter表:Filter表是Iptables默认的过滤功能,确定是否放行数据包,包含INPUT、FORWAD和OUTPUT 3个钩子函数。

2)NAT表:NAT表负责修改数据包的源IPPORT和目的IPPORT,包含PREROUTING、OUTPUT和POSTROUTE这几个钩子函数。

3)mangle表:mangle表用于对连接进行跟踪,包含PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTE 5个钩子函数。

4)raw表:raw表用于关闭NAT表上开启的连接跟踪功能,包含PREROUTING、OUTPUT 2个钩子函数。

综合来说,Iptables、表、链和规则之间是层层包含的关系,Iptables可以包含多个表,每个表包含多个链,每个链包含多个用于过滤的规则。

3、Iptables在Istio中的使用

Iptables负责对Envoy的入口和出口流量进行拦截。针对入口流量拦截,假设所有的流量均需要定向到Envoy代理,8090是Envoy的监听端口,Iptables规则如下:

iptables -t nat -A PREROUTING -p tcp -j REDIRECT -to-port 8090

针对出口流量拦截,也是类似的思路,Iptables规则如下:

iptables -t nat -A OUTPUT -p tcp -j REDIRECT -to-port 8090

通过Iptables拦截转发后,目标端口被改写了,可以通过SO_ORIGINAL_DST TCP套接字获取原始的ipport。

相关文章
|
7月前
|
安全 Linux
【Linux】阻塞信号|信号原理
本教程从信号的基本概念入手,逐步讲解了阻塞信号的实现方法及其应用场景。通过对这些技术的掌握,您可以更好地控制进程在处理信号时的行为,确保应用程序在复杂的多任务环境中正常运行。
252 84
|
9月前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
1249 28
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
407 73
|
11月前
|
算法 Unix Linux
深入理解Linux内核调度器:原理与优化
本文探讨了Linux操作系统的心脏——内核调度器(Scheduler)的工作原理,以及如何通过参数调整和代码优化来提高系统性能。不同于常规摘要仅概述内容,本摘要旨在激发读者对Linux内核调度机制深层次运作的兴趣,并简要介绍文章将覆盖的关键话题,如调度算法、实时性增强及节能策略等。
|
12月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
187 1
|
存储 缓存 Linux
深度探索Linux操作系统 —— Linux图形原理探讨3
深度探索Linux操作系统 —— Linux图形原理探讨
160 9
|
存储 Linux 图形学
深度探索Linux操作系统 —— Linux图形原理探讨1
深度探索Linux操作系统 —— Linux图形原理探讨
318 7
|
域名解析 网络协议 Linux
在Linux中,iptables有哪相关的命令?
在Linux中,iptables有哪相关的命令?
|
Linux API 图形学
深度探索Linux操作系统 —— Linux图形原理探讨2
深度探索Linux操作系统 —— Linux图形原理探讨
175 3
|
负载均衡 网络协议 Linux
在Linux中,keepalive工作原理是什么及如何做到健康检查?
在Linux中,keepalive工作原理是什么及如何做到健康检查?