👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
术语解释
关于ARP
关于arp_announce参数
0:内核将使用任意可用的本地IP地址,作为进行ARP请求的源IP地址。
1:内核会尽量避免使用不在发出请求数据包的网卡(接口)子网段内的IP地址,作为进行ARP请求的源IP地址。若无合适IP地址,则按照arp_announce=2规则进行ARP请求。
2:内核将优先选择与目的IP地址所在子网段相同的本地IP地址作为进行ARP请求的源IP地址,若无合适的IP地址,则选择其它能接收ARP响应的网卡接口IP地址。
关于arp_ignore参数
0: 目标地址为本机任意网卡配置的IP地址时,都会响应ARP请求。
1: 目标地址为本网卡上的IP地址时,可以响应ARP请求。
2: 目标地址为为本网卡上的地址,且ARP请求的源地址与目标地址是同一子网时,可以响应ARP请求。
3: 如果目标地址对应的本地地址其作用域为主机,则不响应ARP请求;如果其作用域为全局和链路,则响应ARP请求。
4 - 7: 保留参数,未使用。
8: 不响应所有的ARP请求。
操作场景
防止ARP欺骗
在LVS-DR模式中应用
当网卡在发送ARP请求时,如果ARP请求包中的源IP地址不是该网卡自身的IP地址,会导致收到此请求的其他节点的ARP表记录下错误的IP地址与MAC地址对应关系,可能会引发一些未知的网络问题,存在安全隐患。此时,需要将服务器arp_announce参数配置为2。
当对虚拟服务IP的ARP请求广播到各个真实服务器节点时,如果真实服务器随意响应这些请求,可能会导致网络流量混乱,进而导致业务一直在单节点运行,负载均衡能力没有生效。此时,需要将服务器的arp_ignore参数设置为1。
操作步骤
配置全局参数
通过proc接口配置
登录目标实例。操作详情可查看登录Linux实例。
执行如下命令,查看全局arp_announce、arp_ignore参数值。
cat /proc/sys/net/ipv4/conf/all/arp_announce cat /proc/sys/net/ipv4/conf/all/arp_ignore
执行如下命令,配置全局arp_announce、arp_ignore参数值。
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
通过arp.conf文件配置
登录目标实例。操作详情可查看登录Linux实例。
执行如下命令,查看全局arp_announce、arp_ignore参数值。
sysctl net.ipv4.conf.all.arp_announce sysctl net.ipv4.conf.all.arp_ignore
修改arp_announce、arp_ignore参数值。
执行如下命令,新建arp.conf文件。
vim /etc/sysctl.d/arp.conf
按i键进入编辑模式,在文末添加如下内容。
net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1
按Esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
执行如下命令,使配置生效。
sysctl -p /etc/sysctl.d/arp.conf
为特定网卡配置
通过proc接口配置
登录目标实例。操作详情可查看登录Linux实例。
执行如下命令,查看eth0网卡的参数值。
cat /proc/sys/net/ipv4/conf/eth0/arp_announce cat /proc/sys/net/ipv4/conf/eth0/arp_ignore
执行如下命令,配置arp_announce、arp_ignore参数值。
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
请将1、2替换为业务所需的实际值,详情可参考关于arp_announce参数、关于arp_ignore参数。
请将eth0替换为实际网卡名。
通过arp.conf文件配置
登录目标实例。操作详情可查看登录Linux实例。
执行如下命令,查看eth0网卡的参数值。
sysctl net.ipv4.conf.eth0.arp_announce sysctl net.ipv4.conf.eth0.arp_ignore
修改arp_announce、arp_ignore参数值。
执行如下命令,新建arp.conf文件。
vim /etc/sysctl.d/arp.conf
按i键进入编辑模式,在文末添加如下内容。
net.ipv4.conf.eth0.arp_announce = 2 net.ipv4.conf.eth0.arp_ignore = 1
请将1、2替换为业务所需的实际值,详情可参考关于arp_announce参数、关于arp_ignore参数。
请将eth0替换为实际网卡名。
按Esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
执行如下命令,使配置生效。
sysctl -p /etc/sysctl.d/arp.conf