Hlavní navigace

OpenWRT: DHCP, firewall a webové rozhraní

Adam Štrauch

V dalším díle seriálu o distribuci OpenWRT si ukážeme, jak nastavit DHCP a také jak vypadá webové rozhraní. To sice není nic extra, ale OpenWRT se s ním nakonfigurovat dá a některým uživatelům třeba bude vyhovovat víc. Ani k jednomu není moc dokumentace, takže některé věci si musíme domýšlet nebo hledat jinde.

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/net­work.

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.

openwrt-mainpng

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.

openwrt-cpu

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.

openwrt-ping

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.

openwrt-logy

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 nejpropraco­vanější nabídku celého Webif.

openwrt-system-services

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ší.

openwrt-scan

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/fi­rewall, 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é.

Našli jste v článku chybu?

18. 8. 2009 21:14

Škoda, na ten firewall som sa dosť tešil, teda na spôsob konfigurácie ala *wrt. Svojho času som s tým dosť bojoval a chcel som porovnať svoje zistenia, prípadne sa inšpirovať…

FW v mojom xwrt má kopu prázdnych reťazí, niektorými som sa prelúskal a ich zmysel som pochopil, inými nie…

18. 8. 2009 14:34

Kicker (neregistrovaný)

Trochu me zarazilo, ze autor komentuje webove rozhrani, ktere je vyvojari OpenWRT povazovane za zastarale a v novych verzich uz se ani nepouziva. Momentalne podporovane rozhrani je LuCI (http://luci.freifunk-halle.net/About). Co takhle alespon pro clanky pouzivat posledni verze?

Vitalia.cz: Vychytané vály a válečky na vánoční cukroví

Vychytané vály a válečky na vánoční cukroví

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Měšec.cz: Komu musí od ledna zvýšit mzdu?

Komu musí od ledna zvýšit mzdu?

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Měšec.cz: Stavební spoření: alternativa i pro seniory

Stavební spoření: alternativa i pro seniory

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...