因小弟在辦公室 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 並不容易,我也請教原廠但一直沒找出問題。所以想直接請問有無網兄有類似的設定經驗,並且作業成功?
開啟後系統指定的是 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 情形一樣。
不過,您提供的方式,就是我本文 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






































































































