歡迎您光臨本站 註冊首頁

案例分享:伺服器間經歷N層防火牆后ftp絕症的處理全過程

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

案例分享:伺服器間經歷N層防火牆后ftp絕症的處理全過程

哥們,看帖要推薦啊,點這裡:em27:


老老實實,腳踏實地,從基礎分析,解決ftp絕症案例分享.

在遇到這個問題時,本人也是vsftp菜鳥,在解決問題時逐步成長,希望這個貼能夠給新手們提供一個解決問題的思路。

點此推薦:http://blog.chinaunix.net/u2/star.php?blogid=12442


【背景描述】

兩台伺服器間,間隔了N層防火牆,應用需要通過ftp傳遞文件。

server-a----firewall.......firewall----server-b(123.123.123.123)
                             |
                其他網段機器(辦公地)

伺服器位置離辦公地很遠,到現場難度極大。

【問題現象】
伺服器b ftp client  ----->  伺服器a的ftp server OK
伺服器a ftp client  ----->  伺服器b的ftp server:卡住鳥!,如下所示

$ ftp 123.123.123.123
Connected to 123.123.123.123.
220 (vsFTPd 2.0.5)                   //卡在這裡,過了NNN久,大約10分鐘              
421 Timeout.
No control connection for command: Illegal seek
KERBEROS_V4 rejected as an authentication type
Name (123.123.123.123:ftpuser): ftpuser                   //輸入后就斷開連接了        
No control connection for command: No such file or directory
Login failed.
No control connection for command: No such file or directory
ftp>


【問題分析】

首先懷疑可能防火牆配置有問題

[*]先google一把,找出幾篇同樣問題的貼,然而沒有答案。[*]互ping,OK(判斷網路連接沒問題)[*]從server-a telnet到server-b沒問題(判斷各級防火牆功能沒問題)[*]server-b自己連自己的ftp服務沒問題(判斷伺服器端沒問題)[*]與server-b同一防火牆的設備連server-b的ftp服務沒問題(判斷server-b直連的防火牆沒問題)[*]其他網段機器連server-b的ftp服務沒問題(判斷中間防火牆沒問題)[*]其他網段機器連server-a的ftp服務沒問題(判斷server-a端的防火牆沒問題)[*]server-a連與它同一防火牆的設備的ftp服務沒問題(判斷server-a的ftp客戶端工作性沒問題)暈死鳥,各種分析到此為止,莫非此題無解?
一怒之下,把各級防火牆的相關訪問策略全部Permit all,結果問題依舊。

初步判斷:問題出在server-a的ftp客戶端程序上

[*]於是在其他網段(辦公地)開了個虛擬機,安裝了一個和server-a一樣版本的操作系統,從虛擬機上再次嘗試ftp,問題依舊,果然是server-a的ftp客戶端程序問題!
【問題處理】

1、開ftp命令的診斷模式,看ftp協議到底在幹嘛

$ ftp -d 123.123.123.123
Connected to 123.123.123.123.
220 (vsFTPd 2.0.5)
---> AUTH GSSAPI                        //卡在這裡,過了NNN久,大約10分鐘,看來是客戶端發出的"AUTH GSSAPI"命令出了問題
421 Timeout.
---> AUTH KERBEROS_V4
No control connection for command: Illegal seek
KERBEROS_V4 rejected as an authentication type
Name (123.123.123.123:ftpuser): ftpuser                   //輸入后就斷開連接了      
---> USER ftpuser
No control connection for command: No such file or directory
Login failed.
---> SYST
No control connection for command: No such file or directory
ftp>

2、抓包

看來是ftp客戶端程序與ftp伺服器端程序在協商AUTH方面出了問題。

3、man ftp
在server-a的幫助手冊頁中看到,ftp命令會發出AUTH命令,使用本地所支持的驗證類型,嘗試與ftp伺服器端協商驗證問題。如果該驗證類型被伺服器接受,接著就通過ADAT命令處理相應的驗證協議。

看來只要不讓ftp命令使用這個功能即可

4、讓ftp進行不驗證的連接

# ftp -d -u 伺服器b
Connected to 123.123.123.123.
220 (vsFTPd 2.0.5)
---> SYST
530 Please login with USER and PASS.
ftp> user
(username) itms
---> USER itms
331 Please specify the password.
Password:
---> PASS XXXX
230 Login successful.
ftp> ls   
---> PASV
227 Entering Passive Mode (123,123,123,123,51,43,54)       新問題出現了,被動模式連接超時
ftp: connect: Connection timed out
ftp>

5、這個問題好辦,讓ftp使用主動模式即可
繼續看幫助,得知用passive指令看切換主動和被動模式

要深入了解ftp的主動和被動模式的區別,可參考:http://bbs.chinaunix.net/thread-574966-1-1.html

ftp> passive
Passive mode off.
ftp> ls
---> PORT 123,123,123,123,87,227
200 PORT command successful. Consider using PASV.
---> LIST
150 Here comes the directory listing.
-rwxr-xr-x    1 ftp      ftp           684 Dec 26 10:38 CAP.env
drwxr-xr-x    7 ftp      ftp           256 Dec 28 03:53 CAP_HOME
....


【案例總結】

終於解決了這個號稱絕症的問題,總結起來其實很簡單:
1、讓客戶端程序不使用AUTH進行ftp連接:

[*]使用ftp的-u選項
2、用主動模式傳遞數據:

[*]連接上后使用passive指令切換主動和被動模式
但最關鍵的是在於處理問題的整個分析過程,希望對大家有所幫助。

獨樂樂不如眾樂樂,點此推薦與眾多CUer分享此文:http://blog.chinaunix.net/u2/star.php?blogid=12442

[ 本帖最後由 yuhuohu 於 2009-7-4 20:35 編輯 ]
《解決方案》

謝謝 支持
有時候我遇到問題 完全摸不著頭腦該從那裡入手
解決問題的能力是其次
思路才是最重要的
《解決方案》

DD

hei,guy ,the method you gave us is so nice ,think for your kindly
《解決方案》

使用sftp不行嗎?還是用sftp方便一些.
《解決方案》

頂,多謝lz
《解決方案》

原帖由 我愛臭豆腐 於 2007-12-29 22:29 發表 http://bbs.chinaunix.net/images/common/back.gif
使用sftp不行嗎?還是用sftp方便一些.

server-b是人家的生產系統。。。

偶 能動的只能是server-a和server-a的直連防火牆,當初簡直是苦死了
《解決方案》

「【案例總結】
...
1、讓客戶端程序不使用AUTH進行ftp連接:
        * 使用ftp的-u選項
..."

Solaris 上的 FTP Client 好像沒有 「-u」 選項。
《解決方案》

原帖由 susbin 於 2007-12-31 09:48 發表 http://bbs.chinaunix.net/images/common/back.gif
「【案例總結】
...
1、讓客戶端程序不使用AUTH進行ftp連接:
        * 使用ftp的-u選項
..."

Solaris 上的 FTP Client 好像沒有 「-u」 選項。

嘿嘿,高人,果然厲害。server-a是redhat
《解決方案》

好帖子啊,頂起來!!!
《解決方案》

你的防火牆是linux做的嗎?


[火星人 ] 案例分享:伺服器間經歷N層防火牆后ftp絕症的處理全過程已經有935次圍觀

http://coctec.com/docs/service/show-post-32820.html