Интернет без нервов

29 января 2013, вторник 18:05
для раздела Блоги


или


Создание роутера с балансировкой нагрузки на MikroTik RouterOS

на табуреточном уровне


Величайшее проклятие конца ХХ и начала XXI веков - интернет - принес не только комфорт в виде соцсетей, ЖЖ, IPTV и иже с ними, но и некоторые неудобства при совместном использовании канала разными пользователями и поглощателями трафика.

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


Именно с торрента я и начал майн кампф за комфорт интернета. Конечно обладателям выделенки не понять ADSL-днище, но Домолинк был, остается и останется крупнейшим провайдером.


Задача стояла давно и в полный рост: канал в 1мбит надо распределять гибко, автоматически и утилизировать полностью в зависимости от потребностей.


У каждого пользователя, задававшимся подобным вопросом, дома уже имеется сетка.

Для простоты и определенности приведу параметры своей минисеточки:

- 192.168.1.1 - шлюз по-умолчанию, он же ADSL-модем, в порты которого подключаются:

  - 192.168.1.2 - Домашний контроллер домена с DNS, DHCP

  - 192.168.1.10 - смотрелка (IPTV, интернет-радио)

  - 192.168.1.254 - планшет по Wi-Fi

  - 192.168.1.12 - торрент-качалка. Качалка вообще-то виртуальная машина на контроллере домена, но это неважно. В этом и прелесть виртуализации - все как настоящее!


Для управления трафиком придется поднимать роутер который и займется сим благородным занятием. И тут нужно хорошенько дунуть, потому что если не дунуть, никакого фокуса не будет (© А.Акопян). Фокус в том чтобы к существующей физической сети 192.168.1.0/24 добавить еще одну - 192.168.0.0/24, добавить роутер-балансировщик нагрузки без установки дополнительных сетевых карт и прочего железа. При наличии постоянно включенного контроллера домена с качалкой вполне логично добавить в нем еще одну виртуальную машину.


Заранее выбираем IP-адреса для роутера:

192.168.1.7 - внешний адрес роутера из той же подсети что и шлюз интернета

192.168.0.7 - внутренний адрес для локальных потребителей трафика.


Список перепробованных мною шлюзов и прокси перевалил за полтора десятка, но только один справился с поставленной задачей - MikroTik RouterOS.


Он то и будет made my days.


Все нижеописанное проделано на ROS версии 5.20, которую легко можно достать на народном сайте.


 


1. Создаем виртуальную машину


1.1 Тип Linux, версия 2.6 (х86), оперативной памяти вполне хватит 128Мб, HDD - 5GB динамический с боольшиим запасом. На практике HDD расходуется несильно, ~ 200-400Мб.


1.2 В свойствах виртуальной машины обязательно выставить:

- все аппаратные ускорители виртуализации

- количество ядер = 1

- Часы в системе UTC

- Чипсет PIIX3

- Обязательно HDD должен быть на PATA контроллере, MikroTik не поддерживает SATA

- Аудио, СОМ и LPT можно выключить

- Обязательно включить два сетевых интерфейса в режиме сетевого моста, разрешить неразборчивый режим

- И чтобы проще различать интерфейсы лучше задать им разные эмулируемые адаптеры: PC-Net и intel PRO





2. Установка MikroTik


- При первом запуске будет предложено выбрать загрузочный диск с ОС - выбираем заранее скачанный загрузочный установочный диск MikroTik Router OS и выбираем компоненты. Т.к. установка производится в виртуальную ОС можно отказаться от GPS и Wireless. Компоненты выбираются пробелом и курсором, впрочем все написано серым по черному.

- После окончания установки будет предложено нажать "Enter" для продолжения и перезагрузки, однако не торопитесь, сначала нужно извлечь установочный диск из виртуального привода, иначе после перезагрузки опять начнется установка.

- По-умолчанию логин admin, пароля нет

- Запускаем утилиту WinBox для конфигурации. У свежепоставленного роутера пока нет IP-адреса, но это не беда, WinBox умеет подсоединяться по МАС-адресу. Нажимаем на "...", выбираем роутер и жмем "Connect"

- При первом запуске потребуется активировать роутер файлом лицензии. Неактивированный роутер работает 24 часа.





3. Первоначальная настройка



3.1 Первым делом нужно назначить IP адреса роутеру.

Внешний интерфейс - ether2 - подключается к интернету, подсеть 192.168.1.0/24

Внутренний интерфейс - ether1 - подключается к домашней сети, подсеть 192.168.0.0/24

Через WinBox подключаемся к роутеру по МАС-адресу и в разделе IP - Addresses задаем IP-адреса роутера как показано ниже.




3.2 Даем роутеру интернет. Для этого ему нужно прописать маршрут по-умолчанию и DNS-сервера.

Маршрут по-умолчанию задаем как для подключения к интернету обычного компьютера: 0.0.0.0/0, и шлюз 192.168.1.1. Обратите внимание шлюз и внешний интерфейс роутера должны быть из одной подсети 192.168.1.0/24




DNS-сервера указываем свои и/или провайдера, лучше добавить DNS-сервер гугля 8.8.8.8

Дополнительные строчки DNS серверов добавляются "черной стрелочкой вниз".




Проверяем интернет на роутере пингуя ya.ru




3.3 Чтобы роутер стал роутером и начал раздавать интернет нужно настроить NAT.

Для этого в разделе IP - FireWall настраиваем srcnat для локальной сети 192.168.0.0/24 как показано ниже:




3.4 Добавляем компьютерам адрес из подсети 192.168.0.0/24 чтобы они могли достучаться до нового шлюза 192.168.0.7. Правильнее всего менять третий разряд/октет 1->0, так будет понятнее who is who.




Интернет на компьютерах должен работать.


 


4. Расстановка меток на трафик


Сначала нужно расставить приоритеты для потребителей трафика.

Обозначим 1 - самый высокий приоритет, 8 - самый низкий.

8  - торрент на качалке. Но на качалке тоже иногда приходится открывать страницы, поэтому приоритетнее торрента...

7  - ...трафик браузера на качалке, даже с домолинком нужно, хоть и редко, выбирать что качать

6  - приоритетный трафик



Чтобы роутер понимал какой трафик приоритетнее его нужно промаркировать. Для этого в разделе IP - Firewall открываем вкладку mangle и создаем правила маркирования. Правила обрабатываются сверху вниз. Учтите, если какое-то правило сработало то дальше правила не обрабатываются, поэтому частные правила нужно помещать выше общих.

Удобнее к маркерам добавлять концовку IP-адреса чтобы было видно чей это трафик.


Для начала добавим приоритетный трафик с компьютера 192.168.0.10

Обратите внимание: тк регулируем трафик из интернета входящим интерфейсом будет подключенный к интернету ether2, исходящим интерфейсом - локальный ether1.

Метка трафика выбирается произвольно, я выбрал users10, users означает что трафик пользовательский и 10 указывает что это трафик 192.168.0.10




Аналогично добавляется правило для планшета 192.168.0.254, метку трафика можно оставить ту же users10.


Чуть-чуть сложнее правило для браузера на качалке 192.168.0.12, тут уже добавятся порты: 80 и 443 - это интернет странички и почта. Метка users12




Теперь добавляем метку torrent для торрент-трафика с адреса 192.168.0.12. Выделить именно торрент трафик по портам сложно, торрент использует много портов и они динамические. Поэтому не мудрствуя лукаво можно поступить иначе: определить известный трафик с качалки, как выше определен трафик users12, а остальной страфик уже и будет торрентом тк он точно не работает на портах 80 и 443. Правила обрабатываются последовательно, помните? Правило метки торрента просто будет ниже правила users12




В итоге цепочка правил приобретет вид




Правила можно таскать вверх и вниз мышкой для правильной расстановки очереди.


 


5. Приоритезация трафика


Пропуск трафика с приоритетом возможен только в очереди PCQ, ее и создадим вначале.

Важно учесть что метки трафика в наших правилах разделяются по адресу назначения, то и в правиле очереди так же нужно отметить Dst.Address.

Limit и Total Limit так же придется подбирать экспериментально. Для моих днищенских 1024кбит вот так. Толще канал - меньше limit.




Все вышенаписанное было сделано только ради одного - расстановки приоритетов в дереве очередей.


Создаем корневое правило для всех входящих пакетов.

Важно выставить скорость не больше скорости канала, иначе очередь будет формироваться не у роутера, а у провайдера!

Для компьютеров локальной сети весь трафик будет приходить с локального интерфейса роутера ether1, его и выбираем в качестве родителя. Скорость тарифа 1мбит, имя Global выбирается произвольно, очередь PCQ, созданная выше. Именно 1мбит Global и будет распределяться.




Дальше делаем ветви дерева очередей - добавляем наш маркированный трафик. Здесь уже очередность не важна.


Добавим "ветвь" торрента.

Имя произвольное, Torrent, остальное важно:

- родитель - Global, ведь его канал распределяется

- метка трафика torrent из п.4

- очередь PCQ

- приоритет самый низкий = 8

- границы скорости от 32кбит до 1мбит, т.е. торрент всегда получит свои 32кбита в сек но не больше 1мбита




Аналогично добавляем всех остальных.


В итоге составляем дерево очередей:




На картинке выше видно как смотрелка 192.168.0.10 при нагрузке забирает себе весь почти весь канал (936кбит из 1мбита), оставив качалке минимальные 32кбит, что вполне достаточно для просмотра роликов на ютубе без заиканий.

Однако если запустить интернет-радио канал не простаивает впустую, а утилизируется полностью: радио 128кбит, торрент забирает остаток канала - см.ниже




В итоге общая скорость всегда 1мбит - канал полностью занят.


_________


Источник вдохновения черпал Rimsky из команды SVP-Team.com


ver 0.1 / 2013-01-26

Копировать без указания автора и первоисточника разрешается только представителям сексуальных меньшинств


_________


Оффлайн версии chm rar

Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают