Домашний роутер. Как выбрать хороший. Нужен ли DPI дома ?

Posted: 2015-12-13 in Hardware, Networks
Метки:,

Всем привет.
Решил написать немного про домашние роутеры и те особенности, с которыми я столкнулся, выбирая себе домой железку такого класса. Статья будет длинная, и возможно, даже в нескольких частях. А может и в одну впишусь.
Если интересно — читаем дальше. ifup eth0 && service bwdpi start, поехали…

Немного экскурса в историю. Так исторически сложилось, что очень долгое время интернет мне был нужен только на основной домашней машине и запущенных там виртуалках. Второй компьютер, ещё один ноутбук, смартфон и сетевой принтер появлялись постепенно и незаметно. А поскольку я очень ленивый, то и выход всего этого добра в интернеты делался через мою основную машину, благо на линуксе настройка NAT/Firewall в моём случае была тривиальна. Потом там появились такие сущности, как 802.1q VLAN, PXE-загрузка, особые правила выхода в инет для разных устройств, ноды анонимных сетей, контроллер UniFi (да, у меня дома вайфай раздавался долгое время именно этой дрыной со своим отдельным софт-контроллером в виртуалке), VPN-ка и прочие не совсем домашние вещи. А тут у меня ещё родилась идея-фикс сделать из PXE-сервера нечто более монструозное, откуда можно было бы грузить не только инсталлятор федоры и всякие мемтесты, но и чего покруче. Также меня стала напрягать постоянно работающая основная машина, которая превратилась в небольшой маршрутизатор с длинным конфигом файервола и кучей сервисов. Мои же свежие идеи насчет PXE-загрузки с NFS и самбами, как и мысли про IPTV-Multicast, явно намекали, что поднять придётся ещё пачку сервисов. Осознав, что мне это вломы (мне почему-то очень лень стало поднимать NFS, самбу и igmp_proxy/multicast forward на основном компе, учитывая игрища с SELinux), я решил наконец-то сделать домашнюю сеть «более по-уму», купив нормальный роутер, на который можно было бы перенести всё это сетевое непотребство.

Краткий список требований был примерно такой:
— Открытая фирмварь. Опенсурсные прошивки на порядки качественнее и стабильнее того треша,
который делают китайцы за чашку риса. Вот такой сценарий меня не устраивал совершенно.
— Аппаратное ускорение для NAT/Routing/Switching.
— Гигабитная сеть. В LAN — обязательное условие, в WAN — на будущее.
— Возможность включения USB-флешки большой ёмкости для загрузочных образов. Желательно на USB 3.0
— Нормально работающие привязки IP-MAC в DHCP
— Безглючный PortForward / UPnP.
— Возможность ставить свои модули и сервисы, желательно пакетным менеджером.
NFS, Samba, HTTP, TFTP, загрузочные фичи DHCP — всё это мне нужно.
— Работающий шейпер / QoS, желательно не забывший про аппаратное ускорение.
— Возможность поднять свои вланы / правила файервола при необходимости.
— Удобный бэкап настроек без дополнительного кривого софта.
— SSH на ключах с TCP-Forwarding и SFTP.
— Возможность поднять VPN-сервер.
— WiFi 2.4 + 5 GHz с MIMO и BeamForming. Способный вынести без последствий появление
в радиоканале какого-нибудь говна типа айфона/айпада/STB-приставки.
— L7-DPI для статистики по траффику в разрезе устройств/приложений очень бы не помешал =)
— Желательно не запредельно дорогой. =]

Увы, но довольно долгое время подавляющее большинство продаваемого железа для моих целей не подходило — то железо слабое, то прошивка кривая, то вланов нет, то с работой под нагрузкой проблемы (кто сказал, что 500-2000 нат-сессий это много ?). Либо получались зело дорогие связки типа SRX-100 (где фирмварь не открыта =( ) + UniFi Pro + ещё что-то. Три девайса — явно перебор, а мне хотелось упростить.

После долгого курения мануалов и консультаций с одним друганом, съевшим много корейских блюд с домашними роутерами, я решил использовать связку Merlin Firmware + Asus RT-AC68U (хорошо реализованный WiFi, внешние антенны, два диапазона, аппаратная обработка траффика, хорошее отношение цена/качество). Получилось относительно дёшево и весьма сердито, особенно учитывая мои хотелки из списка выше.

С прошивкой всё просто — качаем мерлиновскую фирмварь, зашиваем прямо из веб-интерфейса, обязательно делаем после перепрошивки и ребута «Сброс до заводских настроек», чтобы почистить NVRAM от старых настроек. Если надо — исходники на гитхабе.

Основная базовая настройка делается из веб-интерфейса.

Asus_RT-AC68U_Login

Интерфейс радует — прямо в форме логина реализована приблуда на JavaScript, которая шифрует пароль перед отправкой:
POST /login.cgi HTTP/1.1
Host: 192.168.1.1
.....
Referer: http://192.168.1.1/Main_Login.asp
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 140

group_id=&action_mode=&action_script=&action_wait=5&current_page=Main_Login.asp&next_page=index.asp&login_authorization=CR5aYHFnZ8rHLyABRySJHTTP/1.0 200 OK
Server: httpd/2.0
Date: Sun, 13 Dec 2015 10:28:50 GMT
Content-Type: text/html
Set-Cookie: asus_token=2030598304679088899677677056242; HttpOnly;
Connection: close
.....

Даже по HTTP пароль открытым текстом не передаётся, но лучше всё равно перейти на HTTPS с привязкой сертификата.

Потыкаем в интерфейсе:

Asus_RT-AC69U_MapAnimated

Как видим, ядра ЦПУ загружены слабо, памяти занято 80 Мб из 250 (DDR3 емнип), привязки IP-MAC работают, выделенным клиентам можно перекрыть доступ в инет или сделать его по расписанию, и даже свои иконки можно добавить. Фирмварь роутера также умеет определять тип девайса (не разбирался, каким именно способом — скорее, DPI-модулем), в частности, виртуалка с Виндовс-7 и принтер определились на ура. Организация резервного канала (Double WAN) как через USB-свисток, так и через выделенный порт Ethernet — встроенная фича. Проверял с билайновским модемом — работает. Причём возможна как балансировка траффика (два проводных провайдера), так и режим горячего резерва (основной линк по меди, при его падении переключение на 3G/4G модем). Для каждого из двух радиомодулей можно задать одну основную сеть, три гостевых, расписание работы (правда общее на радиомодуль в целом). Итого до 8 сетей прямо средствами веб-морды. Гостевые сети можно изолировать от локалки, чтобы беспроводные клиенты в них не могли получить доступ к интерфейсам управления роутером и сетевым принтерам. А вот сетевому принтеру и свитчу доступ в инет я выключил, не нужен он им. Ряд гостевых сетей можно включить временно:

Asus_RT-AC69U_WiFi-Guest

В случае приезда гостей/родственников — идеально. И пароли свои основные не светим, и сеть не забудем выключить. Проверил — работает.

Из блока функций «AiProtection» я включил только модуль «Профилактика вторжений». Блокировку вредоносных сайтов и зараженных мобильных устройств я включать не стал, поскольку эти функции требуют использования внешних баз от гугла и тренд-микро.

Asus_RT-AC70U_AiProtect_Animated

Также там есть модуль «Родительский контроль» (с фильтрами некро-зоо-педо-порева и расписаниями) и DNS-фильтр, но я это не использую.

Приоретизация и QoS прекрасны. Настраивается просто, ставим максимальный приоритет телефонии и игрухам, наименьший — торренту и p2p, остальное неважно. Для медленных включений, особенно при работе через резервный канал на 3G/4G модеме может сильно помочь.

Есть мониторилка потребления полосы в разрезе клиентов:

Asus_RT-AC69U_QoS1

Сразу видно, кто сколько полосы съедает. Multicast-IPTV тоже распознается и попадает в статистику по траффику, но не в статистику по приложениям, поскольку DPI не может его однозначно связать с приложением или клиентом (такова суть мультикаста). Резкие всплески загрузки как раз соответсвуют включению Full-HD каналов IPTV-сервиса.

Ну а раз мы вспомнили про модуль DPI, то и список посещенных каждой машинкой сайтов тут же:

Asus_RT-AC69U_QoS2

Следующая вкладка ещё более классная. Статистика аплоад/даунлоад, как общая, так и по каждому LAN-сегменту (Ethernet, WiFi-2.4, WiFi-5):
Asus_RT-AC69U_TrafMon1

На соседней вкладке совсем уж вкусная мякотка, пахнущая решениями из совсем другого класса цен и возможностей:
Asus_RT-AC69U_DPI_Animated
Да, теперь я знаю, что данный роутер умеет отличать траффик скайпа от битторента, а джаббер от сипа, измерять статистику по каждому из них и применять QoS-приоретизацию к ним =) Это очень круто!

Траффик системных обновлений линукса (yum), виндовса (WUS) и ютуба также без проблем различимы и учитываются отдельно для каждого девайса/клиента. Это уже в чистом виде L7-DPI (Deep Packet Inspection который). Буквально лет 5-10 назад эти волшебные три буквы относились исключительно к провайдерскому миру, причём для не самых бедных из его представителей. А в 2015-м базовые функции DPI уже есть в домашнем роутере.

Нужен ли DPI дома ? Ну учитывая ожидания экспертов насчет спамящих интернет-холодильников, протрояненных кофеварок и ддосящих тостеров с уязвимым NTPd на борту — думаю, что да, очень даже =)

Вкладка «USB-Приложение» касается работы с USB-девайсами. Сразу после покупки я проверил работу роутера с пчелайновским модемом в режиме «Double WAN», и на этом успокоился, вернув модем другану. Моя же задача — включение туда быстрой USB 3.0 флешки, на которой я буду размещать образы для сервера сетевой загрузки через PXE.

Некоторые туда втыкают 2.5″-жесткий диск для хранения фильмотеки, вареза и музыки, так тоже можно.
Чтобы эту флешку не сломать, я взял самую маленькую из таких флешек, лишь на несколько миллиметров выступающую из разъёма. Берём USB 3.0 -версию, чтение 130 Mb/sec — как раз под гигабитную локалку, чтобы не было узкого места.

На текущий момент у меня занято 16 Гб — это инсталлеры Debian, Fedora, CentOS, OpenBSD, NetBSD, загружаемые целиком с роутера Knoppix, RipLinux, HirenBCD и ещё бессчетное количество всякой мелкой диагностической фигни типа MHDD, акронисов и прочих мемтестов.
Держать всё это на роутере в PXE — гораздо удобнее, чем диджеить с болванками и загрузочными флешками.
Саму флешку форматим в EXT4, делаем там одну партицию.
Такие функции, как AiDisk (создание своего сетевого файлохранилища с DDNS от асуса), сервер печати, 3G/4G, Download Master и TimeMachine (какая-то надкусанная яблочная херь для i-бэкапа) мне не понадобились, а вот секцию «Файл/Медиа-сервер» надо посмотреть.

iTunes Server (шо это??!) и DLNA у меня не используются, FTP тоже. Создаём на флешке каталоги nfs4tftp и smb4tftp.
Включаем самбу:

Asus_RT-AC69U_Samba

Доступ — только на чтение, для самбы делаем пользователя pub с паролем 123, доступ только к каталогу smb4tftp и только на чтение. NFS аналогично, каталог nfs4tftp, доступ только на чтение (опция ro) и только из своей сети. Нефиг его светить куда либо ещё, да и нет никакой причины давать всем доступ на запись к файлам сетевой загрузки. Я же буду править эти файлы исключительно по SSH.

Asus_RT-AC69U_NFS

AiCloud 2.0 я не использую, но кому-то явно нужен, раз есть в базовой прошивке.
В Tools можно посмотреть аптайм, температуру модулей, версии прошивки и драйверов, статусы портов, потвикать TCP-таймауты и параметры хранения истории DPI-модуля. По умолчанию ничего трогать тут не требуется.

Для беспроводной сети проверим, что WPS выключен — он уязвим изначально, и включить его можно разве что разово для настройки какого-нибудь особенно кривущщего WiFi-принтера или подобной i-хрени. Я настроил работу передатчика на меньшей мощности и задал расписание включения радиомодулей (вкладка «профессионально»). Нет никакого смысла греть радиомодули и облучать пространство ночью или в рабочее время. Это хорошо и для чистоты радиоэфира, и для энергопотребления, и для срока жизни железки.
Из интересного — есть поддержка авторизации беспроводных клиентов в RADIUS. Дома не требуется.

В настройке «Локальная сеть» делаем привязки наших компов и смартфонов к фиксированным IP вне DHCP-диапазона. Даём им внятные имена для облегчения восприятия DPI-статистики. Также туда можно добавить постоянно используемые виртуальные машины. У меня получилось 16 записей. Обязательно проверить, что включена NAT-акселерация.

Во вкладке «Интернет» делаем настройку двойного WAN, если у нас два провайдера, переадресацию портов (не переключатель!!) для вытаскивания наружу сервисов с рабочей машины, не забываем включить SIP и RTSP Passthrough и прочие типы сложного для NAT-а траффика.

VPN в этом роутере есть всякий и разный.
PPTP-сервер — до 30 клиентов.
OpenVPN-сервер — два инстанса со своими наборами настроек, есть как парольная авторизация, так и на ключах.
Число соединений ограничено только мощностью железа и разумными соображениями.
PPTP/L2TP-клиенты — без ограничений.
OpenVPN-клиенты — 5 профилей. Все типы авторизации, ручные настройки.
Из интересного — можно выборочно направлять LAN-клиентов через такие VPN-соединения =).
TOR — небольшая нода не самой свежей версии. Можно выборочно торифицировать выбранного LAN-клиента полностью прозрачно.
Надёжность реализации и качество анонимизации (в плане стойкости к атакам на анонимность) неизвестны.

В секции «Администрирование» из интересного — обновление прошивки, запланированный ребут по расписанию, включение JFFS-партиции и скриптов с неё (понадобится в будущем для PXE), настройка доступов по SSH и функций NTP, Syslog и SNMP. Они очень уютные и домашние, особенно SNMP =)
Если вешать SSH наружу — обязательно поменяйте порт, иначе логи раздует и занесёт мусором. Запрет входа в SSH по паролю, SSH-TCP-Forwarding и открытый ключ добавляются прямо в интерфейсе.

Из важного: SNMP — не включайте доступов на запись, из WAN закрыть вообще.
Местное «Управление настройками» сохраняет сырой дамп NVRAM, и такой бэкап нельзя переносить на другие версии прошивки ! Для переноса настроек на новую фирмварь есть специальный, гораздо более правильный скрипт. Хотя в рамках текущей прошивки применим, но не рекомендуется.
Из интересного — возможность специального браузерного редиректа при падении WAN-порта. DPI тут любят, да.

Системный журнал тоже прекрасен:

Asus_RT-AC69U_Logs_Animated

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

Реклама
- комментарии
  1. Кирилл:

    12к за роутер. Ахренеть не встать!

  2. Amin:

    Ну так и хотелки не на 5 копеек.

    Кстати, если отказаться от требований к MIMO, BeamForming и последним WiFi-стандартам, а также к наличию USB 3.0, то есть ещё RT-N66U и RT-AC56U за 8к. Или RT-N16 за 5к.

    Не уверен насчёт работы DPI на младших моделях, но остальные чисто софтварные возможности должны быть такими же. Я выбирал нечто среднее — чтобы и система была мощной (два ядра, вайфай с плюхами, DDR3, USB3, Hardware NAT), и цена не улетала в совсем уж заоблачные дали.

    На странице Мерлина есть список поддерживаемого железа, можно выбрать. Там есть и более старшие модели — отличаются ещё более мощной WiFi-частью и производительностью (в основном всякие извращения в радиоканале, чтобы достукиваться до клиентов в условиях жуткой засранности диапазона 2.4 GHz), но и ценник растёт ещё выше. У меня дома около 10-15 соседских сетей (а не 50-60, как в некоторых особо сложных случаях), и на роутерах без Beam Forming тяжко.

    В моём случае по 5GHz без проблем работает Full-HD IPTV во всей зоне покрытия на ~80% мощности передатчика, без появления артефактов вообще, что совершенно прекрасно.

    Сейчас попью чаю и сяду писать вторую часть.

  3. […] Amin on Домашний роутер. Как выбрать х… […]

  4. Scaner:

    DPI работает только на роутерах Asus с ARM-архитектурой (то есть начиная RT-N18U, RT-AC56U, RT-AC68U, RT-AC87U, AC-3200U и AC-5300U). Владельльцам с MIPS придётся урезать аппетиты, в том числе и по скорости внутри VPN-туннеля и колличеству поднятных сервисов на железке.

  5. Amin:

    Более старшие версии я смотрел, но там основное улучшение — беспроводка, которая и в AC68U прекрасна и меня устраивает на все 100%. Я посчитал AC68U оптимальным для себя по соотношению цена/фичи.

    Про MIPS буду знать, спасибо за ценный комментарий!