|
大家都知道Ping是無狀態(tài)的三層報文,而Telnet是有狀態(tài)的四層以上的報文。下面從一個現(xiàn)象來說明問題。
環(huán)境
CISCO7609上面配置了多個VLan包括vlan100和vlan109,并且7609上面配置了3個VRF,vlan100屬于vlan31,vlan109屬于vlan32。不同vrf之間通過Fwsm互聯(lián)。有2臺服務(wù)器,其一(命令為SerA)的IP分別為123.37.109.15。另外一臺(命令為SerB)比較特別,其網(wǎng)口配置成了trunk模式,不同子接口IP包括123.37.100.246,123.37.108.246以及123.37.109.246等,其路由表如下:

測試結(jié)果
從123.37.109.15 ping 123.37.100.246,結(jié)果通訊正常;但是從123.37.109.15 telnet 123.37.100.246 22(此端口本地測試通訊正常)卻不通。
分析
1、從123.37.109.15 ping 123.37.100.246
經(jīng)過Fwsm轉(zhuǎn)發(fā)后,SerB從接口bond0.100上面接收到123.37.109.15的echo request的數(shù)據(jù)包,然后查找路由表發(fā)現(xiàn)返回到123.37.109.15的數(shù)據(jù)包需要通過bond0.109接口轉(zhuǎn)發(fā),所以從bond0.109轉(zhuǎn)發(fā)
數(shù)據(jù)包,經(jīng)過Fwsm轉(zhuǎn)發(fā)到源服務(wù)器SerA,通訊正常。如下SerB上bond0.100和bond0.109的抓包:


2、從123.37.109.15 telnet 123.37.100.246 的 22端口
經(jīng)過Fwsm轉(zhuǎn)發(fā)后,SerB從接口bond0.100上面接收到123.37.109.15的syn的數(shù)據(jù)包,然后查找路由表發(fā)現(xiàn)返回到123.37.109.15的數(shù)據(jù)包需要通過bond0.109接口轉(zhuǎn)發(fā),所以從bond0.109轉(zhuǎn)發(fā)ack數(shù)據(jù)包,經(jīng)
過Fwsm轉(zhuǎn)發(fā)到源服務(wù)器SerA,但是通訊卻失敗。于是抓包如下:
在SerA上抓到dst port 22的數(shù)據(jù)包:

在SerB上抓從123.37.109.15過來的ssh數(shù)據(jù)包:

在SerB上抓到123.37.109.15的返回數(shù)據(jù)包:
![請?zhí)砑用枋?src="/Files/BeyondPic/2009-6/16/1245032489166.jpg"]()
在SerA上抓到從123.37.100.246返回的數(shù)據(jù)包:
![請?zhí)砑用枋?src="/Files/BeyondPic/2009-6/16/1245032497336.jpg"]()
分析結(jié)論
所以根據(jù)上面截圖可以分析出源服務(wù)器SerA收到了發(fā)往123.37.100.246的22端口的返回數(shù)據(jù)包,而且源和目的端口都正確,但是為什么就是不通呢?而Ping包為什么又是通的呢?這就需要從Ping和Telnet上面來分析了。首先大家都知道Ping是無狀態(tài)的三層數(shù)據(jù)包,而Telnet是有狀態(tài)的四層以上的數(shù)據(jù)包,所以在針對這些數(shù)據(jù)包的處理方式上肯定存在區(qū)別。當Ping包經(jīng)過了Fwsm后,由于其為無狀態(tài)報文,所以Fwsm制作簡單處理后轉(zhuǎn)發(fā)數(shù)據(jù)包;然后當Telnet的報文經(jīng)過Fwsm后,由于其為有狀態(tài)報文,所以Fwsm需要做序列號的重新編號和狀態(tài)檢測處理,然后轉(zhuǎn)發(fā)數(shù)據(jù)包。雖然源服務(wù)器貌似接收到了Telnet的返回數(shù)據(jù)包,但是與自己發(fā)送的syn報文的序列號不匹配,所以此Telnet進程就失敗了。
|
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|