Keepalived VIP через подсети не удается на TTL

Я пытаюсь создать виртуальный IP-адрес между 2 виртуальными машинами, которые работают в разных подсетях, используя dockerized keepalived (osixia/keepalived:1.4.5) с одноадресными сообщениями vrrp.
К сожалению, сообщения vrrp отбрасываются из-за значения ttl, поскольку пакет маршрутизируется из удаленной подсети (фрагмент журнала из VM1):

Mon Jul  2 12:41:56 2018: (VI_1): invalid ttl. 252 and expect 255
Mon Jul  2 12:41:56 2018: bogus VRRP packet received on ens160 !!!
Mon Jul  2 12:41:56 2018: VRRP_Instance(VI_1) Dropping received VRRP packet...

Если я правильно понимаю это описание журнала изменений, проблема должна быть решена с момента выпуска 1.2.10 (источник: http://www.keepalived.org/changelog.html):

vrrp: отключить проверку работоспособности TTL для варианта использования одноадресной рассылки. Чтобы защитить от любого внедрения пакета, VRRP обеспечивает проверку работоспособности через заголовок IP TTL. Этот TTL ДОЛЖЕН быть равен 255 и означает, что отправитель и получатель подключены к одному и тому же сегменту Ethernet. Теперь с расширением одноадресной передачи эта защита ДОЛЖНА быть отключена, так как реклама VRRP будет в основном проходить через различные сегменты сети.!!! ВНИМАНИЕ!!! При использовании VRRP в случае использования одноадресной рассылки для защиты от внедрения любых пакетов рекомендуется использовать метод аутентификации IPSEC-AH, в противном случае вы будете подвержены потенциальным злоумышленникам!

Должно ли это действительно работать из коробки или я должен как-то настроить проверку исправности ttl?

Моя настройка:
VM1 ip: 172.31.245.109
VM2 ip: 172.31.205.162
Виртуальный IP: 172.31.245.10

VM1 keepalived.conf:

vrrp_script chk_live {  
        script "curl 172.31.245.109:8080"
        interval 2                      # check every 2 seconds
        weight 2                        # add 2 points of prio if OK
}

vrrp_instance VI_1 {
        interface ens160
        state MASTER
        virtual_router_id 51
        priority 101                    # 101 on master, 100 on backup
        virtual_ipaddress {
            172.31.245.10
        }
        track_script {
            chk_live
        }
        unicast_peer {
          172.31.205.162
        }
}

VM2 keepalived.conf:

vrrp_script chk_live {
        script "curl 172.31.205.162:8080"
        interval 2                      # check every 2 seconds
        weight 2                        # add 2 points of prio if OK
}

vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 100                    # 101 on master, 100 on backup
        virtual_ipaddress {
            172.31.245.10
        }
        track_script {
            chk_live
        }
        unicast_peer {
          172.31.245.109
        }
}

0 ответов

Другие вопросы по тегам