Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Установка Mikrotik Cloud Hosted Router на VPS хостинг Digital Ocean. Эмулятор микротик


Mikrotik и GNS3 / Хабр

Доброго времени суток, Хабр!

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

Последнее время на Хабре появляются интересные статьи по работе с оборудованием Mikrotik. Не все можно попробовать на реальном железе, поэтому у меня возник вопрос — а можно ли эмулировать и его. Как оказалось сам Mikrotik не отстает в этом вопросе, и предлагает нам попробовать…

I want too Для эмуляции сети нам предлагают — GNS3 Для симуляции аппаратного обеспечения — Qemu И образ RouterOS для x86 систем — RouterOS

1. Для начала нам необходимо подготовить образ виртуального жесткого диска, в который в последствии мы установим RouterOS. Для этого необходимо использовать утилиту qemu-img

qemu-img create [-f format] filename [size]

Нам будет достаточно создать простой образ в формате qcow2 размером в 1G Qcow2 — это формат дискового образа программы QEMU. Название является аббревиатурой названия формата Copy-On-Write (копирование при записи).

Для этого выполним команду

qemu-img.exe create -f qcow2 mikrotik.img 1G

* образ создается в текущей папке. Для удобства, после установки ОС, его необходимо перенести в папку с проектом GNS3, либо в любое другое удобное для вас место

2. Далее необходимо установить саму RouterOS на наш образ виртуального жесткого диска Для этого используем утилиту qemu

qemu [option][disk_image]

Опций у утилиты много, нам понадобиться:-boot [a|c|d|n]Boot on floppy (a), hard disk ( c ), CD-ROM (d), or Etherboot (n). Hard disk boot is the default. -cdrom fileUse file as CD-ROM image (you cannot use -hdc and and -cdrom at the same time). You can use the host CD-ROM by using /dev/cdrom as filename.

qemu.exe mikrotik.img -boot d -cdrom <путь_к_образу>/mikrotik.iso

Запустится интерфейс qemu, и если все выполнено успешно мы увидим приглашение для выбора необходимых компонентов. Нажимаем “i” для инсталляции.

3. Теперь нам необходимо добавить наше новое устройство в сам GNS3 Идем в Edit → Symbol Manager Добавляем иконку роутера, добавляем ей название Mikrotik (Name), и выбираем тип Quemu guest. Не забываем нажать Apply чтобы сохранить изменения.

4. Также нам необходимо подключить наш образ жесткого диска. Идем в Edit → Preferences → Qemu Выбираем имя, путь к образу, объем памяти, количество и тип сетевого интерфейса. Нажимаем Save.

На этом все. Наш «стенд» готов к бою.

Удачного изучения!

habr.com

Эмуляция Mikrotik в GNS3. | IT kitchen

Сегодня запихиваем рутер Mikrotik в GNS3. Для тех, кто не знает, что  такое GNS3 или Mikrotik, можно дальше не читать. 

Иногда нужно протестировать что-то на микротике, например, почему валится туннель ipsec между mikrotik и cisco ISR, но на живом железе не всегда есть возможность проводить эксперименты. Потому нам на помощь опять приходит GNS3. 

В GNS3 в комплекте идет такая замечательная вещь как Qemu. Это программа для эмуляции различных аппаратных платформ, например x86. В GNS оно уже работает, потому я просто добавляю как-бы виртуальную машинку и ставлю на нее RouterOS. 

Mikrotik – это просто x86 железная платформа, на которую установлена операционка RouterOS. И поставить ее таки можно на любое такое же железо.

И так к делу. RouterOS у меня уже есть, качать ее можно где угодно. У меня это файл mikrotik.iso

В папке, где установлена GNS3, есть qemu-img.exe  и qemu.exe

1. Создаем дисковый образ Qemu для виртуалки

qemu-img.exe create -f qcow2 mikrotik.img 1G

2. Ставим ROuterOS. Внимание, у меня iso уже лежит в папке  с GNS, иначе нужно прописать полностью путь.

qemu.exe mikrotik.img -boot d -cdrom mikrotik.iso

3. Появится примерно  такое окно от Qemu

Жмем i  и начнется инсталляция, подтверждаем, что данные с раздела все удаляться и пр. По окончанию попросит ребут, после этого окно можно просто закрыть.

4.  Все, виртуалка с RouterOS готова, теперь настроим GNS3.

Заходим в SYmbol Manager  и делаем следующие настройки.

Далее заходим в Edit – Preferences. Выбираем Qemu – вкладка Qemu Guest  и делаем настройки как ниже на рисунке. Рисунки кликабельны.

Жмем Save и потом Apply. 

Готово.

Теперь в GNS3 можно выбрать наш Mikrotik. Чтобы добавить, выбираем вкладку All Devices  и видим теперь в списке Mikrotik_router. Логин admin без пароля.

В следующий раз немного про Winbox(GUI для микротика) и настройку микротика.

www.itkitchen.net

Mikrotik в VirtualBox. Функциональный роутер для GNS3. ~ NetSkills

В этой статье я хотел бы познакомить читателей с отличным (на мой взгляд) роутером фирмы MikroTik. Если кто-то еще не знаком с продуктами этой фирмы, то настоятельно рекомендую! Очень функциональные и в то же время бюджетные устройства. Как мне кажется, это идеально решения для малого и среднего бизнеса.

И самое приятное, их маршрутизатор можно попробовать в VirtualBox, а соответственно использовать в своих сетевых топологиях в GNS3.

Для начала необходимо скачать образ маршрутизатора (RouterOS). Скачать его можно тут выбрав x86 версию.

Скачиваем CD Image и создаем новую виртуальную машину:

256Мб вполне достаточно для маршрутизатора Включаете необходимое кол-во адаптеров Отмечаете все необходимые функции И начинается установка По окончанию видим следующее Теперь необходимо настроить ip адрес: Можно воспользоваться скриптом setup[[email protected]] > setupSetup uses Safe Mode. It means that all changes that are made during setup arereverted in case of error, or if Ctrl-C is used to abort setup. To keep changes exit setup using the 'x' key. [Safe Mode taken]Choose options by pressing one of the letters in the left column, before dash.Pressing 'x' will exit current menu, pressing Enter key will select the entry that is marked by an '*'. You canabort setup at any time by pressing Ctrl-C.Entries marked by '+' are already configured.Entries marked by '-' cannot be used yet.Entries marked by 'X' cannot be used without installing additional packages.r - reset all router configuration+ l - load interface driver+ a - configure ip address and gatewayd - setup dhcp client* s - setup dhcp serverp - setup pppoe clientt - setup pptp clientx - exit menuyour choice [press Enter to setup dhcp server]: Где в принципе все интуитивно понятно.

Второй способ это вбить настройки руками:[[email protected]] > interface print Flags: D - dynamic, X - disabled, R - running, S - slave # NAME TYPE MTU 0 R ether1 ether 1500 1 R ether2 ether 1500 [[email protected]] > interface enable 0 [[email protected]] > ip address add address=192.168.56.2/24 interface=ether1

 На этом можно ограничиться и зайти на вебинтерфейс маршрутизатора

Без лицензии полный функционал маршрутизатора доступен в течении 24 часов работы виртуальной машины. Теперь можно использовать роутер в GNS3. Как добавлять VirtualBox в GNS3 я описывал ранее. Для тех кто заинтересовался MikroTik-ом будет полезно почитать следующий ресурс.

blog.netskills.ru

Добавление образов mikrotik chr, cisco и windows 7 в eve-ng эмулятор

Сегодня мы с вами поговорим о том, как добавляются образы устройств в эмулятор Eve-NG, рассмотрим это на примере Cisco L2, L3 и mikrotik. Напомню, что в предыдущей статья я рассказывал, как установить эмулятор eve.

Добавление образов Cisco

Первым делом подключаемся через WinSCP к нашей VM c eve, вводим ip логин и пароль. Далее переходим в каталог /opt/unetlab/addons/qemu/.

В нем создаем две папки с названием:

  1. viosl2-15 – это для L2 образа 15 версии;
  2. vios-15 – это для L3 образа 15 версии.

Образы Cisco l2 l3

Сами образы внутри папок нужно назвать virtioa.qcow2 – как на рисунке ниже.

Переименование образов

Далее для удобной работы можно также скачать и установить утилиты (если они еще у вас не стоят) которые предлагают разработчики там, putty, vnc, wireshark и тд.

Windows integration Pack

После заходим по ssh на нашу виртуальную машину и вводим команду «/opt/unetlab/wrappers/unl_wrapper -a fixpermissions» для того чтобы система увидела наши добавленные образа.

Применение образа eve

Теперь можно идти в web-интерфейс EVE-NG и в нодах выбирать cisco роутер и свитч.

Cisco vios l2 l3

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

Соединение устройств в eve эмуляторе

Образы циско

Зайти на устройство можно кликнув на него мышкой. Проверим командой «show cdp neighbor» видят ли устройства друг друга.

Cisco show cdp neighbor

Как видим все отлично работает, образ cisco успешно добавлены в эмулятор eve.

Добавление CHR MikroTik

Добавления микротика происходит почти аналогичным образом. Заходим также на виртуалку через winscp, переходим в каталог /opt/unetlab/addons/qemu/ и создаем там папку с именем mikrotik-X где X можно писать что угодно, главное, чтобы все что до него было так.

Добавление mikrotik в Eve-ng

Далее идем на mikrotik.com/download и качаем образ mikrotik CHR (Cloud Hosted Router). Скаченный файл переименовываем в «hda.qcow2» и закидываем в созданную папку.CHR в hda.qcow2

Не забываем в консоли выполнить команду «/opt/unetlab/wrappers/unl_wrapper -a fixpermissions». Добавляем нашу виртуальную os микротика в эмулятор соединяем с реальной сетью (перед этим назначив ip интерфейсу CHR). Теперь можем зайти на него через winbox и проверить.

Тест CHR в Eve-ng

Ну и на вкусное, windows в eve-ng

Также в eve-ng можно добавить ос windows для этого нужно провести несколько манипуляций таких как установка, конвертация виртуалки и тд. Я это уже все сделал и предоставлю вам готовый образ windows 7×32 который нужно:

  1. Скачать здесь и переименовать в  hda.qcow2
  2. Создать и скопировать в папку /opt/unetlab/addons/qemu/win-7
  3. В терминале выполнить команду «/opt/unetlab/wrappers/unl_wrapper -a fixpermissions».

Все, спокойно добавляйте win7 как обычную ноду и стройте топологии.

Windows в eve-ng

Всем спасибо за внимание! Если есть вопросы пишите в комментариях.

 

mikrotiklab.ru

Развернуть Mikrotik на Virtualbox | Реальные заметки Ubuntu & Windows

Сегодня я задался целью, а точнее я где-то увидел, что можно ось которая используется в оборудовании Mikrotik развернуть на обычном PC. А раз так, что почему бы не развернуть образ mikrotik под Virtualbox. Данная необходимость обусловлена тем, что проще на виртуальной системе обкатывать те или иные задумки, чем собирать стенд из нескольких устройств которые еще и предстоит купить. Как я раньше об этом не подумал, да и не задумывался, хотя данная возможность уже очень давно имела место быть.

Так вот, как я и сказал выше мне нужно тестовая портативная среда для изучения. На официальном сайте Mikrotik.com скачиваю последний доступный стабильный образ: mikrotik-6.37.1.iso

 

 

После на основной системе, а именно Ubuntu Trusty Desktop amd64 (Gnome Classic) ноутбука Lenovo E555 в домашней виртуализации Virtualbox создаю VM для оборудования Mikrotik RouterBoard:
  • Имя: Mikrotik
  • Тип: Linux
  • Версия: Other Linux (32-bit)
  • RAM = 256Mb (оставляю по дефолту)
  • HDD = 8Gb (оставляю по дефолту)
  • У VM = по умолчанию назначена одна сетевая карта

Адаптер 1:

Включить сетевой адаптер: отмечаю галочкой

Тип подключения: Сетевой мост

Имя: eth0 (так подключен мой ноутбук к сети)

Тип адаптера: Pcnet-FAST 3 (Am79C973)

Подключить кабель: отмечаю галочкой

Чтобы началась установка со скачанного образа выставляем порядок загрузки носителей информации в настройках виртуальной машины:

  • mikrotik-6.37.1.iso → Первичный слэйв IDE
  • Mikrotik.vdi → Вторичный мастер IDE

Порядок загрузки образа Mikrotik для установки под VirtualboxПосле загрузки с образа перво наперво отмечаю какие компоненты/пакеты будут установлены:

Отмечаю все пакеты клавишей пробел:

Отмечаю клавишей пробел устанавливаемые пакеты

Для начала инсталляции нажимаю клавишу — «i»Do you want to keep old configuration? [y/n] нажимаю nContinue? [y/n] y

Установка пакетов составляющих Mikrotik происходит очень быстроНиже список пакетов и версий инсталлированных пакетов:

Все отмеченные пакеты успешно установлены

Установка завершена

Software installed

Press ENTER to reboot

Нажимаю клавишу EnterЗатем извлекаю образ из загрузки созданной виртуальной машины: VM (Name: Mikrotik) — Устройства — Оптические диски — Изъять диск из привода — И подтверждаю свое намерение если Virtualbox будет говорить, что диск сейчас используется нажатием на кнопку «Желаю».

И вот образ операционной системы установлен на виртуальную систему, первым делом предлагается авторизоваться. По умолчанию, как и на физическом оборудовании, login: admin, а pass: отсутствует.

Авторизуюсь на развернутом под Virtualbox микротике также как и на оборудованииDo you want to see the software license? [Y/n]: y, затем много раз клавишу Enter и вот в конечном итоге долгожданная консоль управления Mikrotik:[[email protected]] >

Также управлять настройками развернутого образа Mikrotik можно, как здесь через консоль командной строки, так и через утилиту Winbox.

Но не все так просто, текущая лицензия на данный образ равна работе в один день:

[[email protected]] > system license print

Software-id: NGXF-8ASJ

expires-in: 23h58m39s

Текущая лицензия развернутого Mikrotik под Virtualbox ограничена сутками использованияА вот ради интереса проверил, какая лицензия на моем домашнем Mikrotik RB2011UiAS-2HnD:[[email protected]] > system license print

software-id: GIRU-ISFS

nlevel: 5

features

Теперь мне нужно узнать какой IP адрес получил данный развернутый Mikrotik:

[[email protected]] > interface print

[[email protected]] > ip dhcp-client add interface=ether1

[[email protected]] > ip dhcp-client print

[[email protected]] > ip dhcp-client enable numbers=0

[[email protected]] > ip dhcp-client add dhcp-options=hostname interface=ether1 disabled=yes

[[email protected]] > ip dhcp-client print

Настраиваю DHCP клиент для интерфейсаТеперь мне нужно сделать чтобы подключаться к данной VM через консоль SSH:[[email protected]] > ip service print

Flags: X - disabled, I - invalid

# NAME PORT ADDRESS CERTIFICATE

0 telnet 23

1 ftp 21

2 www 80

3 ssh 22

4 XI www-ssl 443 none

5 api 8728

6 winbox 8291

7 api-ssl 8729 none

из вывода видно, что порт на Mikrotik (по умолчанию) открыт, значит на него можно подключиться:

[email protected]:~$ ssh -l admin 192.168.1.114

[[email protected]] > я подключился с основной системы по ssh на Mikrotik

RouterBoard развернутый на виртуальной системе внутри Virtualbox.

Далее регистрируюсь на сайте mikrotik.com

MikroTik Client Account

username: <my_login>

password: <my_password>

На основе Software ID генерирую Licence key который нужно будет вставить в консоль командной строки, мой вот он

Software ID:

NGXF-8ASJ

Licence key: -----BEGIN MIKROTIK SOFTWARE KEY------------ eumfA3hrQoLELeEawozZrMu8r9SOwl3ld4tRoCHDZrO8 S1qKdXzIOCPLHW2J5MkkrtdxFvjit0U3hSHu4LWfIA== -----END MIKROTIK SOFTWARE KEY--------------

Полученный выше License Key вставляю в консоль командной строки Mikrotik:[[email protected]] > см. ниже скриншот для наглядности:

Вставляю сгенерированную лицензию в консоль командной строки

You must reboot before new key takes effect. Reboot? [y/N]: y

После перезагрузки проверяю, применился ли лицензионный ключ, какая сейчас лицензия:

[[email protected]] > system license print

software-id: NGXF-8ASJ

nlevel: 1

featurest:

Демо режим Mikrotik успешно активирован и можно пользоватьсяТеперь уже можно подключиться через утилиту Winbox к данному Mikrotik развернутому из iso образа на виртуальной машине под управлением Virtualbox основной системы Ubuntu Trusty Desktop amd64 (Gnome Classic) ноутбука Lenovo E555:

Приложения — Стандартные — Терминал -

[email protected]:~$ winbox

Connect to: 192.168.1.114Login: adminPass: ничего не указываю и нажимаю кнопку Connect

Подключаюсь через утилиту winbox к Mikrotik под VirtualboxИ первое что меня встречает это окно

Образ Mikrotik успешно активирован сгенерированной лицензией с официального сайта Mikrotik.comТекущая версия: v6.37.1 on x86, но ее можно также обновить, как и на физическом оборудовании до самой последней.

[[email protected]] > system routerboard print

routerboard: no

Проверяю, как сейчас версия и до какой я могу обновиться:

[[email protected]] > system package update check-for-updates

channel: current

current-version: 6.37.1

latest-version: 6.38.5

status: New version is available

Обновляюсь до самой последней доступной версии на момент написания данной заметки, в моем случае до 6.38.5:

[[email protected]] > system package update download

channel: current

current-version: 6.37.1

latest-version: 6.38.5

status: Downloaded, please reboot router to upgrade it

Для применения обновления виртуальную систему нужно перезагрузить, перезагружаю:

[[email protected]] > system reboot

Reboot, yes? [y/N]:

y

system will reboot shortly

Connection to 192.168.1.114 closed by remote host.

Connection to 192.168.1.114 closed.

Подключаюсь по SSH к Mikrotik на Virtualbox и проверяю текущую версию установленных пакетов:

[[email protected]] > system package print

Flags: X - disabled

# NAME VERSION SCHEDULED

0 gps 6.38.5

1 dude 6.38.5

2 security 6.38.5

3 multicast 6.38.5

и т.д.

отлично все пакеты имеют самую последнюю версию, а именно 6.38.5

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

На заметку: текущая развернутая VM из образа Mikrotik как видно выше имеет одну сетевую карту, но для экспериментов этого мало, а раз так, то останавливаем VM и включаем использование еще 3 карт которые можно включить в настройках виртуальной машины.

[[email protected]] > interface print

Flags: D - dynamic, X - disabled, R - running, S - slave

# NAME TYPE ACTUAL-MTU L2MTU

0 R ether1 ether 1500

1 R ether2 ether 1500

2 R ether3 ether 1500

3 R ether4 ether 1500

Для завершения работы с Mikrotik выключаем его:

[[email protected]] > system shutdown

Shutdown, yes? [y/N]: y

На этом у меня собственно и всё. Теперь я могу приступить к изучению работы Mikrotik по скачанным курсам, заметкам найденным в интернете люди которых выложили во всеобщее пользование результатами своих трудов. Я же хочу все что можно повторить, разобрать в тестовой конфигурации чтобы больше разобраться в интересующих меня вопросах. А пока у меня все, до новых встреч, на моем блоге, с уважением автор блога Олло Александр aka ekzorchik.

www.ekzorchik.ru

Mikrotik Router OS. «Справедливое» разделение канала / Хабр

На просторах хабра мне попалась пара статей «Mikrotik Router OS, скрипт для динамического деления скорости». А поскольку этой проблемой я занимаюсь уже не первый год, я решил поделиться своими знаниями.

Прежде всего, эта статья пригодится тем, кто имеет желание «справедливо делить интернет» между несколькими клиентами сети. Однако решение подойдет и для разделения канала связи нескольких офисов или доступа к отдельным ресурсам, и для шейпинга.

Введение
Под «справедливым» разделением канала я подразумеваю утилизацию всей его пропускной способности независимо от количества потребителей. А потребители должны получать канал поровну.

Поскольку я работаю из-под windows, то для удобства я буду использовать WinBox, позволяющий конфигурировать маршрутизатор при помощи визуальных оснасток. С моей точки зрения, использовать WinBox гораздо удобнее, чем командную строку т.к. при наличии множества правил, найти необходимые гораздо проще. Да и скорость навигации значительно увеличивается.

Пользователям Linx- и Unix-систем не стоит расстраиваться. WinBox отлично работает под вайном. Кроме того, MikroTik обладает удобным веб конфигуратором WebFig.

Далее в статье я буду приводить текстовые описания своих действий и пояснять их графикой. В конце статьи я приведу ссылку на файл конфигурации раутера, чтобы вы могли изучить его, залить в свой раутер и проверить. Для этих целей я рекомендую использовать версии MiktoTik для x86 совместимых систем и виртуальные машины.

Также в конце статьи я постараюсь привести все полезные ссылки. Если чего-то не найдете – пожалуйста, сообщите мне об этом и я постараюсь дополнить статью.

Постановка задачи
Сначала я опишу некоторые задачи, которые вы сможете решить, изучив эту статью. Заранее сделаю две оговорки: 1. все описанные задачи должны выполняться при любом количестве потоков загрузки/отдачи каждым потребителем. 2. Под каналом я подразумеваю и входящий, и исходящий каналы.

Требуется:

  1. Справедливо разделить входящий и исходящий каналы между пользователями:
    • При полной утилизации пропускной способности канала всеми потребителями, канал должен быть разделен между ними поровну.
    • При свободном канале или малой утилизации пропускной способности канала одними потребителями, другим потребителям должна быть предоставлена вся оставшаяся пропускная способность канала, но не более.
  2. Гибко разделить входящий и исходящий каналы между пользователями:
    • Должна быть возможность ограничить ширину входящего/исходящего канала любого пользователя или до любого внешнего ресурса.
    • Должна быть возможность необходимым сервисам предоставлять требуемую для их нормального функционирования ширину канала/скорость.
  3. Сделать быстрой загрузку Web страничек независимо от текущей утилизации канала.
Немного разъяснений.
Пункт первый. Например, пропускная способность входящего канала составляет 1000 кб/с. Если, например, Main_HomePC получает данные из интернета со скоростью 100 кб/с, тогда Second_HomePC должен иметь возможность получать данные со скоростью до 900 кб/с. При увеличении скорости отдачи данных удаленным сервером для Main_HomePC до, скажем, 800 кб/с, канал должен быть разделен между потребителями поровну (т.е. по 500 кб/). Для решения этой задачи служит тип очереди PCQ (но об этом ниже). Пункт второй. Если в сети есть такие потребители, которым нужен доступ в интернет, но вы не хотите, чтобы они «откусывали» большой кусок канала, им следует ограничить скорость, либо сделать так, чтобы канал между ними и остальными потребителями разделялся не поровну. Для решения такой задачи служит тип организации очередей Queue Tree (теория уже близко).

При этом можно, например, выделить больший приоритет соединениям к определенным серверам. Например, я так добивался великолепной работы RDP соединений вне зависимости от загрузки канала. 1C суппорты были очень довольны.

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

Итак, мы пришли к тому, что использовать нужно организацию очередей Queue Tree и тип очереди PCQ. Прежде, чем решить поставленные задачи, обратимся к теории.

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

Сначала ознакомьтесь с тем, как трафик проходит через раутер. Достаточно глазами изучить первую диаграмму и принцип станет понятен.

HTB
Об HTB можно почитать здесь.

Вкратце, HTB (Hierarchical Token Bucket) – классический метод построения очередей для обработки различного вида трафика.

Метод основан на трех простых, но обязательных этапах:

  1. Выделение и маркировка интересующего нас трафика.
  2. Создание правил для применения к отдельным типам трафика отдельных очередей.
  3. Применение выбранных стратегий (правил и дополнительных параметров) к интерфейсам.
Реализуется HTB только через Queue Tree.

Узнать, в чем отличие такого типа очередей от Simple Queue вы можете здесь.

Что касается типа очередей, то был выбран PCQ. Дело в том, что к каждому интерфейсу маршрутизатора применяется очередь для отправки пакетов. Пакеты собираются в буфер, а затем вытаскиваются из него и последовательно отправляются на физический сетевой порт. Порядок вытаскивания пакетов из буфера называется очередью. Пакеты, вытаскиваемые из буфера сетевого интерфейса, классифицируются раутером по некоторым признакам и помещаются в, так называемые, «потоки» пакетов. Разные типы очередей по-разному классифицируют пакеты и помещают их в потоки, используя разные принципы.

Изначально для всех интерфейсов применяется очередь типа PFIFO (packet first in first out, первый вошел – первый вышел). Такая очередь не позволит хоть как-то контролировать порядок отправки пакетов. Все пакеты помещаются раутером в один поток и поэтому, при таком типе очереди, мы не можем решить ни задачу 1, ни задачу 2 полностью. Можем лишь ограничить скорость, но не можем балансировать нагрузку. Задача 3 решается т.к. здесь нам не нужна балансировка.

Нам нужно настроить раутер так, чтобы пакеты от разных пользователей помещались в разные потоки. Тогда нам будет не важно, сколько соединений установил пользователь.

Тип очереди PCQ (Per Connection Queuing, помещение в очередь по соединениям) позволяет выбрать классификаторами разделения на потоки адреса и порты источника и назначения пакетов, что позволит применять правила к отдельным потокам, а не к отдельным соединениям или пакетам. Этот тип очереди позволяет ограничивать скорость выборки пакетов из буфера и помещать их в разные потоки (это один из вариантов выделения фиксированного канала), а в случае установления значения Rate=0, все потоки, выделяемые этой очередью, будут получать одинаковую ширину канала (вариант динамического разделения канала; так будет работать разделение интернета между Wireless Users).

Более подробно можно прочесть здесь.

Mangle
Первый этап HTB. Чтобы применить правила очередности прохождения пакетов через раутер, пакеты нужно маркировать. При прохождении через раутер, пакет может быть промаркирован, а затем быстро найден по маркеру. Это нужно для того, чтобы применять общие правила к разным пакетам, или разные правила для схожих пакетов. Много текста здесь излишне. Более подробно вы можете почитать здесь.
Queue Tree
Второй этап HTB – создание правил, позволяющих к разным типам трафика применять разные типы очередей. Написать здесь что-то своими словами достаточно сложно, а от копипаста я отказался. Поэтому либо читаем теорию, либо смотрим практику. Возможно, проще будет сначала увидеть реализацию. Мануал.
Практика
Топология сети
Моя домашняя сеть имеет следующую топологию:

Маршрутизатор подключается к PPPOE серверу провайдера интерфейсом PPPoE_Client, названным мною «ISP_Internet_Connection» и через этот интерфейс получает доступ к сети интернет. При этом параметры сети (IP, Gate, DNS) выдаются динамически. Main_HomePC и Second_HomePC – настольные компьютеры. Они имеют статические адреса, на примере которых я покажу, как можно сбалансировать нагрузку на канал между ними. Note и Tablet – примеры устройств, использующих доступ через Wi-Fi (будут динамически включаться в группу wireless_users, адреса им будут выдаваться из пула wireless_users) и, как правило, требующих получения адреса от DHCP сервера т.к. могут быть использованы в разных сетях (посему, зачастую, не должны иметь жестко вбитых настроек). У меня есть только смартфон, но для полноты примера я вбил и notebook. Вообще количество таких устройств будет зависеть лишь от выделенного им пула адресов.

Mangle
Первое, что необходимо сделать – промаркировать пакеты от всех устройств-потребителей. Мы сначала будем маркировать соединения, а уж потом – пакеты, относящиеся к соединениям. В таком случае раутер не перепроверяет содержимое заголовков пакетов, принадлежащих уже промаркированным соединениям. Такой подход позволит не допустить излишнюю загрузку процессора раутера. Если вы уверены, что раутер справится и с маркированием каждого пакета – соединения можно не маркировать. Настройки маркировщика пакетов можно найти в разделе Ip->Firewall->Mangle.

Маркирование будем проводить в ветви forward. Здесь раутеру уже известно, кому пакет будет отправлен на выходе, а так же применены правила firewall, а значит — не будут маркироваться лишние пакеты. Делать это будем по такому принципу:

Таким образом мы разделим пакеты отдельно к каждому из домашних компьютеров и отдельно для группы беспроводных устройств. Такой алгоритм нужно применить к пакетам, проходящим от LAN к WAN и от WAN к LAN. 1. Маркируем соединения, устанавливаемые из внешней сети (я одним маркером помечаю соединения с двух интерфейсов, но в классическом случае для доступа к интернет используется только один интерфейс и поэтому правила маркировки соединения от и для WAN можно опустить). Для этого маркируем все соединения, входящие на WAN и выходящие из LAN. Для того, чтобы разделить пакеты для беспроводных устройств и домашних компьютеров, я применил правила маркировки только для выбранных групп адресов. 2. Маркируем пакеты внутри промаркированных соединений. Отдельно я маркирую пакеты с адресом назначения 172.16.30.31, отдельно 172.16.30.32 и отдельным маркером помечаю пакеты для пула 172.16.30.10-172.16.30.20.

Аналогичные правила создаем для исходящих пакетов. Итог выглядит так: Правила 0 и 1 помечены литерой D, что означает dynamic. Эти правила создаются автоматически при установлении PPPoE соединения. Так может быть не везде. Они не относятся к теме статьи. Правило 4 не полностью отражено на рисунке. Дополнительно следует указать протокол IP и порт-источник 80. Правило прерывает цепочку для того, чтобы под маркером http_dl_boost были лишь первые два миллиона байт каждого нового соединения (думаю, этого достаточно для загрузки большинства страниц). По такому принципу возможно построить и upload booster, а так же заставлять быстрее проходить мелкие пачки данных, например при игре в heroes3 на отдаче хода можно ускорить передачу данных.

Queue
Второй шаг – настройка очередей. Для начала создадим два новых типа очередей для входящего и исходящего трафика. Тип PCQ.

Потоки пакетов, к которым будет применен тип очереди PCQ_Download, будут классифицироваться по адресу назначения и каждому из них будет присвоен одинаковый приоритет. Такая очередь обеспечит равноправие среди потребителей независимо от количества потоков на каждого из них. Аналогично очередь для исходящих пакетов будет классифицировать потоки по адресу отправителя. На основе этого типа очередей возможно так же уравноправить потоки пакетов для разных приложений одного пользователя (классификаторы: адрес и порт назначения). Сложность может возникнуть только с торрентами. Но при должной усидчивости и это можно решить, применив сложное дерево очередей. Если вы заметили, параметр Limit различен для входящих и исходящих пакетов. Чтобы понять, для чего это нужно, вернитесь к теории об HTB.

Теперь все готово для создания своего дерева очередей.

Нас интересуют две ветви: — входящие пакеты (так я назову пакеты, которые приходят из интернета и предназначены устройствам в локальной сети). — исходящие пакеты (пакеты, исходящие от устройств в локальной сети).

Вот так выглядят все правила дерева очередей.

Родитель ветви Incoming_Packets – интерфейс LAN2 – с него пакеты отправляются на локальные устройства. Родитель ветви Outgoing_Packets – global-out т.к. пакеты в моем случае могут быть отправлены и с WAN, и с ISP_Internet_Connection. Обратите внимание, приоритет HTTP_DL_BOOST равен 2, а так же LimitAt=MaxLimit=32M. Это дает высокий приоритет и максимальную полосу первым ~2Мб трафика, получаемого с 80 порта по IP, что обеспечит быстрое открытие страничек даже на медленных каналах (проверено на 2 Мбит/с канале при трех пользователях).

Результаты.
Чтобы провести полноценный эксперимент, я на MainPC запускаю закачку в 5 потоков с nvidia.com, а на SecondPC запускаю закачку торрентом. Поскольку забить все 32 мегабита почти не реально, я искусственно ограничу полосу до 2 мегабит. Для чистоты эксперимента я отключил DL_BOOST.

Цифры немного не совпадают т.к. скриншоты делались не в одно мгновение. Отключенное правило не обновляется и поэтому цифры в нем не соответствуют моменту.

P.S. Нужно добавить, что в моем случае (Локальные ресурсы провайдера находятся за WAN интерфейсом и доступ к ним я получаю на всех 32 Мбит/с, в то время как доступ к интернет у меня 8/8 Мбит/с) нужно подойти немного иначе и потоки для внутренних ресурсов выделить в отдельные ветви. Тогда можно будет разделять канал еще гибче. Но внутренние ресурсы я не использую, поэтому привел все в более простом виде.

Метериалы дела
Как и обещал – выкладываю конфиг. Пара ссылок:МануалКонфигурация через веб-интерфейсПрохождение пакетов через раутерHTBMangleQueue Tree

Скачать WinBox

Советую присмотреться

Среди прочего, решил заодно дать немного иоформации о полезных утилитах.

The Dude
Весьма приятная штука. Помогает построить топологию сети, отследить ее целостность. Интересна возможность подключиться из нее к раутерам, проверить при помощи bandwith test пропускную способность каналов и т.п.
SysLog Daemon
В связи с расположением в «архиве» — малоизвестный инструмент. Позволяет вести удаленное логирование событий раутеров. Поддерживает множество фильтров. Для отладки штука превосходная. Если верно помню, встроена в The Dude.
UPD:
Добавил во введение информацию о веб-конфигураторе и работе winbox под linux/unix. Добавил пару полезных ссылок.

С радостью буду видеть в комментах критику и постараюсь сделать статью лучше.

habr.com

Установка Mikrotik Cloud Hosted Router на VPS хостинг Digital Ocean / Хабр

… или другой Linux-хостинг.Сразу оговорюсь, что поскольку мне в процессе всех экспериментов уже поднадоело сносить и заново настраивать дроплет в DO, пример я буду выполнять в VMware ESXi, но на конечный результат это влиять не будет, команды все будут те же самые, в принципе, это применимо к любому облачному VPS хостингу, где у нас есть доступ по SSH. За основу взят доклад Дмитрия Пичулина deemru на прошедшем 30 сентября MUM в Москве. В отличии от доклада Дмитрия, в данной статье не будет рассматриваться вопросы выбора хостинга и цен на него (в стремлении намутить облачный роутер подешевле), настройки полученного устройства. Рассмотрена будет лишь техническая сторона вопроса и решены пара проблем.

Вернувшись с MUM, я был в предвкушении, руки чесались запилить Mikrotik на Digital Ocean (в тот момент, там была Ubuntu Server, которая выполняла функции VPN-сервера). Полез смотреть архив выступлений, но его ещё не было и я написал письмо Дмитрию с просьбой поделиться слайдами. Получив презентацию, с холодной головой ринулся в бой — ломать свой дроплет полностью. Сделал всё, как в презентации, всё завелось. Легче и придумать нельзя. Скачиваем на хостинг образ, распаковываем, переводим файловую систему в read-only, заливаем образ на диск через dd. Но тут то меня и подстерегала первая нестыковочка — у Дмитрия при первой загрузке CHR автоматически произошло расширение файловой системы и она заняла весь диск, у меня же этого не произошло и пришлось довольствоваться 128 МБ.

Кто-то скажет 128 МБ на роутере хватит всем. Но меня эта ситуация в корне не устраивала, поэтому я принялся её устранять. Всем известно, что RouterOS основана на Linux, но от Linux'а там мало что осталось, поэтому после установки системы, её штатными средствами переразметить диск уже нельзя. Нельзя и загрузиться с какого-нибудь LiveCD и переразметить в нём (ну по крайней мере у DO нельзя). Попытки тыкаться fdisk'ом и parted'ом после заливки образа на диск, но до перезагрузки так же не привели к какому-либо положительному результату (эффекта либо не было вообще, либо я получал не загружающуюся систему).

Нормальные герои всегда идут в обход.

Итак для того чтобы получить RouterOS, установленную на Digital Ocean, в которой доступно 20 ГБ дискового пространства (ну или сколько там у Вас по тарифу) нам потребуется:

  • Собственно, сам droplet с установленным Linux дистрибутивом (в данном случае дистрибутив будет Ubuntu Server 16.04 x64, а вместо droplet'а будет виртуальная машина в ESXi, но ещё раз повторюсь, что роли это не сыграет), к которому у нас есть доступ по SSH.
  • Установленный на компьютере или сервере гипервизор (изначально я делал в VirtualBox, сейчас буду делать опять же в ESXi, на конечный результат это не влияет).
  • LiveCD вашего любимого Linux-дистрибутива (желательно, чтобы там был GUI, так будет удобнее).
Как вы видете, список не очень большой, каких-то особых требований к его пунктам нет, решение я старался сделать максимально универсальным и простым, чтобы можно было всё соорудить буквально на коленке из того, что есть.

Начнём с дроплета.

Нам нужно выяснить, какого объёма нам нужен диск в виртуальной машине, поэтому:fdisk -l /dev/sda Диск /dev/sda: 16 GiB, 17179869184 байтов, 33554432 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 512 байт I/O size (minimum/optimal): 512 bytes / 512 bytes Тип метки диска: dos Идентификатор диска: 0x7b5dbf9c Устр-во Загрузочный Start Конец Секторы Size Id Тип /dev/sda1 * 2048 31457279 31455232 15G 83 Linux /dev/sda2 31459326 33552383 2093058 1022M 5 Расширенный /dev/sda5 31459328 33552383 2093056 1022M 82 Linux своп / Solaris Как мы видим, у нас диск 17179869184 байт, запомним это значение.

Подготовка промежуточной машины

В гипервизоре создаём новую виртуальную машину. Её параметры особого значения не имеют, но можно, к примеру сделать их близкими к характеристикам дроплета. Размер диска лучше сделать с небольшим запасом, на всякий случай (почему-то 20ГБ в DO оказались меньше 20ГБ в VirtualBox). Настраиваем загрузку виртуальной машины с LiveCD.

Включаем её и после загрузки скачиваем любым удобным способом последнюю версию CHR, которую можно найти по ссылке:

Нам нужен образ Raw disk image (к примеру chr-6.37.1.img.zip). Распаковываем архив:

unzip chr-6.37.1.img.zip Archive: chr-6.37.1.img.zip inflating: chr-6.37.1.img И заливаем образ на жёсткий диск с помощью dd (Дмитрий тут использовал утилиту pv, но я, если честно не вижу в этом смысла, т.к. образ маленький и разворачивается довольно быстро):dd if=chr-6.37.1.img.zip of=/dev/sda 262144+0 records in 262144+0 records out 134217728 bytes (134 MB, 128 MiB) copied, 5.64304 s, 23.8 MB/s вместо sda нужно указать ваш диск, его имя может отличаться.

Расширяем файловую систему RouterOS

Любители всё делать в консоли могут делать там, мне показалось быстрее и проще сделать всё в GParted.

Запускаем GParted, выбираем диск, на который установили RouterOS и с помощью функции Resize/Move увеличиваем размер второго раздела. Обратите внимание, что размер раздела за вычетом размера первого раздела не должен превышать размер диска Вашего дроплета, который мы посмотрели в самом начале (т.е. первый раздел у нас 32 МиБ, значит второй должен быть не более 17179869184 байт / 1048576 = 16384 МиБ и — 32, т.е. 16352 МиБ)

Не забываем применить изменения разметки диска.

Создаём новый образ и жмём его с помощью gzip:

dd if=/dev/sda bs=8196 count 17000 | gzip -9cf > chr.img.gz 17000+0 records in 17000+0 records out 139332000 bytes (139 MB, 133 MiB) copied, 3.30824 s, 42.1 MB/s Значение 17000 мы получаем путём приведения размера образа при его развёртывании на диск. Там было 128 МиБ, т.е. 128 * 1024 = 131072 КиБ разделим размер на размер блока и округлим 131072 / 8 = 16384 ≈ 17000 блоков.

Заливаем полученный образ на дроплет и устанавливаем его

scp chr.img.gz [email protected]:~/ Где user — имя пользователя на вашем дроплете, а host — его адрес. Копирование будет выполняться в домашний каталог пользователя.

Принимаем сертификат ssh сервера, и вводим пароль, когда нас об этом попросят. После окончания копирования, эта виртуальная машина нам больше не понадобится.

Переходим на наш дроплет. Можно подключиться к нему по ssh или зайти через консоль. Убедимся, что наш образ скопировался, желающие могут проверить контрольные суммы. Переведём файловую систему в режим read-only и развернём образ на диск через gzip и dd:

echo u > /proc/sysrq-trigger && gunzip -c chr.img.gz | dd of=/dev/vda Всё! CHR установлен на наш дроплет. Перезагрузимся:reboot

Вас приветствует Mikrotik Cloud Hosted Router

@gexogen - обманщик!!!

На самом деле, хоть я и обещал, что нет никакой разницы, в Digital Ocean мы это делаем или в ESXi, разница всё-таки есть. В DO всё работает, а вот ESXi после перезагрузки упал в Kernel Panic. Но, в ESXi файловая система растягивается и так при первой загрузке и данные манипуляции не потребуются.

После перезагрузки входим под пользователем admin без пароля, после чего задаём пароль, прописываем ip адрес и дефолтный маршрут:/system user set admin password=YOURPASSWORD /ip address add address=YOUR.IP.ADD.RESS/MASK /ip route add gateway=YOUR.GATE.WAY.IP После чего можно подключаться к нему и настраивать через Winbox.

Заключение

На доступном месте можно установить внутри RouterOS виртуальную машину с Linux или использовать его как-нибудь иначе — на Ваше усмотрение (поднять FTP сервер или ещё что-нибудь).

Ссылки:

Презентация Дмитрия в фомате PDFЗапись его выступленияНа всякий случай, ссылка на готовый образ под файловую систему на 20 ГБ (т.е. минимальный тариф DO за 5$)

habr.com


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..