arp_announce
問題描述
arp_ignore配置為1是為了不讓服務(wù)器相應(yīng)關(guān)于vip的請求,那么arp_announce配置為2的作用又是什么???
問題解答
回答1:有關(guān)arp_ignore的相關(guān)介紹:
arp_ignore:定義對目標(biāo)地址為本地IP的ARP詢問不同的應(yīng)答模式0
0 - (默認(rèn)值): 回應(yīng)任何網(wǎng)絡(luò)接口上對任何本地IP地址的arp查詢請求
1 - 只回答目標(biāo)IP地址是來訪網(wǎng)絡(luò)接口本地地址的ARP查詢請求
2 -只回答目標(biāo)IP地址是來訪網(wǎng)絡(luò)接口本地地址的ARP查詢請求,且來訪IP必須在該網(wǎng)絡(luò)接口的子網(wǎng)段內(nèi)
3 - 不回應(yīng)該網(wǎng)絡(luò)界面的arp請求,而只對設(shè)置的唯一和連接地址做出回應(yīng)
4-7 - 保留未使用
8 -不回應(yīng)所有(本地地址)的arp查詢
有關(guān)arp_announce的相關(guān)介紹:
arp_announce:對網(wǎng)絡(luò)接口上,本地IP地址的發(fā)出的,ARP回應(yīng),作出相應(yīng)級別的限制: 確定不同程度的限制,宣布對來自本地源IP地址發(fā)出Arp請求的接口
0 - (默認(rèn)) 在任意網(wǎng)絡(luò)接口(eth0,eth1,lo)上的任何本地地址
1 -盡量避免不在該網(wǎng)絡(luò)接口子網(wǎng)段的本地地址做出arp回應(yīng). 當(dāng)發(fā)起ARP請求的源IP地址是被設(shè)置應(yīng)該經(jīng)由路由達(dá)到此網(wǎng)絡(luò)接口的時(shí)候很有用.此時(shí)會檢查來訪IP是否為所有接口上的子網(wǎng)段內(nèi)ip之一.如果改來訪IP不屬于各個(gè)網(wǎng)絡(luò)接口上的子網(wǎng)段內(nèi),那么將采用級別2的方式來進(jìn)行處理.
2 - 對查詢目標(biāo)使用最適當(dāng)?shù)谋镜氐刂?在此模式下將忽略這個(gè)IP數(shù)據(jù)包的源地址并嘗試選擇與能與該地址通信的本地地址.首要是選擇所有的網(wǎng)絡(luò)接口的子網(wǎng)中外出訪問子網(wǎng)中包含該目標(biāo)IP地址的本地地址. 如果沒有合適的地址被發(fā)現(xiàn),將選擇當(dāng)前的發(fā)送網(wǎng)絡(luò)接口或其他的有可能接受到該ARP回應(yīng)的網(wǎng)絡(luò)接口來進(jìn)行發(fā)送.
關(guān)于對arp_announce 理解的一點(diǎn)補(bǔ)充
其實(shí)就是路由器的問題,因?yàn)槁酚善饕话闶莿討B(tài)學(xué)習(xí)ARP包的(一般動態(tài)配置DHCP的話),當(dāng)內(nèi)網(wǎng)的機(jī)器要發(fā)送一個(gè)到外部的ip包,那么它就會請求 路由器的Mac地址,發(fā)送一個(gè)arp請求,這個(gè)arp請求里面包括了自己的ip地址和Mac地址,而linux默認(rèn)是使用ip的源ip地址作為arp里面 的源ip地址,而不是使用發(fā)送設(shè)備上面的 ,這樣在lvs這樣的架構(gòu)下,所有發(fā)送包都是同一個(gè)VIP地址,那么arp請求就會包括VIP地址和設(shè)備 Mac,而路由器收到這個(gè)arp請求就會更新自己的arp緩存,這樣就會造成ip欺騙了,VIP被搶奪,所以就會有問題。
arp緩存為什么會更新了,什么時(shí)候會更新呢,為了減少arp請求的次數(shù),當(dāng)主機(jī)接收到詢問自己的arp請求的時(shí)候,就會把源ip和源Mac放入自 己的arp表里面,方便接下來的通訊。如果收到不是詢問自己的包(arp是廣播的,所有人都收到),就會丟掉,這樣不會造成arp表里面無用數(shù)據(jù)太多導(dǎo)致 有用的記錄被刪除。
在設(shè)置參數(shù)的時(shí)候?qū)rp_ignore 設(shè)置為1,意味著當(dāng)別人的arp請求過來的時(shí)候,如果接收的設(shè)備上面沒有這個(gè)ip,就不做出響應(yīng),默認(rèn)是0,只要這臺機(jī)器上面任何一個(gè)設(shè)備上面有這個(gè)ip,就響應(yīng)arp請求,并發(fā)送mac地址
1)vip(virtual ip)。直接路由模式的vip必須跟服務(wù)器對外提供服務(wù)的ip地址在同一個(gè)網(wǎng)段,并且lvs 負(fù)載均衡器和其他所有提供相同功能的服務(wù)器都使用這個(gè)vip;
2)vip被綁定在環(huán)回接口lo0:0上,其廣播地址是其本身,子網(wǎng)掩碼是255.255.255.255。這與標(biāo)準(zhǔn)的網(wǎng)絡(luò)地址設(shè)置有很大的不同。采用這種可變長掩碼方式把網(wǎng)段劃分成只含一個(gè)主機(jī)地址的目的是避免ip地址沖突;
3)echo這段的作用是抑制arp廣播。如果不做arp抑制,將會有眾多的機(jī)器向其他宣稱:“嗨!我是奧巴馬,我在這里呢!”,這樣就亂套了。
相關(guān)文章:
1. phpStudy怎么把mysql升級到7.x2. python - flask jinjia2 中怎么定義嵌套變量3. centos - apache配置django報(bào)錯(cuò):cannot be loaded as Python modules4. angular.js - 百度支持_escaped_fragment_嗎?5. 大家都用什么工具管理mysql數(shù)據(jù)庫?6. vim下怎么把一大段代python碼往前移動一個(gè)tab?7. 數(shù)據(jù)庫 - mysql中有沒查看數(shù)據(jù)大小的函數(shù)??8. windows docker-machine port9. mysql優(yōu)化 - mysql count(id)查詢速度如何優(yōu)化?10. linux - 為什么我在mysql的my.cnf下找不到bind-address?
