大白話理解LVS DR模型中的arp_ignore

disable發表於2021-09-09

        LVS的DR模型中,排程器和所有的Real Server都配置了VIP,且都在同一網段內,那為了保證客戶端的arp廣播請求只被排程器所響應,必須更改Real Server的arp預設響應規則,這就是修改核心引數arp_ignore

        今天我們來解釋一下這個引數設定的意義在哪裡?為什麼要做這種設定?

        arp_ignore    作用:控制系統在收到arp廣播請求報文時,是否返回arp響應報文

                常見取值解釋:

                    0、主機上任意一個網路卡介面有arp廣播請求報文中的IP地址,就進行回應

                    1、只響應目的IP地址為接收網路卡上的本地地址的arp請求

                    2、只響應目的IP地址為接收網路卡上的本地地址的arp請求,並且arp請求的源IP必須和接收網路卡同網段

                    取值為0,舉例解釋:

                    例如:一臺Linux主機,有2塊網路卡,介面1的IP地址為:1.1.1.1,介面2的IP地址為2.2.2.2;這時該主機收到一個arp廣播請求,請求問到”誰擁有1.1.1.1的IP地址,請將你的MAC地址發給我“,不管介面1還是介面2收到這個arp廣播請求,都會進行回應,即使2.2.2.2這個介面收到這個廣播解析請求,這個介面沒配置這個IP地址,但這個介面依然可以探測到其他介面配有這個IP地址,依然會進行回應;

                    上面的闡述涉及到的核心要點:IP地址是邏輯地址,是屬於我們的Linux主機的,是由位於核心的TCP/IP協議棧處理的,不屬於網路卡本身,一定理解這點,重要重要!!!

                    取值為1,舉例解釋:

                    例如:一臺Linux主機,有2塊網路卡,介面1的IP地址為:1.1.1.1,介面2的IP地址為2.2.2.2;這時該主機收到一個arp廣播請求,請求問到”誰擁有1.1.1.1的IP地址,請將你的MAC地址發給我“,假如2.2.2.2的介面收到這個arp廣播請求,那麼不會對其做出回應,因為arp_ignore配置為1了,也就是說:收到arp廣播請求的網路卡介面,只檢視自身有沒有配置這個IP地址,如果沒有配置,即使別的介面上配置了,也不會做出相應;但如果1.1.1.1的介面收到了這個arp廣播請求,由於自身就配置了這個IP地址,那麼會回送arp響應報文

                    取值為2,舉例解釋:

                    不僅要滿足取值為1的要求,而且還會對arp請求包的源IP地址做校驗,一個網段內的才會做相應,相較於1,更加嚴格

                    例如:一臺Linux主機,有2塊網路卡,介面1的IP地址為:1.1.1.1,介面2的IP地址為2.2.2.2;這時該主機收到一個arp廣播請求,請求問到”誰擁有1.1.1.1的IP地址,請將你的MAC地址發給我“?假如1.1.1.1的介面收到了這個arp廣播請求報文,但會檢查請求報文中的源IP地址是否和1.1.1.1在同一網段內,如果在同一網段內,則回送arp相應報文;相反不在同一網段內,則依然不會回送響應報文

            總結:從上面解釋可以看出,arp_ignore從0-->1-->2,是越來越嚴格;

                取值為0,不管那個網路卡收到,只要任一網路卡有配置這個IP地址,就會響應

                取值為1,收到arp請求報文的網路卡介面,剛好該介面配置的IP地址又正好是請求的IP地址,才回應

                取值為2,不僅要滿足取值為1的條件,還要對arp請求報文的源地址做判斷,只有同一網段內,才會回應

        我們知道,排程器和所有的Real Server都配置了VIP地址,LVS的VIP配置在物理網路卡介面上,而Real Server都是配置在了本地介面lo上

        為了保證客戶端的ARP廣播請求可以只被排程器所響應,因此必須限制所有Real Server的arp響應級別,所以才設定arp_ignore為1,這樣對於Real Server來說,因為arp請求一定來自別的主機,所以接收的網路卡只能是物理介面,而Real Server又將VIP配置到了lo介面上,因此剛好不會回應,從而保證了請求只會到達排程器;

         理解了上面的內容,也就理解了為什麼我們要把排程器的VIP配置到物理介面上,而把Real Server的VIP配置到本地介面lo上

       希望上面的解釋,可以幫助大家更好的理解arp_ignore;如果你不知道什麼是arp,請參考其他資料

        歡迎關注課程:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200/viewspace-2814434/,如需轉載,請註明出處,否則將追究法律責任。

相關文章