作者 主題: 雙路由封包回應問題  (閱讀 3130 次)

0 會員 與 1 訪客 正在閱讀本文。

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
雙路由封包回應問題
« 於: 2010-08-04 13:30 »
被測端:linux NAT主機採用multipath的雙路由方式
測試端:linux主機&windows主機
我由測試端linux主機對被測端multipath主機進行snmpget的測試,不管是測試e0或是e2均可得到mib值
我由測試端windows主機對被測端multipath主機進行snmpget的測試,只能側到e0或是e2的mib值
啟動tcpdump觀看封包:
被測端linux主機因為route cache的關係,所以不管是偵測multipath的e0或是e2,其回應的封包只會由其中一個介面回傳(reverse path)
測試端linux主機可以讀到mib值,但windows對於reverse path的封包便讀不到值
想問這其中差異為何??
測試端linux的rp_filter選項有試過啟動及關閉,但結果一樣都測的到
echo "1" > /proc/sys/net/ipv4/conf/*/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/*/rp_filter


dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
回覆: 雙路由封包回應問題
« 回覆 #1 於: 2010-08-04 15:34 »
不知 linux 被測端 ...
#ip route list
#iptables-save
設定為何 ??

iproute2 中若有使用 equalize
則同一連線就能走兩介面

搭配 iptables 時 , 是否有在  nat table POSTROUTING 做兩條該介面 NAT IP
若無 , 封包雖是走兩介面 , 但只會 NAT 成第一條碰到 routing 的介面 IP


至於測試端 , 兩台應有相同結果才是
若 3 台 4 介面插在同一台 switch 上
windows 的結果才正確

若把 switch 換成 hub
linux 的正確

所以問題出在 arp table , 而非 route cache
若使用 switch 做此 lab
需要找支援 L2 mutilcast 功能的 switch

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
回覆: 雙路由封包回應問題
« 回覆 #2 於: 2010-08-04 15:40 »
學長誤會我的架構
被測端multipath主機與測試端linux&windows主機並非在同一個lan內

multipath沒有使用equalize
當然的,兩個介面都有POSTROUTING MASQ

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
回覆: 雙路由封包回應問題
« 回覆 #3 於: 2010-08-05 05:21 »
該把架構畫清楚才是 ..
既然沒有 , 那小弟繼續猜 .. (就以另一篇 pppoe 是同一件事為根據吧)

您 #ip route list
default
   nexthop dev ppp0
   nexthop dev ppp1

在被測端試試
-A POSTROUTING -t nat -d linux_ip -o ppp0 -j SNAT --to-source ip_ppp0
-A POSTROUTING -t nat -d linux_ip -o ppp1 -j SNAT --to-source ip_ppp0
#ping -I ppp0 linux_ip
#ping -I ppp1 linux_ip
linux tcpdump 應可收到兩個

清除 nat table
-A POSTROUTING -t nat -d windows_ip -o ppp0 -j SNAT --to-source ip_ppp1
-A POSTROUTING -t nat -d windows_ip -o ppp1 -j SNAT --to-source ip_ppp1
#ping -I ppp0 windows_ip
#ping -I ppp1 windows_ip
在 windows 上收封包 , 理當一只收到一個
以上方式交叉測試

最後在以 traceroute 找問題節點
#for((i=1;i<20;i++));do ping -I ppp1 -c1 -t$i windows_ip ;done | grep From

若問題節點不在您身上
那就是 ISP 阻擋非自己網段來源 IP 的原因


所以依照結果猜測
e0 與 linux 是使用 seednet 或 sonet
e1 與 windows 是使用 hinet
« 上次編輯: 2010-08-05 07:21 由 dark »

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
回覆: 雙路由封包回應問題
« 回覆 #4 於: 2010-08-06 16:51 »
學長這篇讓我啟發一些想法,故我做了測試如下
測試端為:linux NAT,底下接windows xp
被測端為linux miltipath

1.我先在linux NAT上直接測試multipath的兩張對外界面的mib是正常的(這部份已先排除掉是ISP端的問題)
2.我用NAT底下的windowsXP進行multipath的兩張對外界面測試,得到結果如前篇所述
3.判斷是NAT底下虛擬IP的問題,我將linux的firewall全部解掉結果是一樣的
4.關閉linux NAT的rp_filter echo "0" >/proc/sys/net/ipv4/conf/all/rp_filter,結果依舊

我認為應該是NAT的socket pair處理的問題
不曉得還有哪些核心檔案必須再做調整才能
« 上次編輯: 2010-08-06 17:55 由 cisco3662 »