1 前提
最近新上一套服務,部署在DMZ區和內網區,使用的端口有很多,其中包括2000端口,並且使用F5設備承擔應用的負載均衡功能
2 現象描述
DMZ服務器可以telnet通內網的F5設備的負載端口,並且F5把請求已經轉發到了內網的服務器上(在內網主機上可以看到F5的連接),但是發送HTTP的GET請求,會超時。
3 分析
由於DMZ與內網互聯經過了Cisco的防火牆和F5設備,排查難度較大,分析步驟如下:
- F5設備轉發了TCP的請求,因為TCP連接的確建立了。
- F5設備的某些網絡策略限制了HTTP協議,所以沒有轉發HTTP請求。
- Cisco防火牆轉發了TCP的請求,因為TCP連接會經過防火牆。
- Cisco防火牆阻斷了HTTP協議,所以應用數據包沒有到達F5設備。
- 應用服務器沒有把包發向正確的網關
4 見了鬼了
通過抓包分析,確定F5設備策略沒有問題,應用服務器路由也正確,故障點可能出現在Cisco防火牆上,經過抓包分析策略梳理,確定也沒有策略阻止HTTP數據包。
5 處理
本着設備不會騙人的這句話,想了很久,聯想到Linux上某些端口是固定給某些服務使用的,比如ssh 22,ftp 20/21,等,Cisco防火牆會不會也有自己特定的服務?通過百度搜索相關資料,發現原來2000端口被用於思科的SCCP()。如果一個支持SCCP的思科網絡訪問端口2000的服務,會有如下提示
Firewalls tend to treat port 2000 as a special port and do some funny thing with the data.
由於我們發送的非SCCP協議接受的數據包,所以被直接丟棄。
解決的辦法固然有兩種
-
關閉SCCP功能
-
更換服務器的端口
處於長遠考慮,我們選擇更換了服務端口。
6 總結
由於對設備的特性不是太了解,所以浪費了很多時間,但是好在解決問題了。 哈哈
