記一次FTP服務故障分析

来源:http://www.cnblogs.com/elisun/archive/2016/05/24/5523618.html
-Advertisement-
Play Games

一、 概念理解 FTP的主動、被動模式讓人很煩,相信你認真看完下麵的描述就不會再煩了! 由於歷史原因,FTP服務預設需要有2個埠20(數據埠),21(控制埠) FTP服務的最初的工作過程是:Client請求Server的21埠建立控制連接,然後Server主動用20埠去連Client建立數 ...


一、 概念理解

FTP的主動、被動模式讓人很煩,相信你認真看完下麵的描述就不會再煩了!

由於歷史原因,FTP服務預設需要有2個埠20(數據埠),21(控制埠)

FTP服務的最初的工作過程是:Client請求Server的21埠建立控制連接,然後Server主動用20埠去連Client建立數據連接,結果總是被Client的防火牆拒之門外。(主動模式)

Server畢竟是為大多數人服務的,這樣低三下四又幹不成事固然不行,於是為瞭解決服務端被拒之門外的問題,被動模式誕生了:Client請求Server的21埠建立控制連接,然後Server告訴Client我開了哪幾個數據埠,你自己來連。(被動模式)

2種模式的區別總結為一句話:前提都是Client去請求Server建立控制連接,不同的是誰來發起數據連接。

 

二、 故障案例分析

FTP伺服器公網IP為:124.x.x.x   內網IP:192.168.1.85  服務端為Vsftpd

故障如圖(連接超時):

 

當我看到這個問題的時候,我並不知所措,也沒有仔細去分析連接的過程,我習慣性的用工具連接了一下,因為我相信工具某些方面比人更強大,果然我用CuteFTP連接正常,於是我看工具連接的日誌,註意到了一句話:

這句話是什麼意思呢?為什麼要替換呢?

我們來分析一下過程:

  1. Client向Server(公網IP)發出控制連接申請並通過賬號密碼驗證

  2. Client向Server發出PASV命令進入被動模式

  3. Server向Client返回的是監聽IP(192.168.1.85)和數據傳輸埠(38*256+254=9982)

  4. Client發現返回的IP(192.168.1.85)和之前發出的連接(124.x.x.x)不同,Client自行修改IP為正確的公網IP

  5. Client向124.x.x.x的9982埠發出數據連接申請,建立數據連接

這個分析完之後,我們再回過頭來看用命令連接時出現的問題,不難看出,是卡在了Client向Server端發出數據連接申請的時候了,為什麼?因為我們命令模式不是智能的,不會自己將Server返回的內網IP轉成公網IP,所以連192.168.1.85返回超時。

然後分析的就是為什麼會只返回內網IP?

原來,公網IP並不是配在該服務端的,而是通過路由界面     進行綁定的,所以FTP服務端程式只知道存在一個內網的IP。

解決辦法:配置文件寫入pasv_address=公網IP

# man  vsftpd.conf


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 9.虛擬存儲器 為了更加有效地管理 存儲器 且少出錯,現代系統提供了對 主存 的抽象概念,叫做 。 是硬體異常,硬體地址翻譯,主存,磁碟文件和內核軟體的完美交互。 為每個進程提供一個 大的 , 一致的 和 私有的 地址空間。 提供了3個重要能力。 將主存看成磁碟地址空間的 高速緩存 。 只保留了活動 ...
  • 1. deepin終端: sudo apt-get install virtualbox 2. 下載win7 iso文件 3. deepin終端啟動virtualbox : ./virtualbox 4. 選擇win7 iso文件 5. 進入win7安裝: 快速格式化4個分區 ,開始安裝 6. li ...
  • 前言 STM32F1系列晶元算是在STM32中最早的一系列,在實際生活中應用的比較廣泛。因此,彙總一下STM32F1系列晶元常見片內資源,每一篇文章把重點提出來講解,並提供軟體源代碼工程。 彙總常見資源:基本IO、定時器TIM、串口USART、ADC模數轉換、DAC數模轉換、SPI串列通信、EXIT ...
  • 1.利用命令模式 捕獲整個屏幕 : $ gnome-screenshot 截完屏之後我們可以設置自定義圖片存儲位置,如圖: 捕獲當前終端Terminal : $ gnome-screenshot -w 捕獲自定義區域 :$ gnome-screenshot -a 利用-B參數可以去除終端視窗的名稱狀 ...
  • 原文:http://blog.jobbole.com/101322/ 前言 看源代碼是一個程式員必須經歷的事情,也是可以提升能力的一個捷徑.個人認為: 要完全掌握一個軟體的方法只有閱讀源碼。 在Windows下有sourceinsight這個源碼閱讀軟體(雖然我沒用過,但是網上評價還不錯),由於我是 ...
  • 通常我們應用nginx做代理時,用到它的輪訓服務 #設置輪詢名稱 upstream zyy{ server 127.0.0.1:8080 #本機的apache服務 } server { listen 80; server_name test.com; root /test; location / { ...
  • 1. 查看Linux啟動的服務 chkconfig --list 查詢出所有當前運行的服務 chkconfig --list atd 查詢atd服務的當前狀態 2.停止所有服務並且在下次系統啟動時不再啟動,如下所示: chkconfig --levels 12345 NetworkManager o ...
  • 一、問題描述(預設Linux安裝的SSHD服務存在一些漏洞,特此升級) 在曾經手動升級sshd服務後發現了三個後遺症: selinux開啟的狀態下,重啟機器sshd不啟動(原因:庫文件“libcrypto.so.1.0.0”的selinux標記不正確,導致sshd無法調用訪問該文件,使用setrou ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...