Ставим OpenWRT на роутер Asus RT-AX53U


В связи с известными ограничениями на доступ к Youtube решил обзавестись OpenWRT-совместимым роутером. Выбор пал на Asus RT-AX53U, как на один из самых бюджетных и одновременно продвинутых — памяти приемлемо и с поддержкой WiFi6.

В этой статье поделюсь своим опытом установки прошивки OpenWRT на него.

Подготовка

Первое, что необходимо сделать — это обеспечить доступ к роутеру по ssh. Это делается в меню Администрирование — Система — Служба:

Включить SSH: LAN only
SSH порт: 22

Ставим OpenWRT на роутер Asus RT-AX53U

Нажимаем кнопку Применить.

Проверяем из терминала соединение:

# 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