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
表    
raw PREROUTING,OUTPUT
mangle PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat PREROUTING,OUTPUT,POSTROUTING,INPUT
filter INPUT,FORWARD,OUTPUT

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全:Linux重要安全配置之关闭常规ssh链接-开启密钥方式链接-防入侵非常重要以及有效的一项操作

https://doc.youyacao.com/88/2154 安全:Linux重要安全配置之关闭常规ssh链接-开启密钥方式链接-防入侵非常重要以及有效的一项操作 问题背景 优雅草官方的服务器长期被各类牛鬼蛇神来搞事情,之前其中有一台测试服由于属于管理和维护,安全…

【直播倒计时】面向AI领域的开发工程师:TinyML在国产FPGA的边缘AI加速应用

TinyML是机器学习中的一个新兴领域,专注于开发可在低功耗、内存受限的设备上运行的算法和模型。其核心目标是将先进的机器学习算法和模型移植到体积小巧、能耗极低的嵌入式设备中,使这些设备具备边缘智能,能够在没有外部服务器支持的情况下进…

【面试题】Spring面试题

目录 Spring Framework 中有多少个模块,它们分别是什么?Spring框架的设计目标、设计理念?核心是什么?Spring框架中都用到了哪些设计模式?Spring的核心机制是什么?什么是Spring IOC容器?什么是依…

Micrometer+ZipKin分布式链路追踪

目录 背景MicrometerMicrometer与ZipKin之间的关系专业术语分布式链路追踪原理 ZipKin安装下载 MicrometerZipKin 案例演示相关文献 背景 一个系统页面上的按钮点击到结果反馈,在微服务框架里,是由N个服务组成返回结果,中间可能经过a->b-…

基于pytorch实现的 MobileViT 的图像识别(迁移学习)

1、介绍 MobileViT 轻量级的分类识别网络,结合了CNN卷积和Transformer 混合的网络架构 关于更多介绍可以自行百度,本文通过pytorchpython进行实现 更多基础的图像分类网络,参考:图像分类_听风吹等浪起的博客-CSDN博客 2、相关代…

算法力扣刷题记录六【203移除链表元素】

前言 链表篇,开始。 记录六:力扣【203移除链表元素】 一、数据结构——链表 来源【代码随想录】,总结: (1)线性结构。内存地址不连续,通过指针指向串联一起。 (2)链表类…

《化工管理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《化工管理》是不是核心期刊? 答:不是,是知网收录的第一批认定学术期刊。 问:《化工管理》级别? 答:国家级。主办单位:中国石油和化学工业联合会 主管单位&…

API-其他事件

学习目标: 掌握其他事件 学习内容: 页面加载事件元素滚动事件页面尺寸事件 页面加载事件: 加载外部资源(如图片、外联CSS和JavaScript等)加载完毕时触发的事件。 为什么要学?? 有些时候需要等…

华为认证hcna题库背诵技巧有哪些?hcna和hcia有什么区别?

大家都知道华为认证hcna是有题库供考生刷题备考的,但题库中海量的题目想要在短时间背诵下来可并不是一件容易的事情,这就需要我们掌握一定的技巧才行。华为认证hcna题库背诵技巧有哪些? hcna和hcna这二者又有什么区别呢?今天的文章将为大家进行详细解…

IMU坐标系与自定义坐标系转化

1.首先示例图为例&#xff1a; 虚线黑色角度为IMU的坐标系&#xff1b;实线为自定义坐标系&#xff1b; 矫正&#xff1a;&#xff08;默认angleyaw为IMU采的数据角度&#xff09; angleyaw_pt angleyaw-25;if(-180<angleyaw&&angleyaw<-155) // 角度跳变问…

防火墙GRE over IPSec配置

一、基础知识 1、GRE隧道 GRE隧道是一种网络通信协议&#xff0c;使用通用路由封装&#xff08;GRE&#xff09;技术&#xff0c;能够将一种网络协议下的数据报文封装在另一种网络协议中&#xff0c;从而实现在另一个网络层协议中的传输。 GRE隧道的基本概念和工作方式 基本…

怎样实现聊天弹幕效果?

可以使用HTML、CSS和JavaScript的组合。以下是一个简单的步骤和示例代码&#xff0c;说明如何创建一个基本的弹幕效果&#xff1a; HTML结构&#xff1a; 创建一个用于显示弹幕的容器和输入弹幕的表单。 <!DOCTYPE html> <html lang"en"> <hea…

android 通过gradle去除aar的重复资源图片

背景&#xff1a;项目中引入了aar包&#xff0c;结果导致资源出问题了&#xff0c;于是需要对下面aar包进行重复资源去除操作 操作具体如下&#xff1a; 目录&#xff1a;app/build.gradle 末尾配置 apply from: "${project.rootDir}/scripts/excludewidgetAar.gradle&qu…

20240626(周三)AH股行情总结:沪指午后大反弹,港股震荡走高,AIGC、短剧概念走强,低价可转债触底反弹

内容提要 上证指数午后大反弹&#xff0c;创业板指涨近2%。港股震荡走高&#xff0c;恒生科技指数涨近1%。AIGC概念领涨&#xff0c;ST股、贵金属板块领跌。低价可转债集体大涨&#xff0c;广汇转债涨20%触发临停&#xff0c;广汇汽车今日上演地天板。 周三&#xff0c;A股午…

Django项目部署:uwsgi+daphne+nginx+vue部署

一、项目情况 项目根目录&#xff1a;/mnt/www/alert 虚拟环境目录&#xff1a;/mnt/www/venv/alert 激活虚拟环境&#xff1a;source /mnt/www/venv/alert/bin/activate 二、具体配置 1、uwsgi启动配置 根目录下&#xff1a;新增 uwsgi.ini 注意&#xff1a;使用9801端…

NSSCTF-Web题目17(反序列化)

目录 [SWPUCTF 2021 新生赛]pop 1、题目 2、知识点 3、思路 [NISACTF 2022]popchains 4、题目 5、知识点 6、思路 [SWPUCTF 2021 新生赛]pop 1、题目 2、知识点 php反序列化&#xff0c;代码审计 3、思路 打开题目 出现代码&#xff0c;接下来我们逐步对代码进行分析…

模型情景制作-冰镇啤酒

夏日炎炎&#xff0c;当我们在真实世界中开一瓶冰镇啤酒的时候&#xff0c;我们也可以为模型世界中的人物添加一些冰镇啤酒。 下面介绍一种快速酒瓶制造方法&#xff0c;您只需要很少工具&#xff1a; 截取尽量直的流道&#xff08;传说中的板件零件架&#xff09;,将其夹在您的…

惠普笔记本双指触摸不滚屏

查看笔记本型号 一般在笔记本背面很小的字那里 进入惠普官网 笔记本、台式机、打印机、墨盒与硒鼓 | 中国惠普 (hp.com) 选择“支持”>“解决问题”>“软件与驱动程序” 选择笔记本 输入型号&#xff0c;选择操作系统 下载驱动进行完整 重启之后进行测试

404 Not Found(nginx)

#vue-router history 配置location / {add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers *;add_header Cross-Origin-Embedder-Policy require-corp;add_header Cross-Origin-Opener-Policy same-origin;try_files $uri $uri/ router;index …

阿里云centos 7.9 使用宝塔面板部署.netcore 6.0

前言&#xff1a; 我有一个netcore6.0的系统接口和手机端程序的站点程序之前是部署在一台windows测试服务器的IIS站点中&#xff0c; 服务器最近压力太大扛不住了&#xff0c;买了一台centos7.9的阿里云服务器准备进行迁移。具体操作日记如下。 一、安装宝塔面板 这一步涉及…