arp_ignore
通常client和我们的主机不在同一网段中,那么当request到达路由器后,路由器就会发送arp广播寻找vip对应的mac地址,由于rs的lo:vip也绑定了vip,那么所有的rs都会受到arp广播,这是不应该的,因为我们的目的是只让vip收到.....
0--表示对于arp请求,任何配置在本地的目的IP地址都会回应,甭管你有多少网卡,虚拟接口等等,只要在同一网段通通回应。这也是linux中默认的
1--表示如果arp请求的目的地址ip,不是该arp请求包进入的接口的ip地址,那么就不回应,显然arp包是从eth0口进来的,所以lo:vip就不回回应了
所以为了不影响针对vip的arp请求,我们设置
net.ipv4.conf.lo.arp_jgnore = 1
net.ipv4.conf.all.arp_ignore = 1
arp_announce
当rs向client发送reply包时,肯定要经过内网的路由器,那么它就会发送一个arp请求包给路由器来获取路由器的mac地址。关键就在这个arp请求包里,这个arp请求包里会包含rs自己的ip和mac,注意这个ip是之前client的request包的目的ip(因为rs在处理完请求后将source和destination对调返回给client),也就是vip。路由器在收到这arp请求后就会更新自己的缓存,此时arp缓存vip对应的就是rs的mac,在有client进来的request就找不到调度器了。而正确的应该vip对应调度器的mac
0--表示用ip包的source地址来设置arp请求的source地址
1--表示不适用ip包的source地址来设置arp请求的source地址,如果ip包source地址和端口的ip在同一网段,仍然使用ip包的source地址
2--不使用ip包的source地址来设置arp请求的source地址,而是由系统选择最好的接口来发送
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2