yorickyao
yorickyao
发布于 2025-10-14 / 21 阅读
0
0

🛠️OpenWrt系统Keepalived部署指南

在OpenWrt上部署Keepalived实现双机热备是个提升网络可靠性的好办法。利用PuTTY和WinSCP,我们可以通过命令行和直接编辑配置文件来完成。下面是一份详细的部署指南。

1. 安装Keepalived

首先,通过PuTTY登录到你的两台OpenWrt路由器(主路由 Openwrt-Master和后备路由 Openwrt-Backup),分别执行以下命令安装Keepalived:

opkg update
opkg install keepalived

💡 注意​:如果安装过程中提示内核版本不匹配或依赖问题(例如缺少 libmagiclibnfnetlink0),你需要手动安装依赖或下载特定版本的IPK包

opkg install libmagic
opkg install libnfnetlink0
# 如果仍失败,可尝试从OpenWrt仓库下载对应版本的keepalived IPK包,使用opkg install命令本地安装

2. 配置系统参数

为了使Keepalived和VIP正常工作,需要修改两台路由器的内核参数。​使用WinSCP登录路由器,编辑 /etc/sysctl.conf文件,确保包含以下行:

net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1

保存文件后,​在PuTTY中执行sysctl -p使配置生效。

3. 准备Keepalived配置文件

Keepalived的主要配置文件是 /etc/keepalived/keepalived.conf。​使用WinSCP创建并编辑此文件

主路由 (Openwrt-Master, 192.168.50.1) 配置:

global_defs {
    router_id Openwrt_Master
}

vrrp_instance VI_1 {
    state MASTER
    interface br-lan
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.50.3/24
    }
}

后备路由 (Openwrt-Backup, 192.168.50.2) 配置:

global_defs {
    router_id Openwrt_Backup
}

vrrp_instance VI_1 {
    state BACKUP
    interface br-lan
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.50.3/24
    }
}

📝 重要参数说明​:

  • interface: 设置为 br-lan(OpenWrt中常见的桥接接口)。你可以通过PuTTY执行 ip a命令确认实际的接口名称。

  • virtual_router_id: ​必须相同,取值范围0-255,且在同一局域网内与其他VRRP实例不冲突。

  • priority: ​主路由的优先级应高于后备路由​(例如150 > 100)。

  • authentication: 主备路由的认证类型和密码必须一致

  • virtual_ipaddress: 这里配置你计划使用的虚拟IP (192.168.50.3),并指定正确的子网掩码。

4. 处理OpenWrt的特殊配置

OpenWrt的Keepalived init脚本可能会使用自己的配置文件生成机制。为了确保使用我们自定义的配置文件,​需要通过WinSCP编辑 /etc/config/keepalived文件,内容如下:

config globals 'globals'
    option alt_config_file '/etc/keepalived/keepalived.conf'

此配置指示Keepalived服务从指定文件读取配置,而不是默认的临时文件。

5. 启动Keepalived服务

通过PuTTY在两台路由器上执行以下命令来启动Keepalived并设置开机自启:

service keepalived start
service keepalived enable

6. 验证与测试

  1. 检查虚拟IP​:在两台路由器上执行 ip a show br-lan,你应该能看到虚拟IP 192.168.50.3最初出现在优先级更高的主路由 (Openwrt-Proxy) 上。

  2. 测试故障切换​:

    • 手动重启主路由的Keepalived服务:service keepalived restart

    • 或者直接断开主路由的网络连接。

    • 观察虚拟IP是否在几秒内自动漂移到后备路由 (Openwrt-Direct)。同样使用 ip a命令验证。

    • 当主路由恢复后,虚拟IP应该会自动漂回(因为默认配置了抢占模式)。

  3. 查看日志​:如果需要排查问题,可以在PuTTY中使用 logread命令查看系统日志,过滤Keepalived相关的条目。

💡 注意事项

  • 防火墙规则​:确保防火墙允许VRRP协议通信(IP协议号112,或组播地址224.0.0.18)。如果虚拟IP无法切换,可能是防火墙阻止了VRRP通告。

  • 脑裂问题​:如果两台路由器同时声称拥有虚拟IP,检查 virtual_router_id和认证配置是否一致,以及网络是否允许VRRP报文正常传输。

  • 服务依赖​:在某些情况下,可能需要调整Keepalived服务的启动顺序,确保在网络接口就绪后再启动Keepalived。


评论