H3C | SR6616策略路由+單臂+nat組網不通問題經驗案例

  • 2019 年 11 月 12 日
  • 筆記

組網及說明

組網中RT2做pbr和nat,對RT1訪問2.2.2.2的流量做nat轉換目的地址為4.4.4.4,並將該流量通過pbr扔到右側流量清洗設備RT5,從RT5回來後扔給RT4。

問題描述

現場做配置後10.0.0.1 ping 2.2.2.2不通。RT2對於回程流量沒有做nat。

過程分析

先考慮PBR,此類PBR+單臂的組網,RT2需要開undo ip fast-forwarding load-sharing,將流量入介面作為快轉的一個標誌,避免流量從G0/0和G5/0到RT2時都匹配到同一條快轉導致環路。

再考慮nat問題。檢查現場設備配置,全局nat static outbound 4.4.4.4 2.2.2.2,介面G0/0下nat static enable,沒問題。接下來需要看流量停在哪一步。

首先RT2上面debug nat packet,發現有10.0.0.1 ping 2.2.2.2的流量轉換為了10.0.0.1 ping 4.4.4.4,出方向nat沒問題。之後對10.0.0.1 ping 4.4.4.4的流量做流統,G5/0有發有收,說明PBR和流量清洗設備都沒問題;G0/2出方向有包,入方向沒包,說明回程報文異常,至少流量沒有從出介面回來;由於排查過程中無法操作RT4,因此只能在RT2其他所有介面入方向流統,看報文是否從其他介面回來,發現回程流量入介面為G0/1,推測RT4回程路由指向RT3。流量回到了RT2,但是沒有轉給RT1,加上debug的現象,說明回程流量沒有做nat。

結合上面PBR的情況容易聯想到,由於開了undo ip fast-forwarding load-sharing,所有流量從G0/1進到RT2時,匹配不到已有快轉表。而nat會話是跟快轉表關聯的,所以回程流量沒有做nat。要解決這個問題,需要流量從原介面回來,來迴路徑一致即可。

解決方法

1. 調整RT4路由,使來迴路徑一致;

2. RT2流量出口G0/2做nat outbound,改變報文源地址,這樣RT4回程報文目的地址為RT2介面G0/2地址,肯定會發到G0/2;

3. RT2介面G0/1再做一個pbr,將流量扔到清洗設備再繞一圈,流量回到G5/0時能匹配到快轉和nat會話;

4. 在RT2和RT3的上行口G0/2都做nat inbound static轉目的地址,不在下行口G0/0做nat outbound static,即使回程流量回到RT3,也可以由RT3做nat。