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

防火墙来回路径不一致导致的业务异常

案例拓扑:
拓扑描述:
服务器有2块网卡,内网网卡2.2.2.1/24 网关2.2.254 提供内网用户访问;
外网网卡1.1.1.1/24,外网网关1.1.1.254 80端口映射到公网
这个时候服务器有2条默认路由,分布是0.0.0.0 0.0.0.0 1.1.1254 以及 0.0.0.0 0.0.0.0 2.2.2.254 走负载均衡
用户通过1.1.1.1 公网地址访问服务器,服务器有一定的几率通过2.2.2.254这条默认路由回复,这个时候就导致了流量来回路径在同一台设备上不一致。
在这里插入图片描述
此次设备是一台奇安信防火墙,给出如下提示:未命中会话丢包数显著增加
在这里插入图片描述
会话是绑定接口的,那么很显然来回路径不一致会导致匹配不到接口下观察到的会话,导致随机的丢包。
当服务器将内网网卡的默认网关删除,并采用明细路由后故障解除。

其他厂家也有一些说法比如:

  1. ‌问题定义与表现‌
    ‌来回路径不一致‌:指数据包进入和离开防火墙时经过不同路径(如流量从接口1出、接口2回),导致防火墙无法正确匹配会话状态。
    ‌半会话问题‌:当路径不一致时,防火墙仅记录单向会话(如仅记录请求方向),回程数据因未匹配会话表被丢弃,表现为TCP连接异常(如第三次握手失败)、ICMP部分丢包或应用访问缓慢。
    半会话问题一般常见于2台防火墙,分别串联在2条二层聚合链路上做HA的情况。
  2. ‌主要原因‌
    ‌路由规划不合理‌:网络中存在多路径但未配置对称路由,导致往返路径分离。
    ‌防火墙严格模式限制‌:默认状态下,防火墙要求会话状态严格匹配(如华为需检查会话链路状态,华三默认严格模式),非对称路径触发丢包。
    ‌安全策略缺陷‌:回程方向未配置匹配策略(防火墙优先依赖会话表,但半会话无法生成完整会话记录)。
  3. ‌解决方案‌
    ‌调整防火墙模式‌:
    华为设备:关闭会话状态检测(undo firewall session link-state check)。
    华三设备:切换为宽松模式(session state-machine mode loose),允许非对称路径通过。
    ‌注意‌:宽松模式可能降低安全性,建议优先优化组网。
    ‌临时策略调整‌:手动放行回程方向的安全策略,确保数据包不被阻断。
    ‌原进原出功能‌:若使用接口地址做SNAT或DNAT,需在接口启用原进原出(华为设备)。
  4. ‌诊断方法‌
    ‌基础测试‌:通过ping和traceroute检查路径对称性,但需注意ICMP可能被放行而掩盖问题。
    ‌高级工具‌:抓包分析TCP握手过程,或通过telnet测试应用端口连通性,结合防火墙会话表排查半会话记录。
  5. ‌长期优化建议‌
    ‌规范组网设计‌:避免多路径冗余导致非对称路由,确保往返路径一致。
    ‌会话持久化配置‌:部分设备支持会话绑定(如固定下一跳),减少路径波动影响。
    ‌关键总结‌:半会话问题本质是防火墙状态检测机制与路径不对称的冲突,需权衡安全性与可用性选择解决方案。优先通过路由优化根治,次选防火墙模式调整。

相关文章:

防火墙来回路径不一致导致的业务异常

案例拓扑: 拓扑描述: 服务器有2块网卡,内网网卡2.2.2.1/24 网关2.2.254 提供内网用户访问; 外网网卡1.1.1.1/24,外网网关1.1.1.254 80端口映射到公网 这个时候服务器有2条默认路由,分布是0.0.0.0 0.0.0.0 1…...

WTK6900C-48L:离线语音芯片重构玩具DNA,从“按键操控”到“声控陪伴”的交互跃迁

一:开发背景 随着消费升级和AI技术进步,传统玩具的机械式互动已难以满足市场需求。语音控制芯片的引入使玩具实现了从被动玩耍到智能交互的跨越式发展。通过集成高性价比的语音识别芯片,现代智能玩具不仅能精准响应儿童指令,还能实…...

[Java实战]Spring Boot 中Starter机制与自定义Starter实战(九)

[Java实战]Spring Boot 中Starter机制与自定义Starter实战(九) 引言 Spring Boot 的 Starter 是其“约定优于配置”理念的核心体现,通过简化依赖管理和自动配置,极大提升了开发效率。本文将深入剖析 Starter 的设计思想、实现原…...

电商双十一美妆数据分析

1. 数据读取与基础查看 库导入:使用 import numpy as np 和 import pandas as pd 导入常用数据分析库。数据读取: df pd.read_csv(双十一_淘宝美妆数据.csv) 读取数据文件。数据查看:通过 df.head() 查看数据前几行; df.info() 了…...

Python 数据分析与可视化:开启数据洞察之旅(5/10)

一、Python 数据分析与可视化简介 在当今数字化时代,数据就像一座蕴藏无限价值的宝藏,等待着我们去挖掘和探索。而 Python,作为数据科学领域的明星语言,凭借其丰富的库和强大的功能,成为了开启这座宝藏的关键钥匙&…...

gitkraken 使用教程

一、安装教程 安装6.5.3,之后是收费的,Windows版免安装 二、使用教程 0. 软件说明 gitkraken是一个git本地仓库管理软件,可以管理多个仓库,并且仓库可以属于多个网站多个账户。 1. 克隆仓库 选择要克隆到什么位置&#xff0…...

如何避免 JavaScript 中常见的闭包陷阱?

文章目录 1. 引言2. 什么是闭包?3. 常见的闭包陷阱及解决方案3.1 循环中的闭包陷阱3.2 内存泄漏3.3 意外的全局变量3.4 React 中的闭包陷阱 4. 总结 1. 引言 闭包(Closure)是 JavaScript 中一个强大而常用的特性,它允许函数访问其…...

【LeetCode 热题 100】二叉树 系列

📁 104. 二叉树的最大深度 深度就是树的高度,即只要左右子树其中有一个不为空,就继续往下递归,知道节点为空,向上返回。 int maxDepth(TreeNode* root) {if(root nullptr)return 0;return max(maxDepth(root->lef…...

用drawdb.app可视化创建mysql关系表

平时自己建表,没有可视化图形参考 为了便于理解,用drwadb画mysql关系表 drawDB | Online database diagram editor and SQL generator...

火绒互联网安全软件:自主引擎,精准防御

在数字时代,网络安全是每一个用户都必须重视的问题。无论是个人用户还是企业用户,都需要一款高效、可靠的反病毒软件来保护设备免受恶意软件的侵害。今天,我们要介绍的 火绒互联网安全软件,就是这样一款由资深工程师主导研发并拥有…...

Golang 应用的 CI/CD 与 K8S 自动化部署全流程指南

一、CI/CD 流程设计与工具选择 1. 技术栈选择 版本控制:Git(推荐 GitHub/GitLab)CI 工具:Jenkins/GitLab CI/GitHub Actions(本文以 GitHub Actions 为例)容器化:Docker Docker Compose制品库…...

【前端基础】8、CSS的选择器

一、什么是选择器? 根据一定的规则选出符合条件的HTML元素,从而为他们添加各种特定的样式。 二、选择器分类 通用选择器元素选择器类选择器id选择器属性选择器后代选择器兄弟选择器选择器组伪类 三、通用选择器(*) 作用&…...

Gitee Team:关键领域行业DevSecOps落地的项目管理引擎

在全球数字化转型浪潮下,关键领域行业的软件研发正面临前所未有的挑战与机遇。国产化进程的加速推进与国防装备的智能化转型,对软件研发效能和质量提出了更高要求。在这样的背景下,Gitee Team作为国内领先的研发协作平台,正在为关…...

【Redis】键值对数据库实现

目录 1、背景2、五种基本数据类型对应底层实现3、redis数据结构 1、背景 redis是一个(key-value)键值对数据库,其中value可以是五大基本数据类型:string、list、hash、set、zset,这五大基本数据类型对应着不同的底层结…...

什么是 NoSQL 数据库?它与关系型数据库 (RDBMS) 的主要区别是什么?

我们来详细分析一下 NoSQL 数据库与关系型数据库 (RDBMS) 的主要区别。 什么是 NoSQL 数据库? NoSQL (通常指 “Not Only SQL” 而不仅仅是 “No SQL”) 是一类数据库管理系统的总称。它们的设计目标是解决传统关系型数据库 (RDBMS) 在某些场景下的局限性&#xf…...

网址为 http://xxx:xxxx/的网页可能暂时无法连接,或者它已永久性地移动到了新网址

这是由于浏览器默认的非安全端口所导致的,所谓非安全端口,就是浏览器出于安全问题,会禁止一些网络浏览向外的端口。 避免使用6000,6666这样的端口 6000-7000有很多都不行,所以尽量避免使用这个区间 还有在云服务器中&#xff0c…...

《智能网联汽车 自动驾驶功能场地试验方法及要求》 GB/T 41798-2022——解读

目录 1. 适用范围与核心目标 2. 试验核心要求 2.1 试验场地与环境 2.2 试验设备与数据采集 2.3 试验车辆要求 3. 试验过程与通过条件 4. 关键试验场景与方法 4.1 交通信号识别及响应 4.2 基础设施与障碍物识别 4.3 行人及非机动车场景 4.4 紧急避险与风险策略 5. 特…...

鸿蒙跨平台开发教程之Uniapp布局基础

前两天的文章内容对uniapp开发鸿蒙应用做了一些详细的介绍,包括配置开发环境和项目结构目录解读,今天我们正式开始写代码。 入门新的开发语言往往从Hello World开始,Uniapp的初始化项目中已经写好了一个简单的demo,这里就不再赘述…...

uniapp使用npm下载

uniapp的项目在使用HBuilder X创建时是不会有node_modules文件夹的,如下图所示: 但是uni-app不管基于哪个框架,它内部一定是有node.js的,否则没有办法去实现框架层面的一些东西,只是说它略微有点差异。具体差异表现在…...

uni-app微信小程序登录流程详解

文章目录 uni-app微信小程序登录流程实战详解微信小程序登录流程概述1. 获取登录凭证(code)2. 发送登录请求3. 保存登录态4. 登录状态管理5. 应用登录状态请求拦截器中添加 token自动登录页面路由守卫 使用 Vuex 集中管理登录状态登录组件示例登录流程最…...

【C++游戏引擎开发】第34篇:C++实现反射

一、反射系统概述 1.1 反射的核心概念 1.1.1 运行时自省能力 反射允许程序在运行时动态获取和操作自身的类型信息。这种能力突破了静态类型语言的限制,使得开发者可以: 检查对象类型及其成员结构动态创建未在编译期确定的类型实例实现类型无关的通用操作接口1.1.2 元数据驱…...

C# 的异步任务中, 如何暂停, 继续,停止任务

namespace taskTest {using System;using System.Threading;using System.Threading.Tasks;public class MyService{private Task? workTask;private readonly SemaphoreSlim semaphore new SemaphoreSlim(0, 1); // 初始为 0,Start() 启动时手动放行private read…...

langchain4j中使用milvus向量数据库做RAG增加索引

安装milvus向量数据库 官方网址 https://milvus.io/zh 使用docker安装milvus mkdir -p /data/docker/milvus cd /data/docker/milvus wget https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh#在docker中启动milvus sh standalone_emb…...

MySQL SQL Mode及其说明

以下是MySQL中所有支持的SQL Mode及其说明,综合了多个来源的信息并进行了分类整理: 一、严格模式相关 STRICT_TRANS_TABLES 对事务型存储引擎(如InnoDB)启用严格数据校验。若插入非法值(如类型不符、超出范围等&#…...

Web前端最新导航

前言 本文列出了很多与前端有关的常见网站、博客、工具等,整体来看比较权威。有些东西已经过时了,我就不列出来了。学是一方面,也是最主要的方面;但还有一个作用,比如,“这个前端框架你都不知道啊”、“这个…...

2025年AI工程师认证深度解析:AAIA认证体系全景指南与实战策略

一、IAAAI认证体系演进与价值定位 1.1 国际人工智能认证发展现状 全球人工智能认证市场呈现显著分化态势。据Gartner 2025Q1报告显示,北美市场以IEEE/ACM双认证体系为主导(市占率38%),欧盟区推行AI Act合规认证(强制…...

CentOS 和 RHEL

CentOS 和 RHEL(Red Hat Enterprise Linux)关系非常紧密,简而言之: CentOS 最初是 RHEL 的免费、开源克隆版,几乎与 RHEL 二进制兼容。 CentOS 原是 RHEL 的“免费双胞胎”,但已被放弃,现在推荐…...

flask开启https服务支持

目录 一、背景 二、开启https支持 三、自签名 1、安装openssl 2、验证安装 3、自签名 四、编写代码 五、访问https接口 一、背景 最近在做自动化业务,需要兼容现在主流的框架开发的前端页面,于是到github找到了几个项目,clone下来项目并…...

统计服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息

文章目录 一、背景二、说明三、页面四、代码 前端 MonitorServiceProcessPage.vueMonitorServiceProcessTable.vueMonitorServiceProcessTableButton.vueaddMonitorTask.vueproductOperation.vueshowMonitorTask.vueMonitorSystemLog.vueMonitorTask.vueMonitorTaskLog.vueReal…...

【SGL】Scatter-Gather List内存传输技术

文章目录 1. What is SGL?2. sgl内存传输的原理2.1 核心思想2.2 sgl数据结构2.3 摘链和挂链 3. 零拷贝技术3.1 问题背景3.2 零拷贝的核心思想及实现方式 4. sgl在存储行业的应用 1. What is SGL? sgl(Scatter-Gather List)内存传…...