DHCP a DNS
Potřebné balíčky: dnsmasq
Nebudeme se zdržovat předmluvou a půjdeme do toho po hlavně. OpenWRT se, možná bohužel, zaměřuje pouze na dnsmasq. Jde o daemona, který je určen pro malé domácí sítě a obstarává přeposílání DNS požadavků, případně překládá názvy lokálních strojů a jako bokovku má v sobě DHCP služby. Motivace OpenWRT je jasná, v co nejméně kódu dostat co nejvíce muziky. Říkám ale bohužel, protože konfigurace OpenWRT už nepočítá s plnokrevným DNS a DHCP serverem. Pokud se pro ně rozhodneme, narušíme tím celistvost konfiguračního procesu OpenWRT, ztratíme i výhodu konfigurace přes webové rozhraní.
Pojďme si tedy přiblížit dnsmasq. Seznam podporovaných vlastností není zrovna krátký.
- Dynamické a statické DHCP pronajímání adres
- Přeposílání DNS požadavků
- Vedení lokálních DNS záznamů pro lokální stroje (A, MX, SRV, …)
- DNS cache
- BOOTP/TFTP/PXE neboli vše co je potřeba pro boot po síti
- Podpora IPv6 pro komunikaci s okolními DNS
OpenWRT si stejně jako u IP adres a WiFi generuje vše co je potřeba pro dnsmasq samo z námi vytvořeného souboru /etc/config/dhcp. Jako příklad si ukážeme trochu poupravený ten co je v systému hned po instalaci. Na většinu použití bude bohatě stačit. Jsou tu popletené názvy rozhraní. OpenWRT u parametru pro DHCP překládá názvy rozhraní, ale u parametru "list interface ne.
config dnsmasq
option domainneeded 1
option boguspriv 1
option localise_queries 1
option domain 'tresnovec.net'
option expandhosts 1
option nonegcache 0
option authoritative 1
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
list interface "eth0"
list interface "ath1"
config dhcp
option interface lan
option start 2 # první číslo adresy, odkud se má začít rozdávat
option limit 13 # počet adres o prvního číslo, které se mohou půjčit
option leasetime 12h # doba zapůjčení
config dhcp
option interface wifi2
option start 2
option limit 13
option leasetime 12h
config dhcp
option interface wifi0
option ignore 1
První sekce nastavuje parametry DNS části dnsmasq. Další dvě říkají dnsmasq, že na nich má naslouchat DHCP server a dávat adresy od 10.1.x.2 do 10.1.x.14 (viz. konfigurace IP adres v minulém díle). Poslední sekce říká, že v tomto rozhraní DHCP server naslouchat nemá. Všechny možnosti nastavení dnsmasq najdeme v jeho man stránce, ale na některé se podíváme.
- domainneeded – zakáže přeposílání požadavků bez domény nebo bez tečky
- boguspriv – zakáže přeposílání požadavků pro lokální IP adresy
- localise_queries – odpovědět na dotaz pomocí dat ze souboru /etc/hosts, pokud odpověď souvisí s rozhraním, ze kterého dotaz přišel
- domain – nastavení domény
- expandhosts – přidá doménu ke všem jménům v /etc/hosts
- nonegcache – cachovat i negativní odpovědi DNS serverů
- authoritative – „1“ pokud je tento DHCP server na síti jediný
- leasefile – soubor s vypůjčenými adresami naším DHCP serverem
- resolvfile – soubor s nameservery našeho poskytovatele, nebo konfigurační soubor resolveru
- interface – rozhraní na kterém naslouchá DNS server, každé na jeden řádek
Jak jsem již zmínil výše, nezapomeňte dát do parametru „list interface“ skutečný název rozhraní a do parametru „interface“ v dhcp sekci název rozhraní z /etc/config/network.
Když je vše hotové, restartujeme dnsmasq.
$ /etc/init.d/dnsmasq restart
A jestli jsme udělali vše jak jsme měli, mělo by vše fungovat.
Web interface
Potřebné balíčky: haserl, webif-applications, webif-lang-cs, webif
Přes webové rozhraní nebo-li Webif lze nastavit prakticky vše co je součástí konfigurace OpenWRT, tedy vše co najdeme v adresáři /etc/config. U některých věcí se ale bez ručního zásahu do konfiguračního souboru neobejdeme. Jde třeba o nastavení DHCP, které nelze přidat, pouze mu upravovat parametry. Podobných nedostatků je tu více. Webif má hlavní menu, pod kterým se zobrazuje podmenu. Na první pohled nejde zrovna o uživatelsky přívětivé prostředí. Druhý pohled to jen potvrzuje. Jde převážně o nepřehledné přidávání různých záznamů, např pro firewall. Webif pochází z projektu X-Wrt, které si klade za úkol vytvořit něco více uživatelsky přívětivé pro uživatele OpenWRT.
Co tedy webové rozhraní nabízí. Krom konfigurační stránky to je i stránka statistická. Webif dokáže online zobrazit aktuální zátěž procesoru, přenos dat na jednotlivých interfacech, případně statistiky z vnstat. Procesor a přenesená zobrazuje ve grafech.
Další záložka je informační. Zobrazuje informace o systému. Krom paměti, připojených zařízení se dozvíme i informace o připojených zařízeních přes USB, obsah conntrack tabulky, statistiky QoS, výsledky scanování okolních WiFi sítí atd. Je tu i záložka diagnostika, kde lze spustit nástroje jako ping a tracepath, a to jak pro IPv4, tak IPv6.
Záložka s logy nám ukáže, co se v OpenWRT děje, a taky nám umožní přesměrovat syslog zprávy mimo router.
V záložce System se nastavuje všechno co se týká samotného operačního systému, jako je heslo, spouštění skript, Cron, jaké služby se mají spustit po startu atd. Krom toho je tu možné nainstalovat nové balíčky případně zálohovat celé nastavení. Jde asi o nejpropracovanější nabídku celého Webif.
To nejdůležitější se nachází v záložce Network. Zde je možné nastavit statické routování, IP adresy, QoS, WiFi karty, firewall atd. Krom toho je tu možné probouzet počítače v síti pomoci Wake on Lan a upravit síťové parametry jádra OpenWRT jako je ICMP timeout, maximální množství spojení a další.
Firewall
Jelikož je firewall velmi důležitou součástí naší sítě, musíme se postarat i o něj. Naneštěstí je standardní provedení firewallu velmi velmi nedokumentované a komplikované, takže si o něm povíme v příštích dílech. Věřte mi, že je mnohem jednodušší napsat si firewall vlastními silami s iptables. Dostanete mnohem spolehlivější a přehlednější výsledek. Zvlášť pokud chcete vytvořit jen jednoduchý firewall. Abychom ale aspoň trochu drželi basu, řekneme si, jak dostat vlastní pravidla zapsaná pomocí iptables do standardní konfigurace OpenWRT.
Takto může vypadat jednoduchý konfigurační soubor firewallu, ve kterém spustíme vlastní skript pro vytváření pravidel:
config defaults
option input ACCEPT
option output ACCEPT
option forward ACCEPT
config include
option path /etc/firewall.user
Po startu firewallu přes init skript /etc/init.d/firewall, se nám v systému objeví krom výchozích i další chainy. Zatím si jich všímat nebudeme a vytvoříme si pravidla podle vlastního uvážení v souboru /etc/firewall.user.
Závěr
Čím hlouběji se do OpenWRT dostáváme, tím víc narážíme na překážky s dokumentací a v příštích dílech to nebude lepší, naopak. Původně jsem chtěl mít součástí tohoto dílu i povídání o firewallu, ale nakonec se ukázalo řešení OpenWRT natolik komplikované, že se při jeho používání nevyhneme ani zásahům do init skriptu. Naštěstí to je jediná komponenta, která se vývojářům takto hodně nepovedla. Jde o komplexní úkol a nemůžeme jim to mít za zlé.