大白話理解LVS DR模型中的arp_ignore
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LVS的DR模型配置模型
- 理解JVM,大白話解釋JVM
- 走心大白話JavaScript教程(一)理解JS中this指向的小技巧JavaScriptJS
- 大白話講解Spark中的RDDSpark
- LVS - 直接路由(DR)模式示例路由模式
- 大白話講解Promise(二)理解Promise規範Promise
- 大白話聊OSI七層模型和TCP/IP四層模型模型TCP
- 大白話JavaAgentJava
- LVS-DR直連路由模式路由模式
- LVS DR模式單網段案例模式
- LVS 負載均衡之 VS/DR 模式負載模式
- Ubuntu LVS DR模式生產環境部署Ubuntu模式
- lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)NginxTomcatRedis模式
- 大白話Swift入門Swift
- ChatGPT 大白話 SmartIDEChatGPTIDE
- LVS-DR VIP和RIP不同網段的配置方法
- 走心大白話 JavaScript 教程(二)巧妙理解 call 和 applyJavaScriptAPP
- 大白話開源協議協議
- 兩句話理解js中的thisJS
- 大白話講解Mybatis的plugin(Interceptor)的使用MyBatisPlugin
- 圖片懶載入大白話
- 大白話布隆過濾器過濾器
- [教程] 大白話 Laravel 中介軟體Laravel
- 大白話spring依賴注入Spring依賴注入
- Goland sync.Map大白話解析GoLand
- 大白話聊聊分散式事務分散式
- 用大白話講Java動態代理的原理Java
- 大白話談JVM的類載入機制JVM
- LVS + Keepalived + Nginx基於DR模式構建高可用方案Nginx模式
- Casbin中的概念簡明及使用經驗(大白話無程式碼版)
- CSS中的“大白”——CSS 動畫CSS動畫
- 使用KeepAlived來實現高可用的DR模型模型
- linux下部署lvs-DR群集構建實施過程Linux
- Linux系統(五)負載均衡LVS叢集之DR模式Linux負載模式
- LVS+keepalived DR模式配置高可用負載均衡叢集模式負載
- LVS(二)NAT模型配置模型
- php中關於會話機制的理解PHP會話
- 用大白話介紹柯里化函式函式