記一次抓包分析四層負載均衡TCP數據包轉發

筆者在研究四層負載均衡的時候,有讀到這麼一篇博客:

https://blog.csdn.net/friends99/article/details/79803638

文中提到的一點筆者存在一些困惑,我把原文截圖出來:
在這裏插入圖片描述

對於文章中的描述,筆者不是太理解爲什麼服務器會和客戶端直接建立連接,負載均衡會修改數據包源地址又是什麼意思?所以下面筆者做了實驗並抓包分析。

首先第一次使用的是haproxy,實驗拓撲如下
在這裏插入圖片描述

筆者將環境部署好後,用client去訪問負載均衡以請求web內容,同時分別在haproxy的內網口和client的網口上抓包進行查看,下面的截圖是抓到的包中筆者認爲比較重要的部分:

haproxy內網口

在這裏插入圖片描述

client網口
在這裏插入圖片描述

從抓到的數據包中可以分析TCP三次握手與四次揮手,負載均衡以源IP爲自己,目的IP爲後端的web,將數據包進行了轉發,可證實博客中我劃了紅線的部分

下面是對藍線部分的抓包分析,拓撲類似,僅將haproxy換成了lvs

以同樣的方法進行抓包,得到:

client網口,lvs起轉發作用

在這裏插入圖片描述

lvs內網口,可以看到web是直接將數據包回給client的

在這裏插入圖片描述

這裏我的理解是,lvs將client的請求進行轉發,轉發的時候將包的源地址(本來應該是lvs)改成了client,web根據接收請求數據包的源地址,在回包的時候直接將數據包路由給client。我想到的這麼做的理由是,client來自外網,那web向client回數據必定需要路由,若負載均衡不是網關且不修改轉發的包的源地址(這樣的話源地址是負載均衡),那麼web將會把包回給負載均衡設備,負載均衡再經過網關將數據路由給client……這麼做相當於回包的時候還要從負載均衡走一趟,浪費資源。

通過上面兩次觀察,筆者大致能理解博客中所說的意思,只是不知道有沒有理解偏差。歡迎廣大讀者留下建議,若文章中有什麼不對的地方也請批評指出。感謝!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章