Ложный трафик, поражающий Keepalived

Мы используем Keepalived (работает на RHEL 7) для управления общими IP-адресами на наших 3 серверах HAProxy. Каждый сервер имеет 2 интерфейса, один с общедоступным IP-адресом и один с частным IP-адресом. Мы мигрируем с пары приборов Kemp LoadMaster LM-3000.

Мы заметили, что две из трех систем HAProxy регистрируют много строк каждую секунду для bogus VRRP packet received on em2 !!!,

Это 1 секунда логов. Я сократил время и обработал номера, чтобы сэкономить место.

haproxy01 Keepalived_vrrp: VRRP_Instance(haproxy::fqdn) IPSEC-AH : invalid IPSEC HMAC-MD5 value. Due to fields mutation or bad password !
haproxy01 Keepalived_vrrp: bogus VRRP packet received on em2 !!!
haproxy01 Keepalived_vrrp: VRRP_Instance(haproxy::fqdn) ignoring received advertisment...
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::device) IPSEC-AH : invalid IPSEC HMAC-MD5 value. Due to fields mutation or bad password !
haproxy00 Keepalived_vrrp: bogus VRRP packet received on em2 !!!
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::device) ignoring received advertisment...
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::support) IPSEC-AH : invalid IPSEC HMAC-MD5 value. Due to fields mutation or bad password !
haproxy00 Keepalived_vrrp: bogus VRRP packet received on em2 !!!
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::support) ignoring received advertisment...
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::whiffle) IPSEC-AH : invalid IPSEC HMAC-MD5 value. Due to fields mutation or bad password !
haproxy00 Keepalived_vrrp: bogus VRRP packet received on em2 !!!
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::whiffle) ignoring received advertisment...
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::www) IPSEC-AH : invalid IPSEC HMAC-MD5 value. Due to fields mutation or bad password !
haproxy00 Keepalived_vrrp: bogus VRRP packet received on em2 !!!
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::www) ignoring received advertisment...
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::wwwdev) IPSEC-AH : invalid IPSEC HMAC-MD5 value. Due to fields mutation or bad password !
haproxy00 Keepalived_vrrp: bogus VRRP packet received on em2 !!!
haproxy00 Keepalived_vrrp: VRRP_Instance(haproxy::wwwdev) ignoring received advertisment...

haproxy02 не регистрирует какой-либо странный трафик.

  • haproxy00.example.com: em1 -> 172.24.0.200, em2 -> 192.0.2.32
  • haproxy01.example.com: em2 -> 172.24.0.201, em1 -> 192.0.2.29
  • haproxy02.example.com: em1 -> 172.24.0.202, em2 -> 192.0.2.24
  • kemp00.example.com: em1 -> 172.24.0.48, em2 -> 192.0.2.59
  • kemp01.example.com: em1 -> 172.24.0.49, em2 -> 192.0.2.60
  • "Плавающий" kemp.example.com: 172.24.0.50
  • "Плавающий" kemp-public.example.com: 192.0.2.63

Обратите внимание, что haproxy01 имеет em1 а также em2 обратный по сравнению с двумя другими.

haproxy* системы настроены на использование одноадресной VRRP вместо многоадресной рассылки (пример конфигурации из haproxy00 остальные точно такие же, за исключением измененного имени интерфейса для haproxy01 и другой приоритет. haproxy02 это MASTER):

vrrp_instance haproxy::fqdn {
  interface                 em1
  state                     BACKUP
  virtual_router_id         199
  priority                  100
  advert_int                1
  garp_master_delay         5
  authentication {
    auth_type AH
    auth_pass csvrp199
  }
  virtual_ipaddress {
    172.24.0.199/24 dev em1
  }
  virtual_routes {
      metric 5 to default via 172.24.0.1
  }
  unicast_src_ip 172.24.0.200
  unicast_peer {
    172.24.0.201
    172.24.0.202
  }
}
vrrp_instance haproxy::device {
  interface                 em2
  state                     BACKUP
  virtual_router_id         15
  priority                  100
  advert_int                1
  garp_master_delay         5
  authentication {
    auth_type AH
    auth_pass csvrrp15
  }
  virtual_ipaddress {
    192.0.2.7/26 dev em2
  }
  virtual_routes {
      metric 5 to default via 192.0.2.1
  }
  unicast_src_ip 192.0.2.32
  unicast_peer {
    192.0.2.24
    192.0.2.29
  }
}
vrrp_instance haproxy-csweb:haproxy::support { ... }
vrrp_instance haproxy-csweb:haproxy::whiffle { ... }
vrrp_instance haproxy-csweb:haproxy::www { ... }
vrrp_instance haproxy-csweb:haproxy::wwwdev { ... }

Мы знаем, что VRRP работает между haproxy системы, потому что мы можем выключить haproxy02 и трафик движется к следующей системе с самым высоким приоритетом.

tcpdump показывает трафик, который мы считаем причиной этой проблемы. addrs рекламируется с одного LM другой, кажется, каким-то образом запутывается, поскольку ни один из них не является нашим реальным адресом.

[root@haproxy00 ~]# tcpdump -vvvvvni em2 vrrp
tcpdump: listening on em2, link-type EN10MB (Ethernet), capture size 262144 bytes
13:54:09.672726 IP (tos 0x10, ttl 255, id 51772, offset 0, flags [DF], proto VRRP (112), length 56)
    192.0.2.59 > 224.0.0.18: vrrp 192.0.2.59 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 1, authtype none, intvl 1s, length 36, addrs(7): 127.73.197.82,124.192.126.111,231.25.226.215,113.220.143.181,197.101.63.203,152.246.226.65,46.55.62.80

[root@haproxy01 ~]# tcpdump -vvvvvni em2 vrrp
tcpdump: listening on em2, link-type EN10MB (Ethernet), capture size 262144 bytes
13:54:36.739262 IP (tos 0x10, ttl 255, id 50547, offset 0, flags [DF], proto VRRP (112), length 56)
    172.24.0.48 > 224.0.0.18: vrrp 172.24.0.48 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 1, authtype none, intvl 1s, length 36, addrs(7): 120.18.52.8,8.96.198.173,44.237.204.205,99.139.163.15,10.76.116.67,163.0.175.114,121.54.183.104

Итак, ошибки регистрируются em2 каждого сервера для каждого vrrp_instance, но не для случаев на em1, а также совсем не на haproxy02,

Мы пытаемся остановить эти ошибки, которые регистрируются, потому что они скрывают более важные ошибки и делают невозможным отслеживание файлов журнала.


Отдельно у нас также есть iptables я думаю, что это должно блокировать многоадресный трафик, но не похоже:

[root@haproxy00 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            /* 000 accept all icmp */
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            /* 001 accept all to lo interface */
REJECT     all  --  0.0.0.0/0            127.0.0.0/8          /* 002 reject local traffic not on loopback interface */ reject-with icmp-port-unreachable
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            /* 003 accept related established rules */ state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,443
ACCEPT     tcp  --  172.16.0.0/12        0.0.0.0/0            multiport dports 22 /* 203 allow internal sshd:22 */ state NEW
ACCEPT     112  --  192.0.2.24           0.0.0.0/0            /* 226 Allow vrrp from 192.0.2.24 */
ACCEPT     112  --  192.0.2.29           0.0.0.0/0            /* 226 Allow vrrp from 192.0.2.29 */
ACCEPT     112  --  172.24.0.201         0.0.0.0/0            /* 226 Allow vrrp from 172.24.0.201 */
ACCEPT     112  --  172.24.0.202         0.0.0.0/0            /* 226 Allow vrrp from 172.24.0.202 */
DROP       all  --  0.0.0.0/0            0.0.0.0/0            /* 999 drop all */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

0 ответов

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