FTP伺服器需要開放幾個埠
本文轉自:http://hi.baidu.com/ueszx/item/81e97dc0f11173b80d0a7b56
新買了臺伺服器,只用來提供FTP和SQL Server服務,為保證安全,只開放21和1433埠。但FTP不能訪問,於是我就花了點時間研究了一下防火牆的日誌和在網上找了些相關的資料,有了以下的總結。
由於前段時間公司新買了臺伺服器,只用來提供FTP和SQL Server服務(有固定公網IP並且對外服務),於是我就想用防火牆封住除開FTP和SQL Server之外的所有埠(也就是隻開放21和1433啦),以保證伺服器的安全,但是想不到的是開了21埠之後,FTP依舊不能訪問,讓我很納悶,於是我就花了點時間研究了一下防火牆的日誌和在網上找了些相關的資料,有了以下的總結。
1.完成一個FTP的傳輸過程不僅僅只需要21一個埠,而是2個埠,21埠只是一個命令埠,其實另外還有一個數據埠,我想這就是有些朋友在內網架設FTP並且在閘道器上做了21埠的對映之後外網還是不能訪問的原因吧,另外一個數據埠是多少呢?這又牽涉到另外一個問題。
2.FTP具有兩種模式,分別是port模式(也叫主動模式)和pasv模式(也叫被動模式),怎麼來理解這兩種模式呢?我來打個比喻吧,在主動模式下:客戶端給伺服器端的21埠發命令說,我要下載什麼什麼,並且還會說我已經打開了自己的某個埠,你就從這裡把東西給我吧,伺服器知道後就會通過另外一個數據埠把東西傳給客戶端,這就是主動模式,可以理解為服務端主動給客戶端傳輸檔案;在被動模式下:客戶端給伺服器端的21埠發命令說,我要下載什麼什麼,伺服器端知道後,就開啟一個埠,然後告訴客戶端,我已經打開了某某埠,你自己進去拿吧,於是客戶端就從那個埠進去拿檔案了,這就是被動模式,可以理解為服務端被客戶端拿走了東西,哈哈,可以看懂吧。
3.在很久以前(我也不知道多久),地球上還沒有什麼共享上網這種技術,但是後來出現了,所以也就有了下面的問題,大家都知道,共享上網就是很多臺電腦共享一個公網IP去使用internet,再打個比喻吧,某個區域網共享210.33.25.1這個公網IP上網,當一個內網使用者192.168.0.100去訪問外網的FTP伺服器時,如果採用主動模式的話,192.168.0.1告訴了FTP伺服器我需要某個檔案和我打開了x埠之後,由於共享上網的原因,192.168.0.1在出閘道器的時候自己的IP地址已經被翻譯成了210.33.25.1這個公網IP,所以伺服器端收到的訊息也就是210.33.25.1需要某個檔案並打開了x埠,FTP伺服器就會往210.33.25.1的x埠傳資料,這樣當然會連線不成功了,因為開啟x埠的並不是210.33.25.1這個地址,在這種情況下被動模式就有用了,相信大家已經能夠理解被動模式是怎麼個連線法了吧。
好了,說了這麼多,現在可以回到第一個問題了。
在主動模式中,FTP的兩個埠是相對固定的,如果命令埠是x的話,那資料埠就是x-1,也就是說預設情況下,命令埠是21,資料埠就是20;你把命令埠改成了600,那麼資料埠就是599。這樣使用防火牆就很方便了,只要開通這兩個埠就可以了,但是如果客戶端是共享上網的話那豈不是不能正常使用FTP了,這樣還是不行,一定需要被動模式。
在被動模式中就麻煩了些,預設情況下命令埠是21,但是資料埠是隨機的,這個問題又讓我頭痛了一下,還好,我又找到了辦法,因為被動模式中資料埠的範圍是可以自定義的,在此我以Serv-U 6.1.0.5版為例,在/Local Server/Settings/Advanced/中,這下好了,我把被動模式中的埠範圍也設定為20-20,那麼不管客戶端使用何種模式來訪問我的FTP,都只需要開通這兩個埠了,再加上SQL Server的1433,一臺伺服器總共才開了3個埠,這下應該比較安全了,裝上防火牆,收工。