Hlavní navigace

OpenWRT: konfigurace

29. 7. 2009
Doba čtení: 8 minut

Sdílet

OpenWRT máme zkompilovaný a nainstalovaný z dřívějších dílů našeho seriálu, proto nastala ta správná chvíle pustit se do jeho konfigurace. Ukážeme si základní nastavení WiFi karet a samotné síťové vrstvy. Také si řekneme, na co si dát pozor a představíme si způsob, jakým se OpenWRT konfiguruje.

Operační systém OpenWRT má ke konfiguraci trochu jiný přístup než ostatní distribuce. Motivace je jasná, dostat všechno potřebné do několika malých konfiguračních souborů, ze kterých se budou generovat ty originální. Krom toho, že je pak docela jednoduché všechno nastavit, není problém naprogramovat webové rozhraní, ve kterém lze všechno pohodlně naklikat.

Konfigurační soubory jsou uloženy v /etc/config. Obsah tohoto adresáře je přebírán init skripty, které podle jednotlivých konfiguračních souborů buď zavolají správné nástroje se správnými parametry nebo vygenerují konfigurační soubor pro program nebo daemona, který se o to postará sám.

Linková vrstva aneb WiFi karty

Začneme od podlahy a podíváme se na nastavení WiFi karet. To najdeme v souboru /etc/config/wi­reless. Tady si musíme uvědomit co za WiFi kartu máme k RouterBoardu (nebo čemukoli jinému) připojenou. V mém případě jde o CM9 s Atheros chipsetem, takže se budu bavit spíše o něm. Základní nastavení, které init skripty provádějí přes utilitku iwconfig, by ale mělo být stejné u všech karet. Stejně tak by neměl být problém se vším, co se týká wpa_supplicantu a hostapd. Rozdíly jsou hlavně při konfiguraci speciálních vlastností jako je třeba ACK, mód šifrování, 802.11abg standardy atd. Tohle všechno a mnohem víc se u karet dělá pomocí speciálních volání s utilitkou iwpriv, případně specializovaných programů. Tyto volání se liší podle ovladače, takže pokud něco takto nastavíte, u jiného chipsetu to bude většinou jinak. Naštěstí to hlavní OpenWRT vcelku úspěšně sjednocuje pod jednu střechu.

Atheros karty se liší také vytvářením síťového zařízení v Linuxu. Když nic nenastavíme, máme po startu v systému rozhraní wifi0, případně se liší v čísle. Tohle samo o sobě nelze použít pro nějakou konfiguraci. Dalo by se označit za rozhraní reprezentující fyzický hardware. Na něm ale můžeme vytvořit virtuální zařízení, třeba ath0, se kterým lze už pracovat. Není důležité jak, protože to OpenWRT udělá za nás. Je ale důležité vědět, že to tak funguje.

Podívejme se tedy na nějakou základní konfiguraci:

config wifi-device  wifi0
        option type     atheros # broadcom, atheros, mac80211
        option channel  auto

config wifi-iface
        option device   wifi0 # na kterém rozhraní bude toto vytvořeno
        option mode     sta # ap, sta, adhoc, monitor nebo wds
        option ssid     TRESNOVECNETL2
        option encryption psk
        option key      "XXXXXXXX"

config wifi-device  wifi1
        option type     atheros
    option channel  6
        option hwmode   "g" # a/b/g, některé návody uvádí 11a, 11b a 11g

config wifi-iface
        option device   wifi1
        option mode     ap
        option ssid     HOUSTINET
        option encryption psk
        option key      "XXXXXXXX" 

Na první pohled vypadá toto nastavení děsivě, ale vysvětlíme si ho.

Krabička, ze které pochází tento konfigurační soubor, má v sobě 2 WiFi karty. Jedna se připojuje na 5 GHz AP a druhá dělá sama AP na 2,4 GHz. Soubor je rozdělen do čtyř sekcí a každá z nich nastavuje jedno zařízení. Sekce wifi-device řeší fyzické zařízení a všechny jeho parametry. Sekce wifi-iface vytvoří virtuální zařízení, se kterým lze již komunikovat s okolím. Zařízení budou mít označení ath0, ath1 atd. podle toho, v jakém pořadí je do konfiguračního souboru napíšeme.

Další volby

Krom uvedených voleb máme na možnost nastavit i několik dalších.

Sekce wifi-device:

option txpower   Výstupní výkon v dBm
option distance  Vzdálenost v m
option country   nastavení země, cz nebo také us, de atd. 

Sekce wifi-iface:

option hidden   0 nebo 1 - přestane vysílat ssid (v AP módu)
option isolate  0 nebo 1 - povolení nebo zakázání komunikace připojených klientů mezi sebou 

Šifrování

I když někteří správci nevidí implementaci šifrování na úrovni linkové vrstvy moc pozitivně, OpenWRT samozřejmě musí jít s dobou a podporu obsahuje. Krom klasického WEP, WPA(2)-PSK máme možnost autentizace i proti RADIUS serveru. Stejně tak je možné na OpenWRT RADIUS server vytvořit, ale to by bylo na samostatný článek.

I když to z konfiguračního souboru moc patrné není, je velký rozdíl mezi WPA u AP módu a WPA u STA módu. Pro každé mód se používá jiný daemon. V AP módu to je hostapd, který zpracovává klíče a povídá si o nich s klienty. Ve STA módu se zase používá wpa_supplicant, který si krom jiného umí povídat s hostapd. Do této dvojky ještě vstupuje hostapd-mini. Všechny rozdíly mezi jednotlivými módy naštěstí OpenWRT smazává.

Flash paměť na zařízeních, kam OpenWRT směřuje, není velká. Často se musíme spokojit s 4 MB. Tomu podléhá i celý systém a také hostapd, kde si můžeme vybrat mezi klasickým a hostapd-mini, které podporuje pouze WPA(2)-PSK. V běžném domácím použití WPA-PSK stačí, takže nemá smysl tam cpát velké hostapd. Ve školách a různých firmách budou priority jinde.

Vraťme se zpátky ke konfiguraci. Nejlepší bude ukázat si příklady ke všem případům.

WEP:

config wifi-iface
    option device   wifi1
    option mode     ap
    option ssid     HOUSTINET
    option encryption wep
    option key1      "795161413d7a343a5c336e667d"
    option key2      "66675426593b6c453a56217346"
    option key3      "4f65384562296a2a74334b7237"
    option key4      "6269476c5353673c2d4935582f" 

WPA-PSK (WPA2-PSK):

config wifi-iface
    option device   wifi1
    option mode     ap
    option ssid     HOUSTINET
    option encryption psk # nebo psk2
    option key      "XXX" 

WPA (WPA2):

config wifi-iface
    option device   wifi1
    option mode     ap
    option ssid     HOUSTINET
    option encryption wpa # nebo wpa2
    option server   10.0.0.1
    option port     1812 # nepovinný parametr, výchozí hodnota je 1812 

OpenWRT nezůstává pozadu ani u 802.1×:

config wifi-iface
    option device   wifi1
    option mode     ap
    option ssid     HOUSTINET
    option eap_type       peap
    option ca_cert        "/cestka/k/certifikátu"
    option auth           MSCHAPV2
    option identity       uživatelské_jméno
    option password       heslo 

Síťová vrstva

Konfigurační soubor síťové vrstvy je na tom strukturou podobně jako v předchozím případě. Každopádně není tolik komplikovaný. Vše co potřebujeme najdeme v /etc/config/net­work. Příklad může vypadat třeba takto:

config 'interface' 'loopback'
    option 'ifname' 'lo'
    option 'proto' 'static'
    option 'ipaddr' '127.0.0.1'
    option 'netmask' '255.0.0.0'

config 'interface' 'lan'
    option 'ifname' 'eth0'
    option 'proto' 'static'
    option 'ipaddr' '10.1.4.1'
    option 'netmask' '255.255.255.0'

config 'interface' 'wifi1'
    option 'ifname' 'ath0'
    option 'proto' 'static'
    option 'ipaddr' '10.1.5.232'
    option 'netmask' '255.255.255.0'
    option 'gateway' '10.1.5.1'
    option 'dns' '10.0.0.1'

config 'interface' 'wifi2'
    option 'ifname' 'ath1'
    option 'proto' 'static'
    option 'ipaddr' '10.1.3.1'
    option 'netmask' '255.255.255.240' 

V příkladu vidíme čtyři rozhraní. První je loopback a ten by měl být nastaven už „od výroby“. Druhé rozhraní má název lan a nastavuje adresy pro síť, která je na kabelu. Třetí rozhraní vede do internetu a je to jedna z WiFi karet, které jsme konfigurovali výše. Všimneme si názvu rozhraní, které je ath0. Jde o již zmiňované virtuální rozhraní. Číslo čtyři je lokální WiFi síť.

U jednotlivých sekcí si všimněte, že jim musíme přidělit nějaké jméno. Takže síť na eth0 dostala název lan, WiFinka do Internetu má název wifi1 atd. Je to důležité u další konfigurace ať už firewallu nebo třeba jen statického routování, které si ukážeme v dalším odstavci.

U wifi1 najdeme parametr gateway, pomocí kterého se nastavuje výchozí brána. To se hodí, když nemáme k dispozici dynamické routování. To určitě nebude případ většiny sítí, takže ještě budeme potřebovat vědět, jak nastavit statické routování.

config route foo
    option interface lan
    option target 1.1.1.0
    option netmask 255.255.255.0
    option gateway 192.168.1.1 

Tenhle příklad je vybrán z oficiální dokumentace. Co se týče nastavení sítě, tak to je tam zrovna popsáno dobře. Všimněme si, že i routa dostává svůj název. Pak používáme název sekce z minulého příkladu a dále je to již podobné jako u ruční konfigurace. Parametrem target určíme síť ze které budou pakety odesílány podle tohoto pravidla. Parametr netmask je jasný a gateway je směr, kterým budou pakety odcházet. Když už se někdo chce pustit do podobných šíleností se statickým routingem, určitě se mu bude hodit nástroj ipcalc. Podobnou práci odvede i whatmask, který mi přijde trochu přehlednější.

Ne vždy budeme adresu nastavovat staticky, takže si ukážeme, jak by to vypadlo, kdyby se rozhraní eth0 konfigurovalo přes DHCP:

config 'interface' 'lan'
    option 'ifname' 'eth0'
    option 'proto' 'dhcp' 

Někdy chceme mít WiFi a lokální síť v bridgi. I to je možné:

CS24_early

config 'interface' 'lan'
    option 'type' 'bridge'
    option 'ifname' 'eth0 ath1'
    option 'proto' 'static'
    option 'ipaddr' '10.1.4.1'
    option 'netmask' '255.255.255.0' 

Když je vše nastaveno

Některé distribuce nastavují síť tak dlouho, že se člověk až diví co se pod kapotou děje. OpenWRT je v tomhle světlá výjimka, a když resetujete síť, budeme ji mít nahozenou během několik vteřin včetně všech wpa_supplicantů a hostapd daemonů. Každopádně pokud chceme, aby se naše nová konfigurace uplatnila, nesmíme zapomenout síť resetovat.

$ /etc/init.d/network restart 

Závěr

I když měl být tento díl poslední, rozhodl jsem se seriál ještě prodloužit. OpenWRT je na svůj úkol velmi dobře připravené a byla by škoda si neříct o některých mnohem zajímavějších funkcích, než byly popsány dnes. Není pro něj problém vcelku pohodlně nastavit shaping a QOS, stejně tak nesmíme zapomínat na nastavení firewallu nebo daemona dnsmasq. To, co nesmíme vynechat vůbec, to je webové rozhraní, které pochází z projektu X-Wrt. K hodně věcem bohužel chybí dokumentace, ale snad to pro nás nebude taková překážka. Některé krabičky, včetně mnou používané RB433, v sobě mají hardwarový switch. Ten je často konfigurovatelný a nepovědět si o něm by také byla škoda. OpenWRT se hodně věnuje i firma Ubiquiti Networks, která pořádá soutěž ve které je 200 000 USD a sama dává OpenWRT na některé svoje zařízení. Je tedy možné, že v budoucnu se s ním budeme stýkat čím dál víc i v předinstalované formě na běžně dostupném hardwaru.

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

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.