
我有一個 ZTE mf283+ 路由器和另一個連接到它的 tp-link archer c7 路由器,我將其用作接入點。 tp-link的IP位址是192.168.0.23,我在上面設定了ftp伺服器。我嘗試了連接埠轉發,這樣我就可以從外部存取 ftp 伺服器:
但是當我嘗試從外部訪問它時,如下所示:ftp://37.xxx.xxx.xxx:21它顯示“無法訪問此網站 37.xxx.xxx.xxx 拒絕連接。我是否做錯了什麼,或者是我的 ISP 出了什麼問題?
答案1
感謝您閱讀阿蒂指出的文章。聽起來您可能只需要更多解釋。我發現了OpenBSD 的防火牆指南,「FTP 問題」部分提供資訊。不過,我將嘗試在這裡總結這個問題。
當軟體使用 Internet 協定(IPv4 或 IPv6)進行通訊時,「IP 協定」(我將其用作通用術語,同樣適用於 IPv6 和 IPv4)包括目標 IP 位址。當您使用 TCP(FTP 使用的協定)、UDP(DNS 使用的協定)、SCTP 等協定時,您還會有一個“連接埠號碼”,這也是我們使用術語“連接埠轉送”的部分原因。 (有些協定不使用“連接埠號碼”。例如,ICMP 使用 IP,並且具有“訊息類型”,但沒有“連接埠號碼”。)
大多數軟體都會向本機電腦的 TCP/IP 網路元件提供 IP 位址訊息,並且僅向遠端電腦提供「有效負載」(即遠端電腦需要接收的任何其他資訊)。例如,使用 HTTP,您的 Web 瀏覽器會告訴您的本機 TCP/IP 網路堆疊開啟到 IP 位址的連接,您的 Web 瀏覽器會告訴遠端系統它想要接收什麼檔案。您的網頁瀏覽器不會公佈您的 IP 位址。此細節由 TCP/IP 網路元件處理。
FTP 與大多數軟體不同。
FTP 實際上在其有效負載中包含 IP 位址。因此,除了提供 IP 位址作為標準 IP 封包的一部分之外,FTP 會話的一部分還提到要使用的 IP 位址。標準「連接埠轉送」僅修改 IP 位址的標準位置,而不修改 FTP 會話。
FTP 是一種非常古老的協議,是在大學和大公司將網路作為研究計畫的時代編寫的。當時,防火牆等網路防禦措施還不存在,也不需要。因此,FTP 帶來的問題並不是作者身份不佳的問題。問題在於 FTP 是為不同類型的網路而設計的。
這個問題可以透過三種不同的方式解決:
- 您可以嘗試使用「被動」FTP。這可以與位於防火牆後面的 FTP 伺服器一起使用(但負擔轉移了:FTP 用戶端不需要位於防火牆後面......因此這種情況通常也不能很好地工作)。如果此修復可行(需要 FTP 用戶端軟體支援此功能),則這可能是最快的修復(更改 FTP 用戶端軟體中的設定),但可能容易或困難,具體取決於使用的 FTP 用戶端軟體。
- 許多路由器都支援名為「ftp 代理」的選項,該選項將修改 FTP 會話,從而有效地為您解決此問題。找到並啟用這樣的選項(如果存在)
- 使用不存在相同問題的不同協議
FTP 有點獨特。當今最受歡迎的協定不存在同樣的問題,也不會存在,因為防火牆現在確實存在,所以人們意識到了這個問題。 (如果有人編寫了一個新協議並且那個人沒有意識到這個問題,那麼他們可能會在協議變得非常流行之前意識到這個問題。)然而,FTP 在某個時間點是最好的解決方案,人們不願意使用其他解決方案。造成這種情況的關鍵原因可能是許多人擁有 FTP 軟體,包括支援 FTP 的熱門 Web 瀏覽器。
如今,有比 FTP 更好的可用解決方案。使用「SSH 檔案傳輸協定」(稱為「SFTP」的協定之一)、SCP 或 HTTPS。其中任何一個都不需要特殊的代理來在防火牆上運行。對於需要輕鬆供多個客戶使用的解決方案,HTTPS 可以滿足要求。 (甚至可能還有其他選項,例如 FTPS,但我推薦我剛才提到的先前協議。)
因此,建議使用最後一個要點,但如果您覺得由於某種原因無法做到這一點,您可以嘗試第一個或第二個要點(每個要點都可能更快,但效果較差,可以解決您遇到的問題)正在處理)。