Тонкая настройка прошивки от падавана. Выборочный обход блокировок на маршрутизаторах с прошивкой Padavan и Keenetic OS

Тонкая настройка прошивки от падавана. Выборочный обход блокировок на маршрутизаторах с прошивкой Padavan и Keenetic OS

Инструкций с разными вариантами обхода блокировок Интернет-ресурсов опубликовано огромное количество. Но тема не теряет актуальности. Даже всё чаще звучат инициативы на законодательном уровне заблокировать статьи о методах обхода блокировок. И появились слухи, что Роскомнадзор получит ещё одну пачку денег налогоплательщиков на «более лучшие» блокировки. Опытные пользователи ничего нового и полезного из статьи не узнают. А вот другие получат готовые пошаговые инструкции для простого и эффективного выборочного обхода блокировок на популярных маршрутизаторах с прошивкой Padavan и Keenetic.

Всё было хорошо, но «лучшее всегда враг хорошего». Во-первых, некоторые новые программы стали слишком «умными» и резолвят домены собственными методами, минуя DNS-сервер маршрутизатора. Это не позволяет dnsmasq на маршрутизаторе добавить адрес во множество ipset для разблокировки и приводит к закономерному результату - ресурс остаётся заблокированным. В Android 9 вообще появилась штатная поддержка DNS-over-TLS, т.е. этот метод обхода блокировки перестаёт работать (если другое устройство ранее не обращалось к dnsmasq). Во-вторых, обновление всего списка доменов из antizapret приводит к непредсказуемым результатам каждый раз. В список могут попасть домены, которые в реальности не заблокированы, и работа которых важна через основной канал. Нужно постоянно быть начеку и руками править сгенерированные файлы. В-третьих, надоело «таскать за собой» огромный список доменов с десятком тысяч казино и подобные, которые просто не нужны. Со временем я понял, что мне нужен лишь небольшой конкретный список заблокированных ресурсов.

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

  • Простота и лёгкость управления (после настройки).
  • Полный контроль над тем, какие ресурсы нужно разблокировать.
  • Минимальные требования к ресурсам процессора и ОЗУ маршрутизатора.
  • Широкий охват нюансов при обходе блокировок.
Важно отметить, что мой вариант не предназначен для случая, когда вам нужно разблокировать сотни и тысячи доменов. Потому что при старте маршрутизатора происходит резолвинг каждого домена из заданного списка. Чем больше доменов в списке, тем дольше будет происходить инициализация множества ipset для разблокировки.

Основа обхода блокировок та же - сеть Tor. Её использование обусловлено двумя простыми факторами- бесплатность, и вероятность того, что Tor будет заблокирован в России, близка к нолю, в отличие от любого VPN-сервиса. Tor является фундаментом наркотрафика в России от среднего звена до самых низов. Блокировка Tor приведёт к поиску новых инструментов для рынка и снижению уровню анонимности, что повлечёт за собой успешную активизацию работы локальных правоохранительных органов. В конечном итоге это, как вирус, начнёт негативно влиять на верхнее звено. Учитывая последние удивительные новости о связях высших должностных лиц государства с глобальным наркотрафиком в Россию, блокировка Tor в России - это просто табу, хоть она и тривиальная. Ни Роскомнадзор, какие бы миллиарды не выделялись этому ведомству, ни один суд в России не имеют разрешения «сверху» для блокировки Tor. И это уже даже никого не удивляет и не пугает, хоть Россия просто утопает в наркотиках (любой школьник знает, что такое «дакнет», и через 30 минут имеет фактическую возможность в любом городе с населением от 10 тыс. человек беспрепятственно получить любые наркотики практически в любых количествах - такая злая правда жизни). При текущем режиме вероятность блокировки сети Tor ниже, чем вероятность блокировки сайта музея Эрмитаж.

Приведённую инструкцию легко адаптировать для маршрутизаторов с OpenWrt. Также, небольшими изменениям легко заменить Tor на OpenVPN.

Как вы будете управлять обходом блокировок после настройки?

Всё очень просто. У вас есть файл /opt/etc/unblock.txt - простой список для разблокировки. Вы можете разблокировать домен, IP-адрес, диапазон адресов или CIDR. Одна строка - один элемент. Допускаются пустые строки, и можно использовать символ # в начале строки для игнорирования.



После редактирования этого файла вы просто выполняете команду для применения новой конфигурации:

Unblock_update.sh
Все ресурсы из unblock.txt разблокируются без необходимости перезагружать маршрутизатор.

Принцип работы

  • При инициализации маршрутизатора создаётся пустое множество IP-адресов ipset с именем unblock.
  • В брандмауэр добавляется правило перенаправления всех пакетов с адресатами из unblock в сервис Tor.
  • Запускается сервис Tor в режиме прозрачного прокси.
  • Запускается специальный скрипт unblock_ipset.sh, который резолвит все домены из unblock.txt и добавляет их IP-адреса в множество unblock. IP-адреса, диапазоны и CIDR из этого файла тоже добавляются в unblock.
  • Запускается dnsmasq с дополнительным конфигурационным файлом unblock.dnsmasq, в котором указано добавление IP-адресов доменов из unblock.txt в множество unblock при резолвинге.
  • cron с определенной периодичностью запускает unblock_ipset.sh, чтобы частично компенсировать возможные случаи с нюансами.
  • При необходимости все домены из unblock.txt (и только они) резолвятся через dnscrypt-proxy, если провайдер фильтрует DNS.

Настройка маршрутизатора с прошивкой Padavan

У вас должен быть маршрутизатор с установленной прошивкой Padavan и уже настроенным менеджером пакетов Entware. В Windows для подключения подключения к маршрутизатору по SSH вы можете использовать клиент PuTTY .

Убедитесь, что у вас используется Entware, а не устаревший Entware-ng. Посмотрите содержимое папки /opt/var/opkg-lists. Там будет присутствовать файл entware или entware-ng. Во втором случае вам нужно обновить прошивку Padavan вашего маршрутизатора до последней версии и заново установить менеджер пакетов Entware. Только после этого приступайте к пошаговой инструкции.

Как показали отзывы, в основном проблемы возникают у тех, у кого Entware настроен неверно изначально (т.е. не загружаются скрипты из init.d) во внутренней памяти маршрутизатора. Если у вас Xiaomi Mi Router 3 или 3G, и вы не уверены, что Entware во внутренней памяти у вас работает корректно (автоматический запуск), то просто всё настройте заново. Берёте PROMETHEUS. Обновляет скрипт (1). Обновляете исходный код (2). Собираете и прошиваете самую актуальную прошивку (4). Сбрасываете настройки прошивки (NVRAM и хранилище файлов) - Дополнительно > Администрирование > Настройки. Настраиваете доступ в Интернет на маршрутизаторе и включаете SSH. Выполняете в PROMETHEUS Firmware > Форматирование RWFS. Выбираете Дополнительно > Администрирование > Настройки > Монтировать файловую систему в R/W раздел > UBIFS. Перезагрузите маршрутизатор. Все актуальные скрипты запускаа Entware из внутренней памяти будут прописаны автоматически, и всё будет работать как часы.

Для тестов я использовал популярный Xiaomi Mi Router 3G (Entware установлен во внутреннюю память) с самой свежей прошивкой - 32a93db. Всё будет работать даже на легендарном малыше WT3020 AD/F/H за 10$.

opkg update opkg install mc tor tor-geoip bind-dig cron
mc
tor - сервис Tor.
tor-geoip - база гео-IP для Tor.
bind-dig
cron - планировщик заданий.

2. Инициализация ipset, создание множества IP-адресов unblock (start_script.sh)

Подключите необходимые модули и создайте пустое множество адресов с именем unblock при загрузке маршрутизатора. Для этого откройте в редакторе файл /etc/storage/start_script.sh :

Mcedit /etc/storage/start_script.sh
Добавьте в конце:

Modprobe ip_set modprobe ip_set_hash_ip modprobe ip_set_hash_net modprobe ip_set_bitmap_ip modprobe ip_set_list_set modprobe xt_set ipset create unblock hash:net

При желании вы можете отредактировать файл start_script.sh через веб-интерфейс маршрутизатора - «Дополнительно» > «Персонализация» > «Скрипты» > «Выполнить перед инициализацией маршрутизатора». После редактирования нажмите «Применить».

3. Настройка Tor

Cat /dev/null > /opt/etc/tor/torrc

Mcedit /opt/etc/tor/torrc

User admin PidFile /opt/var/run/tor.pid ExcludeExitNodes {RU},{UA},{AM},{KG},{BY} StrictNodes 1 TransPort 192.168.0.1:9141 ExitRelay 0 ExitPolicy reject *:* ExitPolicy reject6 *:* GeoIPFile /opt/share/tor/geoip GeoIPv6File /opt/share/tor/geoip6 DataDirectory /opt/var/lib/tor
Замените при необходимости 192.168.0.1 Краткое описание конфигурации:

  • Запретить быть точкой выхода.

Создайте файл /opt/etc/unblock.txt :


Вот пример моего личного файла

###Торрент-трекеры rutracker.org rutor.info rutor.is mega-tor.org kinozal.tv nnm-club.me nnm-club.ws tfile.me tfile-home.org tfile1.cc megatfile.cc megapeer.org megapeer.ru tapochek.net tparser.org tparser.me rustorka.com uniongang.tv fast-torrent.ru ###Каталоги медиаконтента для программ rezka.ag hdrezka.ag hdrezka.me filmix.co filmix.cc seasonvar.ru ###Книги lib.rus.ec flibusta.is flibs.me flisland.net flibusta.site ###Телеграм telegram.org tdesktop.com tdesktop.org tdesktop.info tdesktop.net telesco.pe telegram.dog telegram.me t.me telegra.ph web.telegram.org desktop.telegram.org updates.tdesktop.com venus.web.telegram.org flora.web.telegram.org vesta.web.telegram.org pluto.web.telegram.org aurora.web.telegram.org 149.154.160.0/20 91.108.4.0/22 91.108.8.0/22 91.108.12.0/22 91.108.16.0/22 91.108.56.0/22 109.239.140.0/24 67.198.55.0/24 ###Разное 7-zip.org edem.tv 4pna.com 2019.vote ###Проверка Tor check.torproject.org ###Пример разблокировки по IP (убрать # в начале строки) #195.82.146.214 ###Пример разблокировки по CIDR (убрать # в начале строки) #103.21.244.0/22 ###Пример разблокировки по диапазону (убрать # в начале строки) #100.100.100.200-100.100.100.210

Создайте скрипт /opt/bin/unblock_ipset.sh :


Вставьте (Shift+Insert) содержимое:

#!/bin/sh until ADDRS=$(dig +short google.com @localhost) && [ -n "$ADDRS" ] > /dev/null 2> < /opt/etc/unblock.txt
Дайте права на исполнение:


Создайте скрипт /opt/bin/unblock_dnsmasq.sh :


Вставьте (Shift+Insert) содержимое:

#!/bin/sh cat /dev/null > /opt/etc/unblock.dnsmasq while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue echo $line | grep -Eq "{1,3}\.{1,3}\.{1,3}\.{1,3}" && continue echo "ipset=/$line/unblock" >> < /opt/etc/unblock.txt
Дайте права на исполнение:


Скрипт достаточно простой, вот суть его работы… Последовательно читаем строки из /opt/etc/unblock.txt. У прочитанных строк автоматически удалены пробелы и табуляция в начале и в конце. Пропускаем пустые строки. Пропускаем строки, которые начинают на #. Пропускаем строки, которые содержат IP-адрес (IP, диапазон, CIDR), т.е. нас интересуют только строки с именами доменов. В файл /opt/etc/unblock.dnsmasq вносим строки вида «ipset=/доменное_имя/unblock». Это означает, что после определения IP-адресов конкретного домена они будут автоматически добавлены во множество unblock.

Unblock_dnsmasq.sh

Создайте скрипт /opt/bin/unblock_update.sh :


Вставьте (Shift+Insert) содержимое:

#!/bin/sh ipset flush unblock /opt/bin/unblock_dnsmasq.sh restart_dhcpd sleep 3 /opt/bin/unblock_ipset.sh &
Дайте права на исполнение:

Создайте скрипт /opt/etc/init.d/S99unblock :


Вставьте (Shift+Insert) содержимое:


Дайте права на исполнение:

9. Перенаправление пакетов с адресатами из unblock в Tor (post_iptables_script.sh)

Откройте в редакторе файл /etc/storage/post_iptables_script.sh :

Mcedit /etc/storage/post_iptables_script.sh
Добавьте в конце:

Iptables -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141

При желании вы можете отредактировать файл post_iptables_script.sh через веб-интерфейс маршрутизатора - «Дополнительно» > «Персонализация» > «Скрипты» > «Выполнить после перезапуска правил брандмауэра». После редактирования нажмите «Применить».

В этот же файл вы можете добавить (это необязательно) перенаправление всех запросов на внешний порт 53 на себя. Это нужно, чтобы клиенты в локальной сети не использовали сторонние DNS-сервисы. Запросы будут идти через штатный DNS-сервер.

Iptables -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1 iptables -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN).

10. Подключение дополнительного конфигурационного файла к dnsmasq

Нам необходимо подключить созданный файл unblock.dnsmasq к dnsmasq. Для этого откройте в редакторе файл /etc/storage/dnsmasq/dnsmasq.conf :

Mcedit /etc/storage/dnsmasq/dnsmasq.conf
Добавьте в конце:

Conf-file=/opt/etc/unblock.dnsmasq
Если хотите (это необязательно), можете добавить дополнительный сервер для резолвинга и надёжности:

Server=8.8.8.8
При желании вы можете отредактировать файл dnsmasq.conf через веб-интерфейс маршрутизатора - «Дополнительно» > «LAN» > «DHCP-сервер» > «Пользовательский файл конфигурации dnsmasq.conf». После редактирования нажмите «Применить».

Замените в файле конфигурации cron имя root на admin:

Sed -i "s/root/admin/g" /opt/etc/crontab
Откройте в редакторе файл /opt/etc/crontab :

Mcedit /opt/etc/crontab
Добавьте в конце:

00 06 * * * admin /opt/bin/unblock_ipset.sh

Reboot

Настройка маршрутизатора с Keenetic OS

У вас должен быть маршрутизатор Keenetic/Zyxel с уже настроенным менеджером пакетов Entware (OPKG). Например, вот список некоторых маршрутизаторов, которые поддерживают Entware: Keenetic II, Keenetic III, Extra, Extra II, Giga II, Giga III, Omni, Omni II, Viva, Ultra, Ultra II, Omni (KN-1410), Extra (KN-1710), Giga (KN-1010), Ultra (KN-1810), Viva (KN-1910), DSL (KN-2010), Duo (KN-2110). Инструкцию по настройке Entware можно посмотреть (до 10 пункта).

Если ранее (с прошивкой младше 2.07) вы уже добавляли поддержку Entware, то убедитесь, что у вас используется не устаревший Entware-ng .

Обязательно включите «Модули ядра подсистемы Netfilter» - Общие настройки > Изменить набор компонентов. Если его нет в списке доступных, то пробуйте установить сначала компонент «Протокол IPv6». Если после этого не появляется, то пробуйте без него, но высокая вероятность, что у вас не будет работать разблокировка по диапазону и CIDR (т.к. не будет поддержки множества hash:net).

Для тестов я использовал Keenetic Ultra (KN-1810) с самой свежей прошивкой - 2.14.C.0.0-4.

Важное замечание. Вам придётся отключить штатный DNS-сервер в системе, мы будем использовать dnsmasq вместо него. Вы потеряете возможность назначать DNS-сервисы (Яндекс.DNS/SkyDNS/AdGuard DNS) индивидуально для клиентов, но без проблем сможете использовать их глобально через настройки dnsmasq при необходимости.

1. Установка необходимого ПО на маршрутизаторе

opkg update opkg install mc tor tor-geoip bind-dig cron dnsmasq-full ipset iptables
mc - файловый менеджер Midnight Commander. Он нужен лишь из-за удобного редактора mcedit. Если вы привыкли пользоваться другим текстовым редактором, то mc можно не устанавливать.
tor - сервис Tor.
tor-geoip - база гео-IP для Tor.
bind-dig - DNS-клиент (аналог nslookup и host).
cron - планировщик заданий.
dnsmasq-full - DNS-сервер.
ipset и iptables - консольные утилиты ipset и iptables (возможно, они уже есть в системе и не нужны, я добавил их для подстраховки).

2. Инициализация ipset, создание множества IP-адресов unblock (100-ipset.sh)

Проверьте, что в системе вашего маршрутизатора есть поддержка множества hash:net (как оказалась, не во всех маршрутизаторах Keenetic она есть):

Ipset create test hash:net
Если команда никаких ошибок и сообщений не выдала, значит поддержка есть, и просто следуйте инструкции дальше. В противном случае (есть ошибка) в следующем скрипте вам нужно заменить hash:net на hash:ip . При этом вы потеряете возможность разблокировки по диапазону и CIDR.

Создайте пустое множество адресов с именем unblock при загрузке маршрутизатора. Для этого создайте файл /opt/etc/ndm/fs.d/100-ipset.sh :

Mcedit /opt/etc/ndm/fs.d/100-ipset.sh
Вставьте (Shift+Insert) содержимое:

#!/bin/sh [ "$1" != "start" ] && exit 0 ipset create unblock hash:net -exist exit 0
Чтобы вставить из буфера, используйте Shift+Insert, сохранить - F2, выйти - F10.

Дайте права на исполнение:

Chmod +x /opt/etc/ndm/fs.d/100-ipset.sh

3. Настройка Tor

Удалите содержимое конфигурационного файла Tor:

Cat /dev/null > /opt/etc/tor/torrc
Откройте файл конфигурации Tor:

Mcedit /opt/etc/tor/torrc
Вставьте (Shift+Insert) содержимое:

User root PidFile /opt/var/run/tor.pid ExcludeExitNodes {RU},{UA},{AM},{KG},{BY} StrictNodes 1 TransPort 192.168.0.1:9141 ExitRelay 0 ExitPolicy reject *:* ExitPolicy reject6 *:* GeoIPFile /opt/share/tor/geoip GeoIPv6File /opt/share/tor/geoip6 DataDirectory /opt/var/lib/tor
Замените при необходимости 192.168.0.1

  • Исключить выходные узлы: Россия, Украина, Армения Киргизия, Беларусь.
  • Повесить «прозрачный» прокси на адрес 192.168.0.1, порт 9141.
  • Запретить быть точкой выхода.

4. Список доменов (и не только) для обхода блокировки (unblock.txt)

unblock.txt - простой список для разблокировки. Вы можете разблокировать домен, IP-адрес, диапазон или CIDR. Одна строка - один элемент. Пустые строки (в том числе с пробелами и табуляциями) игнорируются. Можно использовать символ # в начале строки для игнорирования.

Создайте файл /opt/etc/unblock.txt :

Mcedit /opt/etc/unblock.txt
Каждая строка может содержать доменное имя, IP-адрес, диапазон или CIDR. Можно использовать символ # для комментирования строк.

Вот пример моего личного файла

###Торрент-трекеры rutracker.org rutor.info rutor.is mega-tor.org kinozal.tv nnm-club.me nnm-club.ws tfile.me tfile-home.org tfile1.cc megatfile.cc megapeer.org megapeer.ru tapochek.net tparser.org tparser.me rustorka.com uniongang.tv fast-torrent.ru ###Каталоги медиаконтента для программ rezka.ag hdrezka.ag hdrezka.me filmix.co filmix.cc seasonvar.ru ###Книги lib.rus.ec flibusta.is flibs.me flisland.net flibusta.site ###Телеграм telegram.org tdesktop.com tdesktop.org tdesktop.info tdesktop.net telesco.pe telegram.dog telegram.me t.me telegra.ph web.telegram.org desktop.telegram.org updates.tdesktop.com venus.web.telegram.org flora.web.telegram.org vesta.web.telegram.org pluto.web.telegram.org aurora.web.telegram.org 149.154.160.0/20 91.108.4.0/22 91.108.8.0/22 91.108.12.0/22 91.108.16.0/22 91.108.56.0/22 109.239.140.0/24 67.198.55.0/24 ###Разное 7-zip.org edem.tv 4pna.com 2019.vote ###Проверка Tor check.torproject.org ###Пример разблокировки по IP (убрать # в начале строки) #195.82.146.214 ###Пример разблокировки по CIDR (убрать # в начале строки) #103.21.244.0/22 ###Пример разблокировки по диапазону (убрать # в начале строки) #100.100.100.200-100.100.100.210

5. Скрипт для заполнения множества unblock IP-адресами заданного списка доменов (unblock_ipset.sh)

Создайте скрипт /opt/bin/unblock_ipset.sh :

Mcedit /opt/bin/unblock_ipset.sh
Вставьте (Shift+Insert) содержимое:

#!/bin/sh until ADDRS=$(dig +short google.com @localhost) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue cidr=$(echo $line | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}/{1,2}") if [ ! -z "$cidr" ]; then ipset -exist add unblock $cidr continue fi range=$(echo $line | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}-{1,3}\.{1,3}\.{1,3}\.{1,3}") if [ ! -z "$range" ]; then ipset -exist add unblock $range continue fi addr=$(echo $line | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}") if [ ! -z "$addr" ]; then ipset -exist add unblock $addr continue fi dig +short $line @localhost | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}" | awk "{system("ipset -exist add unblock "$1)}" done < /opt/etc/unblock.txt
Дайте права на исполнение:

Chmod +x /opt/bin/unblock_ipset.sh
Скрипт достаточно простой, вот суть его работы… Ждём, когда заработает резолвинг домена google.com (если этого не сделать, то при загрузке маршрутизатора не будет заполнено множество unblock, т.к. маршрутизатор будет находиться ещё в процессе инициализации). Читаем строки в файле unblock.txt. У прочитанных строк автоматически удалены пробелы и табуляция в начале и в конце. Пропускаем пустые строки. Пропускаем строки, которые начинают на символ #. Ищем в строке CIDR. Если CIDR найден, то добавляем его в unblock. Ищем в строке диапазон. Если он найден, то добавляем его в unblock. Ищем в строке IP-адрес. Если IP найден, то добавляем его в unblock. Резолвим строку через dig. Все IP-адреса результата добавляем в unblock.

6. Скрипт для формирования дополнительного конфигурационного файла dnsmasq из заданного списка доменов (unblock_dnsmasq.sh)

Создайте скрипт /opt/bin/unblock_dnsmasq.sh :

Mcedit /opt/bin/unblock_dnsmasq.sh
Вставьте (Shift+Insert) содержимое:

#!/bin/sh cat /dev/null > /opt/etc/unblock.dnsmasq while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue echo $line | grep -Eq "{1,3}\.{1,3}\.{1,3}\.{1,3}" && continue echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq done < /opt/etc/unblock.txt
Дайте права на исполнение:

Chmod +x /opt/bin/unblock_dnsmasq.sh
Скрипт достаточно простой. Последовательно читаем строки из /opt/etc/unblock.txt. У прочитанных строк автоматически удалены пробелы и табуляция в начале и в конце. Пропускаем пустые строки. Пропускаем строки, которые начинают на #. Пропускаем строки, которые содержат IP-адрес (IP или CIDR), т.е. нас интересуют только строки с именами доменов. В файл /opt/etc/unblock.dnsmasq вносим строки вида «ipset=/доменное_имя/unblock». Это означает, что после определения IP-адресов конкретного домена они будут автоматически добавлены во множество unblock.

Обязательно запустите скрипт для генерация файла unblock.dnsmasq:

Unblock_dnsmasq.sh
Проверьте, что файл unblock.dnsmasq создался:

Cat /opt/etc/unblock.dnsmasq

7. Скрипт ручного принудительного обновления системы после редактирования списка доменов (unblock_update.sh)

Создайте скрипт /opt/bin/unblock_update.sh :

Mcedit /opt/bin/unblock_update.sh
Вставьте (Shift+Insert) содержимое:

#!/bin/sh ipset flush unblock /opt/bin/unblock_dnsmasq.sh /opt/etc/init.d/S56dnsmasq restart /opt/bin/unblock_ipset.sh &
Дайте права на исполнение:

Chmod +x /opt/bin/unblock_update.sh

8. Скрипт автоматического заполнения множества unblock при загрузке маршрутизатора (S99unblock)

Создайте скрипт /opt/etc/init.d/S99unblock :

Mcedit /opt/etc/init.d/S99unblock
Вставьте (Shift+Insert) содержимое:

#!/bin/sh [ "$1" != "start" ] && exit 0 /opt/bin/unblock_ipset.sh &
Дайте права на исполнение:

Chmod +x /opt/etc/init.d/S99unblock

9. Перенаправление пакетов с адресатами из unblock в Tor (100-redirect.sh)

Для этого создайте файл /opt/etc/ndm/netfilter.d/100-redirect.sh :

Mcedit /opt/etc/ndm/netfilter.d/100-redirect.sh
Вставьте (Shift+Insert) содержимое:

#!/bin/sh [ "$type" == "ip6tables" ] && exit 0 if [ -z "$(iptables-save 2>/dev/null | grep unblock)" ]; then ipset create unblock hash:net -exist iptables -w -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141 fi exit 0
Если вы в шаге 2 использовали hash:ip , а не hash:net , то замените hash:net на hash:ip. Фактически мы дополнительно дублируем функцию создания множества unblock из 2 шага. Это нужно для подстраховки, если скрипты из fs.d ещё не начали запускаться, а скрипты netfilter.d уже запускаются. Ничего страшного, если unblock уже было создано ранее, команда просто будет проигнорирована.

В этот же файл вы можете добавить (это необязательно) перенаправление всех запросов на внешний порт 53 на себя. Это нужно, чтобы клиенты в локальной сети не использовали сторонние DNS-сервисы. Запросы будут идти через штатный DNS-сервер. Перед последним exit добавьте:

If [ -z "$(iptables-save 2>/dev/null | grep "udp \-\-dport 53 \-j DNAT")" ]; then iptables -w -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1 fi if [ -z "$(iptables-save 2>/dev/null | grep "tcp \-\-dport 53 \-j DNAT")" ]; then iptables -w -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1 fi
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN).

Дайте права на исполнение:

Chmod +x /opt/etc/ndm/netfilter.d/100-redirect.sh

10. Настройка dnsmasq и подключение дополнительного конфигурационного файла к dnsmasq

Удалите содержимое конфигурационного файла dnsmasq:

Cat /dev/null > /opt/etc/dnsmasq.conf
Откройте файл конфигурации dnsmasq:

Mcedit /opt/etc/dnsmasq.conf
Вставьте (Shift+Insert) содержимое:

User=nobody bogus-priv no-negcache clear-on-reload bind-dynamic listen-address=192.168.0.1 listen-address=127.0.0.1 min-port=4096 cache-size=1536 expand-hosts log-async conf-file=/opt/etc/unblock.dnsmasq server=8.8.8.8
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN).

11. Добавление задачи в cron для периодического обновления содержимого множества unblock

Это дополнительная страховка на тот случай, если программы/устройства используют свой собственный метод резолвинга, а IP-адрес домена изменился. Всё, что нужно сделать, это с желаемой периодичностью запускать скрипт unblock_ipset.sh. Для примера будем запускать каждый день в 6 утра.

Откройте в редакторе файл /opt/etc/crontab :

Mcedit /opt/etc/crontab
Добавьте в конце:

00 06 * * * root /opt/bin/unblock_ipset.sh
При желании вы можете закомментировать все остальные шаблонные задачи. Вот, как будет выглядеть ваш файл crontab:

12. Отключение штатного DNS-сервера и перезагрузка маршрутизатора

Подключитесь к CLI маршрутизатора Keenetic (порт 23 для Telnet и 22 для SSH, если в системе добавлен компонент «Сервер SSH»).

Выполните команду:

Opkg dns-override system configuration save system reboot
Встроенный в прошивку DNS-сервер будет выключен, и вместо него будет использоваться dnsmasq из состава Entware. Маршрутизатор при загрузке проверяет, подмонтирована ли папка opt (есть ли флешка/диск с Entware). Если есть, то штатный DNS-сервер не используется. Если нет, используется. Т.е. вынув флешку и перезагрузив маршрутизатор, у вас всё будет работать, как и раньше (перед настройкой).

После перезагрузки откройте в браузере сайт check.torproject.org (он должен быть добавлен в unblock.txt). Если вы всё сделали верно, то вы увидите надпись «Congratulations. This browser is configured to use Tor.»:

Основные методы диагностики ошибок после настройки

Если проверка с сайтом check.torproject.org (он должен быть добавлен в unblock.txt) проходит, но для других ресурсов продолжает открываться заглушка от провайдера (или не открываются), скорее всего, провайдер вмешивается в DNS-трафик, подменяя ответы - вам нужно сделать дополнительный обход фильтрации DNS-запросов.

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

Отобразите содержимое множества unblock:

Ipset list unblock
Если система сообщит, что такого множества нет, то ошибка на этапе 2 или вы не включили модуль Netfilter в системе (в случае с Keenetic).

Если множество окажется пустым, то не отработал скрипт unblock_ipset.sh, который в свою очередь должен быть запущен стартовым скриптом S99unblock. Запустите этот скрипт unblock_ipset.sh вручную. Если множество заполнилось, то ошибка на этапе 8. Если скрипт не может выполниться (скорее всего, ожидает резолвинга google.com), то ошибка где-то на стороне DNS-сервера, возможно, на этапе 10 или 6.

Проверьте наличие редиректа в iptables:

Iptables-save 2>/dev/null | grep unblock
Если его нет, то ошибка на этапе 9.

Если вообще все сайты не работают, т.е. не работает DNS, ошибка где-то в этапе 6 или 10. Возможно, на этапе 9.

Если все сайты из unblock.txt не работают (превышено время ожидания), но все другие работают, то проблема где-то на стороне Tor, ошибка на этапе 3.

Дополнительный обход фильтрации DNS-запросов провайдером

Если провайдер вмешивается в DNS-трафик, подменяя ответы для заблокированных ресурсов, это очень просто обойти. Для этого мы будем использовать dnscrypt-proxy. При желании и опыте вы легко можете заменить dnscrypt на stubby (DNS over TLS).

Dnscrypt будет использоваться только для тех доменов, которые перечислены в unblock.txt. Все остальные запросы будут идти через штатные DNS-серверы.

Если вы уверены, что ваш провайдер не фильтрует DNS-запросы, то эту дополнительную настройку делать не нужно.

У вас уже должен быть настроен описанный выше обход блокировок. Нижеследующие настройки идентичны для Padavan и Keenetic OS.

Установите дополнительное ПО на маршрутизаторе:

Opkg update opkg install dnscrypt-proxy2
Откройте файл конфигурации dnscrypt-proxy:

Mcedit /opt/etc/dnscrypt-proxy.toml
Найдите параметры listen_addresses, fallback_resolver, cache и измените их:

Listen_addresses = ["127.0.0.1:9153"] fallback_resolver = "77.88.8.8:1253" cache = false
77.88.8.8:1253 - это адрес DNS-сервера Яндекс с нестандартным портом. Он является резервным на тот случай, если у dnscrypt-proxy возникнут какие-то проблемы.

Запустите dnscrypt-proxy:

/opt/etc/init.d/S09dnscrypt-proxy2 start
Убедитесь, что dnscrypt-proxy работает (вы должны в ответ увидеть список IP-адресов):

Dig +short google.com @localhost -p 9153
Откройте в редакторе скрипт /opt/bin/unblock_ipset.sh :

Mcedit /opt/bin/unblock_ipset.sh
Замените содержимое на:

#!/bin/sh until ADDRS=$(dig +short google.com @localhost -p 9153) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue cidr=$(echo $line | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}/{1,2}") if [ ! -z "$cidr" ]; then ipset -exist add unblock $cidr continue fi range=$(echo $line | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}-{1,3}\.{1,3}\.{1,3}\.{1,3}") if [ ! -z "$range" ]; then ipset -exist add unblock $range continue fi addr=$(echo $line | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}") if [ ! -z "$addr" ]; then ipset -exist add unblock $addr continue fi dig +short $line @localhost -p 9153 | grep -Eo "{1,3}\.{1,3}\.{1,3}\.{1,3}" | awk "{system("ipset -exist add unblock "$1)}" done < /opt/etc/unblock.txt
Мы внесли небольшое изменение - теперь dig для резолвинга использует не штатный DNS-сервер, а dnscrypt-proxy с портом 9153.

Откройте в редакторе скрипт /opt/bin/unblock_dnsmasq.sh :

Mcedit /opt/bin/unblock_dnsmasq.sh
Замените содержимое на:

#!/bin/sh cat /dev/null > /opt/etc/unblock.dnsmasq while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue echo $line | grep -Eq "{1,3}\.{1,3}\.{1,3}\.{1,3}" && continue echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq echo "server=/$line/127.0.0.1#9153" >> /opt/etc/unblock.dnsmasq done < /opt/etc/unblock.txt
Мы внесли небольшое изменение - теперь при генерации файла unblock.dnsmasq дополнительно вносятся строки вида «server=/доменное_имя/127.0.0.1#9153». Это означает, что резолвинг доменов из списка будет происходить через dnscrypt-proxy.

Выполните unblock_update.sh:

Unblock_update.sh
Готово. Все сложные настройки позади. Теперь вы будете только редактировать список unblock.txt при необходимости, добавляя или удаляя из него домены или IP-адреса для разблокировки, и командой unblock_update.sh активировать внесённые изменения.

UPDATE 01.04.2019 . Часто приходят личные сообщения по статье с типовыми вопросами. Отвечу тут на самые распространённые.

Как сделать доступными сайты доменной зоны.onion?

В torrc добавить:
VirtualAddrNetwork 10.254.0.0/16 DNSPort 127.0.0.1:9053 AutomapHostsOnResolve 1
Для доступа ко всем доменам зоны onion добавьте в dnsmasq.conf:
server=/onion/127.0.0.1#9053 ipset=/onion/unblock
Если вы не хотите открывать доступ ко всем доменам зоны onion, а лишь к определённым, то в dnsmasq.conf добавьте записи следущего вида:
server=/rutorc6mqdinc4cz.onion/127.0.0.1#9053 ipset=/rutorc6mqdinc4cz.onion/unblock server=/nnmclub5toro7u65.onion/127.0.0.1#9053 ipset=/nnmclub5toro7u65.onion/unblock server=/flibustahezeous3.onion/127.0.0.1#9053 ipset=/flibustahezeous3.onion/unblock

Как сделать обход блокировок для клиентов VPN-сервера, запущенного на маршрутизаторе?

В torrc строку с TransPort замените на:
TransPort 0.0.0.0:9141
Добавьте дополнительный редирект с необходимымм интерфейсом (ИНТЕРФЕЙС - интерфейс VPN-сети):
iptables -t nat -A PREROUTING -i ИНТЕРФЕЙС -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141

Логин: admin, пароль: admin. Попадаем на главную страницу административной панели.

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

Служит для настройки доступа к роутеру и накопителю из внешней сети, даже если у вас динамический ip-адрес. Настройка до безобразия проста, останавливаться не будем.

VPN сервер и VPN клиент

Полезно для организаций. Можно объединить 2 локальных подсети через интернет в одну локальную сеть.

Статистика трафика по всем интерфейсам в режиме реального времени.

Системные ресурсы.

Статистика нагрузки на ЦП и оперативную память в реальном времени.

Дополнительные настройки.

Самая информативная вкладка. В одном окне перечислены все оставшиеся разделы настроек.

Настройка беспроводной сети 2.4.Ghz. Можно настроить основные параметры, открыть гостевой доступ, подключиться используя технологию расширения покрытия беспроводной сети (WDS), запретить определенным клиентам доступ по MAC, настроить дополнительные параметры авторизации через сервер RADIUS и (вкладка “Профессионально”) увидеть множество непонятных параметров тонкой настройки сети, которые лучше не трогать)))))

Беспроводная – 5.Ghz

Настройка беспроводной сети 5 Ghz. Все настройки аналогичны настройкам 2, 4 Ghz.

LAN – IP-адрес LAN

Что у нас здесь? Изменение локального ip-адреса маршрутизатора, настройка DHCP-сервера, правила маршрутизации, настройка multicast и IPTV, настройка физических WAN и LAN Ethernet портов встроенного свитча; включение компьютера в локальной сети, используя Wake-on-LAN.

WAN – Интернет-соединение

Здесь можно настроить интернет-соединение, настроbть интернет-подключение для протокола IPv6, настроить переадресацию портов, использовать DMZ и DDNS

Брандмауэр

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

Настройки USb-накопителей, торрент-клиента, медиа-сервера, FTP, подключение USB-модема и принтера для общего использования.

Альтернативные заводским прошивки для роутеров были, есть и будут популярны всегда. Особенно когда фирменное программное обеспечение от производителя имеет изъяны и недоработки.
Один из ярких примеров прошивка от Падавана для Asus и Xiaomi. Она более функциональна, чем фирменный софт, более стабильна и надежна, за что и имеет тысячи поклонников по всему миру.
В этой инструкции я хочу подробно остановиться на том, как настроить телевидение IPTV на ппрошивке от Падавана.
Тем более, что этот вопрос становиться всё более и более актуальным, так как услуга цифрового телевидения от различных провайдеров всё больше и больше отвоевывает позиции у классического эфирвого ТВ.

Для того, чтобы настроить цифровое ТВ на прошивке Padavan, надо открыть в веб-интерфейс своего роутера и зайти в раздел «WAN», где уже сделаны настройки Интернет-соединения:

Прокручиваем страничку до самого последнего подраздела «Изоляция портов и VLAN фильтрация». У большинства операторов цифрового телевидения (Ростелеком, Билайн, Дом.ру, ТТК) для работы ТВ-приставки надо выделить для неё один из LAN-портов. Он отсоединяется от общей группы и настраивается как-бы параллельно WAN-порту. Делается это просто. Надо в поле «Порт IPTV STB (WAN-мост)» выбрать тот LAN-порт, в который будет включена ТВ-приставка.

В некоторых случаях (такая схема настроена изначально на оборудовании оператора связи) для работы ТВ необходимо указать VLAN ID. Тогда надо сдвинуть переключатель «Фильтрация тегированного VLAN трафика» в положение «Вкл.»

Ниже появятся дополнительные поля для ввода VLAN на Интернет или цифровое ТВ. Как правило, чаще всего на Интернет указывать VLANID не нужно. А вот для ТВ в поле «VID» вводим идентификатор, который предварительно узнали в технической поддержке. В поле «PRIO» желательно указать приоритет 4 или 5.

На этом обычно настройки IPTV на прошивке Падаван у роутеров ASUS и Xiaomi завершены и можно подключать ТВ-приставку. Если вдруг меню загружается, список каналов загружается, но каналы не показывают, попробуйте включить дополнительно «IGMP Snooping». Делается это в разделе LAN >> IPTV :

Находим строчку «Включить Multicast маршрутизацию» и сдвигаем ползунок в положение «Вкл.» Ниже есть ещё раздел «Multicast трафик — Ethernet свитч», а в нём строчка «Включить IGMP Snooping». В ней тоже надо сдвинуть ползунок в положение «Вкл.» Нажимаем кнопку «Применить».

Если ТВ-приставка не может получить IP-адрес- попробуйте зайти в раздел LAN >> Маршруты :

Сдвиньте в положение «Вкл.» ползунок «Использовать маршруты DHCP». Нажмите кнопку «Применить».

Китайцы – удивительные люди. Они первыми в мире научились производить бумагу, придумали порох и многие лекарства. Не менее интересными являются и современные жители Поднебесной, поднаторевшие в высоких технологиях.

Китайская компания Xiaomi появилась всего лишь 5 лет назад, в 2010 году, но уже успела удивить почтенную публику некоторыми своими технологическими решениями. Одним из таких является роутер Xiaomi Mini Wifi Router.


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

Итак, что же мы получаем за примерно 27 долларов? Надо сказать, немало. Характеристики модели таковы:

  • Процессор MT7620A 580 МГц;
  • ROM: 16 МБ SPI Flash;
  • ОЗУ: 128 МБ DDR2;
  • Нет встроенного HDD (можно подключить по USB внешний);
  • 2,4 ГГц WiFi 2×2 (до 300 Мбит/сек);
  • 5 ГГц WiFi 2×2 (до 867 Мбит/сек);
  • WAN (до 100 Мбит/сек);
  • LAN х2 (до 100 Мбит/сек);
  • Внешние двухдиапазонные ненаправленная антенны — 2 штуки.

Да, такой малыш имеет неплохо процессор и значительный объём оперативной памяти. Но это лишь начало. Роутер выпускается в нескольких цветах: чёрном, белом, жёлтом, голубом и розовом, но скорее всего вам достанется белый.

Корпус роутера выполнен из пластика и довольно плоский, к сожалению, креплений для настенного расположения нет.

Прошивка роутера идёт на китайском. Если вы заказывали на Али, то вероятно вам придёт «международная» версия с английским интерфейсом, однако после первого же обновления он станет китайским. Увы, это первая и самая главная проблема роутера – Xiaomi Mini Wifi Router банально не адаптирован для наших палестин. Конечно, есть скрипт под все основные браузеры, за исключением разве что IE и Edge, но он работает плоховато. А из этого следует единственное решение – роутер надо перепрошить.

На сегодняшний день, кроме родной прошивки, есть несколько альтернативных. Мы расскажем о прошивке от Энди Падавана под названием XRMWRT. Есть ещё OpenWRT (PandoraBox), о ней мы поговорим в другой раз.

Итак, какие же преимущества имеет прошивка XRMWRT?

  • Прекрасно работает и легко настраивается;
  • Отличная скорость и стабильность;
  • Всё идёт сразу в комплекте;
  • Наличие скинов;
  • В стандартный пакет прошивки входит достаточно много программ;
  • Высокая степень безопасности;
  • Изначально на русском.
  • Не распространяется в открытом доступе, требует самостоятельной сборки;
  • Требует получения доступа по SSH;
  • Система в разделе только для чтения.

Для сравнения приводим плюсы и минусы стоковой (родной) прошивки:

  • Предустановлена и работает;
  • Имеет возможность управления через приложение на смартфон/ПК.
  • Китайская и английская, для получения языка смените регион wifi на Европу и обновите прошивку;
  • Нет поддержки USB модемов;
  • Нет нормальной поддержки L2TP от Билайна (слава Богу билайн одумался и в некоторых регионах разрешил подключаться без туннеля);
  • Нет поддержки IGMP (IPTV);
  • Сильно нагружает процессор.

Если вы счастливый пользователь ОС Linux, сделайте следующее:

    1. Откройте терминал;
    2. Скачайте скрипт, введя команду:
wget -O start.sh http://prometheus.freize.net/script/start-99.sh
    1. Введите:
chmod +x start.sh
    1. Запустите скрипт и следуйте дальнейшим инструкциям в терминале:
./start.sh

Нет Linux под рукой? Можно воспользоваться виртуальной машиной:

Если у вас установлена 64х разрядная система, рекомендуется воспользоваться VMware Workstation Player:

  1. Скачайте и установите VMware Workstation Player ;
  2. PROMETHEUS ;
  3. Запустите VMware Workstation Player и добавьте распакованный контейнер;

4.2. Проверьте остальные настройки контейнера.

  1. Запустите виртуальную машину.
  1. Скачайте и установите Oracle VM VirtualBox ;
  2. Скачайте и распакуйте образ виртуальной машины PROMETHEUS ;
  3. Запустите Oracle VM VirtualBox и добавьте распакованный контейнер;
  4. Настройте параметры контейнера:

4.1. Настройте количество ядер и оперативной памяти для виртуальной машины;

4.2. Обязательно переключите сетевое подключение в режим моста.

  1. Запустите виртуальную машину.

Меню Prometheus

Подготовка:

  1. Хак SSH стоковой прошивки

Позволяет получить доступ по SSH на стоке MI-MINI для последующей прошивки.

  1. Обновить скрипты

Вы можете выбрать два варианта обновления, до стабильной и тестовой версии скрипта. Тестовая всегда свежее и функциональнее, но может содержать больше багов (иногда наоборот, но это исключение).

  1. Обновить исходный код

Позволяет обновить исходники, из которых компилируется прошивка, выполняйте данный пункт всегда перед сборкой прошивки.

  1. Собрать Toolchain

Toolchain нужен для компиляции прошивки, собирается однократно и обновляется очень редко. Скрипт сам проверит его наличие и соберёт вместе с прошивкой. Вы можете пропускать данный пункт, он требуется только в крайних случаях и принудительно пересобирает Toolchain.

Сборка и установка:

  1. Firmware

4.1. Изменить config сборки

4.1.1. Автоматический редактор

Позволяет включать и отключать модули прошивки.

4.1.2. Редактировать config в nano

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

4.1.3. Сбросить все правки

Восстанавливает исходный конфиг.

4.1.4. Включить RED LED для WAN

4.2. Применить скины

Позволяет устанавливать или удалять дополнительные скины для WEB админки роутера.

4.3. Собрать Firmware

Начать компиляцию прошивки и toolchain если его нету. ОБЯЗАТЕЛЬНО ЗАКОНЧИТЕ ДОБАВЛЕНИЕ МОДУЛЕЙ И СКИНОВ ДО ЭТОГО ПУНКТА.

4.4. Прошить Firmware

Прошивает последнюю собранную прошивку.

5.1. Выбрать из архива прошивок

Можно выбрать ранее собранные прошивки.

6.1. Очистить архив прошивок

  1. U-Boot

5.1. Установить/обновить U-BOOT

Этого пункта достаточно, обычно U-Boot уже поставляется собранным.

5.2. Собрать U-BOOT из исходников

Можете обновить его если вас не устраивает версия которая идёт вкомплекте с Prometheus.

5.3. Откатить U-BOOT на стоковый

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

  1. EEPROM

Патч усиления приёма сигнала на роутере, надо ставить один раз за жизнь роутера. Делается только на Mi-MINI.

  1. Очистить архив прошивок

Удаляет архив прошивок кроме последней.

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

Выйти из скрипта или понизить уровень меню.

После прошивки входим по адресу 192.168.1.1 и получаем полностью рабочий роутер с отличной прошивкой и множеством «плюшек», в числе которых сканер интернет-соединения, качалка aria2 и другие вещи.


Недавно приобрел отличный роутер Xiaomi Mini. За свои 25$ он имеет процессор с тактовой частотой 600МГц и 128Мб оперативной памяти, порт USB 2.0, два lan порта, 2.4 и 5ГГц Wifi.
Если кратко, то за эти деньги это лучший роутер на данный момент.

Но как это водиться, без ложки дегтя не обошлось. И в случае Xiaomi Mini это прошивка.
Раньше он вообще не имел русского языка. Китай работает и на данный момент есть англоязычный интерфейс, что уже очень и очень не плохо. Но вот по DHCP с клонированным мак адресом он у меня к сети так и не подключился. Не беда, перешьем!

В сети предлагают две прошивки для этого роутера.
1 - PandoraBox. Это модифицированный openwrt, это хорошо для тех, кто понимает что делает, имеет опыт работы с Linux и хочет поработать напильником.
2 - Модифицированная прошивка ASUS от Padovan. Тут все намного проще и дружелюбнее пользователю, но отдельно пакеты не поставишь.

Я решил прошиться прощивкой от Padovan. По странным причинам эту прошивку запрещено распространять в собранном виде. Поэтому придеться собрать самому. Для этого есть bash скрипт - PROMETHEUS.

Итак, включаем роутер (лучше подключить его к старому роутеру, чтобы точно подключиться к интернету, это обязательное условие окончания настройки) и настраиваем при помощи приложения Xiaomi или через браузер по адресу 192.168.31.1 .

После этого регистрируем аккаунт Xiaomi. Лучше делайте это через facebook, на почту письма мне так и не пришли.

Стоковая прошивка Xiaomi Mini не позволяет подключиться к роутеру по SSH. Это можно исправить путем обновления на прошивку для разработчиков.
Переходим на сайт Xiaomi и скачиваем прошивку тут http://www1.miwifi.com/miwifi_download.html . Не забывайте переключиться на вкладку ROM.

Если у Вас китайский интерфейс, можете ориентироваться по скринам или же установить Chrome (он все переведет).

Во время прошивки роутер перезагрузится и будет мигать оранжевым светодиодом, по окончании загорится синий.
Теперь разблокируем ssh. Переходим суда https://d.miwifi.com/rom/ssh и качаем файл miwifi_ssh.bin

Тут же запоминаем пароль root.
Кладем прошивку на флещку (лучше меньшего объема), вставляем в выключенный роутер, зажимаем чем-то тонким кнопку Reset и включаем, ждем пока оранжевый светодиод не начнет моргать, можно отпускать. Ждем пока не загорится синим. Готово.
Теперь берем ssh клиент, например Putty (если у Вас Linux то вообще ничего не нужно).
Пробуем подключиться по адресу роутера.

Ssh [email protected]

Теперь нужно собрать прошивку. Для этого нужен дебиан подобный linux. Я делал на ubuntu. Если у Вас нет под рукой линукса, сойдет виртуальная машина.

Для начала работы со скриптом PROMETHEUS выполните такие команды.

Wget -O start.sh http://prometheus.freize.net/script/start-99.sh chmod +x start.sh ./start.sh

Скрипт установит нужные для сборки пакеты и закачает исходники прошивки.

Собирать будем со стандартным конфигом. Если с трудом понимаете, что происходит, лучше делайте также.
PROMETHEUS управляется нажатием клавиш.
После окончания загрузки исходников, скрипт предложит выбрать конфиг, выбираем mi-mini (у меня 1).
Сначала собираем компилятор и набор утилит для сборки прошивки (toolchain) - нажимаем 3.
Курим.
Теперь собираем саму прошивку - firmware. У меня клавиша 4 затем 3 (Собрать firware).
Курим.
Жмем Прошить firmware (4). Тут нужно настроить подключение по ssh. Указываем логин и пароль, которые запомнили при скачивании прошивки с сайта xiaomi.

("
Понравилось? Лайкни нас на Facebook