Linux 設備配置多條業務路由(策略路由)時,發現「是否配置默認路由」影響特定業務通訊,但抓包顯示該業務並未走默認路由。本文記錄排查過程與根因。
現象描述
- 業務 A 有專用路由 I(目標 IP x.x.x.x)
- 業務 B 有專用路由 II(目標 IP y.y.y.y)
- 配置默認路由 III 時:業務 A 正常,走路由 I
- 刪除默認路由 III 時:業務 A 異常,無數據包發出
- 本地 Demo 模擬業務 A,無默認路由也能連通 x.x.x.x
排查結論
根因在於 DNS 解析階段:
- 業務 A 代碼中調用 libc 接口(如
getaddrinfo)解析域名
- 解析過程中,系統發起 DNS 查詢報文
- 無默認路由時,DNS 服務器 IP 無法路由到,導致解析失敗/超時
- 解析失敗導致後續連接根本不發起,抓包自然看不到業務數據包
- 有默認路由時,DNS 查詢走默認路由成功,業務流量再走策略路由
驗證方法
- 用
dig @DNS_IP domain 指定 DNS 服務器測試解析
- 在
/etc/resolv.conf 確認 DNS 服務器可達性
- 業務代碼中改用 IP 直連而非域名,可繞過 DNS 依賴
教訓
「業務流量走策略路由」不代表「所有相關流量都走策略路由」。DNS、NTP、管理平面流量往往仍依賴默認路由,缺一不可。