0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

真實源IP怎么獲得?有這6種方法

汽車玩家 ? 來源:咔咔侃技術(shù) ? 作者:咔咔侃技術(shù) ? 2020-01-20 17:34 ? 次閱讀

獲得真實IP的6種方法

當(dāng)數(shù)據(jù)包從負(fù)載均衡器往后端轉(zhuǎn)發(fā)時候,真實源IP可在L3、L4、L7實現(xiàn),并且分別有2種方法可以獲得真實IP,因此共有6種方法:

保持L3層源IP不變,根據(jù)連接次數(shù)可以分為

● 一次連接模式,如lvs

● 二次連接模式,如haproxy的透明模式

在L4層數(shù)據(jù)里,添加源IP信息,有2種模式

● 在4層的option字段里增加源IP信息,比如tcp option、udp option

● 在4層末尾和7層開頭之間,增加proxy protocol信息

在L7層數(shù)據(jù)里,增加源IP信息,有2種模式

● 協(xié)議自帶,例如HTTP的X-FORWARD-FOR

● 業(yè)務(wù)程序自行實現(xiàn)

一次連接與二次連接

一次連接:負(fù)載均衡器對數(shù)據(jù)包僅做轉(zhuǎn)發(fā),而不對后端重新發(fā)起三次握手

二次連接:和一次連接相對應(yīng),在tcp轉(zhuǎn)發(fā)時候,對后端重新進行了三次握手。上面所講的L4和L7方法的負(fù)載均衡,都是二次連接

可以通過對比源端口是否有改變來簡單判斷是一次連接還是二次連接,端口沒改變,可以理解為一次連接,有改變就是二次連接

方法1: L3的一次連接模式

介紹:是指在網(wǎng)絡(luò)層不對源IP做修改,直接將數(shù)據(jù)包轉(zhuǎn)發(fā)給后端,當(dāng)后端接收到數(shù)據(jù)的時候,源IP就是真實IP。

實現(xiàn):LVS-DR、LVS-NAT、LVS-TUNNEL模式。其中LVS-TUNNEL比較特別,是在原有數(shù)據(jù)包的開頭封裝了IP頭,當(dāng)后端收到數(shù)據(jù)的時候,將封裝的IP頭進行解封裝,獲得的就是原有數(shù)據(jù)包。

優(yōu)點:邏輯簡單,當(dāng)負(fù)載均衡器故障切換的時候,從客戶端到后端的tcp連接不會中斷

缺點:對網(wǎng)絡(luò)架構(gòu)有要求,比如DR模式,要求后端配VIP,并且回包要能直接回到客戶機;NAT模式,要求回包經(jīng)過負(fù)載均衡器;TUNNEL模式要求后端支持IPIP隧道

方法2: L3的二次連接模式

介紹:是指負(fù)載均衡器和后端重新進行三次握手,但保持?jǐn)?shù)據(jù)包的源IP為真實IP。

實現(xiàn):haproxy(開啟tproxy透明代理模式)+ iptables(fwmark打標(biāo)記)+ 策略路由這3者組合才能實現(xiàn)

優(yōu)點:可以實現(xiàn)L7層(如HTTP/HTTPS)的負(fù)載均衡,而一次連接主要實現(xiàn)L4層的負(fù)載均衡

缺點:配置最復(fù)雜,同時要求回包經(jīng)過負(fù)載均衡器

方法3: L4的toa模式

介紹:在4層的option字段里增加源IP信息,比如在tcp option里增加源IP信息(稱為toa)、udp option里增加源IP信息(稱為uoa)

實現(xiàn):負(fù)載均衡器配置lvs-fullnat(只支持toa),iqiyi/dpvs(支持toa和uoa);后端要加載toa、uoa模塊,這個模塊的作用是替換了后端應(yīng)用程序獲取IP的系統(tǒng)接口的鉤子

優(yōu)點:對網(wǎng)絡(luò)架構(gòu)要求低

缺點:lvs-fullnat需要編譯內(nèi)核,且只支持rhel/centos 6的內(nèi)核,另外多年未更新;iqiyi/dpvs功能強大,但需要dpdk的支持;后端都需要加載toa/uoa模塊,且只支持linux系統(tǒng)。

方法4: L4的proxy protocol模式

介紹:在L7層開頭增加proxy protocol數(shù)據(jù)(該協(xié)議是haproxy發(fā)明),目前有v1(明文)和v2(二進制)版本

實現(xiàn):負(fù)載均衡器和后端同時開啟proxy protocol,haproxy和nginx均支持,不過haproxy的配置顆粒度更小,另外nginx轉(zhuǎn)發(fā)數(shù)據(jù)時候只支持v1

優(yōu)點:對網(wǎng)絡(luò)架構(gòu)要求低,只要程序支持即可,因此理論上沒有操作系統(tǒng)限制

缺點:目前支持proxy protocol的程序較少,且兩端只能都開啟或者都不開啟該協(xié)議,不能一端開一端不開

方法5: L7協(xié)議自帶,例如HTTP的X-FORWARD-FOR

介紹:最常見的方法,協(xié)議自帶源IP信息,或者可定制插入

實現(xiàn):例如HTTP協(xié)議有X-FORWARD-FOR,也可以自己將源IP插入到HTTP頭部信息里

優(yōu)點:對網(wǎng)絡(luò)架構(gòu)要求低,配置簡便

缺點:容易被偽造

方法6: L7層業(yè)務(wù)程序自行實現(xiàn)

介紹:最好的方法,就是業(yè)務(wù)方自行實現(xiàn)

實現(xiàn):業(yè)務(wù)自行實現(xiàn),例如在client端插入源IP信息,帶到server端

優(yōu)點:對網(wǎng)絡(luò)架構(gòu)無要求,只要網(wǎng)絡(luò)可通即可,只要安全做好,不容易被偽造

缺點:業(yè)務(wù)方要有一定開發(fā)能力

總結(jié)

如果能做到無狀態(tài),不需要真實源IP,是最好的。因為這樣對底層架構(gòu)沒有要求,底層架構(gòu)就可以做的更高級更彈性。

如果一定要獲得真實源IP,推薦方案的順序就是倒推,從L7到L3,即首選方法6,如果不行再選用方法5,以此類推到方法1。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 均衡器
    +關(guān)注

    關(guān)注

    9

    文章

    208

    瀏覽量

    30266
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1541

    瀏覽量

    148920
收藏 人收藏

    評論

    相關(guān)推薦

    保持電容性負(fù)載穩(wěn)定的六種方法

    本帖最后由 gk320830 于 2015-3-8 23:36 編輯 保持電容性負(fù)載穩(wěn)定的六種方法本系列的第10部分是我們所熟悉的《電氣工程》雜志(Electrical Engineering
    發(fā)表于 09-25 09:31

    labview查看本機ip的三種方法

    做TCP通訊的時候,有時候需要知道自己的IP雖然知道自己電腦ip可以不用這么麻煩,但是有時候就想用自己所學(xué)來獲得自己所需,職業(yè)病 咳咳這里給出得到本地IP的三
    發(fā)表于 11-27 17:17

    獲得E幣的10種方法

    這些是論壇里面找到的10獲得E幣的方法:0。每天登陸+1E幣(每天1次)1。發(fā)表帖子,可以得到+1點貢獻和+2E幣(不限次數(shù))2。上傳附件 +1點貢獻和+1E幣 (每天上限10次)3。自己帖子
    發(fā)表于 06-15 14:30

    啟動Redis的三種方法

    Redis筆記(1)——安裝、卸載、三種方法啟動Redis,Redis命令使用(干貨十足),Redis兩種方法設(shè)置密碼,時間復(fù)雜度(更完善哦~)
    發(fā)表于 06-08 16:09

    LwIP協(xié)議棧開發(fā)嵌入式網(wǎng)絡(luò)的三種方法有何關(guān)系

    LwIP協(xié)議棧開發(fā)嵌入式網(wǎng)絡(luò)的三種方法分析 輕量級的TCP/IP協(xié)議棧LwIP,提供了三應(yīng)用程序設(shè)計方法,且很容易被移植到多任務(wù)的操作系統(tǒng)中。本文結(jié)合μC/OS-II這一實時操作系統(tǒng)
    發(fā)表于 08-05 07:55

    噪聲系數(shù)測量的三種方法

    噪聲系數(shù)測量的三種方法 本文介紹了測量噪聲系數(shù)的三種方法:增益法、Y
    發(fā)表于 05-07 13:38 ?2118次閱讀

    解決電池問題有三種方法

    解決電池問題有三種方法      對于手機電池問題如何解決,業(yè)內(nèi)人士指出有以下三種方法:   一、發(fā)明新型電池。目前有日本生產(chǎn)商已經(jīng)展示了概念性的燃
    發(fā)表于 11-10 14:26 ?942次閱讀

    如何獲得大功率射頻信號的真實PA輸入阻抗

    如何獲得大功率射頻信號的真實PA輸入阻抗 非理想PA(power amplifier,功率放大器)的輸入阻抗是在負(fù)載拉移系統(tǒng)中采用拉移方法測量的,這
    發(fā)表于 01-13 11:05 ?1326次閱讀
    如何<b class='flag-5'>獲得</b>大功率射頻信號的<b class='flag-5'>真實</b>PA輸入阻抗

    獲得高輸出電流的三種方法介紹

    PSRR。一些客戶已經(jīng)要求在保持低噪聲和高PSRR的同時將電流增加到200mA以上。本文介紹了獲得更高輸出電流的三種方法,并提供了實用的輸入,以幫助您確定哪種方法最適合您的電路條件。這三
    的頭像 發(fā)表于 04-12 08:05 ?1.4w次閱讀
    <b class='flag-5'>獲得</b>高輸出電流的三<b class='flag-5'>種方法</b>介紹

    python統(tǒng)計詞頻的三種方法

    python統(tǒng)計詞頻的三種方法方法。
    發(fā)表于 05-25 14:33 ?2次下載

    識別電路的10種方法

    對較復(fù)雜的電路應(yīng)先將原電路簡化為等效電路,以便分析和計算。識別電路的方法很多,現(xiàn)結(jié)合具體實例介紹十種方法。
    發(fā)表于 02-08 16:20 ?243次下載
    識別電路的10<b class='flag-5'>種方法</b>

    獲得更高輸出電流的三種方法

    的79dB PSRR(1MHz)。一些客戶要求將電流提高到200mA以上,同時仍保持低噪聲和高PSRR。本文探討了獲得更高輸出電流的三種方法,并提供了實用的輸入,以幫助您確定哪種方法最適合您的電路條件。這三
    的頭像 發(fā)表于 01-08 15:32 ?5642次閱讀
    <b class='flag-5'>獲得</b>更高輸出電流的三<b class='flag-5'>種方法</b>

    服務(wù)器真實ip地址怎么隱藏?

    有用。 1、使用高防ip 若服務(wù)器IP暴露,DDoS攻擊將直接進入IP攻擊。遇到攻擊時,服務(wù)器可配備高防IP
    的頭像 發(fā)表于 05-22 15:24 ?2535次閱讀

    linux查找ip地址的三種方法

    在 Linux 系統(tǒng)中,經(jīng)常需要查找 IP 地址以進行網(wǎng)絡(luò)配置、故障排除或安全管理。無論是查找本地主機的 IP 地址還是查找其他設(shè)備的 IP 地址,本文將介紹三簡單的
    發(fā)表于 08-02 09:53 ?565次閱讀
    linux查找<b class='flag-5'>ip</b>地址的三<b class='flag-5'>種方法</b>

    linux網(wǎng)絡(luò)配置的3種方法

    Linux是一流行的操作系統(tǒng),廣泛應(yīng)用于服務(wù)器和網(wǎng)絡(luò)設(shè)備中。Linux系統(tǒng)提供了多種方法來配置網(wǎng)絡(luò)連接,使得網(wǎng)絡(luò)設(shè)置更加靈活和可定制。本文將會介紹Linux網(wǎng)絡(luò)配置的三種方法,包括命令行方式
    的頭像 發(fā)表于 11-27 14:33 ?3801次閱讀