LINUX.ORG.RU

Маршрутизация в Linux


0

1

Ситуация:

Есть сервер, на нем 2 сетевых интерфейса: eth0: 192.168.0.1/24 eth1: 192.168.1.1/24

Настроена policy based маршрутизация:

ip rule add from 192.168.0.0/24 table 100
ip rule add from 192.168.1.0/24 table 101
ip route add default via 192.168.0.254 dev eth0 table 100
ip route add default via 192.168.1.254 dev eth0 table 100

При явном указании локального адреса исходящие tcp подключения и traceroute работают. Без указания адреса локального адреса не маршрут не найден.

Вопрос: default gateway для таблицы default обязателен?

P.S. Обработкой входящих соединений проблем нет.

★★★

Ответ на: комментарий от zolden

Тогда непонятно почему не находит маршрут...

Как я понял, ядро сначало находит маршрут, потом определяет src адрес.

exst ★★★ ()
Ответ на: комментарий от exst

интересно, в принципе я видел несколько раз чудеса с трассертом при условии отсутствия дефолта...а что покажет
ip r g адрес_назначения ?

zolden ★★★★★ ()
Ответ на: комментарий от exst

а, у меня значит был другой случай, я просто не понял твою схему.
у тебя есть правила маршрутизации для упомянутых двух сетей, и шлюз в каждой сети знает маршрут наружу (например до гугла).
Но у тебя же правила только для входящих пакетов из этих двух сетей, поэтому куда отправлять пакет не подпадающий под эти правила ядро не знает.

zolden ★★★★★ ()

Когда не указано на какой адрес биндиться, ядро выбирает его только с учётом основной таблици маршрутизации. При добавлении маршрута можно указывать src-адрес и тогда при создании соединения без указания локального адреса будет использован указаный адрес.

Вобще, мне не совсем понятно, какое поведение от ядра вы ожидали, у вас два равноценных маршрута по умолчанию, какой выбирать неясно.

ИМХО, маршрут по умолчанию в основной таблице маршрутизации нужно ставить всегда, причём не обязательно через какой-то gateway, можно особые типы маршрутов «blackhole» или «unreachable».

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.