
我在我的伺服器(ubuntu 16.04 x86_64)上使用proftpd。
預設 proftpd 使用標準 21 連接埠。我可以使用活動模式從家用筆記本連接到 ftp,沒有任何問題。
現在我停止proftpd,將連接埠從21更改為10021,再次啟動服務。現在我無法使用主動模式連接,只能使用被動模式連接。
發生了什麼變化?
我也不明白,為什麼工作在主動模式下?我可以透過路由器上網。我不會在路由器上將任何連接埠轉發到我的筆記型電腦。現在,在連接時,我的筆記本(ftp 用戶端)會建立從某個連接埠> 1023 到伺服器連接埠21 的連線。的連接埠20 連接到我港口。但是,如果我的連接埠從 wan 關閉,如何建立第二個連線?
答案1
您的防火牆(路由器)有一個 FTP 連線追蹤助手。當它發現 FTP 控制連線(透過 TCP 目標連接埠 == 21 識別)時,它會監視命令。當它看到您的客戶端發送PORT
命令時,它會將其重寫(寫入您的外部 IP 位址,也可能是不同的連接埠)並追蹤來自 FTP 伺服器的預期連接。當該連接到達時,就允許它通過。
當您變更連接埠時,沒有發生任何情況,因為 10021 不被識別為 FTP 控制連線。
至少在 Linux 上,該功能就是nf_conntrack_ftp
模組,如果需要,您可以設定ports
選項以包含 10021。
PS:類似的事情可以透過伺服器前面的防火牆來完成,儘管相反:它是在被動模式傳輸上完成的,而不是主動模式。