首頁  >  問答  >  主體

arp_公告

arp_ignore配置為1是為了不讓伺服器對應關於vip的請求,那麼arp_announce配置為2的作用又是什麼? ? ?

东军东军2488 天前1386

全部回覆(2)我來回復

  • @时光是个冷美人

    @时光是个冷美人2017-12-26 15:46:18

    有關arp_ignore的相關引言:


    arp_ignore:定義目標位址為本地IP的ARP詢問不同的回應模式0 

    #0 - (預設值): 回應任何網路介面上對任何本地IP位址的arp查詢請求 

    1 - 只回答目標IP位址是來訪網路介面本機位址的ARP查詢請求 

    #2 -只回答目標IP位址是來訪網路介面本地位址的ARP查詢請求,且來訪IP必須在該網路介面的子網路段內 

    3 - 不回應該網路介面的arp請求,而只對設定的唯一和連接地址做出回應 

    4-7 - 保留未使用 

    8 -不回應所有(本地地址)的arp查詢

    有關arp_announce的相關介紹:

    arp_announce:對網路介面上,本地IP位址的發出的,ARP回應,作出相應層級的限制: 確定不同程度的限制,宣告對來自本地來源IP位址發出Arp請求的介面 

    0 - (預設) 在任何網路介面(eth0,eth1,lo)上的任何本地位址 

    1 -盡量避免在該網路介面子網段的本地位址上做出arp回應. 當發起ARP請求的來源IP位址是被設定應該經由路由達到此網路介面的時候很有用.此時會檢查來訪IP是否為所有介面上的子網段內ip之一.如果改來訪IP不屬於各網路介面上的子網路段內,那麼將採用等級2的方式來進行處理. 

    2 - 對查詢目標使用最適當的本地位址.在此模式下將忽略這個IP封包的來源位址並嘗試選擇與能與該位址通訊的本地位址.首要是選擇所有的網路介面的子網路中外出存取子網路中包含該目標IP位址的本地位址. 如果沒有適當的位址被發現,將選擇目前的發送網路介面或其他的有可能接受到該ARP回應的網路介面來進行傳送.

    關於對arp_announce 理解的一點補充

    其實就是路由器的問題,因為路由器通常是動態學習ARP包的(一般動態配置DHCP的話),當內網的機器要發送一個到外部的ip包,那麼它就會請求 路由器的Mac地址,發送一個arp請求,這個arp請求裡麵包括了自己的ip位址和Mac位址,而linux預設是使用ip的來源ip位址作為arp裡面 的來源ip位址,而不是使用發送裝置上面的 ,這樣在lvs這樣的架構下,所有傳送套件都是同一個VIP位址,那麼arp請求就會包括VIP位址和裝置 Mac,而路由器收到這個arp請求就會更新自己的arp緩存,這樣就會造成ip欺騙了,VIP被搶奪,所以就會有問題。  

    arp快取為什麼會更新了,什麼時候會更新呢,為了減少arp請求的次數,當主機接收到詢問自己的arp請求的時候,就會把源ip和源Mac放入自 己的arp表裡面,方便接下來的通訊。如果收到不是詢問自己的包包(arp是廣播的,所有人都收到),就會丟掉,這樣不會造成arp表裡面無用資料太多導致 有用的記錄被刪除。

    在設定參數的時候將arp_ignore 設定為1,表示當別人的arp請求過來的時候,如果接收的裝置上面沒有這個ip,就不做出回應,預設是0,只要這台機器上面任何一個設備上面有這個ip,就回應arp請求,並且發送mac位址

    1)vip(virtual ip)。直接路由模式的vip必須跟伺服器對外提供服務的ip位址在同一個網段,且lvs 負載平衡器和其他所有提供相同功能的伺服器都使用這個vip;

    2)vip被綁定在環回介面lo0:0上,其廣播位址是其本身,子網路遮罩是255.255.255.255。這與標準的網路位址設定有很大的不同。採用這種可變長掩碼方式把網段劃分成只含一個主機位址的目的是避免ip位址衝突;

    #3)echo這段的作用是抑制arp廣播。如果不做arp抑制,將會有眾多的機器向其他宣稱:“嗨!我是奧巴馬,我在這裡呢!”,這樣就亂套了。


    回覆
    1
  • 东军

    謝謝,給你按讚!

    东军 · 2017-12-26 18:39:25
  • 取消回覆