none
windows 2000 Client Ftp Linux Server RRS feed

  • 問題

  • Dear All

    我有一台Linux Ftp Server,我在多台Windows 2000 撰寫批次檔要傳送檔案到Server上
    因為防火牆關係,會使用passive mode方式進行ftp連線。

    在FTP指令中會使用literal pasv的指令來執行pasive mode傳送檔案
    不過由於連接的Port都是14xx-28xx之間,導致防火牆會因為這些Port已在列管名單中 所以會被阻擋
    這個問題在Linux client就不會發生,因為從防火牆看到Linux Client產生的Port都在4xxxx

    有沒有辦法讓Client連接時始用Passive mode時可以產生較高的Port,或是指定一個範圍

    麻煩有經驗的前輩幫忙解答
    謝謝
    2009年11月9日 上午 08:03

解答

  • Hi Cloud_Shen,

    你要明白被動模式(Passive mode) FTP 用戶端也藉由建立連線至 TCP 連接埠 21 來建立控制頻道 FTP 伺服器上啟動。 當用戶端透過命令通道,傳送 PASV 命令時, FTP 伺服器就會開啟暫時連接埠 (1024年到 5000 之間),並通知 FTP 用戶端要求從連接埠的資料傳輸。
    因為是由FTP SERVER 通知FTP CLIENT 通過什麼連接埠來資料傳輸, 所以應該是在你的Linux Ftp Server上設定passive mode port range.

    我不清楚你的.bat 檔案是如何撰寫, 但如果是用Windows 下原來的 ftp client
    可以利用 literal 指今來下給 FTP server FTP session 為 Passive Mode。方法如下:

    C:\>ftp 10.10.100.121
    Connected to 10.10.100.121.
    220 (vsFTPd 2.0.1)
    User (10.10.100.121:(none)): ftp
    331 Please specify the password.
    Password:
    230 Login successful.
    ftp> literal pasv
    227 Entering Passive Mode (10,10,100,121,242,172)
    ftp>

    可以看到進入 Passive Mode 了.使用的 port 號碼是 (242*256)+172= 62124

    • 已提議為解答 Pat Mok 2009年11月9日 下午 03:10
    • 已標示為解答 Vincent Lin 2009年11月15日 下午 04:20
    2009年11月9日 上午 09:56