Portál AbcLinuxu, 30. dubna 2025 13:30
Minulý rok jsem se díval po routeru pro naši Korporaci (asi 50 PC :) a v podstatě jsem byl rozhodnutý pro plný linux na nějaké pikodestičce s cenou do 5000. Po dohodě s mým dodavatelem hardware jsem koupil Routerboard 532. No a teď bych se rád svěřil s nějakými postřehy.
Hardware je to věru krásný, koupil jsem k němu i plechovou krabičku a pasivní PoE, takže ho napájím z UPS v racku a přitom je fyzicky v krabici, kde končí optika. Procesor s instrukční sadou MIPS jde přetaktovat v BIOSu z 266 na 333MHz, což jsem hned udělal. Přikoupil jsem i 256MB CF kartu, upravil si referenční image Debianu (viz níže) a mnu si ruce. Trošku zrada je v tom, že je pro nastavování v BIOSu je potřeba počítač s ttyS portem a null modem, ale obojí tady shodou náhod mám. Dobrá je taky čtečka CF funkční pod Linuxem.
Zrada číslo jedna spočívá v tom, že přiložený kernel v referenčním image neobsahuje moduly, takže je potřeba kompilovat vlastní. Já jsem to prvně vyřešil tak, že jsem si přímo na Routerboardu nainstaloval gcc a pak jsem rozjel kompilaci na NFS svazku. Jádro je potřeba patchnout patchem od Routerboardu. Vzhledem k pouhým 32MB paměti trvá kompilace asi tři hodiny, je dobré mít cca 50MB swap, jinak to nejde dokončit. No povedlo se a já jsem měl jádro i s moduly.
Zrada číslo dvě spočívá v tom, že jádro je potřeba zavést "napoprvé" - kopíruje se pomocí dd na první partition CF karty, takže nějaká "alternativní konfigurace" nepřipadá v úvahu. To se mi samozřejmě několikrát nepovedlo, například když jsem jádro zapomněl stripnout, což v manuálu mimo jiné nenajdete. Ale jinak to funguje OK.
Zrada číslo tři spočívá v tom, že mi nějak nefunguje REDIRECT nebo DNAT se změnou portu. Napřed to jede, ale po několika hodinách až dnech to začne zahazovat všechny takto změněné packety. Teď jsem vyměnil jádro, takže to bude možná lepší.
Zrada číslo čtyři spočívá v tom, že velký patch routerboardu mění síťový stack tak, že pokud budete chtít přidat "class" pro HTB, tak to píše "RTNETLINK answers: Invalid argument". Řešení bude dále v návodu.
Pátá zrada tkví ve velikosti binárek. Jednoduše jsou zhruba o 40% větší, než u i386, takže bacha na to. Doporučuju rozhodně nejít pod 512MB u CF karty. Základ Debianu s kompilátorem má asi 180MB, pro i386 bych se pohyboval někde okolo 125MB.
Především je routerboard celkem rychlý. Umí routovat přes firewall (50 pravidel neoptimalizovaně) 20Mbit při zátěži CPU okolo 30%, takže rezervy tam jsou ještě veliké. Pak tam taky běží kompletní Debian pro mipsel, žádné ořezané něco. Pak bych si pochválil PoE, nízkou spotřebu, spolehlivost, cenu (5000 včetně CF karty a deklíku), rozměry... Celkově spokojenost, až na jádro a patch od Routerboardu. Celkově můžu doporučit.
Vycházím z referenčních image, které se dají stáhnout ze stránek routerboardu. Je to jednoduché a rychlé, instalaci přes TFTP jsem nedělal. Systém je v podstatě ready, ale je potřeba přeložit jádro, protože v image chybí moduly a jádro je zastaralé, ale při instalaci nám stačí. Pozor, v /etc/apt/sources.list je distribuce testing, což nemusí být zrovna optimální, je možno to zaměnit za "sarge", image jsou z doby, kdy byl ještě "sarge" testing.
Pak máme kompilaci jádra. Kompilace na routerboardu je pomalá, vřele doporučuju kompilovat někde vedle. Protože většina lidí nedisponuje little-endian MIPS strojem s dostatečným výkonem, bývá obvyklé shánění crosscompileru, což je kompilátor, který umožňuje kompilovat na jinou architekturu. Kompilace cross-compileru je pro lidi, co neví co s časem a baví je zkoušet donekonečna různé (nefungující) kombinace. Nerychlejší cesta k funkčnímu crosscompileru se mi jeví být přes emdebian. Fakt bych jim tímto chtěl poděkovat za odvedenou práci. Je to pro Sarge, ale v Etchovi to funguje, případným zájemcům můžu poradit, jak na to.
Perfektní stránka přímo o Routerboardu 532 je pak tady.
Tam je hlavně sekce "Prepafation of kernel", kterou tady opisovat nebudu, ale funguje to (takže taky díky), jinak se tam popisuje instalace přes TFTP od píky, my používáme referenční image. Jenom upozorňuju, že pokud používáme CF kartu, tak místo echo "root=/dev/ram0 ramdisk_size=8192" >kernel.params
píšeme echo "root=/dev/cfa2 ramdisk_size=8192" >kernel.params
, ale to je detail. Moduly jdou vytáhnout pomocí něčeho jako INSTALL_MOD_PATH=/home/wenca/routerboard/ make modules_install
. Moduly nahrát do /lib/modules, samotné jádro (soubor vmlinux) flashnem pomocí dd if=/cesta/k/vmlinux of=/dev/cfa1
. A pak už jenom držet palce a reboot
.
A nakonec problém zvaný tc. Patch Routerboardu způsobuje, že tc nefunguje dobře, mění se v něm .h soubory pro rtnetlink, takže ten debianí pak samozřejmě nemůže fungovat. Řešením je překompilovat tc znovu proti hlavičkovým souborům z patchnutého jádra. To je celkem problém, protože iproute používá hlavičky z jader 2.6 a na routerboardu je jádro 2.4.32. Já jsem stáhnul verzi iproute2-2.6-ss040702.tar.gz (samozřejmě ne napoprvé, ale asi na desátý pokus), v Makefile jsem nastavil KERNEL_INCLUDE do adresáře include od jádra, gcc jsem změnil na mipsel-linux-gcc a SUBDIRS jsem nastavil jenom na "lib tc" (ostatní nepotřebuju). Make sice končí chybou, ale tc už je v té době hotové a funguje. Stačí binárka tc, nic jiného, zkopírovat se dá třeba do /usr/local/bin. Co jsem hledal na netu, tak jsem asi první, který používá Routerboard s HTB.
Jo a nakonec si můžete stáhnout všechny moje goodies tady, teda zejména jádro, moduly a funkční tc. Rád poradím a pomůžu, klidně udělám i nějaké custom-buildy, sám jsem se s tím nazlobil dost...
Tiskni
Sdílej:
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
Zdaleka nejvetsi vyhoda mikrotiku je krome naprosto jednoduche obsluhy, zalohovani a pod. podpora nstream wifi protokolu. Nstream je proprietalni wifi protokol ktery vyzname snizuje latence a znatelne zvysuje propustnost wifi spoju, navic zlepsuje chovani vice klientu na jednom AP a pod. Mikrotik mi bezi na cca 8mi routerech a od te doby, co mam mikrotik, nevim co je restart routeru nebo spadly wifi spoj. Dalsi vychytavka, v CR bouzel nelegalni, je turbo mod. Pro paterni uziti umi mikortik dual nstreme, coz je fullduplex wifi spoj vytvoreny z dvou beznych spoju.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.