Имеется два канала в инет
канал1 - ОГО, 1 мегабит, модем 192.168.1.1
канал2 - Билайн, 5 мегабит, модем 192.168.1.2и есть машинка для сервера (192.168.1.3), сейчас стоит FreeBSD 7.1, но могу поставь то, что решит задачу
задача:
1)если соединение было снаружи, то пакеты отправлять на тот модем, откуда пришло соединение
2)если соединение инициировано изнутри сети, то отправлять пакеты через более быстрый канал
метод определения "быстрого" канала может быть любым
замечено, что часть хостов имеют меньшие задержки и более высокую скорость через канал1, другая часть - через канал2сейчас через ipfw собираю хосты, с которыми есть обмен трафиком
потом bing'ом (http://en.wikipedia.org/wiki/Bing_%28program%29) меряю "быстроту" канала к данному хосту и по результату прописываю статический маршрут
но этот метод не решает первую часть задачипроблема ведь не уникальная, должны быть готовые решения
может другая ОС умеет больше FreeBSD в данном вопросе?з.ы. OSPF, BGP не предлагать, так как содействия провайдеров обычному клиенту не добиться
>2)если соединение инициировано изнутри сети, то отправлять пакеты через более быстрый канал
>
>метод определения "быстрого" канала может быть любым
>замечено, что часть хостов имеют меньшие задержки и более высокую скорость через
>канал1, другая часть - через канал2Жму руку - Вы себе поставили (или Вам???) действительно мега-извращенную задачку...
А не проще настроить PF и round-robin balance ? Хотя думаю Вам это не подойдет - не тот размах и полет мысли :) :) :)
>Жму руку - Вы себе поставили (или Вам???) действительно мега-извращенную задачку...себе, это все дома
>А не проще настроить PF и round-robin balance ?
в том и дело, что round-robin не устраивает
>1)если соединение было снаружи, то пакеты отправлять на тот модем, откуда пришло соединениеЭта задача легко решается с помощью PF и тэгированием пакетов:
Пример:
Секция NAT файла pf.conf:
rdr on $if_ext inet proto tcp from <sklads> to $if_ext port {25 110} tag EXT_IF_A -> 192.168.x.y
rdr on $if_adsl inet proto tcp from <sklads> to $if_adsl port {25 110} tag EXT_IF_B -> 192.168.x.yСекция правил:
pass in quick reply-to ( $if_ext $router_ext ) tagged EXT_IF_A keep state
pass in quick reply-to ( $if_adsl $router_adsl ) tagged EXT_IF_B keep stateИ все.
Тут хоть 5 интернет каналов сделай - отвечать сервер будет через тот канал, с которого пришел пакет.
Аналогично пакеты для сервера (не PAT):
pass in on $if_adsl reply-to ($if_adsl $router_adsl) inet proto tcp to $if_adsl port 25 modulate stateВ этом случае порт 25 доступен через вторичный канал (ADSL) любому адресу из Интернет.
PS: А про более быстрые маршруты - это извращение, ИМХО.
PSS: Помогать Вам в решение такой задачи будут только такие же "извращенцы" :)