设备情况

设备信息 设备型号 设备IP
主路由 华硕AC-GT5300 192.168.43.1
旁路由 openwrt 192.168.43.2
虚拟Ip 192.168.43.3

旁路由模式网关互指的缺点,如果旁路由死机,那么全部设备都无法上网,keeoalived则可以解决这个问题

1.安装keepalied

主路由和旁路由都执行命令

opkg update

opkg install keepalived

2.主路由配置keepalived

  1. 查看主路由ip为192.168.43.1的网卡信息
    1
    ifconfig
    有上图可见,192.168.43.1的网卡名字为br0
  2. 修改/opt/etc/keepalived/keepalived.conf配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    global_defs {
    # 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
    router_id 132
    ## 修改执行脚本的用户为root
    script_user root
    enable_script_security
    ## 默认是224.0.0.18
    vrrp_mcast_group4 224.0.0.18

    }

    vrrp_instance VI_1 {
    state BACKUP ## 主节点为MASTER,备份节点为BACKUP
    interface br0 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(服务器主机网卡)
    virtual_router_id 130 ## 虚拟路由ID号(主备节点一定要相同)
    mcast_src_ip 192.168.43.1 ## 本机ip地址
    priority 80 ##优先级配置(0-254的值)
    advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
    authentication { ## 认证匹配
    auth_type PASS ## 认证方式:PASS
    auth_pass keepalived ## 认证密码
    }
    ## ipv4的虚拟ip
    virtual_ipaddress {
    192.168.43.3 ## 虚拟ip,可以指定多个
    }

    ## ipv6的虚拟ip
    virtual_ipaddress_excluded {
    fe80::7285:c2ff:fea9:1/64
    }
    }
  3. 添加启动文件/opt/etc/init.d/S07keepalived
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh

    ENABLED=yes
    PROCS=keepalived
    ARGS="-n -f /opt/etc/keepalived/keepalived.conf"
    PREARGS=""
    DESC=$PROCS
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

    . /opt/etc/init.d/rc.func
    配置权限chmod +x /opt/etc/init.d/S07keepalived

3.旁路由配置

  1. 查看主路由ip为192.168.43.2的网卡信息
    1
    ifconfig
    有上图可见,192.168.43.2的网卡名字为eth0
  2. 修改/etc/keepalived/keepalived.conf 配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    global_defs {
    # 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
    router_id 131
    ## 修改执行脚本的用户为root
    script_user root
    enable_script_security
    ## 默认是224.0.0.18
    vrrp_mcast_group4 224.0.0.18

    }

    vrrp_instance VI_1 {
    state MASTER ## 主节点为MASTER,备份节点为BACKUP
    interface eth0 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(服务器主机网卡)
    virtual_router_id 130 ## 虚拟路由ID号(主备节点一定要相同)
    mcast_src_ip 192.168.43.2 ## 本机ip地址
    priority 100 ##优先级配置(0-254的值)
    advert_int 1 ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
    authentication { ## 认证匹配
    auth_type PASS ## 认证方式:PASS
    auth_pass keepalived ## 认证密码
    }

    # ipv4的虚拟ip
    virtual_ipaddress {
    192.168.43.3 ## 虚拟ip,可以指定多个
    }

    # ipv6的虚拟ip
    virtual_ipaddress_excluded {
    fe80::7285:c2ff:fea9:1/64
    }
    }
  3. 修改启动文件/etc/init.d/keepalived
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #!/bin/sh /etc/rc.common
    # Copyright (C) 2007-2015 OpenWrt.org

    START=70
    STOP=01

    USE_PROCD=1

    KEEPALIVED_CONF=/etc/keepalived/keepalived.conf

    service_triggers() {
    procd_add_reload_trigger "keepalived"
    }

    reload_service() {

    #SIGHUP is used by keepalived to do init.d reload
    procd_send_signal keepalived
    }

    start_service() {
    procd_open_instance
    procd_set_param command /usr/sbin/keepalived
    procd_append_param command -n # don't daemonize, procd will handle that for us
    procd_append_param command -f "$KEEPALIVED_CONF"



    # set auto respawn behavior
    procd_set_param respawn
    procd_close_instance
    }

4.修改路由器配置

  1. 主路由配置 ipv4的网络配置 内网网络(LAN) -> DHCP服务器, 修改默认网关和DNS服务器为虚拟ip:192.168.43.3 ipv6的网络配置 将IPV6 DNS服务器改为虚拟Ip的fe80::7285:c2ff:fea9:1
  2. 旁路由配置 将ipv4网卡指向主路由Ip地址 DNS服务器指向自己的ip地址

5.重启主路由和旁路由