最近做乙個壓力測試,用到乙個工具需要把一台機器上的某個埠的tcp流量複製到另一台機器上,其中需要配置在機器a上對於所有c位址的請求路由到機器b上,然後在b上有相應的程序會處理此請求。
在a上執行以下命令:
route add -host c gw b
那麼如果在a上執行 ping c的命令時,同時在b上執行tcpdump -nn icmp應該可以得到類似以下結果:
20:23:41.522489 ip a > c: icmp echo request, id 16360, seq 407, length 64
但是實際操作時卻不起作用,在b上執行的tcpdump命令沒有任何輸出,說明路由**不成功。
排查此問題的思路:
a和b是否連通?
通過ip位址和子網掩碼計算可以判斷a和b在同乙個區域網內,並且從a 和 b之間可以雙向ping通。
那是否是a到b的路由錯誤導致?
通過對路由的調整可以看到,新加的路由是起作用的,猜測是路由過程中資料報被丟棄。
由於a和b是乙個區域網內的機器,當資料報需要從a路由到b上時,直接可以從本地arp位址快取中查詢到b的mac位址來通訊。
通過在a上檢視arp -n的結果,很奇怪的發現所有的ip對應的hwaddress都是同乙個mac位址mac_s,也就是說路由到b的資料報其實會先經過mac_s所在的機器。
經過查詢發現這個子網的交換機有arp代答功能,對於所有的arp請求都會返回相同的mac位址,也就是本交換機的mac位址mac_s,這個交換機會篩選資料報,將目的ip為c的資料報丟棄掉從而不會路由到b。
arp -s b mac_b
然後再去在a上執行ping和在b上執行tcpdump icmp命令後,可以看到b上的tcpdump命令有輸出了。
至此問題解決了,但是這種設定只能臨時解決問題,不能一直這樣,否則會使網路的架構變得複雜,對一些異常網路問題的排查有影響。
考慮到只是做臨時的測試,所以在測試完成後可以馬上恢復。
springboot 配置過濾器不起作用的原因
使用 webfilter註解配置springboot的過濾器的時候,如果出現過濾器不起作用的原因,有可能為 1 當前過濾器類上要加兩個註解 component webfilter filtername 一般寫類名 urlpatterns 2 啟動類上要加多乙個註解 servletcomponents...
Spring宣告式事物配置不起作用的常見原因
size x large color red 宣告式事物配置 color size size x large color red 注意以下幾點 color size 1 事物配置檔案 spring db.xml 注意啟用 color red color 2 事物配置檔案 spring db.xml ...
linux 配置ssh無密碼登入不起作用的解決方案
1 安裝ssh 直接 sudo apt get install openssh server2 檢視ssh執行狀態 ps e grep ssh 如果發現 sshd 和 ssh agent 即表明 ssh服務基本執行正常3 生成公鑰和私鑰 ssh keygen t rsa p 4 將公鑰追加到檔案 c...