LVS DR模式中arp_ignore和arp_announce的作用解釋

arp_ignore:定義對目標地址爲本地IPARP詢問不同的應答模式

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,eth1lo)上的任何本地地址 

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地址。

echo  "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo  "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo  "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo  "2" >/proc/sys/net/ipv4/conf/all/arp_announce



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章