• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 是
  • 否
  • 全部
  • 是
  • 否
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索
问

跟踪路由下一跳问题

5天前提问
  • 0关注
  • 0收藏,146浏览
粉丝:0人 关注:0人

问题描述:

终端是Linux终端跟踪路由时中间一段没显示下一跳,组网是终端到核心交换机-------防火墙-------汇聚交换机-----接入交换机下面的三层口出去,防火墙做了策略nat,安全策略放通了trust到untrust端口是any,防火墙2台做了主备,汇聚交换机2台做的m-lag双活网关,全部设备都开启了ip ttl-expires enable和ip unreachables enable,跟踪路由时显示是地址是先核心到防火墙的下一跳然后直接就显示出最终的目的地址了,而且跟踪路由时显示的是核心到防火墙的下一跳地址是实地址不是防火墙vrrp出来的虚地址,防火墙和汇聚之间是二层口接的再写静态路由指向网关,为什么会不显示汇聚那一跳如何能解决不显示的问题

3 个回答
粉丝:115人 关注:0人

  不是流量跳过汇聚,是 防火墙做完 SNAT 之后,TTL 超时报文被 NAT 会话劫持 + 二层直连 + M‑LAG 双活网关的回程不对称 + Linux 默认 UDP traceroute,汇聚三层虽然转发报文,但它的 TTL‑expire 回包根本回不到 Linux 终端;同时 ICMP 错误报文源地址是防火墙入接口实 IP,不会用 VRRP 虚地址回复。  

那这个要怎么解决

zhiliao_s8bmq7 发表时间:5天前 更多>>

那这个要怎么解决

zhiliao_s8bmq7 发表时间:5天前
粉丝:48人 关注:2人

防火墙上静态路由下一跳为汇聚 M‑LAG 虚拟网关 IP,但互联接口是二层桥接接口(最高概率)

防火墙的路由:ip‑route‑static 目标网段 掩码 汇聚M‑LAG‑虚IP

  • 防火墙查路由下一跳是虚拟网关 IP,在二层 VLAN 内 ARP 解析得到 M‑LAG 系统的统一虚拟 MAC;
  • 防火墙不会把报文交给汇聚设备做三层转发;报文二层封装直接发给 M‑LAG 系统 MAC,报文 IP 层 TTL不做递减。

❗报文到达汇聚 M‑LAG 设备之后,才第一次做三层转发,TTL 才减 1。 Linux traceroute 探测包 TTL 到达防火墙的时候:TTL 还没耗尽;报文二层透传给到汇聚,在汇聚才发生 TTL=0、产生 ICMP TTL‑exceeded。 但是这个 ICMP 超时报文的源 IP 是汇聚 M‑LAG 的 VLANIF 虚 IP,回程报文经过防火墙 NAT 会话;防火墙的安全策略 / 状态检测会把该 ICMP 错误报文丢弃,Linux 终端收不到汇聚返回的 TTL 超时应答,所以汇聚这一跳直接消失,直接显示目的地址H3C。

解释为什么显示防火墙的实 IP:防火墙本身也会处理部分 TTL 耗尽的探测包,返回自身物理接口真实 IP,而不是 VRRP 虚 IP(VRRP 虚 IP 只用于网关接收报文,ICMP 错误报文使用出接口实 IP 回复)。

2)往返路径不对称 + M‑LAG 哈希负载分担加剧现象

防火墙→汇聚方向二层,汇聚返回防火墙方向同样二层;ICMP TTL‑exceeded 回包经过防火墙 NAT 会话,ICMP Type‑11(TTL 超时错误报文)被防火墙状态会话机制丢弃。

虽然 trust‑untrust 策略配置 any 放行业务,但 V7 防火墙 NAT 环境下,ICMP 错误报文需要专门放行,业务 permit any 不等于允许 ICMP 错误报文穿越 NAT 会话回源端。

注意:交换机侧ip ttl‑expires enable已经打开,汇聚 M‑LAG 设备内部已经生成 ICMP 超时报文,但是回包无法穿过防火墙回到 Linux 终端,不是交换机没有发送。

区分验证手段

  1. 直接在防火墙上执行 traceroute 目的 IP:此时汇聚 M‑LAG 跳数可以正常显示,证明汇聚本身可以正常生成 TTL 超时报文。
  2. 在汇聚交换机 debug icmp,看是否可以看到汇聚发出 ICMP‑TTL‑exceeded 报文;同时在防火墙看会话统计,确认该 ICMP 错误报文被丢弃。
  3. Linux 使用 TCP 模式探测:traceroute ‑T 目的IP,部分场景可以规避 UDP 探测包 NAT‑ICMP 错误丢弃问题。

整改方案(分两种思路)

方案 A:优化三层互联(根治,推荐)

防火墙与汇聚 M‑LAG 之间不要二层 VLAN 对接,改为三层互联(子接口 / 三层路由口):

  1. 防火墙侧、汇聚侧建立三层互联网段,防火墙上静态路由下一跳填写汇聚三层实接口 IP,不再填写 M‑LAG 虚拟网关 IP;
  2. 报文经过防火墙三层转发(TTL‑1),再到汇聚三层接口(TTL 再‑1);汇聚产生 ICMP‑TTL‑exceeded 报文,该 ICMP 回包源 IP 为三层互联网段地址,经过防火墙更容易正常转发回源终端,tracert 可以正常看到汇聚跳数。

优点:彻底解决隐身跳问题;缺点:需要改动现有二层对接组网。

方案 B:不改动现有二层组网,调整防火墙放行 ICMP 错误报文(临时改善,有局限)

现有二层对接保留,防火墙上配置专门放行 ICMP 错误报文(ICMP type11),使汇聚 M‑LAG 发出的 TTL‑exceeded 报文,经过防火墙 NAT 之后可以回送到 Linux 源终端。

  1. V7 防火墙 NAT 环境,需要开启nat alg icmp‑error,用于处理 NAT 之后 ICMP 错误报文转换;
system‑view nat alg icmp‑error enable
  1. 安全策略需要放行 ICMP type‑11 时间超时报文,注意:业务策略为 any,不代表自动放行 ICMP 错误报文,部分版本会话检测会拦截该类差错报文。

⚠️该方案有局限:M‑LAG 哈希负载分担场景下,仍然有部分探测报文会出现跳丢失;不能 100% 保证每次 traceroute 都完整显示全部跳数,业务完全不受影响,仅排障工具体验改善。

重要业务说明

该现象只影响 traceroute 工具显示,业务 ping、转发、NAT、HA、M‑LAG 双活业务全部正常,不影响现网业务运行,不建议为 tracert 显示完整跳数大规模改动现网架构。

补充踩坑点

  1. 不要混淆 VRRP 虚 IP 与 M‑LAG 双活网关:防火墙 VRRP 仅用于内网侧,防火墙去往汇聚的静态路由下一跳指向 M‑LAG 虚网关,就会触发 “二层透传、TTL 不在防火墙递减” 这个现象。
  2. Linux traceroute 默认使用 UDP 高阶端口探测包;Windows tracert 默认使用 ICMP Echo 探测包,二者行为会有区别,同一网络 Windows tracert 输出结果可能和 Linux 不一样。

总结:

  1. 根因:防火墙二层对接 M‑LAG 汇聚,静态路由下一跳指向 M‑LAG 虚拟网关,报文二层透传给汇聚,在汇聚才发生 TTL 耗尽;汇聚发出 ICMP‑TTL‑exceeded 回包被防火墙 NAT 会话拦截,终端收不到应答,汇聚跳隐身。
  2. 根治:防火墙‑汇聚改成三层互联;兼容方案开启nat alg icmp‑error enable放行 ICMP 差错报文。
  3. 业务不受影响,仅 traceroute 工具显示异常。


按方案b的配置改还是不行

zhiliao_s8bmq7 发表时间:5天前 更多>>

按方案b的配置改还是不行

zhiliao_s8bmq7 发表时间:5天前
粉丝:19人 关注:9人

根据你的描述,问题核心是防火墙NAT导致中间跳数不显示,以及下一跳显示实地址而非VRRP虚地址。
原因分析:
1. 中间跳不显示:防火墙做了策略NAT(源地址转换),ICMP超时报文返回时,防火墙对返回的ICMP TTL超时报文处理不当,或汇聚/接入交换机对TTL超时报文的源地址处理导致中间跳被隐藏。常见原因是防火墙NAT后,返回的ICMP超时报文源IP被转换,Linux traceroute无法识别中间节点。
2. 显示实地址而非虚地址:防火墙主备场景下,ICMP超时报文从防火墙出接口发出时,源IP默认使用出接口物理地址,而非VRRP虚地址。需在防火墙接口下配置icmp-error source-address或类似命令强制使用虚地址。
排查步骤:
1. 在防火墙抓包确认:
从终端发出的UDP/TCP探测报文是否被NAT转换。
返回的ICMP超时报文源IP是物理地址还是虚地址。
中间跳(汇聚/接入)是否正常返回ICMP超时报文。
2. 在汇聚交换机上开启debug或抓包,确认是否收到探测报文并返回ICMP超时。
3. 检查防火墙NAT策略是否匹配了所有从trust到untrust的流量,包括TTL=1的探测报文。
解决建议:
1. 防火墙接口下配置ICMP差错报文源地址使用VRRP虚地址:

interface GigabitEthernet1/0/x
icmp-error source-address vrrp

或根据具体型号使用ip icmp error source-address命令。
2. 调整NAT策略,避免对TTL超时报文进行源地址转换,或配置NAT exempt排除探测流量。
3. 若需显示中间跳,确保防火墙对TTL=1的报文正常返回ICMP超时,且源地址为虚地址。若防火墙丢弃了TTL超时报文,需放通相关ICMP差错报文。
4. 在汇聚和接入交换机上确认ip ttl-expires enable和ip unreachables enable已全局和接口下生效。
关键命令:
防火墙:display nat session查看NAT会话,debugging ip icmp查看ICMP处理。
交换机:display ip ttl-expires、display ip unreachables确认功能开启。
建议优先在防火墙侧抓包定位,确认ICMP超时报文是否正常发出及源地址情况。

编辑答案

你正在编辑答案

如果你要对问题或其他回答进行点评或询问,请使用评论功能。

✖

分享扩散:

➤

提出建议

✖

    +
✖

亲~登录后才可以操作哦!

确定
✖

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub
✖

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作

✖

举报

×

侵犯我的权益 >
对根叔社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明