← Все новости
Динамическая маршрутизация по источнику в Linux

Динамическая маршрутизация по источнику в Linux

Представим сервер, доступный из нескольких сетей или через несколько шлюзов. Запрос приходит через один интерфейс, а ответ, если полагаться на обычную таблицу маршрутизации, уходит через другой. В одних топологиях это допустимо, в других — чревато: промежуточное оборудование отбросит такой пакет, соединение не установится или перестанет работать.Маршрутизация по метке пакета fwmark — проверенный механизм, он решает подобные задачи средствами nftables, ip rule и ip route. Но конфигурацию приходится готовить заранее. Стоит списку доступных интерфейсов измениться динамически — например, образуется туннель — правила и маршруты придётся доводить руками, скриптами или иными средствами автоматизации.Метки fwmark тоже не всегда свободны. Выделить под новую задачу биты удаётся не везде, и каждое дополнительное правило лишь усложняет общую картину.Если для ответа важно, откуда пришёл запрос, почему бы не сохранить эти сведения при обработке первого пакета соединения и не использовать их при выборе обратного маршрута? Тогда отпадёт необходимость заранее описывать отдельное правило для каждого возможного маршрута. Читать далее