当前位置: 首页 > news >正文

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.lryc.cn/news/384754.html

相关文章:

  • phpMyAdmin 4.0.10 文件包含 -> getshell
  • Spring Boot中如何集成ElasticSearch进行全文搜索
  • HistoQC|病理切片的质量控制工具
  • C/C++ - 编码规范(USNA版)
  • leetcode刷MySQL记录——sum/count里加条件判断、avg求满足条件记录数占比
  • PHP的SHA256WithRSA签名和Curl POST请求函数
  • 5G RAN
  • Mybatis动态sql标签
  • Linux CentOS Suhosin禁用php5.6版本eval函数详细图文教程
  • 这5招底层逆袭玄学,一个人越来越厉害的秘诀
  • MySQL自学教程:1. MySQL简介与安装
  • Jenkins多stage共享同一变量方式
  • Ant design Vue 表格中显示不同的状态(多条件显示)
  • 如何借助物联网实现土壤监测与保护
  • Linux之prometheus安装和使用简介(一)
  • orcle数据表空间操作sql
  • 【Unity Android】Unity链接安卓手机调试
  • 数据结构与算法笔记:高级篇 - 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?
  • vue3中通过vditor插件实现自定义上传图片、录入echarts、脑图、markdown语法的编辑器
  • 揭示数据库内核的奥秘--手写数据库toadb开源项目
  • Grafana调整等待时间,避免Gateway timeout报错
  • MetaGPT全面指南:多代理协作框架的深入解析与应用
  • 图的关键路径算法
  • 模型情景制作-冰镇啤酒
  • 网页实现黑暗模式的几种方式
  • VMware Workstation环境下,邮件(E-Mail)服务的安装配置,并用Windows7来验证测试
  • 《信号与系统》复试建议
  • 代码随想录训练营Day45
  • NAT和内网穿透
  • android | 声明式编程!(笔记)