圖一:網路架構圖 |
我利用mininet模擬一台最基本的switch(如圖一所示),想觀察當封包要跨網段時,Switch的運作模式。首先,我從PC1發出ICMP給PC2(PC1 ping PC2-192.168.2.2),一直收不到PC1的ICMP。
而透過Routing Table猜測,假設PC1並沒有設定一條GW告訴OS從哪個網卡出去,也就是說ICMP連從被PC1發出去的機會都沒有。
因此我加入一條Static Routing Rule給PC1 (192.168.2.0/24 --> PC1-eth0)。然後再觀察發現ICMP Request一樣沒被發出來,只有ARP不斷詢問192.168.2.2的MAC,但PC2竟然沒有回應ARP Reply。
從結果猜測,當ARP進入PC2 後,當進入到Routing Table時發現,並沒有192.168.1.0/24的相對應Rule,因此又被Drop。最後我又在PC2加入一條Static Routing Rule(192.168.1.0/24 --> PC2-eth0)後,兩邊即可通訊。
從上述整理,一般封包被送出,會先經過Routing Table確認該封包要從哪個Interface出去,並且是否符合Rule。通過Routing Table後再到ARP Table確認Dst MAC與Dst IP之對應,若ARP Table已有對應資料,則改掉封包的Dst MAC欄位後送出。而若沒有對應資料則會發送ARP Request去取得對應Dst MAC。
封包送出流程如下: Packet --> Routing Table --> ARP Table
因此,若要解決這個問題的方法:
- 分別對PC1和PC2加入兩條Static Routing Rule
- 利用一台Router完成。
PC1 設定gw:192.168.1.1,PC2設定gw:192.168.2.1。此時將PC1 ping PC2時,因為Routing Rule都沒有match,則封包送到Default gw(192.168.1.1),Router收到該封包後,發現Dst ip 是PC2,則執行Forwarding到PC2。而封包回來時,PC2一樣發現沒有match到任何一個Routing Rule,因此一樣送到Default gw(192.168.2.1),此時Router又發現Dst IP是PC1,又將封包Forwarding回PC1。
沒有留言:
張貼留言