Я установил Keepalived VRRP в общедоступном облаке моей компании, чтобы я мог создавать частные подсети между серверами и обеспечивать связь этих подсетей и обеспечивать их избыточность. Вот упрощенная схема архитектуры:
X.X.X.252 X.X.X.253
router 1 ------------------------- router 2
Y.Y.Y.252 | Subnet X | Y.Y.Y.253
| |
| Subnet Y |
+---------------+------------------+
|
| Y.Y.Y.1
Host
Маршрутизаторы 1 и 2 - это машины Debian 9. Keepalived настроен как на маршрутизаторе 1, так и на маршрутизаторе 2, чтобы иметь шлюз переключения при отказе для узла, настроенный с IP-адресом X.X.X.254, так что, когда маршрутизатор 1 не работает, маршрутизатор 2 берет на себя маршрутизацию. Маршрутизатор 1 - МАСТЕР, а маршрутизатор 2 - РЕЗЕРВНЫЙ. Другие подсети подключены как к маршрутизатору 1, так и к маршрутизатору 2.
Вот проблема: я не получаю ответа, когда пытаюсь подключиться к частному интерфейсу маршрутизатора 2 для подсети X с хоста. Вот что я пробовал:
От хоста, ping Y.Y.Y.253: он работает, я полагаю, потому что хост и маршрутизатор 2 находятся в одной подсети.
С хоста отправьте эхо-запрос X.X.X.253: не работает. При дальнейшем исследовании с помощью tshark кажется, что маршрутизатор 2 получает эхо-запрос, но не отвечает. Проверил остальные интерфейсы - ничего нет. Iptables и IP-маршруты кажутся нормальными. Могу добавить, что из-за VRRP запрос ping фактически маршрутизируется маршрутизатором 1.
С хоста проверьте связь с общедоступным интерфейсом маршрутизатора 2: он работает.
С хоста проверьте связь с каждым интерфейсом маршрутизатора 1: он работает.
Я попытался изменить состояние VRRP маршрутизатора 1 и 2 и повторить вышеуказанные тесты: все интерфейсы маршрутизатора 2 доступны, но не маршрутизатора 1. По сути, проблема перевернута, что заставляет меня думать, что она связана с Keepalived.
Все остальные хосты, подключенные к подсети X, доступны, как и все остальные подсети, подключенные к маршрутизаторам 1 и 2.