linux下配的ftp伺服器埠僅僅開21,20埠還不夠?
租了騰訊雲伺服器來配ftp伺服器,入站規則設了20,21,22,80,但只有從電腦文件資源管理器和IE,可以成功登陸賬號,進入文件系統,而使用Firefox和chrome,則輸入完密碼按登陸後,就一直進不去文件系統,最後顯示連接超時。
於是把入站規則設為ALL全通過,就都成功登陸了,求問除了開20,21,還需要開什麼埠啊?
這年頭用FTP都不知道有主動模式和被動模式了嗎…
默認開著被動模式的FTP伺服器和客戶端交互的話,伺服器端必須能夠監聽至少一個額外的被動模式埠。所以,沒錯只開20和21不夠,需要看你的伺服器配置才知道還要開哪些入站埠。
當然,也可以只用主動模式來解決這個問題。
參考:Active FTP vs. Passive FTP, a Definitive Explanation
我談談自己的看法。
如果伺服器工作在active模式,即使瀏覽器IE也無法成功登錄,因為瀏覽器客戶端處於NAT設備的後方,只有(Port N —&> FTP control Port 21 ) 的出向entry,而沒有 ( FTP 20 --&> Port N+1) 的入向entry,所以FTP server 工作在active 模式下,所有的客戶端都無法登錄伺服器,並最終訪問文件。
既然IE可以無障礙訪問,說明伺服器可以fallback到passive模式,並且支持在port 20 埠監聽用戶的數據訪問請求,因為防火牆入站只開啟了20、21埠。
Chrome瀏覽器之所以無法工作,是因為沒有嘗試連接 port 20,而伺服器告知的&> 1023 埠,由於沒有開啟入站規則,一直處於丟包狀態,所以一旦開啟入站規則(permit any port),立馬就可以工作。FTP已經是老掉牙的協議了,如果沒有特殊需求真不推薦你用。
關於主動模式被動模式前面的答案都說了。我也不多講了,只是提醒你一下主動被動的區別。
主動模式確實只要21,20就可以了(其實20也不用開),但代價是伺服器會「主動」去連接客戶端,也就是要求你的客戶端要有外網IP以及相應埠要打開。而這對於客戶端幾乎是不可能完成的任務:哪有那麼多外網IP分給你??IPv6的話另外說。
於是就有了被動模式,被動模式是服務端再開一個埠,客戶端來連接。一般的ftp設置都有被動模式埠範圍,自己設一下,然後對應埠打開就行了。
---------------------
最後再安利一遍SSH,少年,你都用Linux了,為啥不用SCP/SFTP呢?一個埠搞定所有所有的事情。
FTP 連接有兩種模式, 第一種是主動模式, 第二種是被動模式.
主動模式下, 連接使用21埠, 傳輸信息使用20埠.
被動模式下, 連接還是21, 但是傳輸信息會隨機開啟一個高埠號. 一般1024以下的埠號是系統保留的, 所以它會開一個1024以上的埠號. 至於是什麼, 每次都可能不一樣.
我原來在設置vsftpd的時候遇到過這個問題, 修改防火牆規則開啟1024以上的入站就沒問題了
Mozilla Port Blocking 不知道跟這個有關係不,你得用ftp://開頭才能訪問這些埠。
答主問的是問題原因以及解決方法,你們還是別操心用其他什麼替代ftp了吧,——
答主不是用的RH系的發行版吧,RHEL6的默認ipt配置裡面有這麼一行,
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
當一個數據包的狀態是RELATED時,防火牆放行,man手冊裡面是這麼描述RELATED的,
RELATED -- meaning that the packet is starting a new connection, but is associated with an existing connection, such as an FTP data transfer, or an ICMP error.
看到FTP data transfer字樣了吧,然後,在RH系的發行版里有個內核模塊nf_conntrack_ftp,由於太久沒實際部署過ftp了所以記不清是否必須載入這個模塊,——
# modinfo nf_conntrack_ftp
filename: /lib/modules/4.7.0-1.el6.elrepo.x86_64/kernel/net/netfilter/nf_conntrack_ftp.ko
alias: nfct-helper-ftp
alias: ip_conntrack_ftp
description: ftp connection tracking helper
author: Rusty Russell &
license: GPL
srcversion: 8E35E77E78F5CD30F88F62E
depends: nf_conntrack
intree: Y
vermagic: 4.7.0-1.el6.elrepo.x86_64 SMP mod_unload modversions
parm: ports:array of ushort
parm: loose:bool
ftp除了21,20埠以外,傳輸數據的時候還需要大量的。臨時埠用於傳輸數據,這個埠理論上啥都可以,不過大多數軟體實現中是1024以上的埠。
所以。就2個選擇:要麼被動模式,就是要在服務端開啟防火牆,運行1024以上的埠進入(具體的埠請看你的ftp軟體的配置)
或者。主動模式:需要客戶端有公網ip,並且客戶端這邊配置防火牆,允許入站請求,通常這個是不現實的。
話說:在公網跑ftp,不怕機器變成肉便器嗎?
iptables -t filter -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
看你這描述的跡象,非常像是不同打開途徑默認選擇ftp主動模式和被動模式不同的原因。
忘了具體對應,一種情況下,伺服器端控制命令走N埠,數據走N-1埠,如21/20的搭配。另一種情況下,控制命令走21埠,數據通道走一個隨機的高位埠。
如果你能開ftp服務端的日誌,開啟debug,很容易看到客戶端的連接方式在網頁管理後台上開啟主動模式和被動模式的埠 進入配置文件將這兩個模式的埠綁定?
ftp早就過時了吧,又不安全,沒有理由再繼續假設這種服務
騷年,FTP 協議基本已經過時了
現在都是sftp了吧,是不是要開22?你全開之後netstat看一下埠唄
這個問題,騰訊雲的電話客服,會告訴你,把所有的埠打開。這個解決問題的方法真簡單粗暴。然而有安全風險。
如果想要減少開放的埠,建議用被動模式。這樣不必開放1024以上的埠。不過FlashFXP好像並不會自動換模式,chrome也不會。
passive模式
80 443如果需要再開 3306(mysql)27017(mongo),另外加一個修改過的ssh就足夠了
推薦閱讀:
※在Windows中,選擇TCP/IPv4協議設置中的」自動獲取DNS伺服器地址「,計算機究竟做了什麼?
※中國能否在未來擁有根伺服器?
※免費dns伺服器8.8.8.8 接收全世界這麼多請求,這台伺服器性能得多高啊,怎麼才能扛住這麼多請求?
※能否寫一個socket程序,連上QQ伺服器?
※如何藉助伺服器,使兩個客戶端之間建立網路連接?