码迷,mamicode.com
首页 > 其他好文 > 详细

ARP报文与arp_ignore arp_announce

时间:2016-01-22 18:27:14      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:网络   arp   数据包   

背景:

(1)根据缺省的TCP/IP协议栈处理,响应报文的源地址等于请求报文的目的IP。

(2)关于ARP表: IP、MAC、网络接口的映射表;列表中的IP都属于本设备所在的网段,发送/转发非本地网段时候是通过网关,所以只需要使用网关对应的MAC即可。

(3)ARP条目更新的条件(满足任意一个即可): 

1、收到ARP request:目的MAC是广播,且Target IP是本机上的IP;(这里说Target IP是为了与目的IP区分

2、收到ARP reply:目的MAC是广播或本机MAC,且ARP表中已经存在该条目;(如免费ARP报文和自身发出请求后的应答)

关于上述提到的Target IP,指的是ARP报文中请求的目标IP,ARP报文不属于IP报文,具体结构如下图:(不纠结ARP协议属于二层还是三层协议)


技术分享


      由于是请求目标IP的MAC,所以Target MAC为全0待填充,这里需要注意的是ARP报文的目的MAC与Target MAC,由于报文是以广播形式发送,所以二层的目的MAC是全F,而请求的Target MAC是属于三层上的数据,全0待填充;Target MAC只是Wireshark的显示,实际数据包是直接把四个值连在一起。APP reply报文则是单播,结构跟ARP request一样,目的MAC改成ARP request的源MAC,三层数据上,则把请求的MAC填上,所有源和目的对调,就是说,Sender MAC会等于源MAC,Target MAC等于目的MAC。


(4)免费ARP:可用于检测IP冲突和更新ARP条目,每次设置新IP和启动网络服务的时候会发送。

二层:源MAC为发送者MAC,目的MAC为全F

三层: 首先会发4个(Windows发3个,隔秒发送)Sender IP为全0的ARP包;没有IP冲突的情况下,Linux(CentOS 6.4)会先发送一个Target MAC=Sender MAC=源MAC、Target IP=Sender IP=发送者IP的免费ARP包,接着发送一个Target MAC=F、其他跟前一个包相同的免费ARP包;Windows(Win10)则只发送一个Target MAC=0、Sender MAC=源MAC、Target IP=Sender IP=发送者IP的免费ARP包


正题:


在配置LVS负载均衡架构的时候需要在RealServer上抑制ARP,具体是arp_ignore=1,arp_announce=2

arp_ignore: (回应ARP)

0:回应任何网口上收到的对任何本机IP地址的ARP查询请求(默认) 

1:只回应Target IP是接收网口的IP的ARP查询请求 

2:只回应Target IP是接收网口的IP的ARP查询请求,且Sender IP必须与该网口属于同一网段 

4-7:保留未使用  

8:不回应所有的arp查询 

 

arp_announce: (选择ARP宣告时候使用的Sender IP)

0:使用发送(或转发)的数据包的源IP作为发送ARP请求的Sender IP(默认) ;(可使用ping -I 验证)

1:IP数据包的目的IP属于本地某个接口的网段时,Sender IP则使用IP数据包源IP,不属于则按2处理; 

2:忽略数据包的源IP,使用能与目标主机会话的最佳地址来作为发送ARP的Sender IP,优先选择对外接口的主IP;(loopback不是对外接口)

注:ARP表没有网关对应的条目时,在发送IP数据包前会触发 arp_announce;

        Sender MAC跟系统无关,Sender MAC=源MAC,源MAC由物理地址决定,网络攻击除外。


本文出自 “我的运维之路” 博客,请务必保留此出处http://ouziyou.blog.51cto.com/3008967/1737626

ARP报文与arp_ignore arp_announce

标签:网络   arp   数据包   

原文地址:http://ouziyou.blog.51cto.com/3008967/1737626

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!