利用免费 ARP(Gratuitous ARP) 实现内网 VIP 漂移 / 单节点虚拟 IP,分临时测试、永久配置、主备漂移(简单 HA) 三种场景,适配 Linux 系统。
原理:手动 / 脚本在主机网卡配置虚拟 IP,发送免费 ARP 通告全网网关 / 终端更新 ARP 表,流量即可指向当前节点。
一、基础环境说明
物理网卡:eth0(根据实际网卡名修改,如 ens33、bond0)内网网段:192.168.1.0/24
目标 VIP:192.168.1.100系统:CentOS / Ubuntu / Debian
二、单节点临时 VIP(重启失效,测试用)
1. 配置虚拟 IPbash
# 绑定VIP到物理网卡
ip addr add 192.168.1.100/24 dev eth0 label eth0:vip2. 发送免费 ARP(关键!全网刷新 ARP 表)
内网所有设备才会识别 VIP 归属当前主机:
方式1:arping(推荐,通用性强)
arping -c 3 -I eth0 192.168.1.100方式2:send_arp 工具(部分系统需安装)
send_arp eth0 本机物理IP 本机MAC 192.168.1.100 FF:FF:FF:FF:FF:FF
-c 3:发送 3 次 ARP 包,确保全网接收
-I:指定出接口3. 验证
查看本机IP
ip a其他内网机器 ping VIP
ping 192.168.1.100查看ARP表,确认VIP对应本机MAC
arp -a4. 临时删除 VIP
ip addr del 192.168.1.100/24 dev eth0三、单节点永久 VIP(开机自启)
1. CentOS 7/8(NetworkManager)编辑网卡配置文件:
cat /etc/sysconfig/network-scripts/ifcfg-eth0:vip
DEVICE=eth0:vip
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0重启网络并发送 ARP
systemctl restart network
arping -c 3 -I eth0 192.168.1.1002. Ubuntu/Debian(netplan)
cat /etc/netplan/01-network-manager-all.yaml
network:
ethernets:
eth0:
addresses:
- 192.168.1.10/24 # 本机真实IP
- 192.168.1.100/24 # VIP
version: 2生效配置
netplan apply
arping -c 3 -I eth0 192.168.1.100四、双机主备 ARP 漂移 VIP(简易 HA)
两台主机主节点:192.168.1.10
备节点:192.168.1.11
VIP:192.168.1.100主节点正常:持有 VIP,定时发免费 ARP
主节点宕机 → 备节点检测不通,抢占 VIP + 发送 ARP
主节点恢复(可选):手动 / 自动切回
1. 通用检测脚本(双机共用)
新建 vip_ha.sh,修改网卡、IP 参数:
#!/bin/bash
VIP="192.168.1.100"
DEV="eth0"
MAIN_IP="192.168.1.10" # 主节点真实IP
CHECK_COUNT=3检测主节点是否存活
ping -c $CHECK_COUNT -W 1 $MAIN_IP >/dev/null 2>&1
if [ $? -ne 0 ];then
# 主节点失联,备节点抢占VIP
ip addr add $VIP/24 dev $DEV label ${DEV}:vip
arping -c 5 -I $DEV $VIP
else
# 主节点正常,备节点释放VIP
ip addr del $VIP/24 dev $DEV 2>/dev/null
fi授权 + 定时任务:
chmod +x vip_ha.sh每3秒执行一次检测(crontab 最小1分钟,高频用while循环)
后台常驻运行
nohup bash -c "while true; do /root/vip_ha.sh; sleep 3; done" > /root/vip_ha.log 2>&1 &2. 主节点加固(保活 ARP)
主节点正常时,定时发送 ARP 防止内网 ARP 表老化:
每10秒发一次免费ARP
nohup bash -c "while true; do arping -c 2 -I eth0 192.168.1.100; sleep 10; done" >/dev/null 2>&1 &内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1148
评论列表