Code Monkey home page Code Monkey logo

openwrt-xiaomi-wifi-r3p-freeradius's Introduction

Установка OpenWRT и FreeRADIUS на роутер Xiaomi R3P [ Xiaomi Mi WiFi router Pro(r3p) ]

C настройкой WiFi WPA2-Enterprise с запущенными на роутере FreeRADIUS (для предоставления индивидуальных ключей WPA2-Enterprise), SQLite (для хранения этих ключей) и SQLite Web Admin (для удобного редактирования учётных записей пользователей)

Также вы можете установить OpenWRT на любой другой роутер и настроить WPA2-Enterprise по инструкциям с пункта: 5. Первая полноценная настройка прошивки и далее.

ОГЛАВЛЕНИЕ

1. Краткий обзор основных характеристик роутера

2. Первая настройка роутера

3. Подготовка роутера к установке кастомных прошивок

4. Установка кастомной прошивки

5. Первая полноценная настройка прошивки

6. Установка FreeRADIUS и поднятие WPA2-Enterprise

7. Установка и подключение SQLite и SQLite-web для контроля учётных записей пользователей

⚠️ Warning ⚠️

Прежде всего рекомендую ознакомиться с оглавлением, так как эту инструкцию могут читать разные люди: кто-то только купил роутер, кто-то уже удалил базовую прошивку, а кто-то уже "ОКИРПИЧИЛ" это чудо Китайского Роутеростроения :D (без доли сарказма, классный быстрый роутер)

P.S. Для тех, кто тут только за восстановлением кирпича (да, это сделать проще, чем кажется), вам сюда: 4.2. Восстановление роутера из состояния кирпича

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

Вы делаете все описанные ниже действия на свой страх и риск. Автор не несёт ответственности за возможный выход вашего роутера из строя, а так же за прекращение поддержки базовых пакетов роутера (отсылка к тем, кто пытался нормально настроить freeradius, который не имеет обратной совместимости даже среди версий одного релиза). У Автора не было перебоев электропитания непосредственно во время прошивки роутера (не во время установки пакетов), но даже если они или любые критические поломки базовых пакетов случатся у вас, не переживайте, всегда можно прошить ядро заново через UART: 4.2. Восстановление роутера из состояния кирпича

1. Краткий обзор основных характеристик роутера

img

Характеристики роутера позволяют запускать на нём даже полноценные web сервисы:

Параметр Значение
Класс Wi-Fi AC2600
Максимальная скорость и стандарты 2.4 ГГц 802.11 b/g/n, 800 Мбит/сек
Максимальная скорость и стандарты 5 ГГц 802.11 AC/b/g/n, 1733 Мбит/сек
Скорость LAN порта 1000 Мбит/сек
Центральный процессор MT7621A MIPS Dual Core 880MHz (4 потока)
Встроенная память 256M SLC Nand Flash
Оперативная память 512MB DDR3-1200
Процессор Wi-Fi MediaTek MT7615E

2. Первая настройка роутера

Если вы включаете роутер впервые, тогда он раздаст открытый WiFi с названием Xiaomi_XXXX_XXXX

Подключаетесь к этому WiFi и переходите по адресу 192.168.31.1

Автоматически откроется страница http://192.168.31.1/cgi-bin/luci/web/init/hello

img

Гугл переводчик переводит это как:

[текст] Пожалуйста, прочтите «Пользовательское лицензионное соглашение» и выберите, соглашаться ли

[галочка] Присоединяйтесь к «Программе улучшения взаимодействия с пользователем»

Лично я галочку снял

Нажимаем большую синюю кнопку и попадаем в меню первой настройки роутера

img

Или же, если в роутер не воткнут кабель с интернетом (перекинул на ноут, чтобы переводить китайский)

img

Выбираем верхний режим работы и попадаем в меню выше

Логично, что тут выбирается имя сети WiFi (SSID) и её пароль, тут я галочку не снял (отвечает за какие-то настройки firewall. нам всё равно прошивку стирать, так что не важно) и нажал большую синюю кнопку.

img

Тут выбирается пароль к админке этой прошивке. Если нажмёте галочку, тогда будет выбран тот же пароль, что и для WiFi. В чём разница между "Семья", "Компания" и "Подгоняет" я не понял, ну и не важно, пусть будет по умолчанию ("Семья"), нам ещё не долго пользоваться этой прошивкой.

Снова нажимаем большую синюю кнопку.

img

Ждём загрузки роутера. На нём оранжевая лампочка сменится синей, когда всё завершится. Кстати, роутер ещё умеет мигать красным, если вы попытаетесь прошить его через USB такой прошивкой, которую он принципиально не может скушать.

img

Думаю, тут очевидно, куда нажимать. Только не забудьте подключиться к новой Wi-Fi сети )

img

Попадаем в такое меню. Здесь вводим пароль от роутера и нажимаем стрелочку. При первом входе роутер предложит провести некоторые настройки. Там есть синяя кнопка. НЕ НАЖИМАЙТЕ НА НЕЁ . Вместо этого нажмите на подчёркнутый текст под кнопкой. Это пропустит гайд по этой прошивке. Прокликайте по свободным местам, чтобы пройти навязанное введение в интерфейс прошивки. Всё, с этого момента можно приступать к настройке роутера для установки кастомных прошивок.

3. Подготовка роутера к установке кастомных прошивок

Часть инструкций в этой главе была взята с открытого источника: https://openwrt.org/toh/xiaomi/xiaomi_r3p_pro

Во-первых, загрузите Xiaomi «прошивку разработчика» с http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/r3p/miwifi_r3p_firmware_daddf_2.13.65.bin

Или воспользуйтесь его копией на github miwifi_r3p_firmware_daddf_2.13.65.bin, ведь его могут убрать из открытых источников.

Далее по кабелю подключаемся или WiFi к роутеру и переходим на http://192.168.31.1

img

Войдите в систему и найдите страницу, на которой вы можете обновить прошивку (найдите большую желтую точку с «i» внутри).

img

Здесь выбираете обновление прошивки вручную.

img

Вы увидите номер версии маршрутизатора, а внизу есть кнопка, где вы можете загрузить файл. Загрузите miwifi_r3p_firmware_daddf_2.13.65.bin (прошивка для разработчиков), нажмите синюю кнопку и подождите несколько минут.

img

Далее будет предложено стереть все пользовательские настройки. Лично я поставил галочку и стёр. И вам рекомендую так поступить, ведь не известно, какие ещё новые прошивки будут устанавливаться в роутеры с завода, и как они будут совместимы с данными старой прошивки. Остаётся только ждать окончания прошивки - загорится синяя лампочка.

Запомните, что наша последующая задача - получить персональный (там пароли к ssh индивидуальные) upgrade роутера с ssh с сайта xiaomi.

img

Если вы впервые устанавливаете прошивку разработчика на роутер, тогда вам будет показано это окно. Если же этого окна нет, и вместо него идёт сразу окно с входом в админку, тогда ничего страшного, просто идём дальше по инструкции. Для настройки роутера вам потребуется специальное приложение. Установите приложение Android "Mi Wi-Fi" из https://play.google.com/store/apps/details?id=com.xiaomi.router на свой телефон / планшет (есть также приложение для iOS).

img

Откройте приложение «Mi Wi-Fi», затем войдите в свою учетную запись Xiaomi (Если у вас её нет, то сначала создайте на сайте https://www.mi.com/).

Маршрутизатор будет обнаружен и добавлен в вашу учетную запись (при условии, что вы подключены к WiFi роутера в режиме 2.4G, а порт WAN маршрутизатора подключен к Интернету). Нажимаем "Настроить роутер", в следующем меню выбираем пароль и настройка завершена.

img

На этом этапе лично у меня всегда зависает приложение, хотя я подключился к нужному WiFi, но да не важно, закрываем его, но не удаляем, оно нам ещё понадобится.

Обязательно подключаемся к нашему Wi-Fi и переходим в http://192.168.31.1

Нас там встретит уже знакомое меню с логином. Входим в админку, пропускаем лишнее знакомство с прошивкой уже НАЖАТИЕМ на синюю кнопку.

На ПК зайдите на сайт https://d.miwifi.com/rom/ssh и войдите в свою учетную запись Xiaomi. Вы попадете на страницу, на которой должны отображаться ваш роутер, пароль root и кнопка загрузки. Нажмите кнопку, чтобы получить miwifi_ssh.bin и сохранить пароль. (Если страница загрузки с перенаправлением http://d.miwifi.com/rom/ssh?userId=SOME_NUMBER не работает, попробуйте ввести "http://" вместо "https://" перед "d.miwifi.com" и наоборот)

Если новый роутер появился, тогда вы просто везунчик. Если же ваше везение на моём уровне, регистрация роутера не прошла успешно.

Открываем приложение "Mi Wi-Fi". Если вы войдёте в учётную запись Xiaomi, то вам будет доступен интерфейс, в верхней части которого будет выпадающее меню. Нажимаем на него, а потом нажимаем на "Добавить роутер". Снова подчеркну, что важно быть подключенным к нужному роутеру по WiFi в режиме 2.4G. Появится картинка с предложением "Выполнить сопряжение роутера". Соглашаемся. Нас попросят ввести пароль администратора. Если вы шли по моим инструкциям, то это тот же пароль к WiFi. После правильного спряжения роутер отобразится в списке ваших устройств, а сайт https://d.miwifi.com/rom/ssh выдаст в списке ваш роутер после всё тех же манипуляций с "https://".

img

Находим нужный роутер в списке и сохраняем куда-нибудь пароль от пользователя root - те 8 символов после слова root и иероглифов. После чего нажимаем на соответствующую кнопку справа.

img

Принимаем соглашение, которое было переведено специально для вас. И должно начаться скачивание... Ага, должно. Придётся снова посвапать "http://" и "https://" и загрузка начнётся. Результатом будет файл: miwifi_ssh.bin

На этом этапе вам понадобится флешка с файловой системой FAT32 (ЭТО ВАЖНО!). Если у вас такой нет, тогда форматните какую-нибудь флешку в этом формате. Не мне вам рассказывать, что при форматировании файлы стираются, поэтому сделайте их резервную копию на компьютере, если они вам нужны. Если вы пользователь windows 10, тогда вам могут понадобится отдельные программы для форматирования разделов. Лично я воспользовался программой guiformat, но за неё не ручаюсь, поэтому можете скачать любую на свой выбор.

После чего нужно скопировать файл miwifi_ssh.bin в корень флешки (на этой флешке не должно быть папок, только один этот файл).

Отключите питание маршрутизатора, вставьте USB-накопитель в маршрутизатор, нажмите и удерживайте кнопку сброса (рекомендуется со скрепкой, хотя лично я использовал иголку и шило), включите маршрутизатор (удерживая перезагрузку). Когда маршрутизатор начнет мигать желтым (пройдёт секунд 10-12), отпустите кнопку сброса. Подождите, пока маршрутизатор не перезагрузится, и у вас (наконец…) не будет доступа по SSH.

Далее необходимо либо по кабелю, либо по WiFi подключиться к роутеру.

Проверить наличие доступа в windows 10 (и в популярных дистрибутивах linux) можно очень просто, там из коробки идёт ssh client. Если у вас другая версия Windows без ssh клиента, поставьте его отдельно.

Пишем:

ssh [email protected]

img

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

img

Если же вы увидели нечто подобное (Windows 10), вам нужно удалить все предыдущие сессии из файла:

C:\Users\{YOUR_USERNAME}\.ssh\known_hosts

После чего вы можете прописать ssh [email protected] и увидеть успешный вход в систему.

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

4. Установка кастомной прошивки

4.1. Переход от прошивки Xiaomi к базовой прошивке OpenWRT

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

Для тех, кто начал читать с этого момента - она должна быть формата FAT32 (ЭТО ВАЖНО!)

Скачиваем прошивку OpenWRT: openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-factory.bin

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

Вставляем флешку в роутер. И в консоли ssh [email protected] пишем (команды лучше вводить по очереди, чтобы не было проблем -ash):

cd /extdisks/sd* - может отличаться, если вы вытащите и вставите флешку, но cd* должно перейти в любую версию.

mv openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-factory.bin factory.bin - сокращаем имя файла прошивки.

nvram set flag_try_sys1_failed=1

nvram set flag_try_sys2_failed=0

nvram set flag_boot_success=0

nvram commit

dd if=factory.bin bs=1M count=4 | mtd write - kernel1

mtd erase rootfs0

mtd erase rootfs1

mtd erase overlay

dd if=factory.bin bs=1M skip=4 | mtd write - rootfs0

reboot

После этих команд адрес роутера должен измениться с 192.168.31.1 на 192.168.1.1 и команда ssh будет выглядеть ssh [email protected]

Что интересно, по умолчанию он для пользователя root отсутствует, установить его можно в web gui или через passwd root внутри консоли ssh, но если открыть адрес 192.168.1.1 в браузере, ничего не произойдёт, ведь не установлен пакет web gui.

img

Если же вы увидели нечто подобное при попытке подключиться по ssh (Windows 10), вам нужно удалить все предыдущие сессии из файла:

C:\Users\{YOUR_USERNAME}\.ssh\known_hosts

После чего вы можете прописать ssh [email protected] и увидеть успешный вход в систему.

img

Далее устанавливаем web gui, чтобы можно было продолжить работу в нём.

opkg update

opkg install luci

4.2. Обновление ядра (или восстановление роутера из состояния кирпича)

Этот пункт является обязательным для всех. Если у вас не подходящая версия ядра, тогда sysupgrade из 4.3 приведёт только к неработоспособности роутера как роутер (WiFi раздаёт, но интернет не видит, а также не работает web gui и ssh).

img

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

img

Конечно можно полностью разобрать корпус, выкрутив из под прорезиненных ножек 4 болта,

img

Выковыряв ножом с боков пластиковые вставки,

img

И достать плату роутера (с огромным радиатором)...

img

Но зачем нам все эти сложности, ведь нам нужен только доступ к UART разъёму?

img

Просто отключаем роутер от питания, аккуратно ножом поддеваем правую пластиковую стенку,

img

Теперь у нас есть доступ к разъёму. Можно даже к нему подпаять провода, нам нужны RX, TX и GND. Питание на 3.3 v не трогаем.

img

Но я не хочу паять плату, поэтому просто подсоединю кабель к роутеру и к UART-Serial конвертору, но вам рекомендую припаять.

Напряжение TX и RX должно быть 3.3 вольта (ЭТО ВАЖНО!)

Вам потребуется терминал для Serial порта. На linux это делается одной командой, но пользователи Windows могут скачать putty с официального сайта или же по ссылке на моём гите: putty

img

Запускаем приложение. Выбираем слева снизу "Serial", далее настраиваем всё, как на картинке. COM порт выбираем согласно вашему конвертору.

img

Его можно найти в диспетчере устройств.

Если у вас запускается приложение на windows, но при подключение оно просто выдаёт звук и ничего не делает (у меня такое случалось), тогда перейдите в директорию с распакованным putty.exe и выполните:

.\putty.exe -serial COM4 -sercfg "115200,8,n,1," - только введите ваш COM порт вместо COM4.

Откроется окно последовательного порта. После чего подаём питание на роутер и вылавливаем момент, когда появится меню "Please choose the operation"

img

Тут нажимаем 2 в окне с последовательным портом. Далее выполняем то, что систему запрашивает. IP адреса рекомендую не менять, а имя файла нужно ввести своё (далее будет обозначено) и НЕ нажимать ввод. Сначала нужно подключиться по ethernet кабелю к роутеру на поднять DHCP.

img

Для этого нужно открыть "Сетевые подключения", найти ваш проводной адаптер. Правая кнопка мыши, его свойства...

img

Там нужно выбрать пункт "IP версии 4...", его свойства, а далее выбрать "Использовать следующий IP-адрес" и настроить всё, как в образце. После чего покликать по кнопкам "ОК". Поздравляю, у вас DHCP и ваш новый адрес 192.168.1.3, а адрес роутера остался 192.168.1.1.

Прошивка ядра осуществляется через TFTP. Программа для поднятия TFTP сервера

Для начала нам нужен файл ядра openwrt-ramips-mt7621-xiaomi_mir3p-initramfs-kernel.bin

Сохраняем этот файл в удобное место, например, "C:\router". Для удобства я переименую файл "openwrt-ramips-mt7621-xiaomi_mir3p-initramfs-kernel.bin" в "linux.bin". Это то самое ядро, которое у нас просит сейчас роутер.

img

Выключаем Wi-Fi и оставляем только одно подключение - по тому кабелю с DHCP. Настраиваем путь к нашей папке "C:\router", выбираем нужный "Server interface" - должен быть нашим IP в собственном DHCP. Программа TFTP сервера запущена автоматически.

Переходим в окно последовательного порта и проверяем данные. Если адреса и имя верные, нажимаем Enter и начнётся процесс загрузки.

img

Если процесс загрузки идёт хорошо, вы увидите такую картину. Мне удалось прошить ядро без разбора корпуса и пайки.

img

Кстати, не забудьте выключить DHCP, для этого перейдите в уже знакомое меню "Сетевые подключения" и смените режим работы на "Получать IP-адрес автоматически".

Вместе с этим ядром идёт несколько базовых пакетов, но это далеко не конечная прошивка. Далее требуется скачать файл с обновлением для этого ядра. Он настроит файловую систему. openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-sysupgrade.bin

img

Проходим процесс авторизации без пароля (просто нажимаем "Войти") и быстро переходим в "System" -> "Backup / Flash Firmware" -> Выбираете файл (выбираем наш openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-sysupgrade.bin) -> "Flash image...", НЕ снимая галочку с "Keep settings", это важно.

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

img

В этом меню нажимаем "Proceed" и процесс загрузки начнётся. Через минуту у вас будет вполне рабочая конфигурация роутера на OpenWRT с проблемным WiFi и протоколами безопасности. Далее требуется пропатчить сборку кастомной прошивкой в пункте 4.3.

4.3. Установка новой прошивки роутера

Данная прошивка взята с комментария на 4pda: https://4pda.ru/forum/index.php?showtopic=810698&st=5440#entry92890464

В ней настроено и сконфигурировано всё для функционирования драйверов для wifi, а также расширенных протоколов безопасности.

Ссылка на клон на гите: OpenWRT-19.07.1-MiR3P-sysupgrade.bin

Скачиваем и обновляемся. Для этого входим в роутер 192.168.1.1 и логинимся (по умолчанию пароль пустой)

Переходим "System" -> "Backup / Flash Firmware"

img

После этого нажимаем "Flash image..."

img

Далее нажимаем "Browse...", выбираем файл "OpenWRT-19.07.1-MiR3P-sysupgrade.bin" и нажимаем Upload, снимая галочку с "Keep settings", это важно. Мы хотим сконфигурированную систему с интернетом на наших разделах файловой системы.

img

После загрузки получаем предупреждение о версии: "xiaomi,mir3p" != "xiaomi,mir-3p". Фактически же это один и тот же роутер, так что нажимаем галочку на "Force upgrade", повторно загружаем файл и нажимаем "Continue", а в следующем меню "Proceed".

Важно, чтобы сейчас у вас не отключили свет, ведь иначе вам потребуется сначала пройти пункт 4.2, а потом пройти 4.3 сначала. Процесс загрузки может занять продолжительное время.

После завершения загрузки, вам будет доступен web gui, ssh и ещё много пакетов. Уже на этом этапе можно закончить, ведь WiFi работает, а протоколы безопасности установлены, а файловая система настроена, но зачем нам на таком крутом роутере какой-то там WPA2-PSK, если, помимо WPA3, мы можем поднять настоящий шедевр безопасности - WPA2-Enterprise.

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

P.S. пароль от пользователя root в той прошивке - "1234567890"

5. Первая полноценная настройка прошивки

Эх, люблю этот интерфейс :D

img

Входим в систему, пароль по умолчанию - "1234567890" (без кавычек). И нам лучше сразу поменять пароль на удобный нам. Для этого переходим в "Система" -> "Управление" -> "Пароль маршрутизатора"

img

Там всё просто - устанавливаем пароль от роутера на свой вкус важно, что это не пароль от WiFi. Это пароль от пользователя root и от админки на роутере

Теперь можно поменять имя машины роутера. Рекомендую выбрать имя, совпадающее с именем WiFi.

img

Далее настраиваем DHCP, чтобы не возникало проблем с перенаправлением при длительном стриминге данных.

img

Сначала с этим расширим область выделяемых адресов, меняя маску подсети на 255.0.0.0 и применяем ("Сохранить и применить...").

img

Аренду начинаем с "192.0.0.0", а заканчиваем "256^3", что равно "16777216". Время аренды ставим на "infinite". Снова применяем настройки ("Сохранить и применить...").

img

Адрес роутера менять с "192.168.1.1" не рекомендуется, так как из-за этого сеть (конкретно интернет, а не локалка) отваливается у смартфонов samsung точно, может, вообще у всех смартфонов тоже.

После чего выключаем Adblock. И, да, в этот роутер встроен Adblock, KMS сервер, NAS и многое другое. Проблема в том, что Adblock может порезать скорость общения с сетью, хотя и работает просто прекрасно, скрывает рекламу, а сайты думают, что Adblock не установлен, и не выкидывают просьбу его отключить. Отключается он достаточно просто. В выключенном состоянии на кнопке должно быть написано "Включить".

img

Только после отключения требуется перезагрузить роутер и убедиться, что статус "Состояние Adblock" будет пустым. Почему-то просто так сервис не хочет выключаться.

img

Далее нам нужно настроить конфигурацию WiFi, заодно и проверим, как работает WiFi. По большей части, в этой прошивке уже всё настроено, но вы можете покопаться и поменять всё на свой вкус.

Внимание, если вы собираетесь проходить пункт 6. Установка FreeRADIUS и поднятие WPA2-Enterprise, тогда можете пропустить конфигурацию именно WiFi, нажать "Сохранить и применить..." и подключиться к роутеру по ssh [email protected], но важно, чтобы вы выбрали правильно имя машины роутера, ведь оно и будет в дальнейшем именем WiFi.

img

В меню "Сеть" -> "WiFI" можно настроить WiFi. Необходимо выставить всё, как на фото (часть настроек взята с https://4pda.ru/forum/index.php?showtopic=810698&st=3200#entry82315996)

Сначала настроем 2.4 G (не забудьте нажать "сохранить")

img

Потом 5 G

img

После установки настроек, применяем их кнопкой: "Сохранить и применить..."

Также важно добавить, что если вы устанавливаете всё для использования с WPA2-Enterprise, требуется выключить "802.11w Management Frame" и включить "Разрешить использование стандарта 802.11b". Если же вы устанавливаете прошивку на Xiaomi R3P, setup.ash сделает это в дальнейшем за вас.

На этом этапе можно вылезти из красивого web gui и погрузиться в консоль, а ля настоящий программист. (ну или почти :p) Напоминаю, что делается это через ssh [email protected], а пароль - тот самый пароль от админки web gui.

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

6. Установка FreeRADIUS и поднятие WPA2-Enterprise

Далее важно понимать, есть ли у нас интернет или нет. Да, он настроен, но поблизости может просто не быть кабеля с интернетом, поэтому установку пакетов решено сделать максимально удобной. Тем не менее, если вы устанавливаете всё на другой роутер, для вас создан отдельный файл установки. Работоспособность не гарантирую, но попытаться стоит.

Если у вас есть интернет, вы можете сделать opkg update , но для корректной установки всех пакетов локально не рекомендуется это делать. Если же вы уже случайно это сделали... То придётся заново делать всё с пункта 4.3...

Необходимо скачать репозиторий (ветка master) на свой компьютер OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS и распаковать его, либо вы можете склонировать этот репозиторий, только к таком случае придётся клонировать ещё и неприлично большую папку .git (200+ МБ, взявшихся из неоткуда).

git clone https://github.com/ITMO-lab/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS.git OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master

Переносим папку на флешку в корень. Желательно, чтобы флешка была с файловой системой fat-32, но моя ntfs тоже смонтировалась, пусть и поругалась немного. Как же работать с флешкой? Очень просто - вставляем в единственный usb порт и пишем продуманную команду:

cd; umount USB; rm -rf USB; mkdir USB; mount /dev/sda1 USB/

Теперь у вас есть директория, куда смонтирована флешка. Далее процесс установки будет максимально простым. Если у вас Xiaomi R3P, впишите в консоль:

cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master; ash setup.ash

Если же у вас другой роутер, убедитесь, что у вас есть интернет соединение и впишите:

cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master; ash setup_online.ash

Только помните, если у вас другой роутер, вас самостоятельно придётся настраивать WiFi в web gui - подключать к нему сервер RADIUS. По умолчанию он запускается на 192.168.1.1 с дефолтными портами, а его secret отобразится в консоли.

Сохраните FREERADIUS3_SECRET и FREERADIUS3_ROOT_PASSWORD, эти значения понадобятся.

root и FREERADIUS3_ROOT_PASSWORD - это имя пользователя и пароль учётной записи администратора, которые останутся у вас независимо от того, что вы меняете в базе данных. Также можно поменять или добавить дефолтные учётные записи в /etc/freeradius3/mods-config/files/authorize

FREERADIUS3_SECRET же нужен для обращения к RADIUS серверу, но скрипт уже всё подставил в нужное место. Вам только остаётся сохранить значения где-то в блокноте и прописать:

reboot

После перезагрузки WiFi будет настроен в режиме wpa2-enterprise с единственной учётной записью root с паролем FREERADIUS3_ROOT_PASSWORD. Можете протестировать. У меня по умолчанию запускается сервис radiusd, если это у вас не случилось, вам придётся снова зайти на роутер и запустить RADIUS сервер:

service radiusd stop; radiusd -X

Это позволит отследить запросы и увидеть процесс авторизаций. Вместо ручного запуска программ в будущем будет использован сервис service radiusd enable / start, но пока его включать не стоит - это помешает последующей установке.

7. Установка и подключение SQLite и SQLite-web для контроля учётных записей пользователей

После перезагрузки роутера флешка размонтировалась, поэтому заново монтируем её.

cd; umount USB; rm -rf USB; mkdir USB; mount /dev/sda1 USB/

Прежде всего нужно выключить сервис radiusd:

service radiusd stop

Теперь, неожиданно, нужно установить sqlite. Если у вас Xiaomi R3P, пропишите в консоли:

cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master; opkg --nodeps --force-maintainer --force-depends --force-reinstall --force-overwrite --force-downgrade install pkgs/sqlite/*.ipk

Если же у вас другой роутер:

opkg update; opkg --force-maintainer --force-depends --force-reinstall --force-overwrite --force-downgrade install libedit sqlite3-cli libsqlite3*

И выполняем скрипт настройки sqlite. Он идентичен для всех роутеров, если только freeradius снова не сломают совместимость.

cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master
rm -rf /etc/freeradius3/sqlite_rad.db
cp pkgs/sqlite/schema.sql /etc/freeradius3/mods-config/sql/main/sqlite/schema.sql
cp pkgs/sqlite/queries.conf /etc/freeradius3/mods-config/sql/main/sqlite/queries.conf
sqlite3 /etc/freeradius3/sqlite_rad.db < /etc/freeradius3/mods-config/sql/main/sqlite/schema.sql
ln -s /etc/freeradius3/mods-available/sql /etc/freeradius3/mods-enabled/sql

После чего нужно отредактировать файл /etc/freeradius3/mods-enabled/sql (например, в nano), чтобы он имел следующий вид.

...
sql {
...
dialect = "sqlite"
...
driver = "rlm_sql_sqlite"
...
	sqlite {
		filename = "/etc/freeradius3/sqlite_rad.db"
		# busy_timeout = 200 Просто важно закомментить.
		bootstrap = "${modconfdir}/${..:name}/main/sqlite/schema.sql"
	}
...
}
...

Можно тестировать, но сначала нужно создать какого-либо пользователя:

sqlite3 /etc/freeradius3/sqlite_rad.db

Откроется sqlite3-cli, в котором нужно добавить в бд пользователя:

insert into radcheck values ('1','user','Cleartext-Password',':=','12345678');

Проверить корректность вызова команды можно с помощью:

select * from radcheck;

Должна быть напечатана строка "1|user|Cleartext-Password|:=|12345678".

Далее выходим из sqlite-cli, для этого можно ввести в консоли:

.quit

Для тестирования нам понадобится снова запустить radiusd:

radiusd -X

После чего пытаемся зайти в WiFi с логином user и паролем 12345678. Если всё прошло успешно, тогда я рад за вас, ведь вам не пришлось тратить на настройку системы столько же времени, сколько потратил я. Можете удалить тестового пользователя, но я это сделаю далее через Web-SQLite-Admin. И, да, для применения изменений в базе данных не нужно перезапускать сервис.

Устанавливаю sqlite-web - простой сервис для администрирования SQLite. Важно отметить, что текущая версия, 0.3.6, имеет уязвимость безопасности, и я уже предложил исправление через pull-request. Если исправление на момент прочтения одобрили (скорее всего, тогда версия изменится на 0.3.7+), можете установить пакет через:

pip3 install sqlite-web - после этого обязательно проверьте версию.

Если же его не одобрили, тогда используем мой форк и устанавливаем пакет с исправлением угрозы безопасности. Его также можно сначала скачать на флешку, а потом смонтировать на роутере и установить, но после пункта 6. Установка FreeRADIUS и поднятие WPA2-Enterprise на роутере уже установлен git и git-http:

git clone https://github.com/ITMO-lab/sqlite-web.git
cd sqlite-web
pip3 install -r requirements.txt
python3 setup.py install

Тестовый запуск ни к чему хорошему не приведёт из-за одной фичи данного сервиса. Сначала нам нужно выключить использование webbrowser в единственном месте. Эта либа запускает в вашем браузере страницу SQLite-web. Только вот проблема в том, что ВнУтРи РоУтЕрА нет ни браузера, ни окружения рабочего стола, так что нам такие функции без надобности. Для исправления этого недоразумения открываем файл /usr/lib/python3.7/site-packages/sqlite_web/sqlite_web.py или /usr/lib/python3.7/site-packages/sqlite_web-0.3.6-py3.7.egg/sqlite_web/sqlite_web.py и редактируем его общей командой, так как он точно один:

nano /usr/lib/python3.7/site-packages/sqlite_web*/sqlite_web/sqlite_web.py

import webbrowser - удаляем

...

def open_browser_tab(host, port): - удаляем всю функцию, ибо зачем она нам?
	...

...

    if options.browser: - удаляем обе строчки.
        open_browser_tab(options.host, options.port) - они находятся в конце файла.

После этого без перезапуска (достоинство python) можем проверить работу SQLite-web:

sqlite_web /etc/freeradius3/sqlite_rad.db -H 192.168.1.1 -p 8000

Он должен запуститься на http://192.168.1.1:8000/. После этого мы можем посмотреть учётные записи:

img

И даже добавить свою, введя SQL запрос вида INSERT INTO "radcheck" VALUES ({N},{USERNAME},'Cleartext-Password',':=',{PASSWORD}):

img

После чего изменения отобразятся в таблице:

img

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

cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master
cp pkgs/sqlite/sqlite_web /etc/init.d/sqlite_web
chmod 755 /etc/init.d/sqlite_web
cd

Теперь необходимо поменять пароль от SQLite-web, для этого отредактируйте строку procd_set_param env SQLITE_WEB_PASSWORD="iloveyou" в /etc/init.d/sqlite_web и поменяйте значение SQLITE_WEB_PASSWORD на ваш пароль:

nano /etc/init.d/sqlite_web

После чего можно запустить все сервисы:

service sqlite_web enable
service sqlite_web start
service radiusd enable
service radiusd start

Через некоторое время сервер запустится и, я вас поздравляю, у вас есть возможность управлять учётными записями пользователей http://192.168.1.1:8000/

openwrt-xiaomi-wifi-r3p-freeradius's People

Contributors

d3dx13 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.