20120418

[解法]500 Invalid PORT Command (FTP)

Editor: Aeon Linn @ Aeon.tw

[faq]

Q0.FTP連線時500 Invalid PORT 是什麼原因?
A0.這與425 Can't open data connection或無法取得檔案清單是相同的意味
  都是因為被動PORT連線異常造成的

Q1.為何設定好的IIS7.0+IIS6.0FTP總是沒辦法在外網連上?
A1.進階防火牆未設定開放對應PORT,
     2008之後的FTP被動PORT已經改變,並非預設的1025~5000。

Q2.能否讓FTP連線強制使用主動模式,不要觸發被動模式
A2.不行,只有具有實體IP的客戶端機器才能使用主動模式,
  若在分享器或者區網之內上網則會觸發被動模式

[Solutions]

第一種解法:
下載安裝IIS7/FTP並設定被動式資料通道的防火牆

1.若為IIS7.5則跳到步驟4
2.若為IIS7.0則移除既有的IIS6.0/FTP
3.下載並安裝IIS7.5 (只有英文版http://www.iis.net/download/FTP.)
4.開啟IIS管理員看到FTP介面
5.在伺服器節點設定「ftp firewall support 防火牆支援」
--設定port範圍為 5001-5010 (此為範例,可自行修改)
6.若有SSL則可設定external IP為伺服器對外實體IP
7.之後在此節點下的ftp站台都會依循此預設設定(port會變灰色不能改)
8.防火牆的設定有三種
--在6.0版的進階防火牆只能逐筆設定如下方(解法二-2)
--在6.1版的進階防火牆可以設定成5001-5010
--也可以設定對服務FTPSVC全面開放
9.停止再啟動服務中的FTP服務
--IIS7.0/FTP7.5在服務中叫做Microsoft FTP service
--這一步驟很重要!!!
-- 即使防火牆已經設定好了,FTP若未重啟PORT也不會生效
--如果這樣還不生效,那就IIS重啟吧 ...不須重新開機那麼嚴重

第二種解法:
不安裝新版FTP的狀況下讓SERVER2008預設的IIS6.FTP可以運作

以被動port 5001~5010為範例
1. 於IIS 6.0的被動port設定

執行 cmd
進入 \Inetpub\AdminScripts 目錄 (iis6才有)
執行 adsutil.vbs set /MSFTPSVC/PassivePortRange "5001-5010"

FTP 的 主動 或 被動 模式是 Client 端決定的,FTP Server 沒所謂的"移除",因為那是通訊協定的一部份。
(參考:miniasp)

2.為FTP passive mode開5001/TCP到5010/TCP Port 的防火牆

批次加入進階防火牆(執行後會在進階防火牆看見輸入條件)
執行cmd
執行FOR /L %I IN (5001,1,5010) DO netsh firewall add portopening TCP %I "FTP Passive Port"%I

對應的,如果之後想移除這些設定則執行下列一行
FOR /L %I IN (5001,1,5010) DO netsh firewall delete portopening TCP %I

PS.若要將以上指令寫在batch file請將%I都改成%%I才能執行
(參考:bradctchen)

[refer]
寫得相對詳細的FTP 7.5概略操作說明
 http://www.microsoft.com/taiwan/technet/iis/expand/ftp.aspx

在IIS7.5介面中設定FTP的Data Channel Port Range
http://technet.microsoft.com/zh-tw/library/dd463996(v=ws.10).aspx

在IIS7.5介面中設定FTP與進階防火牆
http://learn.iis.net/page.aspx/309/configuring-ftp-firewall-settings-in-iis-7/

#

0 意見:

張貼留言