Windows IIS搭建FTP服務(wù)器配置被動(dòng)端口
編輯:狂族晨曦 來(lái)源:經(jīng)驗(yàn)雜筆 日期:2020-10-31 閱讀: 4,489 次 搶個(gè)沙發(fā) 百度已收錄
時(shí)光流轉(zhuǎn),先森竟然已經(jīng)近一年沒(méi)有發(fā)過(guò)博客了,現(xiàn)在先森的工作是騰訊云公有云的大客戶售后運(yùn)維,平時(shí)比較忙,博客這邊就基本處于荒廢狀態(tài)了。
本文是昨天處理的一個(gè)客戶遇到的問(wèn)題,雖然問(wèn)題不是很難,但是比較難為先森,先森做運(yùn)維,做的是Linux運(yùn)維,對(duì)Windows著實(shí)不是很熟悉。
問(wèn)題背景
客戶反饋,Windows服務(wù)器上,配置完IIS的FTP服務(wù)器后,安全組需要配置全端口放通才能正常訪問(wèn)FTP。
Windows先森不是很懂,但是FTP還是挺熟悉的,上一家公司做運(yùn)維的時(shí)候,F(xiàn)TP環(huán)境還是搭建過(guò)不少的,不過(guò)搭建的都是vsftpd。
這個(gè)問(wèn)題先森這邊一看,想到的就是被動(dòng)端口的問(wèn)題。
FTP有主動(dòng)模式和被動(dòng)模式兩種:
主動(dòng)模式:主動(dòng)模式下,F(xiàn)TP客戶端從任意的非特殊的端口(N > 1023)連入到FTP服務(wù)器的命令端口--21端口。然后客戶端在N+1(N+1 >= 1024)端口監(jiān)聽(tīng),并且通過(guò)N+1(N+1 >= 1024)端口發(fā)送命令給FTP服務(wù)器。服務(wù)器會(huì)反過(guò)來(lái)連接用戶本地指定的數(shù)據(jù)端口,比如20端口。
被動(dòng)模式:被動(dòng)模式下,F(xiàn)TP客戶端會(huì)用一個(gè)大于等于1024的端口N去連接FTP服務(wù)器的命令端口(21端口),然后服務(wù)器側(cè)會(huì)告知客戶端一個(gè)端口,讓客戶端再用本地N+1的端口去連接服務(wù)器告知的這個(gè)端口,用于傳輸數(shù)據(jù),而服務(wù)器這個(gè)端口就叫做被動(dòng)端口
解決問(wèn)題
讓客戶參考騰訊云官方文檔《Windows 云服務(wù)器搭建 FTP 服務(wù)》中的第六步,設(shè)置安全組及防火墻:

騰訊云官方文檔-步驟6
客戶這個(gè)問(wèn)題,其實(shí)答案本身就在上圖中了。FTP的被動(dòng)模式,默認(rèn)的被動(dòng)端口范圍就是1024-65535。客戶也說(shuō)了,所有端口全放通是能夠正常使用的。所以客戶的需求是縮小被動(dòng)端口范圍。
上面的步驟6的第二點(diǎn),其實(shí)是有說(shuō)明怎么配置被動(dòng)端口范圍的。但是客戶連我們精心準(zhǔn)備的騰訊云文檔都不愿意看,難道還想讓客戶去看滿是英文的微軟官方文檔么。微軟官方文檔中的第四步也說(shuō)明了怎么配置被動(dòng)端口:

微軟官方文檔(已翻譯)
但是微軟官方文檔是真的耿直,通篇文檔一張圖片示意都沒(méi)有,且跟著做了其實(shí)也有坑。
先森這邊也讓客戶按照指引,在FTP防火墻支持中配置被動(dòng)端口的范圍。可是客戶配置之后,在安全組中放通了相應(yīng)端口,結(jié)果還是會(huì)出現(xiàn)報(bào)錯(cuò):

打開(kāi) FTP 服務(wù)器上的文件夾時(shí)發(fā)生錯(cuò)誤,請(qǐng)檢查是否有權(quán)限訪問(wèn)改文件夾。詳細(xì)信息:操作超時(shí)
這個(gè)問(wèn)題看著是權(quán)限問(wèn)題,其實(shí)還是被動(dòng)端口沒(méi)有放通的問(wèn)題導(dǎo)致。
另外有一點(diǎn),配置FTP防火墻支持的時(shí)候,除了可以配置被動(dòng)端口的范圍,還有一個(gè)“防火墻的外部 IP 地址”,最好也一并配置上,需要配置為服務(wù)器的公網(wǎng)IP地址,否則可能遇到下面的報(bào)錯(cuò):

227 Entering Passive Mode
先森對(duì)windows服務(wù)器著實(shí)不太熟悉,沒(méi)辦法,最后買(mǎi)了一臺(tái)Windows服務(wù)器按照步驟做測(cè)試。僅按照騰訊云文檔及微軟文檔配置,確實(shí)會(huì)報(bào)錯(cuò)操作超時(shí)。最后發(fā)現(xiàn),配置完成之后,還需要在“開(kāi)始->管理工具->服務(wù)”中,找到【Microsoft FTP Service】服務(wù),重啟該服務(wù)才能生效:

重啟【Microsoft FTP Service】服務(wù)
重啟服務(wù)后,先森再按照客戶的操作,直接在本地windows資源管理器中鍵入“ftp://公網(wǎng)IP:命令端口”進(jìn)行測(cè)試,訪問(wèn)正常:

測(cè)試連接FTP正常
比較迷的是,在【FTP 防火墻支持】中,“防火墻的外部 IP 地址”一經(jīng)設(shè)置,立刻生效,但同一個(gè)配置地點(diǎn)的被動(dòng)端口卻要重啟服務(wù)才能生效。可能這就像MySQL的配置,有些可以動(dòng)態(tài)生效,有些就必須重啟才能生效。且這些配置都是在IIS管理器里配置的,IIS管理器旁邊也有一個(gè)重啟的按鈕:

重啟FTP站點(diǎn)
這個(gè)重啟點(diǎn)了是一點(diǎn)用都沒(méi)有,不過(guò)溯源來(lái)看也可以理解,這畢竟是重啟的站點(diǎn),而不是服務(wù)。比較起來(lái),果然還是Linux比較可愛(ài)。
轉(zhuǎn)載請(qǐng)注明出處來(lái)自http://www.cnidcc.cn/iis_ftp_pasv.html

川公網(wǎng)安備 51011202000104號(hào)