Рейтинг:0

Keepalived разделяет мозг, когда работает Firewalld

флаг pl

Я использую 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

Есть ли у кого-нибудь идеи относительно того, как я могу устранить эту проблему?

Заранее спасибо.

Рейтинг:0
флаг pl

Сегодня утром я выяснил, в чем причина проблемы, на случай, если это поможет кому-то в будущем. я включил ЛогОтказано=все в /etc/firewalld/firewalld.conf, а затем смог определить, какие пакеты все еще отбрасываются firewalld с помощью --get-log-denied выключатель:

[root@dca-ngx02-al keepalived]# firewall-cmd --get-log-denied
28 марта 08:40:04 dca-ngx01-al.REDACTED.local ядро: FINAL_REJECT: IN=ens192 OUT= MAC=01:00:5e:00:00:12:00:50:56:84:ac:d0 :08:00 SRC=172.31.5.229 DST=224.0.0.18 LEN=64 TOS=0x00 PREC=0xC0 TTL=255 ID=79 PROTO=AH SPI=0xac1f05e5
28 марта 08:40:05 dca-ngx01-al.REDACTED.local ядро: FINAL_REJECT: IN=ens192 OUT= MAC=01:00:5e:00:00:12:00:50:56:84:ac:d0 :08:00 SRC=172.31.5.229 DST=224.0.0.18 LEN=64 TOS=0x00 PREC=0xC0 TTL=255 ID=80 PROTO=AH SPI=0xac1f05e5

Я решил проблему, добавив следующее правило брандмауэра для многоадресных пакетов AH.

firewall-cmd --add-rich-rule='rule protocol value="ah" accept' --permanent

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.