Hlavní navigace

Turris Omnia: „nerozbitný“ router pro kutily

14. 10. 2016
Doba čtení: 5 minut

Sdílet

Je to víc zařízení v jednom, říkají tvůrci routeru Turris Omnia, který se právě dostává ke svým majitelům. Uvnitř je také lecčím unikátní. Používá vlastní balíčkovací systém nebo snapshoty Btrfs.

Necelý rok poté, co byl router Turris Omnia zafinancován na Indiegogo a získal milión dolarů, se zařízení konečně dostává k přispěvatelům. Téměř všechny kusy pro přispěvatele už byly vyrobeny a v následujících dnech, nejpozději týdnech, budou distribuovány. Ani tento projekt se sice neobešel bez zpoždění, původně měly routery dorazit už na jaře, ale nějaké to zpoždění je u crowdfundovaných projektů téměř pravidlem.

Omnie je prezentována jako router pro pokročilé a/nebo ty, kterým záleží na bezpečnosti a ochraně před aktuálními hrozbami. O nich mají ve sdružení CZ.NIC dobré informace a dokážou na ně router připravit, mj. prostřednictvím automatických aktualizací. Omnie má ale i další funkce, které ospravedlňují na domácí router vysokou cenovku cca 6 tisíc korun. Zařízení lze mimochodem stále objednávat na Indiegogo.

Hodně výkonu a LED diodek

O tom, čím Omnia překonává běžné routery, na konferenci LinuxDays hovořil Michal Hrušecký. Podle něj je Omnia vlastně víc zařízení v jednom. Kromě funkce routeru totiž může fungovat také jako NAS nebo počítač pro provoz malého serveru, podobně jako třeba Raspberry Pi a spol. Koneckonců svými parametry překonává běžné, i ty dražší routery, o několik koňských délek: má dvoujádrový procesor ARM o taktu 1,6 GHz, úložiště eMMC o velikosti 8 GB a operační paměť 1–2 GB, podle zvolené varianty.

Nechci do své sítě připojovat zrovna nějakou televizi z Číny nebo PlayStation. Občas někdo přijde na návštěvu, tak mu chci dát internet, ale zase nechci, aby viděl všechny moje sítě a zároveň nechci aby na něj útočila moje chytrá televize, popisuje Hrušecký jeden z problémů zasíťované domácnosti. Řešením jsou samozřejmě virtuální sítě VLAN, které Omnia také podporuje. Můžete tak udělat jednu síť pro hosty s omezenou rychlostí, další pro různá chytrá zařízení, aby nemohla do zbytku domácí sítě, apod.

Michal Hrušecký

Při pohledu na zařízení zaujme také velké množství LED diod. Je jich 12, a co je nejdůležitější, jsou do značné míry konfigurovatelné. Dají se nastavovat pomocí nástroje Rainbow. Dá se nastavit barva, můžete si nastavit libovolný odstín. Můžete také nastavit jak moc svítí, všechny LED se dají nastavit podle jména nebo bitové masky. Diody jsou navíc napojené přímo na kernel, takže je lze použít i různé obecné utility.

V současnosti to má ale jedno omezení. Pomocí Rainbow lze nastavit barvy a pouze jednoduché stavy. Potom je tam LED konfigurátor pro LED subsystém, kde se dají nastavovat složitější věci. Tentokrát už si ale nemůžete vybrat barvu, protože ten LED subsystém kernelu barvy neumí. Uživatel si tedy musí vybrat, zda by raději barvičky, nebo zda by chtěl od diod dostávat pokročilejší informace o fungování routeru.

Router pro kutily

CZ.NIC také Omnii profiluje jako router pro nadšence nebo kutily. Předpokládali jsme, že si s tím lidi budou chtít hrát a budou to chtít rozbíjet. Proto jsme jako výchozí systém použili Btrfs, což nám umožnilo používat snapshoty, říká Hrušecký. To znamená, že když se něco pokazí, není problém vrátit se k předchozí verzi systému  k předchozímu snapshotu. Návrat k předchozímu snapshotu vždy nemusí být softwarově možný, a tak je k dispozici hardwarové tlačítko reset.

Tlačítko má mnoho funkcí a stará se o něj samostatný čip. Podle toho, jak dlouho tlačítko držíte, se spustí jiná akce, říká Hrušecký a ukazuje, jak přechod na další úrovně indikují LED diody. Pomocí jediného tlačítka reset tedy lze zvolit tyto možnosti: normální reset, návrat o snapshot zpět, reset do továrního nastavení, flash systému z USB a boot do záchranného systému. Je tak prakticky nemožné, aby uživatel router softwarově zničil a nebyl schopen to sám napravit. V nejzazším případě lze použít ještě sériovou linku.

A router pro kutily je to i proto, že k němu lze připojit různá rozšíření a použít ho pro různé věci. Adam Hořčica z bastlírny Silicon Hill na LinuxDays ukazoval projekt, kdy lze přes Omnii ovládat zásuvky a např. rozsvítit lampičku. Použili jsme vysílací modul na frekvenci 433 MHz který používá OOK (on-off keying) modulaci. Nic extra to není, na eBay se dá koupit za 20 Kč. K němu je přímo připájený SMA konektor a přišroubovaná odpovídající anténa. Modul má 5V napájení (připojené na konektor pro napájení) a jeden datový signál připojený na GPIO pin procesoru, vysvětluje Hořčica.

Dál je potřeba sehnat nějakou tu zásuvku na dálkové ovládání, zjistit jak komunikuje a signál reprodukovat přes GPIO. Trochu problém je to, že nejkratší puls, který potřebujete vyrobit, je v řádu 100 μs, což se už v user-space nedá udělat moc spolehlivě. Takže na generování je potřeba modul do jádra. Vyšli jsme z projektu rcswitch-kmod. V user-space pak běžel bashový skript, který přijímá přes rouru zprávy z konzolového MQTT klienta mosquitto_sub a ovládal zmíněný modul (přes sysfs), popisuje Hořčica softwarovou část projektu.

Aktualizace a správa snapshotů

Už víme, že Omnia má automatické aktualizace a díky Btrfs se zvládá vrátit ke starším verzím systému. Jak je to ale se správou balíčků? To vysvětloval Michal Vaner na právě probíhajícím OpenWRT Summit 2016 v Berlíně. Původně jsme chtěli použít opkg, ale ukázalo se, že nestačí. Neumí downgrade, což by se nějak dalo vyřešit, ale hlavně nedokáže přidat další balíčky během aktualizace, říká Vaner a dodává, že nejde o zrovna nejspolehlivější kus softwaru. Správci balíčků jako dpkg nebo rpm jsou pro tyto potřeby zase příliš velcí a nároční.

Nakonec se v CZ.NIC rozhodli vytvořit vlastního správce updater-ng, který je však s opkg do značné míry kompatibilní. Sdílí s ním databázi a čerpá balíčky ze standardních repozitářů OpenWrt, ale navrch přidává několik zásadních vylepšení. Jedná se např. o možnost přesouvat soubory mezi balíčky, detekci kolizí (když více balíčků sdílí jeden soubor) nebo možnost instalovat více balíčků zároveň. Pokud zařízení ztratí napájení během instalace balíčků, během následujícího zavedení se systém obnoví. Updater-ng je napsaný v C a Lue a je poměrně flexibilní a rozšiřitelný. Při troše úprav by neměl být problém použít jej i v dalších routerech.

UX DAy - tip 2

Pro správu Btrfs snapshotů se používá nástroj zvaný Schnapps, který také pochází z dílny CZ.NIC. Víceméně umožňuje si snapshoty prohlédnout, nějaké vytvořit, vrátit se k nim a dokonce je i porovnávat, říká Hrušecký. Co se týče nástrojů pro vzdálenou správu, tak Omnia nemá vlastní řešení, ale spoléhá se na známé linuxové technologie. Zařízení tedy můžete ovládat přes SSH nebo třeba UCI, pro které existuje modul. A pokud máte zájem o něco pokročilejšího, lze použít i Ansible.

A jak že může Omnia fungovat jako malý server? Celkem jednoduše, stačí použít známé kontejnery LXC a server virtualizovat. To na ostatních routerech nejde nejen kvůli nedostatku výkonu, ale hlavně kvůli kapacitě úložiště. Ve výchozím stavu sdílí RAM a CPU, ale lze to nějak omezit, říká Hrušecký. Virtualizovaný systém také používá hostitelské jádro, ale síťovku má samozřejmě vlastní.

Byl pro vás článek přínosný?

Autor článku

Bývalý redaktor serveru Root.cz, dnes produktový manažer a konzultant se zaměřením na Bitcoin a kryptoměny.