Страница 1 из 1

2 канала в инет

Добавлено: 2008-04-09 18:52:55
schizoid
в общем имеем:
есть 2 канала в инет от одного провайдера. один канал со статическим адресом, второй - с динамическим.
инет получаю с АДСЛ модемов (настроил mpd (pppoe))
для обоих каналов одинаковый шлюз по-умолчанию.

задача:
1. есть 2 сервера во внутренней сети (почта, веб), т.е. нуно организовать проброс во внутрь (это НАТ). с этим вроде ясно.
2. есть 2 типа пользователей, одни должны ходить через канал со статическим ИПом, другие - с динамическим. При этом пользователи в одноранговой сети, получают настройки по ДШСП.
3. при падении 1-го из каналов, нужно перебросить всех на другой, при поднятии канала - все соответственно по своим местам.

вопрос:
1. как лучше организовать. в смысле какой НАТ использовать (natd или ipnat)? натд умеет работать с таблицами, а ипнат умеет строить списки или что-то подобное?
2. методика переброса между каналами. т.е. куда лучше скрипты писать, или по крону проверять живучесть канала (вопрос тоже как? ведь шлюз у обоих одинаковый), или при падении интерфейса мпд прописать в down_script...


в общем жду помощи.
интересует не готовое решение, типа с конфигами и т.д., а методика решения данной задачи.
спасибо.

Re: 2 канала в инет

Добавлено: 2008-04-10 9:10:41
dikens3
1. есть 2 сервера во внутренней сети (почта, веб), т.е. нуно организовать проброс во внутрь (это НАТ). с этим вроде ясно.
Незнаю что ясно, я вижу это так:

1. Проброс порта на внутренние сервера (25 и 80 порты).
2. Т.к. IP-Адрес статический?, тогда ответ должен уходить через этот же интерфейс:

Код: Выделить всё

ipfw fwd ШЛЮЗ from xxx 25,80 to any

Re: 2 канала в инет

Добавлено: 2008-04-10 22:30:03
schizoid
так прикол в том что ШЛЮЗ одинаковый для обеих соединений ...
а так прокатит?

Код: Выделить всё

ipfw fwd ШЛЮЗ from xxx 25,80 to any via ng0

Re: 2 канала в инет

Добавлено: 2008-04-11 8:50:32
dikens3
schizoid писал(а):так прикол в том что ШЛЮЗ одинаковый для обеих соединений ...
а так прокатит?

Код: Выделить всё

ipfw fwd ШЛЮЗ from xxx 25,80 to any via ng0
Чё-то я перемудрил.

1. Проброс портов 25,80 на внутренние компьютеры.( Решаема )
2. Возврат пакетов средствами ipfw?
Пакеты будут идти от 25 или 80 порта и их нужно отправлять через определённый интерфейс. С помощью ipfw fwd можно указать только шлюз (а он у нас одинаковый). Т.о. отправка (возврат пакетов) через определённый интерфейс с помощью ipfw невозможна.

Нужно что-то ещё думать, я этого не делал. Возможно pf,ipfilter помогут или какое-нибудь ПО.

Re: 2 канала в инет

Добавлено: 2008-04-11 9:23:38
schizoid
т.е. без всяких форвардов, пакет будет возвращаться по дефолтному маршруту, так?

Re: 2 канала в инет

Добавлено: 2008-04-11 12:07:50
dikens3
Да.

Re: 2 канала в инет

Добавлено: 2008-04-12 22:25:09
schizoid
стал читать по pf, вроде там возможно...

Re: 2 канала в инет

Добавлено: 2008-04-18 17:04:43
schizoid
блин с этими 2-мя каналами с одинаковым шлюзом жопа :(
одновременно поднимается только 1 из двух (типа кто первый того и тапки), при поднятии второго мпд ругается

Код: Выделить всё

IFACE: Adding IPv4 address to ng0 failed: File exists
оно то и понятно
получается, что маршрут к шлюзу уже прописан через другой интерфейс.
если же я удаляю тот маршрут , то поднимается второй интерфейс.
но как же они буду работать без маршрута к шлюзу? :twisted:
как-то можно это вымутить?
самое прикольное что на д-линковском шлюзе это как-то работает...

Re: 2 канала в инет

Добавлено: 2008-04-18 21:04:03
void*
Второй линк не поднимается по той причине что дублируется запись в таблице роутинга кроме маршрута по умолчанию прописывается еще маршрут через интерфейс к гейтвею, маршрута два а гейтвей один. Я на днях проделывал такое. Схема была следующей (приблизительно):
1) поднимаем первый канал (ng0 1.1.1.1 => 3.3.3.3)
2) когда поднимется делаем route delete 3.3.3.3
3) поднимаем второй канал (ng1 2.2.2.2 => 3.3.3.3)
4) когда поднимется делаем route add default 3.3.3.3
при этом поднятие канала _НЕ_ДОЛЖНО_ прописывать маршрут по умолчанию, уберите это из конфига
после этого эсть 2 прописаных роута:
2.2.2.2 => 3.3.3.3
default => 3.3.3.3

потом вот так:

Код: Выделить всё

nat 100 config if ng0 reset
nat 200 config if ng1 reset

add 100 check-state
add prob 0.5 skipto 300 all from 10.0.1.0/24 to any
add 200 nat 100 all from 10.0.1.0/24 to not me setup keep-state
add 210 nat 100 all from 10.0.1.0/24 to not me keep-state
add 300 nat 200 all from 10.0.1.0/24 to not me setup keep-state
add 310 nat 100 all from 10.0.1.0/24 to not me keep-state
add 400 nat 100 all from any to me via ng0 in
add 500 nat 200 all from any to me via ng1 in
форвардинг между интерфейсами включен, net.inet.ip.fw.one_pass=1

и получается нормальная, рабочая балансировка 2х каналов. Это все для TCP хорошо работает, при 10-потоковой закачке скорость реально 190% от скорости одного канала (они оба одинаковые, 512к). Несмотря на то что маршрут на 3.3.3.3 прописан через 2.2.2.2 исходящие пакеты идут не только через 2.2.2.2 а нормально делятся между каналами - видимо НАТ хитрит, не знаю. UDP не особо пробовал, но вроде тоже работает, возможно благодаря правилам 210 и 310.

Re: 2 канала в инет

Добавлено: 2008-04-18 22:13:32
schizoid
я собсна так и думал сделать.
а тут еще пока ждоехал домой, еще одна мысля в голову пришла, что б не фря дозванивалась , а сам модем, а фре уже давал ИП какой-нить..
вот тока еще до конца продумать не могу, т.к. на работу попаду только в Пн.

з.ы.: а за ответ спасибо :P

а еще что хотел спросить, а как можно настроить в мпд что б канал передергивался, если пропадает?
я во тк примеру кабель выдергиваю , канал валится, вставляю и все, сам даже не пытается подняться... в линухе это через иниттаб мона сделать, а как во фре?

Re: 2 канала в инет

Добавлено: 2008-04-19 18:16:41
GreenDay
кстати в восьмой фре вроде как два равноценных дефолтовых маршрута задавать можно будет

Re: 2 канала в инет

Добавлено: 2008-11-11 7:46:21
RusBiT
Подкажите как более рационально поступить в моем случае.
В сервере две сетевые , одна в сторону провайдера (основной интернет канал ) + в локалку. В локальной сети есть адсл модем (резервный канал, доступ без ppp соединений только с ip:mac сервера), когда основной канал "в дауне" , то перекидывается nat и маршруты на адсл, который в сети.
Обидно что резервный канал простаивает, как реализовать доступ сразу к двум каналам?
На основном канале nat (192.168.10.0/24)

Re: 2 канала в инет

Добавлено: 2008-11-11 9:41:57
paradox
pf + altq на load balance

Re: 2 канала в инет

Добавлено: 2008-11-11 18:43:47
RusBiT
А pf и ipfw смогут дружить?

Re: 2 канала в инет

Добавлено: 2008-11-11 19:54:17
paradox
у народа что то не сильно получилось...
да и смысл в ipfw очень быстро отпадает
поскольку весь лоад бананс как раз на pf строиться route-to reply-to
ну и что бы корректно балансировать запросы и делить каналы + altq

вот altq помоему может в ipfw дружить
но чесно говоря слабо представляю что там получиться
такая комбинация больше подходит на замену dummynet

Re: 2 канала в инет

Добавлено: 2008-11-12 11:39:57
RusBiT
Почитал немного документацию по pf , вроде бы nat поднять не трудно будет. Просто биллинг,который стоит на данном PC использует ipfw (открывает доступ для определенного ip + ограничивает скорость.)
Использует вообще кто pf и ipfw ? Погуглил , нашел приоритеты fw

Re: 2 канала в инет

Добавлено: 2008-11-12 11:55:40
paradox
pf+ipfw плохо сочитаються
недавно тема была где это пробовали

поэтому стоит для начала определиться
что там за юзера в ipfw
можно ли их перенести на pptp /pppoe
и мороки будет меньше
и биллинг будет цивильнее

Re: 2 канала в инет

Добавлено: 2008-11-12 19:04:47
RusBiT
Хочется остаться на ipfw.
void* посоветовал

Код: Выделить всё

natd -p 8668 -a ip1
natd -p 8669 -a ip2

ipfw add divert 8668 ip from any to ${ip1} recv ${ext1}
ipfw add divert 8669 ip from any to ${ip2} recv ${ext2}
ipfw add check-state
ipfw add prob 0.5 divert 8668 ip from 192.168.0.0/16 to any xmit ${ext1} keep-state
ipfw add divert 8669 ip from 192.168.0.0/16 to any xmit ${ext1} keep-state
ipfw add fwd ${gw1} ip from ${ip1} to any out xmit ${ext1}
ipfw add fwd ${gw2} ip from ${ip2} to any out xmit ${ext2} 
Но как сделать исключения по определенным портам 21,22,25,80,5190 и т.п.?

Re: 2 канала в инет

Добавлено: 2008-11-12 19:09:52
paradox
я понял что он имел ввиду
на опеннете эта идея была

но незнаю кто как но я не одобряю
ipfw add prob 0.5

что имелось ввиду по определенным портам?

Re: 2 канала в инет

Добавлено: 2008-11-13 5:30:10
RusBiT
Как я понял, prob - это приоритет вероятности

Re: 2 канала в инет

Добавлено: 2008-11-13 9:21:44
paradox
prob - This can be useful for a number of applications such as random packet drop ...

Re: 2 канала в инет

Добавлено: 2008-11-13 18:12:40
RusBiT
Вообщем пришел к выводы.
1. выделить отдельный комп под pf
2. купить DI-LB604 http://dlink.ru/products/prodview.php?type=15&id=605

Re: 2 канала в инет

Добавлено: 2008-11-13 19:06:13
paradox
зачем вам какойто длинк с линухом на борту
потому как я сомниваюсь что там аппаратная реализация баланса

поставь на бсд pf+altq и експериментируй

киску ты врядли купишь...