Распространенные проблемы MikroTik
Самая распространенная проблема MikroTik (точнее жалоба) — «у меня ничего не работает», причем чаще всего это неправда. Если у босса не открывается вложение в письме с темой «вы выиграли миллион», потому что его заблокировал антивирус, то настраивать роутер в этот день вряд ли придется.
Еще на тему Микротик:
Поэтому один из важных навыков админа — это умение вести диалог с пользователем и выяснять, что именно и как не работает. Увы, эта статья не будет посвящена данному вопросу, так что переходим сразу к технической части.
Ресурсы
Первое, на что обращает внимание любой системный администратор, — потребление ресурсов. Благо WinBox выводит эти данные прямо в главном окне. А если еще не выводит — сейчас же добавляй их туда. Это сэкономит много времени в будущем. Тебе нужно меню Dashboard → Add. И кстати, зеленый квадратик в правой верхней части — это не загрузка процессора. Не обращай на него внимания.
Если процессор постоянно загружен больше 80% (в зависимости от условий это значение может меняться, но в среднем давай примем такое число), то что‑то неладно. В первую очередь смотрим на местный «диспетчер задач», меню Tools → Profile. Тут мы увидим, что именно нагружает CPU, и поймем, как действовать дальше.
Длительную статистику по нагрузке CPU, трафику на интерфейсах и другим параметрам можно увидеть в Tools → Graphing.
Объяснение полей вы найдете в вики. Наиболее часто встречаются DNS, Encrypting и Firewall.
- Encrypting — роутер тратит много ресурсов на шифрование. Скорее всего, у вас много туннелей VPN и нет аппаратного чипа шифрования. Нужно поменять на железку со специальным чипом или выбрать более слабые алгоритмы.
- Firewall — прямое указание, что вы не читали мои предыдущие статьи.
- DNS — а вот тут вас ждет кое‑что интересное.
Сам по себе DNS-сервер почти не нагружает роутер в небольших и средних сетях (до нескольких тысяч хостов). А использовать RouterOS в качестве DNS-сервера в больших сетях не лучшая идея. Так откуда нагрузка? Давай разбираться. Если есть нагрузка, значит что‑то ее создает. Вероятно, серверу DNS приходится отвечать на большое количество запросов. Проверим, так ли это. Создадим в файрволе правило.
1 2 |
/ip firewall filter add action=accept chain=input dst-port=53 log=yes log-prefix=DNS protocol=udp |
И теперь смотрим в лог. Если наши предположения верны, то заметим много сообщений с префиксом DNS. Увидим, с каких адресов и на какие интерфейсы летят запросы. Скорее всего, это будет интерфейс WAN. Но мы не хотим обрабатывать DNS-запросы, пришедшие к нам из интернета. Закроем UDP-порт 53 на интерфейсе WAN, поместим правило в нужном месте — и наслаждаемся снизившейся нагрузкой. Поздравляю! Мы только что обнаружили, что были частью ботнета, закрыли эту дыру и сделали интернет чуточку чище. Подобные атаки часто проводятся с применением протоколов, работающих над UDP.
Firewall
Вообще, умение работать с файрволом несет в себе огромную силу. Правильно построенное правило укажет, как проходит пакет через систему, в какой интерфейс попадает, из какого уходит дальше и получает ли ответный пакет. По одним только счетчикам можно многое узнать о своей сети.
В столбцах Bytes и Packets отображаются количество байтов и пакетов, обработанных правилом. Кнопки Reset Counters сбрасывают эти счетчики. Теперь можно наблюдать, попадает ли трафик в нужное правило или нет.
Полезной часто оказывается вкладка Connections файрвола. Тут видно все потоки, проходящие через роутер: их состояние, количество прошедших байтов, флаги потока (для получения подсказки достаточно навести на значение в столбце). Для большей наглядности нужно добавить поля Reply Dst. Address и Reply Src. Address. В этих полях видно, в какой и из какого адреса был проведен NAT.
Файрвол со всеми его фичами позволяет детально дебажить весь трафик, проходящий через роутер. Чтобы лучше понимать, что происходит во всех этих вкладках, нужно изучить, как пакеты проходят через роутер. На картинке упрощенная версия схемы. Более подробная есть в документации.
Другие способы анализа трафика
Увидеть состояние потока, его адреса, байты и прочее — хорошо. Но файрвол не позволяет удобно и из единого места убедиться, что маршрутизация корректна. Чтобы узнать, в какой интерфейс вылетает пакет, достаточно воспользоваться инструментом Torch.
Torch можно воспринимать как некое подобие tcpdump. Здесь можно увидеть VLAN ID, source/destination address/port, DSCP, битовую и пакетную скорость. Есть удобные фильтры, которые позволяют делать точные выборки. Если данные в окне меняются слишком быстро, увеличивай значение Entry Timeout. К сожалению, в одном окне он может показывать только трафик на одном интерфейсе, но никто не мешает нажать New Window и наблюдать за несколькими интерфейсами. Если Torch не показывает нужного трафика на нужном интерфейсе — налицо проблемы с маршрутизацией.
Torch позволяет наблюдать за потоками трафика в реальном времени. Но в некоторых случаях нужны более детальные данные о трафике. Их позволяет получить инструмент IP Sniffer.
С его помощью можно увидеть параметры трафика и даже содержимое пакета.
Но иногда требуется более детальный анализ — например, чтобы убедиться, что TCP handshake успешно прошел и данные передаются. В таком случае в передаваемых пакетах должен присутствовать флаг ACK. Но искать пакеты в скудном интерфейсе «Винбокса» неудобно.
И тут на помощь приходит всеми любимый Wireshark — мощнейший инструмент для анализа сетевого трафика. В Filter указываем нужные параметры, чтобы не снифать все подряд, в General выбираем Filename, жмем Apply и Start. Теперь в Files на роутере можно найти наш дамп, перекинуть его на компьютер и открыть «Шарком». О нем написано много статей, поэтому даже не буду пытаться писать тут, как с ним работать.
Но это лишь начало. Можно в реальном времени наблюдать за трафиком из Wireshark. И без всяких операций с файлами! Открываем «Шарк», в фильтре пишем udp.<wbr />port <wbr />== <wbr />37008, на сниффере RouterOS во вкладке Streaming ставим галочку Streaming <wbr />Enabled и вписываем IP-адрес компьютера с запущенным «Шарком». Можно поставить галочку Filter stream, чтобы лить в «Шарк» не весь трафик, а только выбранный.
Лить трафик в сниффер можно и из файрвола. За это отвечает действие sniff-TZSP в таблице Mangle. Работает это по аналогии со Sniffer Streaming, но в файрволе можно сделать более точную выборку пакетов для сниффера.
Wireless
Самая сложная часть диагностики — это Wi-Fi. Он и сам по себе очень сложная технология, к тому же среда передачи данных общая и все соседские роутеры мешают работать твоему, так же как и он им. О работе 802.11 написана не одна книга, пересказывать их я не буду. Посмотрим только на инструменты, которые могут помочь при диагностике.
В RouterOS их немного. Самый главный — вкладка Registration в Wireless. Здесь видно всю информацию о подключенных клиентах: MAC, уровень сигнала, качество сигнала.
Самые важные поля:
- CCQ — Client Connection Quality. Чем ближе к 100%, тем лучше. Ниже 60% означает плохую связь;
- TX/RX Signal Strength — уровень сигнала. Отличное значение — от 0 до –45, приемлемое — от –55 до –75. Все, что между, — хорошо. Ниже –75 можно считать отсутствием связи. По крайней мере, я ориентируюсь на такие цифры.
- Signal to Noise — отношение сигнал/шум. Чем выше — тем лучше.
Второй инструмент — логи. Собственно, этот инструмент должен активно использоваться не только при диагностике Wi-Fi. Если стандартных логов недостаточно — просто включи расширенные.
Ping, Traceroute
Первым инструментом диагностики у сисадмина всегда был пинг. Но далеко не все знают, сколько возможностей он в себе скрывает.
Многие сталкивались с тем, что текст на сайте отображается, а картинки нет. Или скрипты не загрузились, и сайт «поехал». Это первые признаки несогласованности MTU. С помощью пинга можно проверить этот вариант. Ставим галочку Don’t fragment, выставляем нужный нам размер пакета и смотрим на результат. Если видим packet <wbr />too <wbr />large — MTU в канале ниже заданного нами значения пакета. Уменьшаем его и проверяем снова. Таким образом выявляем максимальный пакет, который проходит через сеть без фрагментации.
На сайте Cisco есть подробная информация об MTU и его измерении в канале.
По умолчанию пакет отправляется с роутера с src address того интерфейса, в который он вылетает. Бывает, что нужно его поменять. Например, при диагностике маршрутизации внутри VPN или корректности работы файрвола. Для этого нужно заполнить поле src address. Не забывай, что адрес должен быть существующим, чтобы ответный пакет вернулся.
При сложной маршрутизации необходимо выбрать нужную Routing Table. Впрочем, те, кто пользуется несколькими таблицами маршрутизации, и так это знают.
Заключение
Невозможно в одной статье и даже в нескольких книгах описать все возможные проблемы и методы их диагностики и решения. Для эффективного дебага нужно понимать, как работает сеть на каждом уровне, ее особенности в конкретной реализации — ведь не бывает двух одинаковых сетей: рецепты, работающие в одной инфраструктуре, будут бесполезными для другой.
РЕКОМЕНДУЕМ:
Как защититься от руткитов в Linux
Для дебага необходимо понимать, как пакет проходит внутри RouterOS, а в особо сложных случаях — и знать особенности вендора. И это относится не только к MikroTik. Лучший инструмент дебага — знания и опыт!
производителю оценка 1/5, кол — за путанную терминологию и идиотские «решения», пять — за winbox и не плохое оборудование в целом. никому не посоветую это оборудование, даже опытным пользователям.