iptables防火墙,多IP环境下, 指定某个目的IP地址通过某个本地IP访问,策略路由!

需求

在CentOS 7.9中,若需从特定源IP(10.0.0.3)访问目标网段 1.1.1.0/24

方法一:策略路由(支持网段)

1. 创建自定义路由表

# 添加名为custom_table的路由表(ID=200)
echo "200 custom_table" >> /etc/iproute2/rt_tables

 2. 向路由表添加默认路由

# 替换10.0.0.254为实际网关(通过ip route show default查看)
ip route add default via 10.0.0.254 dev eth0 table custom_table

3. ​设置策略路由规则

# 匹配目标网段1.1.1.0/24,强制使用custom_table路由表
ip rule add to 1.1.1.0/24 lookup custom_table

4. ​绑定源IP到路由表

# 指定从该路由表发出的流量源IP为10.0.0.3
ip route add default via 10.0.0.254 dev eth0 src 10.0.0.3 table custom_table

5. ​持久化配置

# 创建规则文件(目标网段+路由表)
echo "to 1.1.1.0/24 lookup custom_table" > /etc/sysconfig/network-scripts/rule-eth0# 创建路由表文件(包含源IP配置)
echo "default via 10.0.0.254 dev eth0 src 10.0.0.3" > /etc/sysconfig/network-scripts/route-custom_table

方法二:iptables SNAT(支持网段)

1. 添加SNAT规则

# 匹配目标网段1.1.1.0/24,修改源IP为10.0.0.3
iptables -t nat -A OUTPUT -d 1.1.1.0/24 -j SNAT --to-source 10.0.0.3

2. 保存规则

# 保存规则并重启服务(需安装iptables-services)
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables

方法三

1. 使用1.1.1.1的网关:

ip route add 移动IP段1 via 移动网关 src 移动IP
ip route add 移动IP段2 via 移动网关 src 移动IP
ip route add 移动IP段3 via 移动网关 src 移动IP

验证配置

方法一验证

# 查看策略规则
ip rule show | grep "1.1.1.0/24"
# 应输出:32765:	from all to 1.1.1.0/24 lookup custom_table# 测试流量源IP(使用tcpdump抓包)
tcpdump -i eth0 src 10.0.0.3 and dst 1.1.1.0/24

方法二验证

# 查看NAT规则
iptables -t nat -L -n -v
# 应包含:SNAT       all  --  *      *       0.0.0.0/0            1.1.1.0/24          to:10.0.0.3# 测试连通性
curl --connect-timeout 5 http://1.1.1.1

注意事项

1. ​网关一致性
确保所有命令中的网关(10.0.0.254)与实际网络一致,可通过以下命令查询:

ip route show default | awk '/default/ {print $3}'

2. ​策略路由优先级
若系统已有其他路由规则,可通过调整优先级(priority参数)确保新规则生效:

ip rule add to 1.1.1.0/24 lookup custom_table priority 1000

3. 防火墙冲突
如果使用firewalld,需关闭或配置兼容规则:

systemctl stop firewalld && systemctl disable firewalld

4. ​永久生效
策略路由需确保rule-eth0和route-custom_table文件权限为644。
iptables规则需安装iptables-services并启用:

yum install iptables-services
systemctl enable iptables

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

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

相关文章

数字孪生技术引领UI前端设计新趋势:数据可视化与交互设计的深度融合

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言:数字孪生驱动 UI 设计的范式革新在大数据与三维可视化技术爆发的今天&…

【机器学习笔记 Ⅱ】6 激活函数

激活函数是神经网络的核心组件,其作用远不止“引入非线性”。以下是系统化的解析:1. 核心作用 (1) 引入非线性没有激活函数:多层神经网络等价于单层线性变换(矩阵连乘仍是线性)。加入激活函数:每层通过非线…

AI无标记动捕如何结合VR大空间技术打造沉浸式游戏体验

随着数字科技的迅猛发展,VR大空间技术正逐步成为各行业探索沉浸式体验的重要方向。在VR游戏领域,市场对于高度沉浸式体验的需求日益增长,而传统VR游戏主要依赖手柄和基础体感进行交互,而在VR大空间中,用户可以通过全身…

Qt智能指针

在 Qt 框架中,智能指针用于自动管理对象的生命周期,防止内存泄漏。以下是 Qt 中主要的智能指针及其用法详解:1. QScopedPointer作用:独占所有权,超出作用域时自动释放对象(类似 std::unique_ptr&#xff09…

408第三季part2 - 计算机网络 - 信道利用率

理解t1是发送帧的传输时间t2是确认帧的传输时间中间是传播过程这整个过程就是发送周期任何题目会有以下几种情况题目这里数据帧和确认帧长度是一样的t1 t2然后把t1的传输数据算出来然后传播是0.2sd停止等待 k1确认帧忽略t2 0t1算好后,求数据帧的长度下面是速率&…

Android framework 开发者模式下,如何修改动画过度模式

Android framework 开发者模式下, 如何修改动画过度模式 开发者模式下,动画过度 模式1.0→0.5,按如下方式修改。 开发云 - 一站式云服务平台 .../core/java/com/android/server/wm/WindowManagerService.java | 8 ---- 1 file changed, …

win11安装paddlelabel并创建目标检测项目

创建虚拟环境 conda create -n paddlelabel python3.11.11 conda activate paddlelabel通过以下命令安装 pip install --upgrade paddlelabel输入命令pdlabel运行paddlelabel,发现报错: ModuleNotFoundError: Please install connexion using the flask …

关于Novatek B/G-R/G白平衡色温坐标系再探究

目录 一、准备知识 二、色温坐标系的构建 三、Novatek白平衡色温坐标系的再探究 2.1 直线白点框 2.2双曲线白点框 四、仿真代码 之前写的一篇博文关于联咏(Novatek )白平衡色温坐标系探究-CSDN博客感觉逻辑上有些混乱,这个周末我又好好思考了下,以…

基于路径质量的AI负载均衡异常路径检测与恢复策略

AI流量往往具有突发性、大象流(大规模数据流)占比高的特点,极易造成网络拥塞热点。一条质量不佳(如高延迟、高丢包、带宽受限)的路径,不仅自身无法有效传输数据,如果ECMP继续向其分发流量&#…

ubuntu22.04 安装cuda cudnn

1.输入nvidia-smi查看可以支持安装的cuda最大版本 2.cuda与cudnn版本的选择 核心原则 向下兼容性:较新的 cuDNN 通常兼容旧版 CUDA,但反之不成立 框架依赖:优先考虑深度学习框架(TensorFlow/PyTorch)的版本要求 硬件…

5、Receiving Messages:Message Listener Containers

提供了两个MessageListenerContainer实现: KafkaMessageListenerContainer ConcurrentMessageListener容器 KafkaMessageListenerContainer在单个线程上接收来自所有主题或分区的所有消息。ConcurrentMessageListenerContainer委托给一个或多个KafkaMessageListe…

JDBC 注册驱动的常用方法详解

JDBC 注册驱动的常用方法详解 在 JDBC 中,注册驱动是建立数据库连接的第一步。以下是几种常用的驱动注册方式: 1. 显式类加载(传统方式) // 通过 Class.forName() 加载驱动类 Class.forName("com.mysql.cj.jdbc.Driver&qu…

插入数据优化

目录 一.插入数据优化 1.insert语句优化 ①批量插入 ②手动提交事务 ③主键顺序插入 2.大批量插入数据(100万条) 举例 第一步:连接数据库时,加上--local-infile属性 第二步:查看全局参数local_infile的值&…

区块链在域名系统安全中的应用进展综述

一、区块链与DNS结合的核心原理1.1 传统DNS的安全缺陷中心化架构:传统DNS依赖中心化服务器(如ICANN管理的根服务器),存在单点故障风险,易受DDoS攻击或配置错误影响。协议脆弱性:DNS协议设计之初缺乏加密和认…

GO Web 框架 Gin 完全解析与实践

目录 1. 为什么选择 Gin?解锁 Go Web 开发的超能力 Gin 的核心优势 什么时候用 Gin? 第一个 Hello World 2. 路由的艺术:从简单 GET 到复杂匹配 基础路由 高级路由技巧 性能优化小贴士 3. 中间件的魔法:让请求处理更聪明 内置中间件 自定义中间件 中间件的最佳实…

RabbitMQ使用topic Exchange实现微服务分组订阅

案例场景:用户下单后需要多个微服务(如营销、会员)分别订阅并处理订单事件,且每个微服务可能有多个集群实例,需要保证同一个微服务的集群中,只有一个实例消费到消息。不同于Kafka和rocketMQ有分组消费的功能…

kotlin 通道trysend方法

trySend 方法是 Kotlin 协程中 Channel 类的一个重要功能。它用于向通道发送元素,但与 send 方法不同的是,trySend 是非阻塞的。这意味着它不会在通道满时挂起当前协程,而是会立即返回。 trySend 方法的效果 非阻塞行为: 当你调用…

winform CheckedListBox单击选中解决方案

在WinForms的CheckedListBox控件中,默认需要双击才能切换选中状态(复选框勾选)。要实现单击即选中,需要通过代码处理鼠标点击事件并手动切换选中状态。以下是实现步骤: 1.CheckOnClick属性置为true即可。 2.通过事件处…

Docker文件操作、数据卷、挂载

一:容器文件操作 在Docker环境中,管理容器内部的文件是一个常见的需求。 无论是为了配置应用、备份数据还是调试问题,了解如何高效地进行文件操作都是非常重要的。 docker cp命令提供了一种简单的方法来在宿主主机和容器之间复制文件或目录…

接口漏洞怎么抓?Fiddler 中文版 + Postman + Wireshark 实战指南

接口安全是现代应用开发中的高危环节:一旦API存在未授权访问、参数篡改、权限绕过等漏洞,可能直接导致用户信息泄露、资金损失甚至整个平台瘫痪。对于开发和安全人员来说,光依赖后端日志排查远远不够,需要对接口进行主动安全性验证…