OpenWRT

Когда до меня добрался человеческий интернет (в лице провайдера Гарант) я сразу же полез выбирать себе роутер. Изначально подумывал о каком-нибудь MikroTik, но та железяка что хотя бы с натяжкой подходила по ценнику не умела 5GHz WiFi. А этого хотелось бы, т.к. диапазон 2.4GHz довольно сильно захламлен.

Роутеры у нас в продаже тоже довольно сильно влетают в копеечку, поэтому решил прошерстить ebay в поисках чего-нибудь интересного. В свое время так был куплен Siemens Gigaset 604 с трубкой, баксов за 15, кажется. Кстати жив и по сей день. Когда я его брал, надеялся на OpenWRT, но не сложилось. Теперь хотелось бы не допустить такого промаха и взять железяку, которая без проблем ее потянет.

Если кто не в курсе, OpenWRT это такой линукс для роутеров. Можно рассматривать ее как альтернативную прошивку со своими собственными ништяками. Или как мини-сервер со своими скриптами, демонами и тому подобным. 

Итак, в итоге я наткнулся на WD MyNet N600. 

WD MyNet N600такого рода фотки были на ebay

Что же он из себя представляет: ОЗУ 128MB, ПЗУ 16MB, WiFi в 2 диапазона 802.11 abgn. Это более чем неплохо. Ну и без проблем умеет OpenWRT. И это при такой-то цене (с доставкой встал где-то в $33). Няшность :3 

Из альтернатив, наверное только роутер от Xiaomi.

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

- скачать прошивку;

- выставить на сетевой карте адрес 192.168.1.10;

- выключить роутер;

- чем-нибудь тонким зажать ресет (он снизу) и включить роутер (есть кнопка сзади) и держать ресет нажатым не менее 15 секунд;

- зайти на адрес 192.168.1.1 и залить прошивку;

- дождаться загрузки, можно запустить пинг на 192.168.1.1 и когда пойдут ответы - роутер готов к работе. 

Теперь можно включать DHCP на сетевой карте и зайти на роутер через web или telnet. При первом запуске веб интерфейса необходимо установить пароль, в общем все логично. Дальнейшие действия зависят от конкретного провайдера. В моем случае, чтобы получить интернет, необходимо было прописать MAC-адрес на WAN интерфейсе. Делается это следующим образом: Network - Interfaces - WAN - Advanced Settings - Override MAC address (сюда нужно прописать нужный мак) и нажать Save & Apply.

MAC

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

Для того чтобы изменить конфиг лучше всего активировать SSH доступ. Заходим System - Administration. Тут вводим рутовый пароль (если он еще не был настроен). Dropbear по умолчанию работает на всех интерфейсах на 22 порту и позволяет логиниться руту, если нужно меняем и нажимаем Save & Apply.

SSH OpenWRTна скриншоте виднеется PPTP т.к. он был сделан позже

Теперь ломимся на роутер по SSH, c рутовым логином и паролем.

OpenWRT

таким рецептом нас встречает консолька OpenWRT, релиз которой назван, судя по всему, в честь данного коктейля, надо бы попробовать (:

Правим конфиг: vi /etc/config/dhcp: в строке option rebind_protection '1' меняем 1 на 0. Сохраняем изменения и выходим (для тех, кто не знаком с vi краткий how-to: для перехода в режим вставки нажимаем i, правим, нажимаем Esc, нажимаем :wq). Рестартуем dnsmasq: /etc/init.d/dnsmasq restart.

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

Второй способ: Network - Interfaces - WAN Edit - Advanced Settings - Use DNS servers advertised by peer нужно снять галку, тем самым мы отказываемся от DNS. После этого появится поле Use custom DNS servers, там нужно прописать провайдерские DNS, а так же добавить, например, 8.8.8.8 на всякий случай.

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

Update lists

Теперь вводим в поле Filter слово russian и нажимаем поиск, в списках Available packages находится то что попало под критерии, нас интересует пакет luci-i18n-russian. После его установки интерфейс станет на русском.

localization OpenWRT

Теперь IPTV, для его работы нужен IGMP Proxy. Пакет так и называется - igmpproxy, ставить так же как и русификацию. После установки коннектимся по SSH и открываем конфиг vi /etc/config/igmpproxy. Приводим его к следующему виду:

config igmpproxy
    option quickleave 1

config phyint
    option network wan
    option direction upstream
    list altnet 10.0.0.0/8
    list altnet 224.0.0.0/4

config phyint
    option network lan
    option direction downstream

Если с адресами не понимаете, то можно выставить list altnet 0.0.0.0/0, не знаю насколько это повлияет на стабильность. Далее необходимо включить IGPM snoopong: vi /etc/config/network. Тут в секцию lan (config interface 'lan') нужно добавить строку option igmp_snooping '1'. Осталось только добавить в фаерволл правила для пропуска мультикаста: vi /etc/config/firewall. Добавляем правила:

config rule
    option src 'wan'
    option proto 'igmp'
    option target 'ACCEPT'

config rule
    option src 'wan'
    option proto 'udp'
    option dest 'lan'
    option dest_ip '224.0.0.0/4'
    option target 'ACCEPT'
    option family 'ipv4'

Все, рестартуем и запускаем сервисы: 

/etc/init.d/firewall restart
/etc/init.d/igmpproxy start
/etc/init.d/igmpproxy enable

Проверяем, должно работать. Конечно, все это (и далеко не только это, чего стоит только интерпретатор Python на роутере) удалось настроить не с первой попытки, но оно того стоило. Быть может, напишу еще о чем-нибудь интересном и/или полезном об этом роутере и OpenWRT.