求救! 請問有沒有人曾將 NAS 裡的 ftp 對網外的服務,連接埠不設 21, 或在路由器用 port forwarding 將非 21轉至 21 的成功經驗嗎?

因小弟在辦公室 Windows 電腦/伺服器裡的檔案,想用 ftp 將檔案備份至遠端 NAS的資料夾裡,並想用 port forwarding 方式連接傳檔,但沒法如願。所以想問問看是否有成功經驗?

摘要:本地端用 win/cmd/ftp時,NAS使用預設 port 21 可用,但設非 21 或經由 port forwarding 到21則失敗。但本地端改用手機的 ftp App 則可對 遠端 router 設定 port forwarding 的 NAS 正確傳輸檔案。


測試狀況說明:
1. 用本地 NAS 對遠端 NAS rsync 傳輸成功,但效能不好
2. 用 Windows cmd 的 ftp 指令,連接傳輸到遠端 NAS 的 ftp server (port 21) ,成功 (router NAT 有設定虛擬伺服器外21to內21),但安全性較差。
2a. 在區網內用 Windows cmd 的 ftp 指令,連接傳輸到 NAS 的 ftp server (port 21 或 非21) ,均成功

3. 用 windows cmd 的 ftp 指令,存取遠端 NAS 的 ftp server (ftp 連接 非21 port) ,失敗。router NAT 有設定虛擬伺服器,port 非 21 轉遞為 21。NAS 的 ftp port 用 21。
4. 用 windows cmd 的 ftp 指令,存取遠端 NAS 的 ftp server (port 非21) ,失敗。router NAT 有設定虛擬伺服器,port 非 21 轉 非21 (port 不變), 且 NAS 的 ftp port 指定為此 非 21 port。

5. 用 Android 手機的 AndFTP 程式,存取遠端 NAS 的 ftp server (port 非21) ,成功。router NAT 有設定虛擬伺服器,port 非 21 轉遞為 21。NAS 的 ftp port 用 21。
6. 用 Android 手機的 AndFTP 程式,存取遠端 NAS 的 ftp server (port 非21) ,成功。router NAT 有設定虛擬伺服器,port 非 21 轉 非21 (不變)。NAS 的 ftp port 用 非21。


我在 本地端在 Vista, Win7, Win2012 測試過,結果沒有差別。遠端用了 DSM 5.1, QTS 4.1.3 兩個牌子的 NAS 測試,3,4的結果都一樣失敗。5的成功只對 DSM 5.1 做過。

無法成功,可能是
a) 我的設定不對
b) windows ftp 程式的問題
c) 路由器的問題
d) NAS的問題

討論
5. 的成功,表示路由器的 port forwarding 功能應該正常可用,似乎 router 沒問題。
6. 的失敗及 5. 的成功,似乎暗示 NAS 不接受 ftp 的port 為非預設 21 的服務。但在 2a 區網內不經路由器轉遞時,非 21 port 設定的 NAS ftp service 也能正確運作。

後來發現 NAS端 被動式連接埠設好,被動式連線自動回報外部IP設好,NAT允許那些port通過之後,6.也可成功。 所以看來是 windows cmd ftp這邊的問題。 2015/3/25



我不知是否 windows cmd 下執行 ftp ,指定遠處 server 端的連接埠功能無法發揮。 (因我不太熟也沒有 unix/linux 平台可對照測試)

我在 windows cmd 下執行的 ftp 命令如下:
> ftp
> open 122.133.144.55 123 (遠端 ip 與 port 是隨便寫的)
> userID
> password
> ls

到輸入 password 之後,前述的狀況 3.4. 看來都是成功登入的。
但到了 ls, 前述3.4. 狀況就會出現失敗訊息:
DSM 的失敗訊息是 500 Illegal PORT range rejected
QTS 的失敗訊息是 200 PORT command successful
425 Unable to build data connection: Connection timed out

由於要 debug 並不容易,我也請教原廠但一直沒找出問題。所以想直接請問有無網兄有類似的設定經驗,並且作業成功?

monchatte wrote:
因小弟在辦公室 Windows...(恕刪)


你好,除了開21 port以外,不知有無開data port呢?預設是20
小弟所開的port就不是21,而且可正常連線使用。
你好! 我沒額外開 data port, 那是在 ftp port 不為 21時需要用的嗎? 抱歉我不了解 data port 的用意。

請問你在 ftp client 端是用 windows cmd 裡的 ftp 連的嗎?


dophone wrote:
你好,除了開21 port...(恕刪)
因懷疑是不是 windows cmd 下 ftp 的問題,剛在 windows Server 2012 開啟 ftp 站台 (server) 來作對照測試。

開啟後系統指定的是 port 21, 即使我在 ftp 管理員將 binding 的 port 改為另一個 port 譬如 28, 仍然無法連線。後來至防火牆來增加一條輸入規則,允許 ftp 程式接受 port 28,這時這個 ftp server 就能接受 ip:28 的連線了。包括從瀏覽器,或是由 win7 cmd ftp 下指令。

如 ftp
open 192.168.0.50 28
就能連上 port 28 並進行讀寫。所以看來 windows/cmd 的 ftp 並沒有問題。

補充說明:
很抱歉! 前段敘述是在同一個網段測試的,也就是 windows 與 ftp server 在同一個 lan, 所以可以。

但後來回家由家裡 ftp 到公司的 windows 2012 ftp server 時,就無法正確傳輸。無論是 port forwarding 28 to 21, 或是直接指定 ftp port 為 28 雖然可以登入,但看來好像 server 端並未接受 port forwarding 與 非預設 port 21 的檔案傳輸與 ls 查看檔案。狀況與由公司登入遠端 NAS 情形一樣。
不需要改PORT 還是用 21。

對外改成其他PORT 轉接回 21 PORT 就可以了。

不管你有幾台FTP SERVER 都可以用這個方法,對外改成 77 、78 、79 ,對內還是 21。

連接時就輸入第一台 220.xxx.xx.xxx:77
第二台 220.xxx.xx.xxx:78
第三台 220.xxx.xx.xxx:79













downtodo 兄,感謝您的熱心指點。

不過,您提供的方式,就是我本文 5. 的狀況。該狀況我也能成功連線傳檔。
5. 的情形小弟一度懷疑自己雖下了 open ip 28 的指令,且設 port forwarding 28 to 21, 但也許 open port 28 與 port forwarding 根本都沒作用,實際上等於是 open ip 21 然後直接連到 ftp server 的 default port 21。

後來,我同時開啟兩台 NAS 的 ftp service, 連接埠都用 port 21, 第一台不設 port forwarding, 第二台設 port forwarding (28 轉 21), 當然,兩台 NAS 的 LAN ip 不同,在 router 的 forward 設定是不同的。
第一台是 21 to 21 with NAS_A_ip
第二台是 28 to 21 with NAS_B_ip

我由網外連入下的指令是
ftp
open wan_ip 28

成功連入後,查看連上的ip及目錄裡的檔案,才確認 port forwarding 確實成功,連進 NAS_B。


小弟無法做成功的,是 3,4,6 等方式。

3. 4. 是以 windows /命令字元模式 cmd 下執行 ftp程式擔任 ftp client 端來連。此時雖可連上 NAS 的指定連接埠或 port forwarding 至 預設的 21 port, 但實際上無法傳檔也無法流覽檔案(ls)

6. 則一樣是用手機(或平板)連,但NAS 的 ftp 連接埠改成不是 21. 此時手機的 ftp App 也沒法連。

如果您設定的 NAS 能以 windows/cmd/ftp 連上 (不是用預設 21 port, 也非在同一區網內),煩請務必指點小弟做法。
感激不盡!

downtodo wrote:
不需要改PORT ...(恕刪)
monchatte wrote:
因小弟在辦公室 Windows...(恕刪)


小弟覺得這裡面其實有很多的變數, 以樓主的例子來說, 可能 ftp client & ftp server 都是在 IP 分享器(or firewall) 後端. 而且連至遠端的 ftp server 有二台, 一為標準的 ftp 21 port, 另一為非標準 port.

ftp 發起連線時, 一般的 windows ftp GUI client 通常會自動去切換主動 ftp or 被動 ftp 連線, 或許這也是使用像 filezilla ftp client 去連線時, 通常不會有問題, 但當以 windows ftp command, 如果 client 在 firewall 後端時, 記得手動去切換為 pasv mode.

另外在 ftp server side. 現在絕大多數的 IP 分享器都夠聰明, ftp 是很特殊的 protocol, 在 firewall 端必須加以特殊的處理(一般稱為 ftp helper), 如果樓主的 ftp server side 同時啟用 21 & 非標準 ftp port 時, 也要注意該 firewall(or IP 分享器) 是否能夠處理這樣的情況. 並非 100% 的 firewall 都能夠處理非標準 ftp service.

或許 VPN 是比較容易解決樓主所遇到的問題.
FB: Pctine
monchatte wrote:
downtodo ...(恕刪)


將 NAS FTP PORT 改成 78 。

可以連沒有問題啊,21只是命令,還需要開DATA PORT。

我用4G手機連接沒有問題,也可以下載。



如果把下列PORT設定刪除,就變成無法連線了。
你公司有firewall嗎?
我測試手邊兩台DSM系統的改port都ok
DSM系統我前陣子測試DOS 6.2X版用net連線
測過兩台它們家的產品
結果在相同的設定環境下
比較高階的產品 DOS可以成功登入使用
但是低階的產品 就怎樣都卡在權限
另外高階的產品原本裡面有兩個管理群組的帳號
在DOS測試A帳號可以後登出在測試B
之後A就怎樣都卡在權限不能用了
所以我覺得它們家的系統也是怪怪的
當然在windows底下是都ok的
monchatte wrote:
因懷疑是不是 windows...(恕刪)


你好,windows cmd下的ftp預設會使用port mode來連線,至於pasv 與port這兩種連線模式了解後就知道哪邊出問題。
另外我是透過ftp軟體來連線的,並非使用windows command ftp。

設定Server command port 為1981,data port 為1403~1404


設定本身防火牆允許通過


設定NAT與forward


上圖使用pasv mode可正常連線,下圖使用port mode連線失敗。
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!