C настройкой WiFi WPA2-Enterprise с запущенными на роутере FreeRADIUS (для предоставления индивидуальных ключей WPA2-Enterprise), SQLite (для хранения этих ключей) и SQLite Web Admin (для удобного редактирования учётных записей пользователей)
Также вы можете установить OpenWRT на любой другой роутер и настроить WPA2-Enterprise по инструкциям с пункта: 5. Первая полноценная настройка прошивки и далее.
1. Краткий обзор основных характеристик роутера
3. Подготовка роутера к установке кастомных прошивок
4. Установка кастомной прошивки
- 4.1. Переход от прошивки Xiaomi к базовой прошивке OpenWRT
- 4.2. Обновление ядра (или восстановление роутера из состояния кирпича)
- 4.3. Установка новой прошивки роутера
5. Первая полноценная настройка прошивки
6. Установка FreeRADIUS и поднятие WPA2-Enterprise
7. Установка и подключение SQLite и SQLite-web для контроля учётных записей пользователей
Прежде всего рекомендую ознакомиться с оглавлением, так как эту инструкцию могут читать разные люди: кто-то только купил роутер, кто-то уже удалил базовую прошивку, а кто-то уже "ОКИРПИЧИЛ" это чудо Китайского Роутеростроения :D (без доли сарказма, классный быстрый роутер)
P.S. Для тех, кто тут только за восстановлением кирпича (да, это сделать проще, чем кажется), вам сюда: 4.2. Восстановление роутера из состояния кирпича
Автор постарался написать инструкцию таким образом, чтобы смог разобраться даже ещё больший ламер, чем автор. несмотря на это автор открыт к критике, исправлению и модификации инструкций.
Вы делаете все описанные ниже действия на свой страх и риск. Автор не несёт ответственности за возможный выход вашего роутера из строя, а так же за прекращение поддержки базовых пакетов роутера (отсылка к тем, кто пытался нормально настроить freeradius, который не имеет обратной совместимости даже среди версий одного релиза). У Автора не было перебоев электропитания непосредственно во время прошивки роутера (не во время установки пакетов), но даже если они или любые критические поломки базовых пакетов случатся у вас, не переживайте, всегда можно прошить ядро заново через UART: 4.2. Восстановление роутера из состояния кирпича
Характеристики роутера позволяют запускать на нём даже полноценные 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 |
Если вы включаете роутер впервые, тогда он раздаст открытый WiFi с названием Xiaomi_XXXX_XXXX
Подключаетесь к этому WiFi и переходите по адресу 192.168.31.1
Автоматически откроется страница http://192.168.31.1/cgi-bin/luci/web/init/hello
Гугл переводчик переводит это как:
[текст] Пожалуйста, прочтите «Пользовательское лицензионное соглашение» и выберите, соглашаться ли
[галочка] Присоединяйтесь к «Программе улучшения взаимодействия с пользователем»
Лично я галочку снял
Нажимаем большую синюю кнопку и попадаем в меню первой настройки роутера
Или же, если в роутер не воткнут кабель с интернетом (перекинул на ноут, чтобы переводить китайский)
Выбираем верхний режим работы и попадаем в меню выше
Логично, что тут выбирается имя сети WiFi (SSID) и её пароль, тут я галочку не снял (отвечает за какие-то настройки firewall. нам всё равно прошивку стирать, так что не важно) и нажал большую синюю кнопку.
Тут выбирается пароль к админке этой прошивке. Если нажмёте галочку, тогда будет выбран тот же пароль, что и для WiFi. В чём разница между "Семья", "Компания" и "Подгоняет" я не понял, ну и не важно, пусть будет по умолчанию ("Семья"), нам ещё не долго пользоваться этой прошивкой.
Снова нажимаем большую синюю кнопку.
Ждём загрузки роутера. На нём оранжевая лампочка сменится синей, когда всё завершится. Кстати, роутер ещё умеет мигать красным, если вы попытаетесь прошить его через USB такой прошивкой, которую он принципиально не может скушать.
Думаю, тут очевидно, куда нажимать. Только не забудьте подключиться к новой Wi-Fi сети )
Попадаем в такое меню. Здесь вводим пароль от роутера и нажимаем стрелочку. При первом входе роутер предложит провести некоторые настройки. Там есть синяя кнопка. НЕ НАЖИМАЙТЕ НА НЕЁ . Вместо этого нажмите на подчёркнутый текст под кнопкой. Это пропустит гайд по этой прошивке. Прокликайте по свободным местам, чтобы пройти навязанное введение в интерфейс прошивки. Всё, с этого момента можно приступать к настройке роутера для установки кастомных прошивок.
Часть инструкций в этой главе была взята с открытого источника: 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
Войдите в систему и найдите страницу, на которой вы можете обновить прошивку (найдите большую желтую точку с «i» внутри).
Здесь выбираете обновление прошивки вручную.
Вы увидите номер версии маршрутизатора, а внизу есть кнопка, где вы можете загрузить файл. Загрузите miwifi_r3p_firmware_daddf_2.13.65.bin (прошивка для разработчиков), нажмите синюю кнопку и подождите несколько минут.
Далее будет предложено стереть все пользовательские настройки. Лично я поставил галочку и стёр. И вам рекомендую так поступить, ведь не известно, какие ещё новые прошивки будут устанавливаться в роутеры с завода, и как они будут совместимы с данными старой прошивки. Остаётся только ждать окончания прошивки - загорится синяя лампочка.
Запомните, что наша последующая задача - получить персональный (там пароли к ssh индивидуальные) upgrade роутера с ssh с сайта xiaomi.
Если вы впервые устанавливаете прошивку разработчика на роутер, тогда вам будет показано это окно. Если же этого окна нет, и вместо него идёт сразу окно с входом в админку, тогда ничего страшного, просто идём дальше по инструкции. Для настройки роутера вам потребуется специальное приложение. Установите приложение Android "Mi Wi-Fi" из https://play.google.com/store/apps/details?id=com.xiaomi.router на свой телефон / планшет (есть также приложение для iOS).
Откройте приложение «Mi Wi-Fi», затем войдите в свою учетную запись Xiaomi (Если у вас её нет, то сначала создайте на сайте https://www.mi.com/).
Маршрутизатор будет обнаружен и добавлен в вашу учетную запись (при условии, что вы подключены к WiFi роутера в режиме 2.4G, а порт WAN маршрутизатора подключен к Интернету). Нажимаем "Настроить роутер", в следующем меню выбираем пароль и настройка завершена.
На этом этапе лично у меня всегда зависает приложение, хотя я подключился к нужному 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://".
Находим нужный роутер в списке и сохраняем куда-нибудь пароль от пользователя root - те 8 символов после слова root и иероглифов. После чего нажимаем на соответствующую кнопку справа.
Принимаем соглашение, которое было переведено специально для вас. И должно начаться скачивание... Ага, должно. Придётся снова посвапать "http://" и "https://" и загрузка начнётся. Результатом будет файл: miwifi_ssh.bin
На этом этапе вам понадобится флешка с файловой системой FAT32 (ЭТО ВАЖНО!). Если у вас такой нет, тогда форматните какую-нибудь флешку в этом формате. Не мне вам рассказывать, что при форматировании файлы стираются, поэтому сделайте их резервную копию на компьютере, если они вам нужны. Если вы пользователь windows 10, тогда вам могут понадобится отдельные программы для форматирования разделов. Лично я воспользовался программой guiformat, но за неё не ручаюсь, поэтому можете скачать любую на свой выбор.
После чего нужно скопировать файл miwifi_ssh.bin в корень флешки (на этой флешке не должно быть папок, только один этот файл).
Отключите питание маршрутизатора, вставьте USB-накопитель в маршрутизатор, нажмите и удерживайте кнопку сброса (рекомендуется со скрепкой, хотя лично я использовал иголку и шило), включите маршрутизатор (удерживая перезагрузку). Когда маршрутизатор начнет мигать желтым (пройдёт секунд 10-12), отпустите кнопку сброса. Подождите, пока маршрутизатор не перезагрузится, и у вас (наконец…) не будет доступа по SSH.
Далее необходимо либо по кабелю, либо по WiFi подключиться к роутеру.
Проверить наличие доступа в windows 10 (и в популярных дистрибутивах linux) можно очень просто, там из коробки идёт ssh client. Если у вас другая версия Windows без ssh клиента, поставьте его отдельно.
Пишем:
После чего у нас попросят пароль. Вводим тот самый пароль, что мы записывали и мы в роутере, готовы ставить прошивки.
Если же вы увидели нечто подобное (Windows 10), вам нужно удалить все предыдущие сессии из файла:
C:\Users\{YOUR_USERNAME}\.ssh\known_hosts
После чего вы можете прописать ssh [email protected]
и увидеть успешный вход в систему.
С этого момента начинается не самая безопасная зона. Да, в этой прошивке от xiaomi нет ничего опасного, но у вас уже буквально есть возможность стереть ядро. Если же вы каким-то образом умудрились всё сломать на этой прошивке, тогда вам поможет пункт 4.1
Вытаскиваем флешку из роутера, она нам понадобится.
Для тех, кто начал читать с этого момента - она должна быть формата 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.
Если же вы увидели нечто подобное при попытке подключиться по ssh (Windows 10), вам нужно удалить все предыдущие сессии из файла:
C:\Users\{YOUR_USERNAME}\.ssh\known_hosts
После чего вы можете прописать ssh [email protected]
и увидеть успешный вход в систему.
Далее устанавливаем web gui, чтобы можно было продолжить работу в нём.
opkg update
opkg install luci
Этот пункт является обязательным для всех. Если у вас не подходящая версия ядра, тогда sysupgrade из 4.3 приведёт только к неработоспособности роутера как роутер (WiFi раздаёт, но интернет не видит, а также не работает web gui и ssh).
Важно отметить, что гарантия на роутер теряется уже после разборки роутера, для проверки этого на нём предусмотрен один болт с наклейкой.
Конечно можно полностью разобрать корпус, выкрутив из под прорезиненных ножек 4 болта,
Выковыряв ножом с боков пластиковые вставки,
И достать плату роутера (с огромным радиатором)...
Но зачем нам все эти сложности, ведь нам нужен только доступ к UART разъёму?
Просто отключаем роутер от питания, аккуратно ножом поддеваем правую пластиковую стенку,
Теперь у нас есть доступ к разъёму. Можно даже к нему подпаять провода, нам нужны RX, TX и GND. Питание на 3.3 v не трогаем.
Но я не хочу паять плату, поэтому просто подсоединю кабель к роутеру и к UART-Serial конвертору, но вам рекомендую припаять.
Напряжение TX и RX должно быть 3.3 вольта (ЭТО ВАЖНО!)
Вам потребуется терминал для Serial порта. На linux это делается одной командой, но пользователи Windows могут скачать putty с официального сайта или же по ссылке на моём гите: putty
Запускаем приложение. Выбираем слева снизу "Serial", далее настраиваем всё, как на картинке. COM порт выбираем согласно вашему конвертору.
Его можно найти в диспетчере устройств.
Если у вас запускается приложение на windows, но при подключение оно просто выдаёт звук и ничего не делает (у меня такое случалось), тогда перейдите в директорию с распакованным putty.exe и выполните:
.\putty.exe -serial COM4 -sercfg "115200,8,n,1,"
- только введите ваш COM порт вместо COM4.
Откроется окно последовательного порта. После чего подаём питание на роутер и вылавливаем момент, когда появится меню "Please choose the operation"
Тут нажимаем 2 в окне с последовательным портом. Далее выполняем то, что систему запрашивает. IP адреса рекомендую не менять, а имя файла нужно ввести своё (далее будет обозначено) и НЕ нажимать ввод. Сначала нужно подключиться по ethernet кабелю к роутеру на поднять DHCP.
Для этого нужно открыть "Сетевые подключения", найти ваш проводной адаптер. Правая кнопка мыши, его свойства...
Там нужно выбрать пункт "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". Это то самое ядро, которое у нас просит сейчас роутер.
Выключаем Wi-Fi и оставляем только одно подключение - по тому кабелю с DHCP. Настраиваем путь к нашей папке "C:\router", выбираем нужный "Server interface" - должен быть нашим IP в собственном DHCP. Программа TFTP сервера запущена автоматически.
Переходим в окно последовательного порта и проверяем данные. Если адреса и имя верные, нажимаем Enter и начнётся процесс загрузки.
Если процесс загрузки идёт хорошо, вы увидите такую картину. Мне удалось прошить ядро без разбора корпуса и пайки.
Кстати, не забудьте выключить DHCP, для этого перейдите в уже знакомое меню "Сетевые подключения" и смените режим работы на "Получать IP-адрес автоматически".
Вместе с этим ядром идёт несколько базовых пакетов, но это далеко не конечная прошивка. Далее требуется скачать файл с обновлением для этого ядра. Он настроит файловую систему. openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-sysupgrade.bin
Проходим процесс авторизации без пароля (просто нажимаем "Войти") и быстро переходим в "System" -> "Backup / Flash Firmware" -> Выбираете файл (выбираем наш openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-sysupgrade.bin) -> "Flash image...", НЕ снимая галочку с "Keep settings", это важно.
Откровенно говоря, эта прошивка нам нужна только для того, чтобы были смонтированы правильно системные разделы. Иначе места для установки даже базовых пакетов для конфигурации разделов буквально не будет (ставить будет некуда), а в комплекте такие приложения не идут.
В этом меню нажимаем "Proceed" и процесс загрузки начнётся. Через минуту у вас будет вполне рабочая конфигурация роутера на OpenWRT с проблемным WiFi и протоколами безопасности. Далее требуется пропатчить сборку кастомной прошивкой в пункте 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"
После этого нажимаем "Flash image..."
Далее нажимаем "Browse...", выбираем файл "OpenWRT-19.07.1-MiR3P-sysupgrade.bin" и нажимаем Upload, снимая галочку с "Keep settings", это важно. Мы хотим сконфигурированную систему с интернетом на наших разделах файловой системы.
После загрузки получаем предупреждение о версии: "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"
Эх, люблю этот интерфейс :D
Входим в систему, пароль по умолчанию - "1234567890" (без кавычек). И нам лучше сразу поменять пароль на удобный нам. Для этого переходим в "Система" -> "Управление" -> "Пароль маршрутизатора"
Там всё просто - устанавливаем пароль от роутера на свой вкус важно, что это не пароль от WiFi. Это пароль от пользователя root и от админки на роутере
Теперь можно поменять имя машины роутера. Рекомендую выбрать имя, совпадающее с именем WiFi.
Далее настраиваем DHCP, чтобы не возникало проблем с перенаправлением при длительном стриминге данных.
Сначала с этим расширим область выделяемых адресов, меняя маску подсети на 255.0.0.0 и применяем ("Сохранить и применить...").
Аренду начинаем с "192.0.0.0", а заканчиваем "256^3", что равно "16777216". Время аренды ставим на "infinite". Снова применяем настройки ("Сохранить и применить...").
Адрес роутера менять с "192.168.1.1" не рекомендуется, так как из-за этого сеть (конкретно интернет, а не локалка) отваливается у смартфонов samsung точно, может, вообще у всех смартфонов тоже.
После чего выключаем Adblock. И, да, в этот роутер встроен Adblock, KMS сервер, NAS и многое другое. Проблема в том, что Adblock может порезать скорость общения с сетью, хотя и работает просто прекрасно, скрывает рекламу, а сайты думают, что Adblock не установлен, и не выкидывают просьбу его отключить. Отключается он достаточно просто. В выключенном состоянии на кнопке должно быть написано "Включить".
Только после отключения требуется перезагрузить роутер и убедиться, что статус "Состояние Adblock" будет пустым. Почему-то просто так сервис не хочет выключаться.
Далее нам нужно настроить конфигурацию WiFi, заодно и проверим, как работает WiFi. По большей части, в этой прошивке уже всё настроено, но вы можете покопаться и поменять всё на свой вкус.
Внимание, если вы собираетесь проходить пункт 6. Установка FreeRADIUS и поднятие WPA2-Enterprise, тогда можете пропустить конфигурацию именно WiFi, нажать "Сохранить и применить..." и подключиться к роутеру по ssh [email protected]
, но важно, чтобы вы выбрали правильно имя машины роутера, ведь оно и будет в дальнейшем именем WiFi.
В меню "Сеть" -> "WiFI" можно настроить WiFi. Необходимо выставить всё, как на фото (часть настроек взята с https://4pda.ru/forum/index.php?showtopic=810698&st=3200#entry82315996)
Сначала настроем 2.4 G (не забудьте нажать "сохранить")
Потом 5 G
После установки настроек, применяем их кнопкой: "Сохранить и применить..."
Также важно добавить, что если вы устанавливаете всё для использования с WPA2-Enterprise, требуется выключить "802.11w Management Frame" и включить "Разрешить использование стандарта 802.11b". Если же вы устанавливаете прошивку на Xiaomi R3P, setup.ash
сделает это в дальнейшем за вас.
На этом этапе можно вылезти из красивого web gui и погрузиться в консоль, а ля настоящий программист. (ну или почти :p) Напоминаю, что делается это через ssh [email protected]
, а пароль - тот самый пароль от админки web gui.
Поздравляю, мы в роутере. Теперь можно приступить к установке пакетов.
Далее важно понимать, есть ли у нас интернет или нет. Да, он настроен, но поблизости может просто не быть кабеля с интернетом, поэтому установку пакетов решено сделать максимально удобной. Тем не менее, если вы устанавливаете всё на другой роутер, для вас создан отдельный файл установки. Работоспособность не гарантирую, но попытаться стоит.
Если у вас есть интернет, вы можете сделать 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, но пока его включать не стоит - это помешает последующей установке.
После перезагрузки роутера флешка размонтировалась, поэтому заново монтируем её.
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/. После этого мы можем посмотреть учётные записи:
И даже добавить свою, введя SQL запрос вида INSERT INTO "radcheck" VALUES ({N},{USERNAME},'Cleartext-Password',':=',{PASSWORD})
:
После чего изменения отобразятся в таблице:
Теперь остаётся только сделать из 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/