ICMP 重定向:如何使用 icmpush 測試它

ICMP 重定向:如何使用 icmpush 測試它

我想看看當收到 ICMP 重定向時,Linux 系統上的路由表如何變化。為此我使用

icmpush -v red -sp current-gateway -gw new-gateway -dest google.com -c host -prot tcp my-eth1-ip-address

(返回成功),但結果

route -n 

保持不變。當然我已經檢查了輸出

cat /proc/sys/net/ipv4/conf/eth1/accept_redirects

1. 這是一台 Ubuntu 12 機器,具有最新穩定版本的內核,未安裝防火牆。

那麼問題來了:可能出了什麼問題?

答案1

根據文件/網路/ip-sysctl.txt,預設情況下,僅接受路由表中已列出的網關的重新導向。

secure_redirects - 布林值
    僅接受網關的 ICMP 重定向訊息,
    在預設網關清單中列出。
    如果至少符合以下條件之一,將啟用介面的 secure_redirects:
    conf/{all,interface}/secure_redirects 設定為 TRUE,
    否則它將被禁用
    預設為真

答案2

一種假設: 的呼叫icmpush不使用外部接口eth1,而是使用 localhost 接口,lo以便核心無法識別它是來自網關的正確重定向。此外,在非常舊的 Linux 核心版本中,這些路由不會顯示在route -n.正如我所指出的,回應route -nC可能是包含臨時重定向路由的正確方法。

@grawity,關於接受為回覆另一個資料包而發送的重定向:您在某處讀過嗎?因為我對此非常感興趣。

相關內容