Не только чужим вай-фаем едины…
Life-Hack [Жизнь-Взлом]/ХакингВ очередной статье, посвящённой сборке прошивок OpenWRT пойдёт речь о модели TP-LINK TL-MR3020v3
В комментариях к статье об Anonabox PRO как-бы ненароком проскользнул мой пост о том, что прирученный мною GL iNet AR150 Mini приказал долго жить.
Вместе с тем, безграничное использование чужих беспроводных сетей порождает чувство хронической паранойи: в каждом водителе такси просматривается ФСБ-шник, в каждом прохожем угадывается ОМОН-овец с бензорезом через плечо

Вся прелесть в небольших размерах.
В результате непродолжительных раздумий родилась мысль о том, что упомянутая модель вполне может быть мобильной:
- питание можно подать от USB ноутбука,
- интернет получать от Huawei e3372 в режиме hilink, воткнутого в uSB-порт роутера.
Технические характеристики роутера:
- Процессор Mediatek MT7628N 580МГц
- 64 МБ оперативной памяти
- Флэш чип на 8МБ
- USB порт 2.0
- RJ-45 порт с полным дуплексом на 100 Мб
- GPIO выводы как свободные, так и со светодиодами
- Кнопка и переключатель на GPIO выводах.
Объём флеш-памяти роутера - всего 8 мегабайт - не жирно по современным меркам. Придётся немного повозиться, чтобы разместить операционную систему в таких скромных рамках. В принципе, согласно моим планам, OpenWRT для этой модели ничем особым не будет отличаться от прошивок для других моделей: всё тот-же набор для базовой анонимности:
- OpenVPN - клиент для смены IP адреса,
- запросы DNS пропустим по HTTP,
- из-за скромных размеров flash-памяти , TOR-прокси устанавливать не буду: рациональнее запустить TOR на ноутбуке и пропустить через OpenVPN на роутере.
- традиционно удаляю поддержку IPv6, а также PPTP
- можно удалить также менеджер пакетов opkg - ведь никакого функционала добавить в систему я уже не смогу.
- можно установить утилиту curl - иногда она помогает диагностировать связь и работоспособность будущей сборки в случае необходимости,
- установим и русифицируем web-интерфейс
- Подготовка операционной системы
$ sudo apt-get install subversion git $ sudo apt-get install g++ libncurses5-dev zlib1g-dev gawk libssl-dev unzip make $ mkdir TL_MR3020v3 $ cd TL_MR3020v3/

2. Получение последней версии исходных кодов ImageBuilder. На момент написания статьи последней является версия 19.07.4
Скачиваем:
$ wget https://downloads.openwrt.org/releases/19.07.4/targets/ramips/mt76x8/openwrt-imagebuilder-19.07.4-ramips-mt76x8.Linux-x86_64.tar.xz $ tar -xvf openwrt* $ cd openwrt*64

Посмотрим профили для предстоящей сборки образа прошивки.
$ make info
PROFILE=tplink_tl-mr3020-v3
Список пакетов для удаления пакетов, поддерживающих ipv6:
ip6tables kmod-ip6tables kmod-ipv6 kmod-nf-conntrack6 kmod-nf-ipt6 libip6tc odhcp6c 6relayd luci-proto-ipv6 dnsmasq-ipv6 odhcpd-ipv6only
Удаляем поддержку PPTP
kmod-gre kmod-mppe kmod-ppp kmod-pppoe kmod-pppox kmod-pptp luci-proto-ppp ppp ppp-mod-pppoe ppp-mod-pptp kmod-nf-nathelper-extra
Удаляем утилиту для скачивания - её заменит curl
uclient-fetch
opkg - также к удалению Отказываемся от средств отладки
kmod-b43 kmod-b43legacy kmod-mac80211 kmod-cfg80211
Список для установки и русификации web интерфейса LuCI
uhttpd uhttpd-mod-ubus luci-mod-admin-full luci-theme-bootstrap luci-app-firewall libiwinfo-lua luci-i18n-base-ru luci-i18n-firewall-ru
Добавляем
unbound odhcpd unbound-control luci-app-unbound curl openvpn-openssl luci-app-openvpn
Список пакетов для поддержки USB-порта и flash-накопителя и Huawei e3372 в режиме hilink
kmod-fs-ext4 kmod-usb-core kmod-usb2 (aka EHCI); kmod-usb-storage block-mount e2fsprogs usb-modeswitch - установка потянула зависимости: librt, libusb-1.0-0 kmod-usb-net-cdc-ether - установка потянула зависимости: kmod-usb-net, kmod-mii kmod-usb-ohci - поддержка Usb-хаба в OpenWrt
Конечная команда для сборки прошивки:
make image PROFILE=tplink_tl-mr3020-v3 PACKAGES="uhttpd uhttpd-mod-ubus luci-mod-admin-full luci-theme-bootstrap luci-app-firewall libiwinfo-lua luci-i18n-base-ru luci-i18n-firewall-ru luci-app-openvpn luci-app-unbound curl openvpn-openssl -ip6tables -kmod-ip6tables -kmod-ipv6 -kmod-nf-conntrack6 -kmod-nf-ipt6 -libip6tc -odhcp6c -6relayd -luci-proto-ipv6 -dnsmasq-ipv6 -kmod-gre -kmod-mppe -kmod-ppp -kmod-pppoe -kmod-pppox -kmod-pptp -luci-proto-ppp -ppp -ppp-mod-pppoe -ppp-mod-pptp -kmod-nf-nathelper-extra -kmod-b43 -kmod-b43legacy -kmod-mac80211 -kmod-cfg80211 -uclient-fetch -opkg kmod-fs-ext4 kmod-usb-core kmod-usb2 kmod-usb-storage kmod-mii block-mount e2fsprogs kmod-usb-net-cdc-ether kmod-usb-net kmod-usb3 kmod-usb-ohci kmod-usb-uhci odhcpd unbound-control -odhcpd-ipv6only usb-modeswitch librt libusb-1.0-0"

Когда сборка прошивки закончится, её можно забрать в Домашней папке по адресу:
/home/user/TL_MR3020v3/openwrt-imagebuilder-19.07.4-ramips-mt76x8.Linux-x86_64/bin/targets/ramips/mt76x8/openwrt-19.07.4-ramips-mt76x8-tplink_tl-mr3020-v3-squashfs-tftp-recovery.bin
Далее осталось только залить её в маршрутизатор.
Заливать прошивку в роутер удобнее в операционной системе Windows.
Сначала скачиваем tftp сервер по адресу: http://tftpd32.jounin.net
Затем скачанный файл необходимо разархивировать в папку на системном диске. В эту-же папку необходимо скопировать скомпилированный файл прошивки.
ВНИМАНИЕ: файл прошивки необходимо переименовать tp_recovery.bin

Процесс прошивки:
- подключаем отключенный роутер кабелем к компу

- выставляем адрес сетевого интерфейса 192.168.0.225 ( - это пример)
- отключаем фаервол
- запускаем tftp
- закидываем в папку сервера файл tp_recovery.bin
- зажимаем кнопку "RESET" на роутере
- включаем питание

- держим кнопку "RESET"пока в окне tftp сервера не промелькнет информация о загрузке.
############################################################################################
Важно: после перепрошивки адрес роутера изменится на
http://192.168.1.1/
Имя пользователя: root
Пароль отсутствует.
Действия после заливки прошивки на устройство:
ШАГ № 1 Изменение MAC адреса сетевого интерфейса под OpenWRT.
ШАГ № 2 Изменение порта для доступа по протоколу SSH.
ШАГ № 3 Фиксация TTL.
ШАГ № 4 Изменить внутренний сетевой адрес роутера - при необходимости.
ШАГ № 5 Окончательно удалить поддержку ipv6
ШАГ № 6 Включение DNS-Over-TLS в LEDE/OpenWrt через замену резолвера на Unbound