Есть ли готовые решения для multihoming в linux?

Сначала о задаче, которую решаем:
Есть несколько линков, у каждого свой адрес (или несколько адресов).
Например, у нас есть eth0 с адресами 1.1.1.1 и 1.1.1.2, и eth1 с адресом 2.2.2.2

Необходимо, чтобы независимо от того, какой сейчас default gateway, ответ на запрос уходил именно с того интерфейса и с того адреса, на который пришёл запрос.

То есть пусть ip ro показывает
default via 2.2.2.1 dev eth1 onlink
И на внешнем хосте мы запускаем ping 1.1.1.2
Ответы на ICMP-запросы должны уходить интерфейса eth0 с адреса 1.1.1.2

Задача знакомая, решается с помощью iptables/nftables и iproute2.
Но решение каждый раз напоминает «закат солнца вручную».

Вопрос: есть ли что-то готовое для решения этой задачи? Чтобы правила nftables для маркировки пакетов/записей в conntrack, ip rule и связанные с ними таблицы маршрутизации поддерживались в актуальном состоянии автомагически (отслеживалось добавление/удаление сетевых интерфейсов и адресов на них).
  • Вопрос задан
  • 393 просмотра
Пригласить эксперта
Ответы на вопрос 2
ValdikSS
@ValdikSS
NetworkManager поддерживает, но требует ручной настройки.
Что-то вроде:
# nmcli c modify 'eth0' ipv4.route-table 1234
# nmcli c modify 'eth0' ipv4.routing-rules "from 1.2.3.4 table 1234 priority 1000"

Потребуется хоть какой-то маршрут в основной таблице маршрутизации, хоть
# ip route add default dev lo

Также netplan поддерживает policy routing, но его не тестировал.

Вообще, то, что вам требуется, можно реализовать bash-скриптом в виде dispatcher для NetworkManager.
Ответ написан
karabanov
@karabanov Куратор тега Linux
Системный администратор
Multihome IPv4 в Linux
Только не забудь коннктед маршруты вписать, а то локальный трафик будет через роутер ходить, хотя должен напрямую от машин к машине.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы