Как гарантировать, что исходящий трафик использует тот же интерфейс, что и входящий трафик в Linux?

Как гарантировать, что исходящий трафик использует тот же интерфейс, что и входящий трафик в Linux?

У меня есть Linux-бокс с двумя интерфейсами: один для данных, а другой для управления. Если оба находятся в одной сети, я добавляю маршрут для обоих интерфейсов.

Представьте себе таблицу маршрутизации:

192.168.132.0 255.255.255.0 eth0
192.168.132.0 255.255.255.0 eth1 ( management interface)

Проблема в том, что даже если соединение инициировано к IP-адресу управления ( eth1), обратный трафик будет включен eth0.

Как гарантировать, что обратный трафик при соединении использует тот же интерфейс, что и пересылаемый трафик?

решение1

В идеале оба интерфейса должны быть частью разных IP-подсетей, но если вы убеждены, что вам нужно идти только этим путем, то вам следует использовать маршрутизацию разделенного доступа Linux.

Описание раздельного доступа Linux

Пример раздельного доступа от Novell

Сначала создайте две таблицы маршрутизации, T1 и T2, которые будут использоваться для пакетов, отправляемых на эти сетевые карты или с них, добавив строки

252 T1
251 T2

в /etc/iproute2/rt_tables.

Далее настройте правила маршрутизации для маршрутизации входящих и исходящих пакетов через эти таблицы:

ip route add 10.105.16.0/24 dev eth0 src 10.105.16.100 table T1
ip route add default via 10.105.16.2 dev eth0 src 10.105.16.100 table T1
ip rule add from 10.105.16.100 table T1

ip route add 10.105.16.0/24 dev eth1 src 10.105.16.101 table T2
ip route add default via 10.105.16.2 dev eth1 src 10.105.16.101 table T2
ip rule add from 10.105.16.101 table T2

Связанный контент