У вас есть два маршрута по умолчанию в столкновении:
Таблица IP-маршрутизации ядра
Шлюз назначения Флаги Genmask MSS Window irtt Iface
0.0.0.0 192.168.88.1 0.0.0.0 УГ 0 0 0 eno3
0.0.0.0 192.168.2.1 0.0.0.0 УГ 0 0 0 eno2
Это ненормальная ситуация. Ваш ПК/сервер запутался, потому что нет точного правила для решения, какой из двух интерфейсов использовать в качестве шлюза в Интернет. Решение о маршрутизации зависит от метрик, динамически устанавливаемых для интерфейсов, или от других факторов, которые могут изменяться случайным образом. Поэтому иногда предпочтение отдается интерфейсу eno2, а иногда и eno3 в качестве основного шлюза.
Я предполагаю, что входящие пакеты извне внутрь достигают вашего сервера правильным путем в соответствии с IP-адресом, используемым в качестве пункта назначения (с точки зрения внешнего пользователя).
- Пакет SYN TCP, отправленный из Интернета на публичный адрес ISP1, проходит через eno2
- Пакет SYN TCP, отправленный из Интернета на публичный адрес ISP2, проходит через eno3
Вы можете проверить это с помощью Wireshark, Tshark или tcpdump.
Но ответный пакет (SYN ACK TCP) отправляется обратно ТОЛЬКО через ГЛАВНЫЙ ШЛЮЗ, выбранный системой в данный момент. Только один GW из двух является предпочтительным, а второй вообще НЕ ИСПОЛЬЗУЕТСЯ одновременно (за исключением того, что вы делаете какую-то специальную настройку). Это означает, что соединение, предназначенное для одного интерфейса, работает нормально, но второе соединение отвечает через неправильный интерфейс. Эта ситуация называется «асимметричной маршрутизацией». Пакет поступает через eno3, а ответ уходит через eno2, например.
Провайдеры обычно проверяют и отбрасывают такие пакеты, так как это похоже на сетевую атаку. Исходный IP-адрес не совпадает с сетевым адресом исходного интерфейса.
Решения вашего сервера о маршрутизации зависят НЕ от интерфейса, используемого для входящего пути пакетов, а от фактически предпочтительного основного исходящего шлюза. Входящий путь и исходящий путь отличаются для некоторого соединения, и это причина вашей проблемы.
Ситуация может быть решена с помощью расширенной маршрутизации (например,маршрутизация на основе политик и специальные отдельные таблицы/правила маршрутизации для каждого интерфейса). Найдите примеры iproute2.
Возможно, эти ссылки помогут вам:
https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System
https://tweenpath.net/multiple-default-gateways-system/