Я использую keepalived для обеспечения доступности между двумя серверами Alma 8 Nginx (размещенными на VMWare, если это имеет какое-либо значение). Когда firewalld включен, несмотря на то, что для VRRP установлено расширенное правило, когда я включаю firewalld, оба хоста начинают отвечать по виртуальному IP:
root@dca-nfs01:~# арпинг 172.31.5.233
60 байт с 00:50:56:84:ac:d0 (172.31.5.233): индекс=39 время=1,960 мкс
60 байт от 00:50:56:84:ac:d0 (172.31.5.233): индекс=40 время=20,660 мкс
60 байт от 00:50:56:84:52:ed (172.31.5.233): индекс=41 время=24,930 мкс
60 байт от 00:50:56:84:ac:d0 (172.31.5.233): индекс=42 время=534,616 мс
60 байт от 00:50:56:84:52:ed (172.31.5.233): индекс=43 время=534,646 мс
Моя конфигурация keepalived взята из стандартного шаблона туториала и выглядит следующим образом:
[root@dca-ngx01-al ~]# cat /etc/keepalived/keepalived.conf
global_defs {
  # идентификатор поддерживаемого процесса
  router_id nginx
}
# Скрипт для проверки, запущен Nginx или нет
vrrp_script check_nginx {
  скрипт "/sbin/pidof nginx"
  интервал 2
  вес 50
}
# Виртуальный интерфейс. Приоритет определяет порядок, в котором назначенный интерфейс должен взять на себя управление при аварийном переключении.
vrrp_instance VI_01 {
  состояние МАСТЕР
  интерфейс ens192
  виртуальный_маршрутизатор_id 151
  приоритет 110
  # Виртуальный IP-адрес, общий для двух веб-серверов NGINX, который будет плавающим
  виртуальный_ipaddress {
    172.31.5.233
  }
  track_script {
    check_nginx
  }
  аутентификация {
    auth_type AH
    секрет auth_pass
  }
}
Оба устройства имеют простой однозонный брандмауэр, и я добавил расширенное правило, разрешающее связь VRRP между двумя хостами:
[root@dca-ngx01-al ~]# firewall-cmd --list-all
публичный (активный)
  цель: по умолчанию
  icmp-инверсия блока: нет
  интерфейсы: ens192
  источники:
  сервисы: dhcpv6-клиент http https ssh
  порты: 10050/TCP
  протоколы:
  вперед: нет
  маскарад: нет
  форвард-порты:
  исходные порты:
  icmp-блоки:
  богатые правила:
        значение протокола правил = "vrrp" принять
Я также установил net.ipv4.ip_forward = 1 в /etc/sysctl.conf.
Когда firewalld остановлен на обоих серверах, keepalived ведет себя правильно, но когда он включен, обе стороны теряют связь друг с другом и просто отправляют повторяющиеся необоснованные пакеты ARP:
â keepalived.service — монитор высокой доступности LVS и VRRP
   Загружено: загружено (/usr/lib/systemd/system/keepalived.service; включено; предустановка поставщика: отключена)
   Активно: активно (работает) с пт 25 марта 2022 г., 12:48:25 по Гринвичу; 2ч 35мин назад
  Процесс: 7140 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
  Процесс: 12966 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (код=выход, статус=0/УСПЕХ)
 Основной PID: 12967 (сохранение активности)
    Заданий: 2 (лимит: 11406)
   Память: 1,8 м
   CGroup: /system.slice/keepalived.service
           ââ12967 /usr/sbin/keepalived -D
           ââ12968 /usr/sbin/keepalived -D
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: (VI_01) Отправка/постановка в очередь необоснованных ARP на ens192 для 1>
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
Однако из использования TCPDump я вижу, что обычные пакеты VRRP с другого хоста, по крайней мере, попадают в сетевой интерфейс, когда firewalld активен:
tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание по ens192, тип канала EN10MB (Ethernet), размер захвата 262144 байт
15:25:21.532300 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3160): VRRPv2, реклама, vrid 151, приоритет 150, тип авторизации ah, интервал 1 с, длина 20
15:25:22.532419 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3161): VRRPv2, реклама, vrid 151, приоритет 150, тип авторизации ah, интервал 1 с, длина 20
15:25:23.532476 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3162): VRRPv2, реклама, vrid 151, приоритет 150, тип аутентификации ah, интервал 1 с, длина 20
15:25:24.532544 IP-адрес dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3163): VRRPv2, реклама, vrid 151, приоритет 150, тип аутентификации ah, интервал 1 с, длина 20
Есть ли у кого-нибудь идеи относительно того, как я могу устранить эту проблему?
Заранее спасибо.