iptables(12)实际应用举例:策略路由、iptables转发、TPROXY

简介

前面的文章中我们已经介绍过iptables的基本原理,表、链的基本操作,匹配条件、扩展模块、自定义链以及网络防火墙、NAT等基本配置及原理。

这篇文章将以实际应用出发,列举一个iptables的综合配置使用案例,将我们前面所涉及到的功能集合起来,形成一个完整的配置范例。

TPROXY

TPROXY(Transparent Proxying)允许代理服务器透明地处理网络流量,而无需修改客户端或服务器的配置。在 TCP/IP 栈中,这通常是通过修改 IP 地址或端口号来完成的,但 TPROXY 允许代理服务器接收原始数据包,并在不修改 IP 地址或端口号的情况下转发它们

以下是关于 TPROXY 的详细解释:1. 功能与特点
透明性:客户端和服务端感知不到代理的存在,无需修改任何配置或代码。
灵活性:可以拦截、修改或转发任何进出网络的流量。
高性能:由于直接在内核层面处理流量,因此具有较低的性能开销。2. 工作原理
流量拦截:使用 iptables 在 PREROUTING 链的 mangle 表中创建一个规则,拦截需要处理的流量。
路由规则:创建一个路由规则,将所有带有特定标记的数据包查找特定的路由表。
数据包映射:在特定的路由表中将所有 IPv4 地址声明为本地,实现数据包的映射。
数据包处理:在 tproxy 的监听端口上接收数据包,并编写网络应用或使用支持 tproxy 的软件(如 Squid 或 Envoy)来处理数据包。3. 配置步骤(以 iptables 为例)
流量拦截:
使用 iptables 的 -t mangle 选项和 -A PREROUTING 命令,创建一个规则拦截特定流量到 tproxy 处理。例如,iptables -t mangle -A PREROUTING -p tcp -dport 9080 -j TPROXY --on-port 15001 --on-ip 127.0.0.1 --tproxy-mark 0x1/0x1。
路由规则:
使用 ip rule 命令创建一个规则,将所有带有特定标记的数据包查找特定的路由表。例如,ip rule add fwmark 1 lookup 100。
数据包映射:
使用 ip route 命令在特定的路由表中将所有 IPv4 地址声明为本地。例如,ip route add local 0.0.0.0/0 dev lo table 100。4. 优点
提高带宽和减少传输延迟:通过缓存和减少网络中的冗余流量,提高服务质量。
安全性:可以记录和限制客户端请求,用于计费或审计。
灵活性:支持多种网络协议和应用场景,如 HTTP、HTTPS、MySQL 等。5. 注意事项
内核版本:确保你的 Linux 内核版本支持 TPROXY。
防火墙规则:确保防火墙或安全组规则允许相关流量通过。
性能监控:定期监控代理服务器的性能和资源使用情况,确保系统稳定运行。6. 应用场景
网络监管:用于屏蔽或允许对某些主机、网站的访问。
负载均衡:作为网络中继,实现负载均衡和流量分发。
TCP 连接分析:用于分析 gRPC、MySQL 等 TCP 连接的连接状态、生命周期等信息。
总之,通过透明地处理网络流量,为网络监管、负载均衡和 TCP 连接分析等多种应用场景提供了灵活的解决方案。
grep -Ei 'tproxy|TPROXY' /boot/config-$(uname -r) 如果看到CONFIG_NETFILTER_TPROXY=m或CONFIG_NETFILTER_TPROXY=y,说明TPROXY作为模块或编译进了内核

mangle表

在第一篇文章我们介绍Iptables基本原理的时候就提到过mangle表,现在我们再来回顾一下mangle表。

我们对每个”链”上都放置了一串规则,但是这些规则有些很相似,比如,A类规则都是对IP或者端口的过滤,B类规则是修改报文,那么这个时候我们把实现相同功能的规则放在一起,那么具有相同功能的规则的集合就叫做”表”。不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每种表对应了不同的功能。

  1. filter 表:负责过滤功能;与之对应的内核模块是 iptables_filter
  2. nat(Network Address Translation) 表:网络地址转换功能,典型的比如 SNAT、DNAT,与之对应的内核模块是 iptables_nat
  3. mangle 表:解包报文、修改并封包,与之对应的内核模块是 iptables_mangle
  4. raw 表:关闭 nat 表上启用的连接追踪机制;与之对应的内核模块是 iptables_raw
表    
rawPREROUTING,OUTPUT
manglePREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
natPREROUTING,OUTPUT,POSTROUTING,INPUT
filterINPUT,FORWARD,OUTPUT

如上图所示,mangle表可以有REEROUTING、INPUT、FORWARD,OUTPUT,POSTROUTING链。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC的架构有什么优势?——控制器(一)

文章目录 控制器(Controller)1. 控制器(Controller):2. 请求映射(Request Mapping):3. 参数绑定(Request Parameters Binding):4. 视图解析器(View Resolver):5. 数据绑定(Data Binding):6. 表单验证(Form Validation)…

TAPD项目管理软件无法与企业微信进行关联

TAPD一段时间未使用后,需要重新启动,此时会出现你的企业微信尚未与TAPD账号关联的提示 解决方案:找到TAPD应用,先删除应用,然后再解除禁用即可

树洞陪聊陪玩交友程序系统源码,解锁交友新体验

在繁忙的都市生活中,你是否渴望找到一片属于自己的秘密花园,倾诉心声、分享快乐?今天,就让我带你走进这片名为“树洞”的神秘之地,感受陪聊陪玩交友的全新魅力! 🌳树洞陪聊陪玩交友程序系统 你…

DC/AC电源模块:为智能家居设备提供恒定的电力供应

BOSHIDA DC/AC电源模块:为智能家居设备提供恒定的电力供应 DC/AC电源模块是一种常见的电源转换器,它将直流电源(DC)转换为交流电源(AC),为智能家居设备提供恒定的电力供应。在智能家居系统中&a…

【React】portal

createPortal 允许你将 JSX 作为 children 渲染至 DOM 的不同部分。 createPortal(children, domNode, key?) 使用 portal 渲染模态对话框 import NoPortalExample from "./components/NoPortalExample"; import PortalExample from "./components/PortalEx…

JVM(11):虚拟机性能分析和故障解决工具之jstack工具

1 jstack(Stack Trace forJava)作用 查看或导出 Java 应用程序中线程堆栈信息 。 线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、长时间等待外部资源等…

案例:MySQL主从复制与读写分离

一、案例分析 1.案例概述 在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,一般来说都是通过主从复制(Master-Slave)来同步数据,再通…

uniapp + vite中 uni.scss 使用 /deep/ 不生效(踩坑记录三)

vite 中使用 /deep/ 进行样式穿透报错 原因:vite 中不支持,换成 ::v-deep 或:deep即可

浅谈人工智能发展趋势

第三次浪潮 人类科技发展的主线正沿着“能源”和“新型”展开。AI的尽头是光伏和储能。 如今我们正在经历第三次浪潮——信息文明。 社会生产力 劳动对象 劳动工具 劳动者 生产要素 农业文明铜器铁器 材料 人力工具 农民 土地人力 工业文明机车电力 材料动力 动力…

Java web应用性能分析之【prometheus监控K8s指标说明】

常规k8s的监控指标 单独 1、集群维度 集群状态集群节点数节点状态(正常、不可达、未知)节点的资源使用率(CPU、内存、IO等) 2、应用维度 应用响应时间 应用的错误率 应用的请求量 3、系统和集群组件维度 API服务器状态控…

2024 vue3入门教程:01vscode终端命令创建第一个vue项目

参考vue官网手册:https://cn.vuejs.org/guide/quick-start.html 一、找个盘符,新建文件夹存储以后得vue项目 我的是e盘下创建了vueproject 二、使用vscode打开存储vue项目的文件夹 因为我生成过项目,所以有文件,你们初次是没有…

IT专业入门,高考假期预习指南

文章目录 一、了解IT专业的基本概念二、选择适合的编程语言入门三、掌握基本的编程工具和环境四、学习基础的数据结构和算法五、实践项目和动手实验六、利用在线资源进行学习七、参加编程竞赛和社区活动总结 高考结束后,许多同学将迎来大学生活,而对于选…

DataWhaleAI Tsak1 运行Baseline

题目背景 在当今数字化时代,企业积累了丰富的对话数据,这些数据不仅是客户与企业之间交流的记录,更是隐藏着宝贵信息的宝库。在这个背景下,群聊对话分角色要素提取成为了企业营销和服务的一项重要策略。 群聊对话分角色要素提取…

nlp--最大匹配分词(计算召回率)

最大匹配算法是一种常见的中文分词算法,其核心思想是从左向右取词,以词典中最长的词为优先匹配。这里我将为你展示一个简单的最大匹配分词算法的实现,并结合输入任意句子、显示分词结果以及计算分词召回率。 代码 : # happy coding…

Tektronix泰克 AWG70001A 任意波形发生器

Tektronix泰克 AWG70001A 任意波形发生器 AWG70000A 系列任意波形发生器 (AWG) 在采样率、信号保真度和波形内存方面代表着尖端水平,特别适合复杂器件、系统和实验的设计、测试和操作。由于高达 50 GS/s 采样率和 10 位垂直分辨率,它提供了优秀的信号激…

【Python】入门Python,你必须了解这些事

个人主页:【😊个人主页】 系列专栏:【❤️Python】 文章目录 前言一、认识Python什么是Python?!Python的起源Python的特点简洁易读跨平台,可移植拥有强大的库和框架面向对象 Python的优缺点优点缺点 Python的应用环境扩…

linux ls文件排序

linux可以使用ls命令结合一些选项来按照文件大小对文件和目录进行排序。以下是一些常用的方法: 1、这里,-l 选项表示长格式输出(包括文件权限、所有者、大小等),-S 选项表示按照文件大小排序,-h 选项表示以…

PHP留守儿童关爱之家网站-计算机毕业设计源码11079

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3 论文结构与章节安排 2 留守儿童关爱之家网站系统分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程和逻辑 2.5本章小结 3 留守儿童关爱之家网站总体设计 3.1系统结构设计 3.2系统功能模块设计 3.2 数…

【算法训练记录——Day38】

Day38——动态规划Ⅰ 1.理论#2.leetcode_509斐波那契数3.leetcode_70爬楼梯4.kamacoder_57爬楼梯5.leetcode_746使用最小花费爬楼梯 1.理论 一般解题步骤: 确定dp数组及下标含义确定递推公式数组如何初始化确定递归顺序举例推导dp数组 #2.leetcode_509斐波那契数…

阿里云物联网应用层开发:第一部分,项目简介

文章目录 1、物联网应用层简介2、阿里云物联网应用层开发例程主要内容3、需要掌握基础知识 1、物联网应用层简介 应用层是物联网系统的用户界面,它提供了用户与系统交互的接口,这一层是将网络传输层的数据结果以易于理解和使用的方式呈现给用户&#xf…