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

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