У меня есть 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