В связи с известными ограничениями на доступ к Youtube решил обзавестись OpenWRT-совместимым роутером. Выбор пал на Asus RT-AX53U, как на один из самых бюджетных и одновременно продвинутых — памяти приемлемо и с поддержкой WiFi6.
В этой статье поделюсь своим опытом установки прошивки OpenWRT на него.
Подготовка
Первое, что необходимо сделать — это обеспечить доступ к роутеру по ssh. Это делается в меню Администрирование — Система — Служба:
Включить SSH: LAN only
SSH порт: 22
Нажимаем кнопку Применить.
Проверяем из терминала соединение:
# ssh admin@192.168.50.1
, где 192.168.50.1 — адрес роутера, admin — имя пользователя, с помощью которого заходим в настройки устройства через браузер.
The authenticity of host '192.168.50.1 (192.168.50.1)' can't be established. ED25519 key fingerprint is SHA256:a1b2c3d4sdfasddfbasdfasdfasdfasdfasdf0. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.50.1' (ED25519) to the list of known hosts. admin@192.168.50.1's password:
Вводим пароль, с помощью которого заходим на роутер через браузер.
Установка OpenWRT
Инструкцию взял здесь. Качаем свежую прошивку для роутера с сайта OpenWRT:
# wget https://downloads.openwrt.org/releases/23.05.4/targets/ramips/mt7621/openwrt-23.05.4-ramips-mt7621-asus_rt-ax53u-squashfs-factory.bin
Прошиваем
# mtd-write -i openwrt-23.05.4-ramips-mt7621-asus_rt-ax53u-squashfs-factory.bin -d Kernel -r
Примечание. У меня -r — т.е. перегрузиться после успешного завершения не сработала. Поэтому я повторил без этой опции и перегрузил роутер руками.
Команда молчком выполнилась. Я передернул питание на роутере, и, когда он проинициализировался, зашел в веб-админку http://192.168.1.1/cgi-bin/luci/ Логин: root без пароля.
Нам говорят, что надо позаботиться о безопасности и установить пароль. Делаем это, кликая на кнопку Go to password configuration… Вводим пароль два раза и жмем Save.
Базовые настройки
1) В меню System — System
В закладке General settings прописываем имя хоста и часовой пояс.
Hostname: MyRouter
Timezone: Europe/Moscow
В закладке Time Synchronization разрешаем синхронизацию времени и включаем раздачу времени по сети:
Enable NTP client
Provide NTP server
Bind NTP server: Lan
Жмём Save&Apply
2) В меню System — Administration
В закладке SSH Access разрешаем доступ по SSH только из локальной сети:
Interface: Lan
Port: 22
Да, я знаю, что лучше порт поставить какой-нибудь 31434, оставляю это на ваше усмотрение. Разрешил пока аутентификацию по паролю пользователями и root:
Password authentication
Allow root logins with password
Жмём Save&Apply
3) В меню Network — Firewall
В закладке General settings в разделе Routing/NAT Offloading включаем ускорение обработки трафика:
Software flow offloading
Hardware flow offloading
Жмём Save&Apply
4) В меню Network — Interfaces
В закладке Global network options разрешаем распределение нагрузки по обработке пакетов:
Packet steering
Жмём Save&Apply
5) В меню Network — Wireless редактируем оба интерфейса (для 2.4ГГц и 5ГГц), где написано SSID.
Во всплывшем окне в закладке General Setup в разделе Interface Configuration — General Setup выставляем идентификатор точки доступа:
ESSIDН: MyRouter
В разделе Interface Configuration — Wireless Security ставим шифрование, пароль для точки доступа и защиту от взлома:
Encryption: WPA3-SAE, если все устройства новые, или WPA2-PSK/WPA3-SAE Mixed для обратной совместимости.
Key: СуперСложныйДлинныйПароль — не должен дублировать пароль root.
Enable key reinstallation (KRACK) countermeasures
Жмём Save
Повторяем для второго интерфейса (где SSID) и для него тоже жмём Save.
Применяем настройки обоих интерфейсов — Жмём Save&Apply
Кстати, оба интерфейса активируем — жмём для каждого Enable.
6) Опционально. Возможно, у вас, как у меня, из-за настроек прошивки произошла коллизия с адресами домашней сетки. Это требует смены номера сети и адреса нашего роутера с 192.168.1.1 на, например, 192.168.10.1.
Пробуем сначала все сделать через web (иногда не срабатывает).
В меню Network — Interfaces в закладке Interfaces для lan жмём кнопку Edit и попадаем в настройки.
В General setting меняем адрес
IPv4 address: 192.168.10.1
В DHCP server меняем время обновления адресов:
Lease time: 15m
Жмём Save
Жмём Save&Apply
Система пишет — опасно — Выбираем синюю таблетку (Apply with revert after connectivity loss) — отказ если не сложится.
У меня не сложилось — система не перешла на новый адрес и откатилась обратно. Значит придётся править конфигурационные файлы в текстовом редакторе. По-умолчанию в системе есть редактор vi, но я к нему не смог привыкнуть и работаю только в nano, поэтому поставим его.
В меню System — Software сначала обновляем списки пакетных репозитариев — жмём Update lists…, а затем в поле поиска пишем nano:
Filter: nano
Система находит три пакета nano, nano-full, nano-plus. Мне достаточно минимального nano — жму Install…
После установки заходим на роутер по старому адресу через терминал
# ssh root@192.168.1.1
редактируем файл /etc/config/network
# nano /etc/config/network
раздел lan приводим к виду (двигаемся стрелочками)
config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '192.168.10.1' option netmask '255.255.255.0' option ip6assign '60'
Сохранить — Ctrl-S, выйти — Ctrl-X
Перезапускаем сеть
# /etc/init.d/network restart
Заходим на роутер по новому адресу http://192.168.10.1/cgi-bin/luci/
7) Опционально. У меня принтер, я хочу зафиксировать его ip-адрес, чтобы у всех компьютеров дома были постоянные настройки сетевой печати. Я его подсоединил сетевым шнурком к роутеру к гнезду lan2 и включил.
В меню Network — DHCP and DNS в закладке Static Leases
В разделе Active DHCP Leases он у меня автоматом получил:
hostname DEVA7D06D
IPv4-адрес 192.168.10.189
MAC-адрес 98:E7:F4:A7:D0:6D
А таблица выше (списков статически назначенных адресов) пока пуста. Жмём там Add и указываем параметры:
Hostname: Printer
MAC address: 98:E7:F4:A7:D0:6D
IPv4 address: 192.168.10.189
Жмём Save
Жмём Save&Apply
8) Теперь, когда базовые настройки есть, сделаем расширение доступного дискового пространства роутера за счёт старой usb-флешки на 4Gb. Помимо того, что получаем дополнительное место для установки ПО, если что-то пойдёт не так, достаточно выдернуть флешку, перегурзиться и роутер будет работать с текущими настройками и без лишнего ПО. Обнулив флешку можно будет начать сначала. Инструкция, как расширить доступную память взята здесь.
8.1) Включаем поддержку usb-дисков
# opkg update # opkg install kmod-usb-storage block-mount kmod-fs-ext4 # reboot
Ждём, когда перезагрузится.
8.2) Готовим флешку, разбивая её на два раздела первый на 1Gb файловая система ext4, остаток — для второго, тоже ext4. Ниже инструкция, как это сделать тут же на OpenWRT, но есть много альтернатив, например, у меня в Ubuntu есть программа Disks, с помощью которой это делается в пару кликов.
Посмотрим, какие есть устройства usb (понадобится пакет usbutils).
# opkg install usbutils # lsusb -t
видим:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M |__ Port 2: Dev 2, If 0, Class=, Driver=usb-storage, 480M
выведем список блочных устройств:
# ls -l /sys/block
видим одна из строк:
lrwxrwxrwx 1 root root 0 Sep 4 01:06 sda -> ../devices/platform/1e1c0000.xhci/usb1/1-2/1-2:1.0/host0/target0:0:0/0:0:0:0/block/sda
Для создания двух разделов нам понадобится gdisk
# opkg install gdisk
запускаем, указав наш usb-диск
# gdisk /dev/sda Command (? for help): x Expert command (? for help): l Enter the sector alignment value (1-65536, default = 2048): 2 Expert command (? for help): m Command (? for help): n Partition number (1-128, default 1): 1 First sector (34-7593950, default = 34) or {+-}size{KMGTP}: Last sector (34-7593950, default = 7593949) or {+-}size{KMGTP}: +1024M Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): n Partition number (2-128, default 2): First sector (2097186-7593950, default = 2097186) or {+-}size{KMGTP}: Last sector (2097186-7593950, default = 7593949) or {+-}size{KMGTP}: Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sda. The operation has completed successfully.
Здесь используются команды:
x — переключиться в экспертный режим,
l — установить размерность для выравнивания (я заметил, что disks при разбитии использует не 2048, а 2, поэтому использовал такой же, для этого и переключались в эксперный режим),
m — вернуться обычный режим,
n — создать новый раздел,
w — применить изменения
Получилось два раздела sda1 и sda2. Их надо ещё отформатировать — нам потребуется пакет e2fsprogs:
# opkg install e2fsprogs # mkfs.ext4 /dev/sda1 # mkfs.ext4 /dev/sda2
чистим за собой
# opkg remove usbutils # opkg remove gdisk # opkg remove e2fsprogs
8.3) В System — Mount points нажимаем Generate Config, после чего в списке Mount Points появляются sda1 и sda2.
Нажимаем Edit напротив sda1 и правим настройки:
Enable
Mount point: /overlay
Жмём Save.
Повторяем для sda2 только в качестве точки монтирования ставим /data — папка, которую мы сможем использовать для любых своих нужд.
Жмём Save&Apply
В терминале копируем содержимое /overlay на флешку:
# mkdir -p /tmp/extoverlay # mount /dev/sda1 /tmp/extoverlay # tar -C /overlay -cvf - . | tar -C /tmp/extoverlay -xf - # umount /tmp/extoverlay # reboot
Теперь, если мы зайдем System — Mount points, то увидим примонтированный /data размером 2.6Gb, и overlay размером почти в 1Gb.
О том же самом, но по-другому можно прочитать здесь.
9) Теперь, когда места для нового софта много зайдет в System — Software повторим Update lists… и по завершении в закладке Updates установим обновления для пакетов.
Откат на прошивку производителя с OpenWRT.
Если вдруг вы наигрались и решили вернуть всё назад, то это очень легко сделать прямо из OpenWRT. Инструкцию подглядел здесь.
Для отката назад — на прошивку производителя нам понадобится сама прошивка. Она лежит здесь.
Скачиваем её себе на компьютер, распаковываем и файл .rtx с длинным названием перименовываем в asus.rtx (для удобства).
Помещаем файл в папку /tmp на OpenWRT и выполняем команду
mtd -r write /tmp/asus.trx firmware