为了账号安全,请及时绑定邮箱和手机立即绑定

大白话理解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,请参考其他资料

        欢迎关注课程:《企业级开源四层负载均衡解决方案--LVS》

点击查看更多内容
7人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.1万
获赞与收藏
117

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消