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

有关 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,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 地址


1)vip(virtual ip)。直接路由模式的vip必须跟服务器对外提供服务的ip地址在同一个网段,并且lvs 负载均衡器和其他所有提供相同功能的服务器都使用这个vip;

2)vip被绑定在环回接口lo0:0上,其广播地址是其本身,子网掩码是255.255.255.255。这与标准的网络地址设置有很大的不同。采用这种可变长掩码方式把网段划分成只含一个主机地址的目的是避免ip地址冲突;

3)echo这段的作用是抑制arp广播。如果不做arp抑制,将会有众多的机器向其他宣称:“嗨!我是奥巴马,我在这里呢!”,这样就乱套了。


### LVS DR模式的工作原理 在LVS-DR(Direct Routing)模式下,Director Server作为集群的访问入口,但并不充当网关的角色。客户端发送至VIP地址的请求被转发到Real Server上处理,而Real Server可以直接回应客户端而不必再经过Director Server[^2]。 这种机制依赖于ARP请求的特殊处理方式,在同一物理网络中的所有Real Server都配置有相同的VIP地址,并且设置`arp_ignore`参数来阻止它们对发往该VIP地址的ARP广播做出应答。只有当数据包的目标MAC地址匹配时才会响应,这使得外部设备仅能识别并联系到Director Server上的VIP接口,从而实现了流量调度的功能[^5]。 ### LVS DR模式的配置教程 #### 安装必要的软件包 确保已安装`ipvsadm`工具用于管理维护IP虚拟服务器表项: ```bash yum install ipvsadm -y ``` #### 设置内核参数 为了让Real Server能够正常工作,需调整某些内核参数以防止其回复针对VIP地址的ARP请求: 对于每台Real Server执行如下命令: ```bash echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce ``` 这些更改也可以写入配置文件以便重启后仍然有效: ```bash cat <<EOF >> /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 EOF sysctl -p ``` #### 创建负载均衡规则 在Director Server上创建一个新的服务条目并将多个Real Server加入其中: ```bash # 添加TCP端口80的服务定义,采用轮询算法分发连接 ipvsadm -A -t 192.168.52.10:80 -s rr # 将两台RS添加进来 ipvsadm -a -t 192.168.52.10:80 -r 192.168.52.11:80 -g ipvsadm -a -t 192.168.52.10:80 -r 192.168.52.12:80 -g ``` 这里的`-g`选项表示使用直接路由的方式让Real Server直接向客户端返回响应;如果要保存当前设定可以在最后运行下面这条指令: ```bash ipvsadm --save > /etc/sysconfig/ipvsadm ``` 这样就完成了基本的LVS-DR架构搭建过程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值