On 19.11.2012 18:10, Oleksii Tsvietnov wrote:
Приветствую Всех!

В данный момент мне нужно реализовать аналог серверной части, работающей под
OpenIndiana, но на FreeBSD.
Варианты реализовать по-другому не рассматриваются, ибо сейчас "это"
работает и надо попробовать так же, но на другой OS.

Интересно, какие есть идеи у сообщества в отношении решения такой задачки:
2 сетевухи, на каждой по 1 адресу из одной и той же сети для "сервиса", 1
шлюз и ещё 1 адрес на котором "сервис" не отвечат (он для внутренней кухни).
Необходимо разделить трафик по сетевухам (куда пришёл, от туда и уходит), не
допуская выхода всего исходящего с одной сетевухи.

Для наглядности:
ext0: 1.1.1.15/24, 1.1.1.14/24
ext1: 1.1.1.16/24
GW: 1.1.1.1

В качестве "сервиса", к примеру, работает веб-сервер.
Объединять в lagg, не подходит - одни клиенты используют 1й адрес и 1ю
сетевуху, другие - 2й адрес и 2ю сетевуху.
Конечная цель - не дать вторым выжрать всю полосу со всех сетевух.
Вариант шейпера можно было бы рассмотреть, но тогда это будет не аналог.

Сейчас я эту задачу решил так:
2 jail'a, 2 epair интерфейса , 2 bridge интерфейса.
Jail'ы запускаю с vnet и помещаю в них по соответствующей части от epair, на
которую и привязываю IP/24 и дефолтовый маршрут.
Оставшиеся части от epair через bridge объединяю с реальным сетевухами ext0
и ext1.
Третий IP остаётся в хостовом окружении.
Сразу не крепил к jail'ам сетевухи, потому что есть IP, на котором "сервиса"
нет, он для внутренней инфраструктуры и его в Jail не поместишь,
он должен на хостовой системе отвечать.
Такая схема работает отлично. Залогинившись в главную систему, я могу
дампить ext0 и ext1, при этом вижу трафик уходящий в Jail'ы,
а на ext0 в добавок и трафик главной системы.

Вопрос: как реализовать тоже, но без Jail'ов ?
Работает себе веб-сервер и отдаёт трафик на ту сетевуху, откуда получил
(адрес шлюза только один, сеть одна).

Решалось бы красиво, если бы работало автоматическое присвоение FIB новому (accept() в смысле) сокету процесса по FIB первого входящего SYN-сегмента. А для этого (всех входящих пакетов) можно в ifconfig присвоить fib. Такая потребность есть давно, но в каком-то PR (за давностью лет уж не помню номер) разработчик fib'ов не понял потребность, поообещав взамен vimage, чем кончилось, не знаю (видимо, описанная выше схема как раз, стала работать).

Можно прямо сейчас костылями: создается фейковый адрес шлюза, например, 1.1.1.254, с тем же MAC-адресом, что и реальный 1.1.1.1, далее:

ipfw fwd 1.1.1.254 all from 1.1.1.16 to not $service_net out xmit ext0

--
Vadim Goncharov     <[email protected]>           RU-Center
NET Department                            http://www.nic.ru
NET-SYS Group             phone:+7(495)737-7646  (ext.4019)

Ответить