Как разнести два l2tp по двум физическим линиям?

Обсуждение общих вопросов, не касающихся настройки оборудования и ОС
Ответить
Eugene_87
Сообщения: 2
Зарегистрирован: 09 мар 2013, 13:43

09 мар 2013, 14:13

Всем доброго времени суток!

Я являюсь счастливым обладателем роутера RB2011L. На роутере настроены два l2tp подключения в провайдеру. Используемые линии по скорости, ширине канала и качеству равнозначны. К первым двум портам роутера подключены два медных кабеля ведущих в оборудование провайдера.

Суть проблемы: при использовании WinBox наблюдаю, что весь трафик(через оба l2tp туннеля) укладывается в ПЕРВЫЙ порт роутера, в то время как второй практически не задействован. Подскажите пожалуйста как заставить проходить весь трафик идущий по ПЕРВОМУ l2tp туннелю только через ПЕРВЫЙ порт роутера(ПЕРВУЮ физическую линию), а весь трафик идущий по ВТОРОМУ l2tp туннелю - через ВТОРОЙ порт роутера(ВТОРУЮ физическую линию).

Буду рад любой помощи в решении проблемы. Заранее большое спасибо.


Аватара пользователя
podarok66
Модератор
Сообщения: 3828
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

09 мар 2013, 19:43

А Вы для начала почитайте тут. Там о двух провайдерах и распределении нагрузки автор очень даже подробненько и внятно пишет.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Eugene_87
Сообщения: 2
Зарегистрирован: 09 мар 2013, 13:43

10 мар 2013, 10:33

Я внимательно прочитал эту статью. Два туннеля l2tp у меня работают и загружены приблизительно одинаково. Проблема в том, что наружу трафик идет только по одному физическому кабелю(и приходит тоже кстати по нему). Вледствие этого туннели работают в половину от возможной(заявленной по тарифу) скорости. Таким образом, вместо двух туннелей по 60 МБит/с я имею два туннеля по 30 МБит/с(из-за ограничения скорости провайдером по одной физической линии).

Если у кого-то есть какие-то предположения как решить проблему, буду очень признателен если поделитесь.


Аватара пользователя
podarok66
Модератор
Сообщения: 3828
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

10 мар 2013, 10:46

Извините, недопонял...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
Barvinok
Сообщения: 98
Зарегистрирован: 28 фев 2012, 23:21

10 мар 2013, 21:31

Думаю, вопрос вернее будет поставить так:
Как привязать клиентское L2TP-подключение к определённому физическому интерфейсу?

Мы переписывались с топикстартером в личке. Провайдер - Би-Лайн, со своими прибабахами.
Вопрос действительно крайне любопытен и я посчитал нужным продолжить разговор в общедоступном форуме: может кому ещё пригодится.

На вскидку мне в голову пришло два решения:
Я в личной переписке писал(а):Ну, давай поглядим. Би-Лайн распределяет нагрузку на свои L2TP-сервера используя круговорот DNS (так называемый round robin dns). Т.е. имя tp.internet.beeline.ru в разное время разрешается в разные IP-адреса.

RouterOS не позволяет при создании интерфейса L2TP-клиента указывать в качестве connect-to имя. Только IP-адрес. А значит тебе придётся использовать скрипт, который время от времени производит это преобразование и подсовывает в значение connect-to обоих твоих L2TP-подключений.

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

:global newIP [:resolve tp.internet.beeline.ru]
/interface l2tp-client set BeeLine-L2TP connect-to=$newIP
:log info "BeeLine_L2TP_script:Changing IP"

Смотри. Ты можешь пойти двумя путями: либо подключаться к разным L2TP-серверам либо дважды к одному и тому же.
В первом случае ты сначала устанавливаешь первое подключение. Потом проверяешь IP-шник tp.internet.beeline.ru вышеозначенным скриптом и как только он сменится - устанавливаешь второе, но уже через другой физический порт.
Тебе должен помочь вот этот скрипт.
Там тоже происходит постоянная проверка (правда собственного внешнего) адреса и сверяется с предыдущим, записанным в файле. Как только происходит смена - выполняется некое действие.

Второй случай - дважды подключиться к одному L2TP-серверу.
И здесь уместно будет использовать PCC механизмы.
В качестве признака деления на два потока используй адрес назначения: ip-шник tp.internet.beeline.ru, который пусть подсовывается из того-же скрипта.
Делаешь так:
per-connection-classifier=dst-address:2/0 dst-address=текущий_IP_tp.internet.beeline.ru action=mark-connection chain=prerouting new-connection-mark=l2tp-out1

per-connection-classifier=dst-address:2/1 dst-address=текущий_IP_tp.internet.beeline.ru action=mark-connection chain=prerouting new-connection-mark=l2tp-out2

А в / ip route соответственно указываешь шлюзом для потока l2tp-out1 интерфейс ether1, а для потока l2tp-out2 интерфейс ether2.
Второе решение уродливей первого - похоже на стрельбу из пушки по воробьям.
Ради распределения двух соединений задействуем "целый механизм"...

Первый случай тоже не подарочный: придётся писать скрипты - маета...
Но зато нагрузка распределится на два различных L2TP-сервера, что может положительно сказаться на надёжности и пропускной способности.

Может кто придумает красивше?


Аватара пользователя
Barvinok
Сообщения: 98
Зарегистрирован: 28 фев 2012, 23:21

17 мар 2013, 22:34

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

Я представляю себе так.
Разбиваем соединения на потоки и помечаем их:

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

/ip firewall mangle
per-connection-classifier=dst-address:2/0 dst-address=текущий_IP_tp.internet.beeline.ru action=mark-connection chain=output new-connection-mark=l2tp-out1
per-connection-classifier=dst-address:2/1 dst-address=текущий_IP_tp.internet.beeline.ru action=mark-connection chain=output new-connection-mark=l2tp-out2

На основании этих меток делаем метки для маршрутизации:

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

/ip firewall mangle
add action=mark-routing chain=output connection-mark=l2tp-out1 new-routing-mark=to_ether1
add action=mark-routing chain=output connection-mark=l2tp-out2 new-routing-mark=to_ether2

Теперь, собственно, маршруты:

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

/ ip route
add dst-address=Текущий_IP_tp.internet.beeline.ru gateway=ether1-gateway routing-mark=to_ether1
add dst-address=Текущий_IP_tp.internet.beeline.ru gateway=ether2-gateway routing-mark=to_ether2

Вот мне любопытно, если одно соединение будет работать надёжно, а второе время от времени отваливаться и вновь устанавливаться. Оно будет поочерёдно подключаться то на одном то на другом физическом интерфейсе? Тогда эта схема не может быть окончательным решением.
Но: не попробуешь - не узнаешь!

В запасе есть ещё один патрон - подключение к разным L2TP-серверам.
Хоть и со скриптами, но мне он кажется вернее...


Ответить