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

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

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Закрыто
Аватара пользователя
Barvinok
Сообщения: 104
Зарегистрирован: 28 фев 2012, 23:21

Отступление 6 (Заключение)
Пометка голосового трафика.

Источники:
Skype: скрытая угроза
L7-filter Supported Protocols
Разработчики Skype предостерегают администраторов от попыток выявления и блокирования его трафика (типа: «Все равно у вас ничего не получится!»). И действительно, распознать Skype-трафик очень сложно, а заблокировать его можно только по содержимому, которое зашифровано и не содержит никаких предсказуемых последовательностей.

Моё беглое исследование привело меня вот к какому решению:
SIP-трафик я будут выделять по адресу IP-шлюза, поскольку обычно использую выделенную IP-АТС.
Skype буду определять по порту, который указывается у него в настройках: благо, мне нужно его не запрещать, а напротив - давать зелёную улицу.

На том и порешим.


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

Отступление 7
Выбор между равноценными путями


Ссылки:
OSPF, Manual:Routing/OSPF
RIP, Manual:Routing/RIP
EIGRP

Последний вопрос, который меня занимает, касается выбора пути из двух условно равноценных.
Хорошо если у вас провайдеры явно различаются по качеству: оптика, ADSL, 3G.
Тут выбор очевиден: службы реального времени по оптике, прочее по ADSL, 3G в запас.
А если провайдеры примерно одинаковые? У меня в доме есть Би-Лайн и Ростелеком. Оба по оптике.
Да, можно включить ECMP написав их через запятую в правиле маршрута по умолчанию. Но ведь к некоторым серверам гораздо ближе (по количеству прыжков или отклику) через одного провайдера, а к другим - через другого...
Было бы хорошо распределять подключения по такому признаку, верно?

Я полагаю, что сведения о близости того или иного сервера мы должны получать от провайдерских маршрутизаторов. Для чего ещё существуют такие протоколы, как OSPF, RIP, EIGRP и прочие? Можно ли использовать их в домашних условиях (у конечного пользователя) или они лишь для обмена данными между магистральными маршрутизаторами?
Этот лес для меня совсем неведом. Если есть тут знающий человек, способный растолковать мне что к чему, прошу стукнуть в личку.
Я со своей стороны обязуюсь подробненько раскрыть тему в этом факе.

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

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

PS
Продолжил здесь.

Статья по существу вопроса на MikrotikWiki: Routing Table Matcher.
Последний раз редактировалось Barvinok 23 мар 2015, 13:50, всего редактировалось 3 раза.


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

Настройка роутера с нуля (продолжение).
Приоритезация трафика
Источники: Руководства:Очередь (Queue)
Mikrotik-Qos Приоритезация по типу трафика и деление скорости

В первую очередь, я хочу, что бы P2P-трафик не мешал работе прочих протоколов. В особенности тех приложений, с которыми люди работают непосредственно, а не в фоновом режиме: HTTP, VoIP...

Самое простое, что можно сделать, это выделить весь p2p и направить этот поток на провайдера, которого не жалко:

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

/ip firewall mangle
add chain=prerouting action=mark-routing p2p=all-p2p new-routing-mark=to_ether2
Разумеется, у вас уже должна быть подготовлен маршрут для потоков с этой меткой:

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

/ip route
add comment="Turn marked connection to ether2" distance=3 gateway=ether2 routing-mark=to_ether2


Можно ограничить канал для этого вида трафика используя простую очередь (Simple Queues).
Выделяем P2P-поток и помечаем каждый пакет в этом потоке:

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

/ip firewall mangle
add action=mark-connection chain=prerouting new-connection-mark=p2p_conn p2p=all-p2p
add action=mark-packet chain=prerouting connection-mark=p2p_conn new-packet-mark=p2p_pack

После чего создаём простую очередь с наименьшими и наибольшими ограничениями:

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

/queue simple
add name=p2p limit-at=1M/1M max-limit=5M/5M packet-marks=p2p_pack target=192.168.1.0/24
Однако, здесь есть тонкость, которую никак нельзя обойти стороной. Посмотрим на это же правило в полном виде:

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

name="p2p" target=192.168.1.0/24 parent=none packet-marks=p2p_pack priority=8/8 queue=default-small/default-small limit-at=1M/1M max-limit=5M/5M burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s total-queue=default
Здесь обязательно нужно увидеть, что это правило состоит из двух совершенно разных частей: одна часть описывает очередь пакетов, а вторая - HTB (вёдра c марками).
Однако, мне не нужны всплески - для торрентов это бессмысленно!
Поэтому все параметры, относящиеся к ведру (burst-*) равны нулю. Другими словами ведро отсутствует.
name="p2p" - это произвольное имя для нашей очереди;

target=192.168.1.0/24 - это целевая подсеть. Любой поток, как вы понимаете, имеет направленность. В данном случае мы явно определяем, что будем работать с потоком, который течёт в локальную сеть;

parent=none - сиротка, значит.
В случае с иерархическим деревом очередей (Queue Tree) этим ключём мы стыкуем колена, указывая к какой вышестоящей очереди подключать. Значение "none" говорит о том, что это либо корень дерева, либо вообще не дерево, а простая очередь (Simple Queues), как в рассматриваемом случае.

packet-marks=p2p_pack - в очередь заворачиваются все пакеты с этой меткой.

priority=8/8 - важность самой очереди относительно других очередей. Т.е. имеет значение лишь в случае дерева (Queue Tree). А если очередь одна, то с кем ей меряться?

queue=default-small/default-small - вид очереди. В нашем случае - просто очередь без всяких выкрутасов и перетасовок пакетов.

На этом описание очереди пакетов заканчивается и начинается описание устройства подачи марок.
max-limit=5M/5M - сечение основной подающей трубы;
limit-at=1M/1M - сечение зелёного рукава. Этот поток железно будет выделен. Оставшиеся 4М пойдёт в жёлтый рукав. Пакеты, помеченные из жёлтого рукава могут быть отброшены в случае перегрузки канала.

burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s - уже говорил.

total-queue=default - это отдельный разговор. Чуть позже допишу...
Последний раз редактировалось Barvinok 22 сен 2013, 01:02, всего редактировалось 20 раз.


jbopsik
Сообщения: 0
Зарегистрирован: 08 май 2013, 01:28

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


Антураж
Сообщения: 2
Зарегистрирован: 08 май 2013, 17:34

Наиболее полный и качественный документ по настройке-с-пониманием-что-делаем из всех, что я встречал в своей жизни. Спасибо, Barvinok!


Антураж
Сообщения: 2
Зарегистрирован: 08 май 2013, 17:34

jbopsik писал(а):да это тихий ужас как понос прям уж извините 3 страницы сплошного текста интересно много народу эту муть будет читать - мб стоило наделать скриншотов хотябы для базовой схемы и всю писанину свернуть в аддон для желающих? Не буду ж я ету в хрень вчитываться чтобы просто инет от двух провайдеров через мангос настроить...

Если вы хотите сделать нетривиальную настройку роутера и не хотите читать инструкции, может быть, вам стоит нанять за деньги человека, готового читать мануалы? Желание «хочу быстро, не парясь и чтоб все работало» реализуемо, но стоит денег. Если вы хотите еще и дешево (своими руками например) то вы пытаетесь изнасиловать реальность, так просто не бывает.


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

От себя добавлю, что, допустим, в Москве цены на обращение к специалисту (криворуких самоучек не учитываем) начинаются от 5 тыр за вызов, плюс возможно, что еще и доплачивать придется. Поэтому три странички толкового мануала для меня просто счастье.
Автору мануала огромнейшее спасибо.


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

Плюшки
Кэширующий прокси

Источник: Proxy with external drive
Traffic Slow with webproxy transparent
Queue with Masquerading and Internal Web-Proxy
Я с удовольствием пользуюсь встроенным прокси-сервером. Даже если у вас толстенный канал - это не значит, что удалённый сервер всегда будет рад отдать вам желаемую страницу с большой скоростью.
Допустим, вы зашли на любимый сайт с фотоотчётами о путешествиях. А потом ещё несколько раз в течении дня... А так же посоветовали зайти туда же своим коллегам...
Согласитесь, будет гораздо лучше, если все огромные страницы с фотками будут отдаваться из кэша прокси, чем каждый раз скачиваться заново.
Для хранения кэша я использую внешний USB HDD, хоть это и не обязательно (определённый объём данных может храниться в ОЗУ роутера).
Вся настройка происходит в 4 шага:
  1. Форматируем накопитель
  2. Назначем его пригодным для использования в качестве кэша веб-прокси
  3. Включаем прокси, разрешая использовать диск
  4. Перенаправляем на него весь HTTP-трафик

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

/store disk format-drive <name_of_the_disk>
/store add name=web_proxy_cache type=web-proxy disk=<name_of_the_disk> activate=yes
/ip proxy set enabled=yes cache-on-disk=yes max-cache-size=none
/ip firewall nat add chain=dstnat dst-port=80 protocol=tcp action=redirect to-ports=8080


Однако при распределении трафика на несколько каналов (ECMP, PCC, NTH) имеются определённые тонкости настройки.
Чуть позже допишу...

Сервер времени
Источник: Setup local NTP servers
Meinberg NTP Daemon
OLXA SNTP

Иногда бывает удобно, что бы устройства внутри вашей сети не лукались к удалённым серверам времени, а взаимодействовали непосредственно с нашим маршрутизатором. Всё подобно случаю с DNS: наш маршрутизатор сверяет часы с эталонным сервером времени, а в все внутренние устройства - с маршрутизатором.

Для начала придётся скачать и установить дополнительный пакет. Вытаскиваем из all_packages-mipsbe-xxx.zip ntp-xxx-mipsbe.npk и перетаскиваем в окно Winbox.
После перезагрузки у вас появится раздел "/system ntp server"
Заходите в него и просто включаете:

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

/system ntp server set broadcast=no enabled=yes manycast=yes multicast=no


В настройках вашего DHCP-сервера можно указать, что бы адресом NTP-сервера задавался адрес нашего маршрутизатора:

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

/ip dhcp-server network set 0 ntp-server=192.168.1.1


На клиентских компьютерах можно установить программного NTP-клиента, вроде OLXA SNTP.

Dynamic DNS
Источники:
Dynamic DNS Update Script for dynDNS

В RouterOS нет встроенной возможнсти для работы с динамическим DNS.
Создадим скрипт с именем DynDNS:

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

/system script>
add name=DynDNS
edit DynDNS source


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

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

# Set needed variables
:local username "YOURUSER"
:local password "YOURPASWORD"
:local hostname "YOURHOSTNAME.dyndns.org"

:global dyndnsForce
:global previousIP

# print some debug info
:log info ("UpdateDynDNS: username = $username")
:log info ("UpdateDynDNS: password = $password")
:log info ("UpdateDynDNS: hostname = $hostname")
:log info ("UpdateDynDNS: previousIP = $previousIP")

# get the current IP address from the internet (in case of double-nat)
/tool fetch mode=http address="checkip.dyndns.org" src-path="/" dst-path="/dyndns.checkip.html"
:delay 1
:local result [/file get dyndns.checkip.html contents]

# parse the current IP result
:local resultLen [:len $result]
:local startLoc [:find $result ": " -1]
:set startLoc ($startLoc + 2)
:local endLoc [:find $result "</body>" -1]
:local currentIP [:pick $result $startLoc $endLoc]
:log info "UpdateDynDNS: currentIP = $currentIP"

# Remove the # on next line to force an update every single time - useful for debugging,
# but you could end up getting blacklisted by DynDNS!

#:set dyndnsForce true

# Determine if dyndns update is needed
# more dyndns updater request details http://www.dyndns.com/developers/specs/syntax.html

:if (($currentIP != $previousIP) || ($dyndnsForce = true)) do={
   :set dyndnsForce false
   :set previousIP $currentIP
   :log info "$currentIP or $previousIP"
   /tool fetch user=$username password=$password mode=http address="members.dyndns.org" \
      src-path="nic/update?system=dyndns&hostname=$hostname&myip=$currentIP&wildcard=no" \
      dst-path="/dyndns.txt"
   :delay 1
   :local result [/file get dyndns.txt contents]
   :log info ("UpdateDynDNS: Dyndns update needed")
   :log info ("UpdateDynDNS: Dyndns Update Result: ".$result)
   :put ("Dyndns Update Result: ".$result)
} else={
   :log info ("UpdateDynDNS: No dyndns update needed")
}

После чего добавляем в планировщик задачу на исполнение этого скрипта каждые 10 минут:

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

/system scheduler add disabled=no interval=10m name=DynDNS_Update on-event="/system script run DynDNS"
Последний раз редактировалось Barvinok 17 авг 2013, 18:43, всего редактировалось 4 раза.


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

Туннели
Источники:
Объединяем офисы с помощью Mikrotik
VPN (any type) between 2 Mikrotik routers and no static IP addresses

Я частенько использую L2TP-туннели для подключения удалённых офисов или просто компьютеров.

На серверной стороне.
Включаю L2TP-сервер:

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

/interface l2tp-server server set enabled=yes

Создаю профиль (единый для всех клиентов набор настроек):

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

/ppp profile add name=filial only-one=yes use-compression=yes use-encryption=yes use-vj-compression=yes

Создаю учётную запись:

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

/ppp secret add name=newuser password=newpassword local-address=10.10.7.1 remote-address=10.10.7.2 routes="192.168.2.0/24 10.10.7.2" service=l2tp profile=filial
Здесь подробнее. Имя и пароль пользователя - это понятно. Далее мы создаём подсеть, через которую будет происходить взаимодействие двух наших сетей: основной и удалённой.
Основная у нас 192.168.0.0/24
Удалённая - 192.168.2.0/24
Создаём туннель, на одном конце которого указываем адрес 10.10.7.1, а второму (на стороне клиента) задаём 10.10.7.2
Что бы не прописывать постоянный маршрут, сразу укажу, что путь к удалённой сети 192.168.2.0/24 пролегает через 10.10.7.2. Теперь маршрут будет добавляться автоматически при подключении клиента.
Но если вы будете подключаться непосредственно с клиентского компьютера (к примеру, Windows 7 позволяет создавать прямое L2TP подключение), то настройку "routes" можно не производить: нам нет нужды прописывать постоянные маршруты между сетями, поскольку нет никаких сетей - лишь две точки, соединённые туннелем.

Создадим для этого клиента собственный L2TP-сервер:

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

/interface l2tp-server add name=filial user=newuser
Это нужно, что бы избежать сбоев в маршрутизации при обрывах соединения.

На клиентской стороне.

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

/interface l2tp-client add name=filial_connection connect-to=xxx.xxx.xxx.xxx user=newuser password=newpassword allow=mschap2 disabled=no

Добавляю постоянный маршрут в основную сеть:

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

/ip route add dst-address=192.168.0.0/24 gateway=10.10.7.1


Gudini
Сообщения: 36
Зарегистрирован: 14 янв 2013, 14:43

Считаю необходимым добавить в описание - любая технология шифрования трафика (т.е. и VPN) забирает часть ширины канала канала.
Например - sstp выдает 1,2 -1,7 мбит, а pptp выдает 3-4 мбит - проверял у себя (цифры примерные).
А, как показывает практика, канал иногда бывает настолько тонким (как у модема 1805 г.в.) - т.ч. следует сразу предусмотреть и такой вариант развития событий.

И вот еще немаловажный момент - провайдер может резать VPN подключения - например МТС не дает pptp устанавливать подключения - т.ч. выбирая метод надо учитывать всякие вещи.


пс. Большое спасибо автору.


Закрыто