Войти

Показать полную графическую версию : два канала интернет с различной пропускной способностью


VictorSh
27-02-2012, 16:25
Здравствуйте,
посоветуйте как быть в данной ситуации.

Офис с почтовым сервером (FreeBSD 7.4), самбой, фтп, опенвпн и т.д.

Есть два интернет канала: назовем их ISP1 и ISP2.
у первого такие характеристики ISP1: download 512Kbit/s, upload: 10MBit/s
у второго ISP2: download ~8Mbit/s (max), upload: ~100KBit/s (Yota)

То есть первый хорошо отдает, но плохо скачивает, а второй наоборот.

Установил VPN тоннель для ноутбуке начальника. Тоннель создается через ISP1. Я думал, что он будет скачивать больше. Но оказалось, что нужно и быстро закачивать на сервер инфу. Для сервера это download. Если использовать ISP2, то папки в подключенных сетевых дисках в Мой компьютере отображаются очень долго с большими тормозами.

Как можно сделать чтобы использовалась мощность двух каналов? Чтобы можно было бы быстро скачивать и отдавать.
Можно ли как-то сделать, чтобы скачивалось через один канал, а отдавалось через другой?

VictorSh
19-03-2012, 13:55
есть какие нибудь идеи?

freese
19-03-2012, 14:38
http://www.opennet.ru:8101/base/net/ipfw_balance.txt.html

VictorSh
20-03-2012, 15:22
Спасибо за ссылку, но это не совсем то, что надо.

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

Но есть идея: сделать так чтобы openvpn прослушивал два интерфейса, один ISP1, другой ISP2. На ноутбуке установить два сетевых виртуальных интерфейса OpenVPN и настроить их, чтобы один стучался к ISP1, другой к ISP2. Подключить две одинаковых сетевых папки, но с использованием разных конфигов OpenVPN. И когда надо скопировать на сервер, пользоваться одной папкой, а когда надо скачать с сервера - другой. Как думаете прокатит?

пока вожусь с настройкой прослушивания второго интерфейса на сервере.

freese
20-03-2012, 15:33
VictorSh, предложу еще один вариант чуть проще - заставить фаервол разделять входящий/исходящий трафик, ipfw с этим справится

VictorSh
20-03-2012, 15:39
заставить фаервол разделять входящий/исходящий трафик, ipfw с этим справится »
Да, это понятно, но как по вашему с этим будет справлять нат на стороне клиента?
то есть он устанавливает соединение с сервером, запрашивает что-то по ISP1, в таблице нат остается запись, что назначение ISP1, а потом сервер отвечает клиенту через ISP2, но пакет доходя до нат клиента тут же рубится, так как это уже входящее подключение, которое не занесено в таблицу инициированных подключений.

freese
20-03-2012, 15:42
VictorSh, по прослушиваемым портам еще дополнительно разделить, создать правило для подключения клиента

VictorSh
20-03-2012, 16:16
по прослушиваемым портам еще дополнительно разделить, создать правило для подключения клиента »
честно говоря, не понял конкретной реализации. Файерволом можно конечно перенаправлять траффик, в pf, например с помощью reply-to и т.п., но как разделение по портам поможет проходить траффику через NAT? не могли бы вы поподробнее объяснить, что вы имели ввиду?

freese
20-03-2012, 16:24
VictorSh, на вскидку в яндаксе первая статья (http://www.lissyara.su/articles/freebsd/tuning/policy-based_routing/), правда провайдер один и опят же не точь в точь как тебе надо, но принцип не сильно измениться
upd:
проходить траффику через NAT »
причем тут NAT? тебе нужно чтобы начальник подключался через один интерфейс по vpn, ну вот и создай правило для подключения vpn, которому можно все

VictorSh
20-03-2012, 23:42
причем тут NAT? »
я имею ввиду не тот NAT, котрый у меня на сервере, а тот, который у провайдера, к которому подключен начальник во время командировки с ноутбуком. Смотрите, что я имею ввиду: начальник инициирует подключение по OpenVPN (клиент), данные проходят через маршрутизатор провайдера, в котором работает NAT. В нем остается запись в таблице подключений, что пакет такой-то, адрес назначения такой-то (ISP1). Пакет доходит до моего сервера, опенвпн прослушивает два интерфейса, потом файервол перенаправляет ответ на второй интерфейс через (ISP2) - это без проблем. Пакет идет обратно к начальнику, но когда доходит до маршрутизатора (причем не факт, что дойдет до маршрутизатора, к которому подключен начальник), то в нем службой NAT проверяется ip адрес, если он есть в таблице то пакет пропускается как ответ на инициированное подключение, если нет, то считается входящим подключением и скорее всего обрубится. Адреса естественно совпадать не будут. А если пакет пройдет, то как винда начальника поймет, что входящее подключение это всего лишь ответ на запрос пользователя, но от другого провайдера?

нужно чтобы начальник подключался через один интерфейс по vpn »
нужно чтобы пакеты, идущие на сервер, шли по каналу ISP2 по отношению к серверу, а от сервера к начальнику по каналу ISP1.

Статью прочитал, там про разделение траффика со стороны сервера, но остается вопрос, как он будет приниматься клиентом?

Спасибо за ключевые слова "разделение траффика" :) вбил в гугл - изучаю, но как я и гуглил раньше - говорят, что невозможно и то же по этой причине в общем виде.
http://unixforum.org/index.php?showtopic=68015
http://rutracker.org/forum/viewtopic.php?t=1013585 - посты Uncle_Bop и vladimir32

Можно, конечно попробовать подменять IP адрес, чтобы ответ шел на другого провайдера но с адресом от кого от первого провайдера в пакете, но не уверен, что провайдер такое пропустит. Но зато проблема с NATом отпадает.

Прочитал насчет спуфинга, может использование UDP в OpenVPN поможет решить проблему с NAT клиента, путем замены src-ip?

Кондовый способ - это организация BGP и AS - что неоправданно сложно и дорого в данной ситуации.

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

freese
21-03-2012, 09:17
Значит папку и openvpn'ы :)




© OSzone.net 2001-2012