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)