凱哥java 凱哥java
安裝vsftp服務器的時候遇到的問題java
環境說明:centos
系統:阿里雲centos7安全
面板:寶塔面板服務器
問題描述:tcp
在centos7中安裝VSFTP的時候,使用命令行,ftp 而後輸入用戶名和密碼,登錄以後,put文件就能夠上次到ftp上面。以下圖:ide
可是,使用程序的話,一直提示失敗,鏈接超時。而後斷點跟着進去,進入到源碼的時候,能夠發現:__passivePort這個值是一個比較大的,並且每次仍是會變化的。查看這個端口是30442(注:本次運行後的端口是這個值,這個值是會變化的)。以下圖:阿里雲
咱們知道,ftp的默認端口是21.這個端口是沒問題的(廢話嘛,ftp命令行模式上傳文件就上傳成功了),指定端口創建ftp鏈接時候由於端口通的,因此是沒有問題的。可是,咱們在使用程序的時候,用的是被動鏈接模式PASV,創建鏈接後要進行數據傳輸的話,須要另外的高位端口的(如上圖,凱哥遇到的就是30xxx,這樣的高位端口的)。是否是由於這個高位端口沒有開通致使的呢?centos7
凱哥第一個想法就是:看看阿里雲的安全組是否是沒有開發致使。因而登錄安全組查看:命令行
曾經開經過30999這個端口。3d
再來看看防火牆是否是沒有開通這個端口:使用命令:firewall-cmd --list-ports
以下圖:
咱們能夠看到,開通了39000-40000這個範圍的端口,可是程序使用的端口是:304xx。比這個小,是否是由於這個緣由呢?
使用命令添加防火牆端口命令,以下:
firewall-cmd --zone=public --add-port=30000-40000/tcp –permanent
執行完成以後,
等會在查看,咱們能夠看到防火牆上,已經開通了端口30000-40000的。而後再阿里雲的安全組也開通這個端口:
入網:
出網:
由於凱哥使用了寶塔面板,因此在寶塔面板的安全中也放行這個端口:
修改以後,從新使用程序上傳,結果就上傳成功了!
總結:
在使用vsftpd的時候,不只須要開發21端口,還須要開放高位端口,供被動模式使用的。
凱哥在本案例中修改的地方有三個:
1:防火牆開通被動端口30000-40000
2:阿里雲安全組開發一樣範圍的端口
3:在寶塔面板安全,也放行一樣範圍的端口(注:若是沒使用寶塔的話,此步能夠省略)