AirCA8-PRO: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
 
(Není zobrazeno 26 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
 
= OpenWRT pro AirCA8-Pro =
 
= OpenWRT pro AirCA8-Pro =
Tento návod je jakožto instalovat, konfigurovat a provozovat projekt [http://openwrt.org/ OpenWRT] na zařízení s atheros čipem jako je AirCA8-Pro, Ovislink 5000AP, apod.
+
Tento návod je jakožto instalovat, konfigurovat a provozovat projekt [http://openwrt.org/ OpenWRT] na zařízení s Atheros čipem jako je AirCA8-Pro, Ovislink 5000AP, apod.
 
== Proč OpenWRT? ==
 
== Proč OpenWRT? ==
 
* Lepší ovládání výkonu zařízení.
 
* Lepší ovládání výkonu zařízení.
Řádek 6: Řádek 6:
 
* Staví zařízení na jinou úroveň, lze na něm poté provozovat cokoli na co jsou zkompilované balíčky, grafy, web server, dhcp server, scripty a mnoho dalšího.
 
* Staví zařízení na jinou úroveň, lze na něm poté provozovat cokoli na co jsou zkompilované balíčky, grafy, web server, dhcp server, scripty a mnoho dalšího.
 
== Instalace ==
 
== Instalace ==
*1. Stáhnu image [http://openwrt.dlabac.net/snapshots/atheros/openwrt-atheros-2.4-jffs2-64k-r88-zImage.bin%20 OpenWRT pro AirCA8-Pro].
+
*1. Stáhnu image [http://openwrt.dlabac.net/snapshots/atheros/openwrt-atheros-2.4-jffs2-64k-r88-zImage.bin%20 OpenWRT pro AirCA8-Pro]. nebo [http://lide.hkfree.org/~locutus/.airca/openwrt-atheros-2.4-jffs2-64k-r88-zImage.bin OpenWRT pro AirCA8-Pro]
 
*2. Přihlásím se na webové rozhraní AirCAy a upgraduju firmware, system tools > firmware upgrade, pomocí browse najdu image z předchzího kroku
 
*2. Přihlásím se na webové rozhraní AirCAy a upgraduju firmware, system tools > firmware upgrade, pomocí browse najdu image z předchzího kroku
 
*3. stisknu upgradu, čekám než se firmware do zařízení nahraje, '''během nahrávání v žádném případě AirCAu neodpojuji od napájení!'''. Pokud v tomto kroku zařízení zahlásí, že je soubor chybný, je třeba ještě následující:
 
*3. stisknu upgradu, čekám než se firmware do zařízení nahraje, '''během nahrávání v žádném případě AirCAu neodpojuji od napájení!'''. Pokud v tomto kroku zařízení zahlásí, že je soubor chybný, je třeba ještě následující:
Řádek 88: Řádek 88:
 
*8. Abychom mohli fungovat na frekvenčních rozsazích použitelných v České republice, musíme ještě přidat konfigurační položku do /etc/modules.d/50-madwifi:
 
*8. Abychom mohli fungovat na frekvenčních rozsazích použitelných v České republice, musíme ještě přidat konfigurační položku do /etc/modules.d/50-madwifi:
 
  root@OpenWrt:~# vi /etc/modules.d/50-madwifi
 
  root@OpenWrt:~# vi /etc/modules.d/50-madwifi
*9. Naposlední řádek souboru přidáme: "ath_ahb countrycode=616" bez uvozovek, 616 je kod pro CR.
+
*9. Naposlední řádek souboru přidáme: "ath_ahb countrycode=616" bez uvozovek, 616 je kod pro CR. V '''kernelu 2.6''' už řádek s ath_ahb je.
 
  wlan
 
  wlan
 
  wlan_scan_ap
 
  wlan_scan_ap
Řádek 166: Řádek 166:
 
'''Použití NATu vždy konzultujte se svým spávcem!'''
 
'''Použití NATu vždy konzultujte se svým spávcem!'''
  
V adresáři /etc/init.d/ vytvoříme script, který budeme spouštět při zaždém spuštění zařízení:
+
V adresáři /etc/init.d/ vytvoříme script, který budeme spouštět při zaždém spuštění zařízení. Příkazem ''chmod +x'' učiníme skript spustitelným.
 
  root@OpenWrt:~# vi /etc/init.d/srcnat
 
  root@OpenWrt:~# vi /etc/init.d/srcnat
 
Jeho obsahem bude:
 
Jeho obsahem bude:
Řádek 183: Řádek 183:
 
  lrwxrwxrwx    1 root    root          18 Jul 10 23:55 S60srcnat -> /etc/init.d/srcnat
 
  lrwxrwxrwx    1 root    root          18 Jul 10 23:55 S60srcnat -> /etc/init.d/srcnat
 
  root@OpenWrt:/etc/rc.d#
 
  root@OpenWrt:/etc/rc.d#
 +
==== VIP + nonVIP ====
 +
Zde budiž vysvětleno jakožto nastavit veřejnou a neveřejnou adresu na AirCae při použití NATu.
 +
Provedeme tyto příkazy, nebo je dáme do startovacího scriptu:
 +
*1) Smazneme ip nastavenou v /etc/config/network na rozhrani ath0 (wan interface), timto jednoduse smazeme vsechny (vnejsi) routy
 +
ip addr del 89.248.24x.xxx dev ath0
 +
*2) Přidáme interface ath0 naši veřejnou adresu
 +
ip address add 89.248.24x.xxx/32 dev ath0 #dosadime nasi '''VIP'''
 +
*3) Přidáme interface ath0 naši neveřejnou adresu
 +
ip address add 10.107.xxx.xxx/xx brd + dev ath0 #dosadime nasi '''NE'''verejnou adresu a jeji masku
 +
*4) Vytvořime směrování, které všechno mířící do českých freenetů pošle naší neveřejnou adresou, za ''via'' dosadime branu pro nasi '''NE'''verejnou adresu a za ''src'' nasi '''NE'''verejnou adresu
 +
ip route add 10.0.0.0/8 dev ath0 via 10.107.xxx.xxx src 10.107.xxx.xxx
 +
*5) Vytvořime směrování, které všechno mířící do VIP hkfree pošle naší neveřejnou adresou, za ''via'' dosadime branu pro nasi '''NE'''verejnou adresu a za ''src'' nasi '''NE'''verejnou adresu, stejně jako v předchozím případě
 +
ip route add 89.248.240.0/20 dev ath0 via 10.107.xxx.xxx src 10.107.xxx.xxx
 +
*6) A ještě směrování všude jinde než v předchozích dvou případech (do internetu), za ''via'' dosadime branu pro nasi '''NE'''verejnou adresu a za ''src'' nasi '''V'''erejnou adresu
 +
ip route add default dev ath0 via 10.107.xxx.xxx src 89.248.24x.xxx
 +
*7) Přidáme pravidla natu aby se překládalo dle rout, do obou příkazů doplnit '''NE'''veřejnou adresu
 +
iptables -t nat -I POSTROUTING -d 10.0.0.0/8 -o ath0 -j SNAT --to 10.107.xxx.xxx
 +
iptables -t nat -I POSTROUTING -d 89.248.240.0/20 -o ath0 -j SNAT --to 10.107.xxx.xxx
 +
Že to skutečně funguje můžeme zjistit na [http://ukazip.hkfree.org ukazip.hkfree.org] (mělo by vypsat neveřejnou) a na [http://www.showmyip.com www.showmyip.com] (mělo by vypsat veřejnou)
 +
 +
Ukázka celého konfiguráku:
 +
ip address add 89.248.241.71/32 dev ath0
 +
ip address add 10.107.35.89/26 brd + dev ath0
 +
ip route add 10.0.0.0/8 dev ath0 via 10.107.35.65 src 10.107.35.89
 +
ip route add 89.248.240.0/20 dev ath0 via 10.107.35.65 src 10.107.35.89
 +
ip route add default dev ath0 via 10.107.35.65 src 89.248.241.71
 +
iptables -t nat -I POSTROUTING -d 10.0.0.0/8 -o ath0 -j SNAT --to 10.107.35.89
 +
iptables -t nat -I POSTROUTING -d 89.248.240.0/20 -o ath0 -j SNAT --to 10.107.35.89
  
 
=== Bridge ===
 
=== Bridge ===
 +
<span style=color:red>Bridge v uvedené verzi OpenWRT s kernelem 2.4.34 nefunguje.</span>
 +
 +
Resp. funguje pouze jako bridge a ne jako bezdrátový bridge s překladem MAC adres. K tomu je potřeba podpora ''ebtables'' v jádře, která však v této verzi není kvůli stabilitě. Řešením může být instalace OpenWRT s jádrem verze 2.6, kde je již podpora ''ebtables'' přidána ve formě jaderného modulu.
 +
 
*1. Před nastavením bridge musí být nainstalován balíček "bridge", viz instalace balíčků.
 
*1. Před nastavením bridge musí být nainstalován balíček "bridge", viz instalace balíčků.
 
*2. Vytvořím bridge, pojmenuji ho "br0":
 
*2. Vytvořím bridge, pojmenuji ho "br0":
Řádek 244: Řádek 276:
 
Balíčky zkompilované pro MIPS architekturu AirCAy najdeme zde: [http://openwrt.dlabac.net/snapshots/atheros/packages/ Packages]
 
Balíčky zkompilované pro MIPS architekturu AirCAy najdeme zde: [http://openwrt.dlabac.net/snapshots/atheros/packages/ Packages]
 
=== Instalace balíčků ===
 
=== Instalace balíčků ===
*1. Pro jistotu zjistím zda mám na zařízení dostatek paměti, zajímá mě hodnota u /dev/root (flash paměť):
+
*1. Pro jistotu zjistím zda mám na zařízení dostatek paměti, zajímá mě hodnota "Available" u /dev/root (flash paměť):
 
  root@OpenWrt:~# df -h
 
  root@OpenWrt:~# df -h
 
  Filesystem                Size      Used Available Use% Mounted on
 
  Filesystem                Size      Used Available Use% Mounted on
Řádek 250: Řádek 282:
 
  none                    14.9M    376.0k    14.6M  2% /tmp
 
  none                    14.9M    376.0k    14.6M  2% /tmp
 
  root@OpenWrt:~#
 
  root@OpenWrt:~#
''Ještě tam trochu místa je (256kB)''
+
''Ještě tam trochu místa je (256 kB). Pokud by jste začali instalovat balíček, který se spolu s potřebnými knihovnami nevejde do paměti, balíček se nenainstaluje kompletně a nepůjde tedy ani odinstalovat. Již nainstalované knihovny bude třeba odstranit ručně.''
 
*2. Stáhnu balíček který chci instalovat, ukládám ho do adresáře /tmp který je přimountovaný k RAM paměti AirCAy, kapacita je cca 14.9MB, ovšem po rebootu její obsah zmizí! (pro ukázku balíček br2684ctl).
 
*2. Stáhnu balíček který chci instalovat, ukládám ho do adresáře /tmp který je přimountovaný k RAM paměti AirCAy, kapacita je cca 14.9MB, ovšem po rebootu její obsah zmizí! (pro ukázku balíček br2684ctl).
 
  root@OpenWrt:~# cd /tmp
 
  root@OpenWrt:~# cd /tmp
Řádek 257: Řádek 289:
 
  br2684ctl_2.4.1-1_mi 100% |**********************************************************************************************************|  4869    --:--:-- ETA
 
  br2684ctl_2.4.1-1_mi 100% |**********************************************************************************************************|  4869    --:--:-- ETA
 
  root@OpenWrt:~#
 
  root@OpenWrt:~#
*3a. OpenWRT používá balíčkovací systém ipk, zvolím tedy parametr install a název staženého balíčku, více o možnostech viz manuálová stránka ipkg (ipkg --help).
+
*3a. OpenWRT používá balíčkovací systém ipkg, zvolím tedy parametr install a název staženého balíčku, více o možnostech viz manuálová stránka ipkg (ipkg --help).
 
  root@OpenWrt:~# ipkg install br2684ctl_2.4.1-1_mips.ipk
 
  root@OpenWrt:~# ipkg install br2684ctl_2.4.1-1_mips.ipk
 
  Installing br2684ctl (2.4.1-1) to root...
 
  Installing br2684ctl (2.4.1-1) to root...
Řádek 266: Řádek 298:
 
  Done.
 
  Done.
 
  root@OpenWrt:~#
 
  root@OpenWrt:~#
 +
 +
'''Výše uvedený postup (3a) není doporučeným postupem pro balíčky z repozitáře.''' Jak získat seznam všech balíčků v repozitáři je uvedeno níže.
 +
 +
''Výše uvedený postup je vhodné aplikovat pouze tehdy, není-li požadovaný balíček v repozitáři, ale nachází se někde jinde na webu, např. na stránkách OpenWRT.''
 +
 
*3b. Pokud znám název balíčku, nemusím ani provádět bod 2. ipkg si balíček stáhne sám:
 
*3b. Pokud znám název balíčku, nemusím ani provádět bod 2. ipkg si balíček stáhne sám:
 
  root@OpenWrt:~# ipkg install br2684ctl
 
  root@OpenWrt:~# ipkg install br2684ctl
Řádek 273: Řádek 310:
 
  Done.
 
  Done.
 
  root@OpenWrt:~#
 
  root@OpenWrt:~#
 +
 +
'''Výše uvedený postup (3b) je jednoznačně doporučeným postupem pro balíčky z repozitáře.'''
 +
 
''Některé balíčky jsou závislé na určitých knihovnách, ty se většinou pomocí závislostí stáhnou sami.''
 
''Některé balíčky jsou závislé na určitých knihovnách, ty se většinou pomocí závislostí stáhnou sami.''
  
Řádek 284: Řádek 324:
  
 
=== Další užitečné parametry ipkg ===
 
=== Další užitečné parametry ipkg ===
* list - vypíše všechny dostupné balíčky, seznam se bere z web adresy zapsané v /etc/ipkg.conf:
+
* list - vypíše všechny dostupné balíčky v repozitáři, seznam se bere z web adresy zapsané v /etc/ipkg.conf:
 
  root@OpenWrt:~# cat /etc/ipkg.conf
 
  root@OpenWrt:~# cat /etc/ipkg.conf
 
  src snapshots http://openwrt.dlabac.net/snapshots/atheros/packages
 
  src snapshots http://openwrt.dlabac.net/snapshots/atheros/packages
Řádek 290: Řádek 330:
 
  dest ram /tmp
 
  dest ram /tmp
 
  root@OpenWrt:~#
 
  root@OpenWrt:~#
 +
* update - provede aktualizaci seznamu balíčků v repozitáři
 
* list_installed - vypíše všechny balíčky, které jsou v zařízení již nainstalované
 
* list_installed - vypíše všechny balíčky, které jsou v zařízení již nainstalované
 
* info - informace o balíčku:
 
* info - informace o balíčku:
Řádek 309: Řádek 350:
 
  root@OpenWrt:~#
 
  root@OpenWrt:~#
 
* download - stáhne daný balíček do současného adresáře, píše se jméno balíčku nikoli název souboru s balíčkem, to samé jako wget cesta_k_balíčku z předchozí části o instalaci
 
* download - stáhne daný balíček do současného adresáře, píše se jméno balíčku nikoli název souboru s balíčkem, to samé jako wget cesta_k_balíčku z předchozí části o instalaci
 +
* upgrade - provede aktualizaci všech balíčků, které se v repozitáři nachází v novější verzi. Vhodné je provést před tímto krokem aktualizaci seznamu balíčků.
 +
 
== Nahrání firmware z OpenWRT ==
 
== Nahrání firmware z OpenWRT ==
 
Pokud chci do zařízení vrátit např. původní firmware, nebo jiný OpenWRT, postupuji následovně:
 
Pokud chci do zařízení vrátit např. původní firmware, nebo jiný OpenWRT, postupuji následovně:
Řádek 337: Řádek 380:
  
 
== Seriový kabel ==
 
== Seriový kabel ==
Pokud se stalo to, že AirCA z nějakého důvodu nefunguje a postup z předchozí kapitoly nepomáhá, je třeba AirCAu připojit seriovým rozhraním [http://atheros.openwrt.net/trac.cgi/wiki/SeriovaKonzole Seriová konzole], pokud rozhraní nemáte můžete kontaktovat autora návodu: [[Uživatel:Locutus]].
+
Pokud se stalo to, že AirCA z nějakého důvodu nefunguje a postup z předchozí kapitoly nepomáhá, je třeba AirCAu připojit seriovým rozhraním [http://lide.hkfree.org/~locutus/.airca/SeriovaKonzole-OpenWrtAtherosProject-Trac.htm Seriová konzole].
 
*1. Připravím si vše do takového stavu jak je popsáno v kapitole [http://wiki.hkfree.org/AirCA8-PRO#.C5.A0patn.C3.A9_nahr.C3.A1n.C3.AD_firmware Špatné nahrání firmware].
 
*1. Připravím si vše do takového stavu jak je popsáno v kapitole [http://wiki.hkfree.org/AirCA8-PRO#.C5.A0patn.C3.A9_nahr.C3.A1n.C3.AD_firmware Špatné nahrání firmware].
*2. Nakonfiguruji si Hyperterminál nebo Minicon na následující hodnoty: přenosová rychlost 115200 baudů, 8 datových bitů, žádná parita a 1 stop bit.
+
*2. Nakonfiguruji si Hyperterminál nebo Minicon na následující hodnoty: přenosová rychlost 115200 baudů, 8 datových bitů, žádná parita a 1 stop bit, hardware řízení toku.
 
*3. Propojím AirCAu a Počítač seriovou konzolí.
 
*3. Propojím AirCAu a Počítač seriovou konzolí.
 
*4. Připojím AirCAu k napájení, asi po 2s by měla vypsat toto:
 
*4. Připojím AirCAu k napájení, asi po 2s by měla vypsat toto:
Řádek 353: Řádek 396:
 
*5. Mám cca 3s abych vybral možnost za 2.
 
*5. Mám cca 3s abych vybral možnost za 2.
 
*6. AirCA by si měla stáhnou firmware z tftp, flashnout se a restartovat se.
 
*6. AirCA by si měla stáhnou firmware z tftp, flashnout se a restartovat se.
 +
 +
= Užitečný software a nastavení =
 +
 +
== P2P OpenVPN tunel ==
 +
Pokud jste v jednom místě připojeni přes HKFree pomocí AirCAy a v druhém místě přes jiného poskytovatele opět pomocí AirCAy nebo jiného zařízení s OpenWRT a chete mít na obou místech přístup k vnitřním IP adresám HKFree (potažmo NFX), je řešením vytvořit si tunel mezi zmíněnými zařízeními s OpenWRT. Jedinou podmínkou je, aby alespoň jedna strana měla veřejnou IP adresu, což u některých poskytovatelů může být problém, proto uvažujme veřejnou IP adresu od HKFree. Je samozřejmě možné připojit se k OpenVPN serveru HKFree, ale dále uvedený postup umožní zpřístupnit i druhé zařízení, které je schované za NATem, pomocí forwardování portů. Uvedený tunel prochází i skrz NAT, kde jedinou podmínkou je, aby NAT nepřekládal vnitřní port na jiný. Např. pokud zařízení za NATem s OpenWRT ve funkci jednoho konce tunelu bude provozovat OpenVPN na portu 50001, musí být i na vnější straně NATu přeložen na port 50001.
 +
*1. Nainstalujeme si balíček ''openvpn''.
 +
root@OpenWrt:~# ipkg install openvpn
 +
Díky závislostem se nainstalují i další balíčky potřebné pro běh OpenVPN.
 +
*2. Vygenerujeme si na jedné straně tunelu šifrovací klíč, kterým bude symetricky šifrována komunikace v tunelu. Klíč uložíme do souboru ''/etc/secret.key''. Klíč přeneseme i do zařízení na druhém konci tunelu.
 +
root@OpenWrt:~# openvpn --genkey --secret /etc/secret.key
 +
*3. Vytvoříme na obou zařízeních a pomocí ''vi'' upravíme soubor ''/etc/vpn.conf'', který bude obsahovat konfiguraci. Soubor bude vypadat takto:
 +
remote 213.192.60.64
 +
ifconfig 192.168.34.1 255.255.255.0
 +
port 50001
 +
proto udp
 +
dev tap0
 +
secret /etc/secret.key
 +
ping 10
 +
comp-lzo
 +
verb 1
 +
mute 10
 +
daemon
 +
user nobody
 +
group nogroup
 +
*4. Volby jsou následující (jen vybrané):
 +
**remote - IP adresa druhého konce tunelu. Pokud je druhý konec schovaný za NATem, tak veřejnou IP adresu.
 +
**ifconfig - IP adresa a maska síťového zařízení, které bude k tunelu přiřazeno.
 +
**port - port na kterém tunel pracuje
 +
**dev - síťové zařízení přiřazené k tunelu
 +
** secret - umístění šifrovacího klíče
 +
*5. Zkouška spojení
 +
V konfiguračním souboru ''/etc/vpn.conf'' zakomentujeme (přidáme ''#'' na začátek řádku) řádek s ''daemon'', abychom dostali na konzoli výpis z ''openvpn''. Jinak by se po spuštění program přesunul do pozadí a to zatím nepotřebujeme. Na obou zařízeních které budou sloužit jako konce tunelu spustíme OpenVPN pomocí příkazu ''openvpn --config /etc/vpn.conf''. Na pořadí spuštění nezáleží.
 +
root@OpenWrt:~# openvpn --config /etc/vpn.conf
 +
Mon Sep 22 16:13:41 2008 OpenVPN 2.0.9 mips-linux [SSL] [LZO] [EPOLL] built on Mar  6 2007
 +
Mon Sep 22 16:13:41 2008 WARNING: --ping should normally be used with --ping-restart or --ping-exit
 +
Mon Sep 22 16:13:41 2008 WARNING: you are using user/group/chroot without persist-key/persist-tun -- this may cause restarts to fail
 +
Mon Sep 22 16:13:41 2008 LZO compression initialized
 +
Mon Sep 22 16:13:41 2008 TUN/TAP device tap0 opened
 +
Mon Sep 22 16:13:41 2008 /sbin/ifconfig tap0 192.168.34.1 netmask 255.255.255.0 mtu 1500 broadcast 192.168.34.255
 +
Mon Sep 22 16:13:41 2008 GID set to nogroup
 +
Mon Sep 22 16:13:41 2008 UID set to nobody
 +
Mon Sep 22 16:13:41 2008 UDPv4 link local (bound): [undef]:50001
 +
Mon Sep 22 16:13:41 2008 UDPv4 link remote: 213.192.60.64:50001
 +
Mon Sep 22 16:13:41 2008 Peer Connection Initiated with 213.192.60.64:50001
 +
Mon Sep 22 16:13:42 2008 Initialization Sequence Completed
 +
Pokud na obou koncích tunelu dostaneme na konci výpisu ''Initialization Sequence Completed'' mělo by být vše v pořádku a vytvoří se síťové rozhraní ''tap0''. Rovněž se nastaví routování pro daný rozsah IP adres.
 +
 +
Pro ostrý provoz odkomentujeme v ''/etc/vpn.conf'' řádek s ''daemon''. Pokud chceme, aby se tunel ustavil vždy po startu AirCAy, je nutné vložit příkaz ''openvpn --config /etc/vpn.conf'' do starovacího skriptu. Postup jak toho dosáhnout je na této stránce již několikrát uveden.
 +
 +
== DNS a DHCP server ==
 +
Pokud chceme, aby počítače připojené k AirCAe dostaly automaticky přiřazenou adresu a zároveň byly v síti dostupné pod svými jmény, je potřebné nainstalovat DNS a DHCP server.
 +
*1. Nainstalujeme balíček ''dnsmasq'', obsahující program ''dnsmasq'', který plní úlohu DNS a DHCP serveru.
 +
root@OpenWrt:~# ipkg install dnsmasq
 +
*2. Veškerá nastavení pro ''dnsmasq'' jsou zapsána v souboru ''/etc/dnsmasq.conf''. Po nainstalování vypadá soubor ''dnsmasq.conf'' takto:
 +
# filter what we send upstream
 +
domain-needed
 +
bogus-priv
 +
filterwin2k
 +
localise-queries
 +
# allow /etc/hosts and dhcp lookups via *.lan
 +
local=/lan/
 +
domain=lan
 +
expand-hosts
 +
resolv-file=/tmp/resolv.conf.auto
 +
@ifdef dhcp_enable
 +
dhcp-range=@@start@@,@@end@@,@@netmask@@,@@lease@@
 +
dhcp-authoritative
 +
dhcp-leasefile=/tmp/dhcp.leases
 +
@endif
 +
@ifdef wan_ifname
 +
except-interface=@@wan_ifname@@
 +
@endif
 +
# use /etc/ethers for static hosts; same format as --dhcp-host
 +
# <hwaddr> <ipaddr>
 +
read-ethers
 +
# other useful options:
 +
# default route(s): dhcp-option=3,192.168.1.1,192.168.1.2
 +
#    dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2
 +
*3. Zakomentujeme (přidáním ''#'' na začátek) řádky začínající ''@''.
 +
*4. Změníme hodnotu ''resolv-file'' na ''/tmp/resolv.conf''. Můžeme zakomentovat původní řádek a nový napsat pod něj.
 +
#resolv-file=/tmp/resolv.conf.auto
 +
resolv-file=/tmp/resolv.conf
 +
*5. Na řádku obsahujícím hodnotu ''dhcp-range'' nahradíme ''@@start@@,@@end@@,@@netmask@@,@@lease@@'' takto:
 +
**@@start@@ - počátek přidělovaného rozsahu IP adres
 +
**@@end@@ - konec přidělovaného rozsahu IP adres
 +
**@@netmask@@ - přidělovaná maska
 +
**@@lease@@ - doba propůjčení adresy v sekundách
 +
Takže výsledný řádek může vypadat takto:
 +
dhcp-range=192.168.33.2,192.168.33.20,255.255.255.0,1000
 +
Kde je přidělovaný rozsah IP adres 192.168.33.2-20 s maskou 255.255.255.0 a dobou propůjčení adresy na 1000 s.
 +
*6. Na řádku obsahujícím hodnotu ''except-interface'' nahradíme ''@@wan_ifname@@'' jménem vnějšího síťového rozhraní. V našem případě ''ath0''. AirCA bude přidělovat IP jen na LAN a nikoli ven směrem k AP.
 +
except-interface=ath0
 +
*7. Na konci souboru přidáme řádky obsahující IP adresu brány a DNS serveru, které budou pomocí DHCP nastaveny. Pokud je AirCA jako NATující klient, je za adresu brány zvolena vnitřní IP adresa AirCAy a jako DNS server je možné zvolit bučto vnitřní adresu AirCAy nebo DNS servery v HKFree. V našem případě je vnitřní adresa AirCAy ''192.168.33.1''.
 +
# default route(s): dhcp-option=3,192.168.1.1,192.168.1.2
 +
dhcp-option=3,192.168.33.1
 +
#    dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2
 +
dhcp-option=6,192.168.33.1
 +
*8. Nakonec vytvoříme symbolický odkaz ''S51dnsmasq'' v adresáři ''/etc/rc.d/'' na soubor ''/etc/init.d/dnsmasq''.
 +
root@OpenWrt:~# ln -s /etc/init.d/dnsmasq /etc/rc.d/S51dnsmasq
 +
 +
== NTP klient ==
 +
[http://cs.wikipedia.org/wiki/Network_Time_Protocol NTP] slouží k přesnému nastavení času za pomoci NTP serveru. Po připojení napájení nebo po restartu, je na AirCAe čas 00.00:00 a datum 1.1.1970. Ruční nastavení je sice možné, ale značně nepraktické.
 +
 +
*1. Nainstaluji NTP klienta v podobě balíčku ''ntpclient''.
 +
root@OpenWrt:~# ipkg install ntpclient
 +
*2. Nastavím správné časové pásmo pro Českou Republiku zapsáním ''CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00'' do souboru ''/etc/TZ''. Posun ze zimního času na letní a zpět se provádí automaticky.
 +
echo CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00 > /etc/TZ
 +
*3. Vyzkouším funkčnost a dostupnost NTP serveru pomocí příkazu ''ntpclient -s -h ntp.hkfree.org'', kde ''ntp.hkfree.org'' je zvolený NTP server. Pokud je server dostupný a funkční, objeví se řada čísel a program se ukončí. Čísla jsou po každém spuštění jiná.
 +
root@OpenWrt:~# ntpclient -s -h ntp.hkfree.org
 +
39659 72662.170    2078.0    17.9  -8047.3 83140258.8        0
 +
Správnost nastaveného času je možné ověřit za pomoci příkazu ''date''.
 +
root@OpenWrt:~# date
 +
Fri Aug  1 22:12:04 CEST 2008
 +
*4. Nastavení času po každém restartu zajistím vložením výše uvedeného příkazu do skriptu ''NTP'' v adresáři ''/etc/init.d/''. Příkazem ''chmod +x'' učiníme skript spustitelným.
 +
 +
Obsah ''/etc/init.d/NTP'':
 +
#!/bin/sh /etc/rc.common
 +
START=47
 +
start() {
 +
        ntpclient -s -h ntp.hkfree.org
 +
        }
 +
stop() {}
 +
A vytvořením symbolického odkazu ''S53NTP'' v adresáři ''/etc/rc.d/''.
 +
root@OpenWrt:~# ln -s /etc/init.d/NTP /etc/rc.d/S53NTP
 +
Pokud v době vykonávání výše uvedeného skriptu bude server nedostupný, zůstane čas na AirCAe nenastaven. V takovém případě je potřeba čas nastavit příkazem ''ntpclient'' s uvedenými parametry.
 +
 +
== Logování událostí pomocí syslogd ==
 +
 +
Pokud chceme zaznamenávat např. přihlašení, jak oprávněná, tak i neoprávněná přes SSH, adresy přiřazené DHCP serverem a další, je vhodné mít na AirCAe spuštěného démona ''syslogd''.
 +
*1. Instalace
 +
''Syslogd'' není třeba instalovat, je součástí základní instalace OpenWRT, resp. programu BusyBox.
 +
*2. Spuštění
 +
''Syslogd'' se spustí spuštěním programu ''syslogd''.
 +
root@OpenWrt:~# syslogd
 +
V tomto defaultním nastavení se logy zapisují do ''/tmp/log/messages'', maximální velikost logu je 200 kB a udržuje se aktuální a jeden odrotovaný log v souboru ''/tmp/log/messages.0''. Logy jsou udržovány pouze v paměti RAM (jako celý ''/tmp'') a proto po restartu je log prázdný.
 +
 +
Pokud chceme použít jiné nastavení než defaultní, je vhodné nechat si příkazem ''syslogd --help'' vypsat všechny možné varianty nastavení. Je tak možno určit soubor do kterého se bude logovat, velikost logu, počet odrotovaných logů a další.
 +
 +
Pozor však v případě, že byste ukládali logy do souboru uloženém ve flash paměti (cokoliv mimo ''/tmp'') na to, aby byla maximální velikost logu menší, než je volné místo v paměti (zjistíme příkazem ''df'') a počet odrotovaných logů nastaven na 0. Pokud by došlo k úplnému zaplnění paměti, nemuselo by se z ní dát už mazat. Je to vlastnost použitého souborového systému, který i pro mazání souborů potřebuje malý kousek volného místa.
 +
 +
Vhodné je udělat si pomocí ''ln -s /tmp/log/messages /www/messages.txt'' symlink na soubor s logy přístupný přes webserver pod souborem ''http://ip.ad.re.sa/messages.txt''. Nemusíte se pak přihlašovat na AirCAu pro získání informací z log souboru. Nevýhodou ovšem zůstává, že k logům vaší AirCAy mají pak přístup všichni. Je ovšem možné přesunout log soubor do adresáře přístupného pouze po přihlášení (editací ''httpd.conf'').

Aktuální verze z 28. 11. 2009, 21:05

OpenWRT pro AirCA8-Pro

Tento návod je jakožto instalovat, konfigurovat a provozovat projekt OpenWRT na zařízení s Atheros čipem jako je AirCA8-Pro, Ovislink 5000AP, apod.

Proč OpenWRT?

  • Lepší ovládání výkonu zařízení.
  • Odstraní problém s více IP z jedné MAC adresy (více IP, např. interní a veřejná na jednom počítači).
  • Staví zařízení na jinou úroveň, lze na něm poté provozovat cokoli na co jsou zkompilované balíčky, grafy, web server, dhcp server, scripty a mnoho dalšího.

Instalace

  • 1. Stáhnu image OpenWRT pro AirCA8-Pro. nebo OpenWRT pro AirCA8-Pro
  • 2. Přihlásím se na webové rozhraní AirCAy a upgraduju firmware, system tools > firmware upgrade, pomocí browse najdu image z předchzího kroku
  • 3. stisknu upgradu, čekám než se firmware do zařízení nahraje, během nahrávání v žádném případě AirCAu neodpojuji od napájení!. Pokud v tomto kroku zařízení zahlásí, že je soubor chybný, je třeba ještě následující:
    • Přihlásit se telnetem na konzoli zařízení (AP: telnet 192.168.1.1 CLIENT: telnet 192.168.1.2)
    • Zadat příkaz "z_debug signature disable"
    • Potvrdit následujici dotaz napsáním "Yes"
    • Pokud se objeví "Signature check is now DISABLED!!!" je vše ok
    • Vrátit se k bodu 2 a postup opakovat
  • 4. Nastavím si IP na počítači aby tylo ze sítě 192.168.1.0/24 třeba 192.168.1.11 maska 255.255.255.0, zařízení je defaultně na 192.168.1.1 maska 255.255.255.0
  • 5. Přihlásím se telnetem (start>spustit>telnet 192.168.1.1) k AirCAe a změním heslo pro uživatele root
root@OpenWrt:~# passwd root
Changing password for root
New password: sem_napisu_svoje_tajne_heslo(znaky_se_nezobrazuji)
Bad password: too weak
Retype password: sem_napisu_svoje_tajne_heslo_znovu(znaky_se_nezobrazuji)
Password for root changed by root
root@OpenWrt:~# reboot
root@OpenWrt:~#

Po tomto kroku se vygenerují šifrovací klíče, přístup přes telnet zablokuje a zařízení bude přístupně jen přes ssh pod loginem root a zvoleným heslem. Po změně hesla je třeba před rebootem počkat přibližně dvě minuty, aby byl dostatek času na vygenerování klíčů.

Pro paranoiky upozorňuji, že vygenerované klíče (DSS a RSA) jsou pro všechny AirCAy stejné. Na začátku nemá AirCA dostatek entropie pro vygenerování náhodného klíče. Pokud chcete skutečně náhodné klíče, je možné je vygenerovat až po nějaké době provozu zařízení.

Pokud z nějakého důvodu je nutné obnovit přístup přes telnet, je pořeba při připojení napájení stisknout a držet tlačítko Reset. Tlačítko půstíme až po nastartování AirCAy. Tím se přeskočí všechny startovací skripty, vč. toho, který má na starost zablokování telnetu. To se také může hodit např. pokud špatně nastavíte pravidla na firewalu a nebude možné se k AirCAe připojit.

Konfigurace

  • 1. Přihlásím se do zařízení po ssh, IP je stále 192.168.1.1 (ve Win přes putty).
login as: root
root@10.107.136.12's password:
BusyBox v1.4.1 (2007-03-05 12:08:30 CET) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
 _______                     ________        __
|       |.-----.-----.-----.|  |  |  |.----.|  |_
|   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
|_______||   __|_____|__|__||________||__|  |____|
         |__| W I R E L E S S   F R E E D O M
KAMIKAZE (bleeding edge, r83) -------------------
 * 10 oz Vodka       Shake well with ice and strain
 * 10 oz Triple sec  mixture into 10 shot glasses.
 * 10 oz lime juice  Salute!
---------------------------------------------------
root@OpenWrt:~#
  • 2. Edituji soubor /etc/config/network programem vi, zde se nastavuje ip LAN a WAN části zařízení
root@OpenWrt:~# vi /etc/config/network.
  • 3. Stisknutím klávesy insert se přepnu do editačního modu, v levém dolním rohu okna by mělo zobrazit místo "-" písmeno "I" jako Insert.
  • 4. Po položkách se pohybuji šipkami, znaky mažu vždy klávesou backspace, nikoli deletem, víceznakové odsazení je tabulátorem.
  • 5. Na příslušné místo zapíši IP, masku, bránu a DNS:
# Copyright (C) 2006 OpenWrt.org
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   192.168.1.1 #IP adresa LAN casti zarizeni
       option netmask  255.255.255.0 #maska LAN casti zarizeni
config interface wan
       option ifname   ath0
       option proto    static
       option ipaddr   10.107.xxx.xxx #IP adresa WAN casti zarizeni za x dosadit konkretni cisla
       option netmask  255.255.255.xxx #maska WAN casti zarizeni za x dosadit konkretni cisla
       option gateway  10.107.xxx.xxx #brana za x dosadit konkretni cisla
       option dns      10.107.4.100 #dns server(polozka nemusi byt pritomna)

Pozor! pokud zde napíšete něco chybně, může se stát, že zařízení nedostane žádnou IP a potom se do něj nepůjde dostat!

  • 6. Editaci ukončím stiskem klávesy Esc (znak vlevo dole se opět změní na "-"), pro uložení a ukončení napíšu :x (dvojtečka, x) a enter, pokud nechci změny ukládat napíšu :q! (dvojtečka, q, vykřičník), tyto řídící znaky se vypisují vlevo dole kde je "-".
  • 7. Edituji soubor /etc/config/wireless programem vi, zde se nastavuje konfigurace WAN části zařízení, mod ve kterém pracuje (5 nebo 2,4GHz) a ssid APčka.
root@OpenWrt:~# vi /etc/config/wireless
config wifi-device  wifi0
       option type     atheros
       option mode     11a #zarizeni pracuje v pasmu 5GHz, dalsi pripustne option jsou 11b a 11g (2,4GHz)
config wifi-iface
       option device   wifi0
       option network  wan
       option mode     sta
       option ssid     AP.hkfree.org #zde je ssid nazev vaseho AP, ssid AP je k videni pri scanovani, viz kapitola AirCA8-PRO#Scanov.C3.A1n.C3.AD
       option hidden   0
       option encryption none
  • 8. Abychom mohli fungovat na frekvenčních rozsazích použitelných v České republice, musíme ještě přidat konfigurační položku do /etc/modules.d/50-madwifi:
root@OpenWrt:~# vi /etc/modules.d/50-madwifi
  • 9. Naposlední řádek souboru přidáme: "ath_ahb countrycode=616" bez uvozovek, 616 je kod pro CR. V kernelu 2.6 už řádek s ath_ahb je.
wlan
wlan_scan_ap
wlan_scan_sta
ath_hal
ath_rate_sample
wlan_acl
wlan_ccmp
wlan_tkip
wlan_wep
wlan_xauth
ath_ahb countrycode=616

Scanování

Scanováním zjistíme jaké sítě (APčka) jsou v dosahu naší antény:

root@OpenWrt:~# iwlist ath0 scan
ath0      Scan completed :
         Cell 01 - Address: 00:0B:6B:2A:D8:BA
                   ESSID:"yzop5g.hkfree.org"
                   Mode:Master
                   Frequency:5.58 GHz (Channel 116)
                   Quality=35/94  Signal level=-60 dBm  Noise level=-95 dBm
                   Encryption key:off
                   Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
                             36 Mb/s; 48 Mb/s; 54 Mb/s
                   Extra:bcn_int=100
         Cell 02 - Address: 00:0B:6B:87:17:70
...
         Cell 23 - Address: 00:0B:6B:81:CA:56
                   ESSID:"bngal03"
                   Mode:Master
                   Frequency:5.24 GHz (Channel 48)
                   Quality=12/94  Signal level=-83 dBm  Noise level=-95 dBm
                   Mode:Master
root@OpenWrt:~#

Zde zjistíme hlavně essid AP (ESSID:"yzop5g.hkfree.org") a s jakou silou signálu ho chytáme (Quality=35/94 Signal level=-60 dBm), výpis není nijak seřazený.

Výpis konfigurace

IP, MAC adresy

K tomuto slouží příkaz ifconfig, interface ath0 pro wifi část, eth0 pro lan část:

root@OpenWrt:~# ifconfig ath0
ath0      Link encap:Ethernet  HWaddr 00:0B:6B:xx:xx:xx (MAC Adresa)
          inet addr:89.248.xxx.xxx  Bcast:89.255.255.255  Mask:255.255.240.0 (IP, broadcast, maska)
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55306492 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31211052 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1000653166 (954.2 MiB)  TX bytes:2036911216 (1.8 GiB)
root@OpenWrt:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0B:6B:xx:xx:xx (MAC Adresa)
          inet addr:192.168.xxx.xxx Bcast:192.168.xxx.xxx  Mask:255.255.255.0 (IP, broadcast, maska)
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:30707210 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52894929 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2030795826 (1.8 GiB)  TX bytes:0 (0.0 B)

wifi

K tomuto slouží příkaz iwconfig, interface ath0 pro wifi:

root@OpenWrt:~# iwconfig ath0
ath0      IEEE 802.11a  ESSID:"yzop5g.hkfree.org" (mod, essid)
          Mode:Managed  Frequency:5.58 GHz  Access Point: 00:0B:6B:xx:xx:xx (frekvence AP, MAC AP)
          pokud je místo hexadecimálního kodu "Not-Associated" zarizeni neni spojeno s AP!
          Bit Rate:36 Mb/s   Tx-Power=14 dBm   Sensitivity=0/3 (rate, vystupni vykon zarizeni)
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=34/94  Signal level=-61 dBm  Noise level=-95 dBm (sila signalu AP)
          Rx invalid nwid:13244919  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Změna výstupního výkonu

Pokud potřebujeme omezit výstupní výkon wifi karty z továrních 14dbm použijeme paramert příkazu iwconfig:

root@OpenWrt:~# iwconfig ath0 txpower 10 (změní výstupní výkon karty na 10dbm)

Propojení LAN a wifi části

NAT

Použití NATu vždy konzultujte se svým spávcem!

V adresáři /etc/init.d/ vytvoříme script, který budeme spouštět při zaždém spuštění zařízení. Příkazem chmod +x učiníme skript spustitelným.

root@OpenWrt:~# vi /etc/init.d/srcnat

Jeho obsahem bude:

#!/bin/sh /etc/rc.common
START=45
start() {
        # Nastaveni NATu
        iptables -t nat -A POSTROUTING -o ath0 -j SNAT --to IP_adresa_wifi_casti_AirCAy
        }
stop() {}

Poté vytvoříme na soubor se scriptem symbolický odkaz v adresáři /etc/rc.d/:

root@OpenWrt:/tmp# cd /etc/rc.d/
root@OpenWrt:/etc/rc.d# ln -s /etc/init.d/srcnat S60srcnat
root@OpenWrt:/etc/rc.d# ls -l
...
lrwxrwxrwx    1 root     root           18 Jul 10 23:55 S60srcnat -> /etc/init.d/srcnat
root@OpenWrt:/etc/rc.d#

VIP + nonVIP

Zde budiž vysvětleno jakožto nastavit veřejnou a neveřejnou adresu na AirCae při použití NATu. Provedeme tyto příkazy, nebo je dáme do startovacího scriptu:

  • 1) Smazneme ip nastavenou v /etc/config/network na rozhrani ath0 (wan interface), timto jednoduse smazeme vsechny (vnejsi) routy
ip addr del 89.248.24x.xxx dev ath0 
  • 2) Přidáme interface ath0 naši veřejnou adresu
ip address add 89.248.24x.xxx/32 dev ath0 #dosadime nasi VIP
  • 3) Přidáme interface ath0 naši neveřejnou adresu
ip address add 10.107.xxx.xxx/xx brd + dev ath0 #dosadime nasi NEverejnou adresu a jeji masku
  • 4) Vytvořime směrování, které všechno mířící do českých freenetů pošle naší neveřejnou adresou, za via dosadime branu pro nasi NEverejnou adresu a za src nasi NEverejnou adresu
ip route add 10.0.0.0/8 dev ath0 via 10.107.xxx.xxx src 10.107.xxx.xxx 
  • 5) Vytvořime směrování, které všechno mířící do VIP hkfree pošle naší neveřejnou adresou, za via dosadime branu pro nasi NEverejnou adresu a za src nasi NEverejnou adresu, stejně jako v předchozím případě
ip route add 89.248.240.0/20 dev ath0 via 10.107.xxx.xxx src 10.107.xxx.xxx 
  • 6) A ještě směrování všude jinde než v předchozích dvou případech (do internetu), za via dosadime branu pro nasi NEverejnou adresu a za src nasi Verejnou adresu
ip route add default dev ath0 via 10.107.xxx.xxx src 89.248.24x.xxx
  • 7) Přidáme pravidla natu aby se překládalo dle rout, do obou příkazů doplnit NEveřejnou adresu
iptables -t nat -I POSTROUTING -d 10.0.0.0/8 -o ath0 -j SNAT --to 10.107.xxx.xxx 
iptables -t nat -I POSTROUTING -d 89.248.240.0/20 -o ath0 -j SNAT --to 10.107.xxx.xxx

Že to skutečně funguje můžeme zjistit na ukazip.hkfree.org (mělo by vypsat neveřejnou) a na www.showmyip.com (mělo by vypsat veřejnou)

Ukázka celého konfiguráku:

ip address add 89.248.241.71/32 dev ath0
ip address add 10.107.35.89/26 brd + dev ath0
ip route add 10.0.0.0/8 dev ath0 via 10.107.35.65 src 10.107.35.89
ip route add 89.248.240.0/20 dev ath0 via 10.107.35.65 src 10.107.35.89
ip route add default dev ath0 via 10.107.35.65 src 89.248.241.71
iptables -t nat -I POSTROUTING -d 10.0.0.0/8 -o ath0 -j SNAT --to 10.107.35.89
iptables -t nat -I POSTROUTING -d 89.248.240.0/20 -o ath0 -j SNAT --to 10.107.35.89

Bridge

Bridge v uvedené verzi OpenWRT s kernelem 2.4.34 nefunguje.

Resp. funguje pouze jako bridge a ne jako bezdrátový bridge s překladem MAC adres. K tomu je potřeba podpora ebtables v jádře, která však v této verzi není kvůli stabilitě. Řešením může být instalace OpenWRT s jádrem verze 2.6, kde je již podpora ebtables přidána ve formě jaderného modulu.

  • 1. Před nastavením bridge musí být nainstalován balíček "bridge", viz instalace balíčků.
  • 2. Vytvořím bridge, pojmenuji ho "br0":
root@OpenWrt:~# brctl addbr br0
  • 3. Nastavím bridgi IP adresu:
root@OpenWrt:~# ifconfig br0 10.107.xxx.xxx netmask 255.255.255.xxx
  • 4. Přidám do bridge interfacy, které chci mít spojené, tedy ath0 a eth0:
root@OpenWrt:~# brctl addif br0 ath0
root@OpenWrt:~# brctl addif br0 eth0
  • 5. přihlásím se k AirCAe na IP bridge, teč by se mělo jít dostat na stejnou adresu jak po ethernetu tak po wifi.
  • 6. Zruším interfacům jejich adresy:
root@OpenWrt:~# ifconfig ath0 0.0.0.0
root@OpenWrt:~# ifconfig eth0 0.0.0.0
  • 7. celý postup si vložim do scriptu, který budu spouštět po startu zařízení, podrobněji viz nat:
root@OpenWrt:~# vi /etc/init.d/bridge

Obsah scriptu:

#!/bin/sh /etc/rc.common
START=45
start() {
       brctl addbr br0
       ifconfig br0 10.107.xxx.xxx netmask 255.255.255.xxx
       brctl addif br0 ath0
       brctl addif br0 eth0
       ifconfig ath0 0.0.0.0
       ifconfig eth0 0.0.0.0
       }
stop() {}
  • 8. Poté vytvořím na soubor se scriptem symbolický odkaz v adresáři /etc/rc.d/:
root@OpenWrt:/tmp# cd /etc/rc.d/
root@OpenWrt:/etc/rc.d# ln -s /etc/init.d/bridge S60bridge
root@OpenWrt:/etc/rc.d# ls -l
...
lrwxrwxrwx    1 root     root           18 Jul 10 23:55 S60bridge -> /etc/init.d/bridge
root@OpenWrt:/etc/rc.d#
  • 9. Bridge je hotov, podrobný soupis nastavení:
root@OpenWrt:~# brctl showstp br0
br0
 bridge id              8000.000b6b3f02d5
 ...
eth0 (2)
 port id                8002                    state                forwarding
 designated root        8000.000b6b3f02d5       path cost                100
 designated bridge      8000.000b6b3f02d5       message age timer          0.00
 designated port        8002                    forward delay timer        0.00
 designated cost           0                    hold timer                 0.55
 flags

Routování

Pokud chceme IP rozsahy routovat použijeme příkaz route, toto pošle veškerý provoz na bránu s IP 10.107.xxx.xxx:

root@OpenWrt:~# route add 0.0.0.0 netmask 0.0.0.0 gw 10.107.xxx.xxx

Obsah routovací tabulky dostaneme následovně:

root@OpenWrt:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.107.xxx.1    255.255.255.255 UGH   0      0        0 eth0
10.107.xxx.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         10.107.xxx.1    0.0.0.0         UG    0      0        0 eth0

Balíčky

Balíčky zkompilované pro MIPS architekturu AirCAy najdeme zde: Packages

Instalace balíčků

  • 1. Pro jistotu zjistím zda mám na zařízení dostatek paměti, zajímá mě hodnota "Available" u /dev/root (flash paměť):
root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.1M      2.9M    256.0k  92% /
none                     14.9M    376.0k     14.6M   2% /tmp
root@OpenWrt:~#

Ještě tam trochu místa je (256 kB). Pokud by jste začali instalovat balíček, který se spolu s potřebnými knihovnami nevejde do paměti, balíček se nenainstaluje kompletně a nepůjde tedy ani odinstalovat. Již nainstalované knihovny bude třeba odstranit ručně.

  • 2. Stáhnu balíček který chci instalovat, ukládám ho do adresáře /tmp který je přimountovaný k RAM paměti AirCAy, kapacita je cca 14.9MB, ovšem po rebootu její obsah zmizí! (pro ukázku balíček br2684ctl).
root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://openwrt.dlabac.net/snapshots/atheros/packages/br2684ctl_2.4.1-1_mips.ipk
Connecting to openwrt.dlabac.net [213.192.30.98:80]
br2684ctl_2.4.1-1_mi 100% |**********************************************************************************************************|  4869    --:--:-- ETA
root@OpenWrt:~#
  • 3a. OpenWRT používá balíčkovací systém ipkg, zvolím tedy parametr install a název staženého balíčku, více o možnostech viz manuálová stránka ipkg (ipkg --help).
root@OpenWrt:~# ipkg install br2684ctl_2.4.1-1_mips.ipk
Installing br2684ctl (2.4.1-1) to root...
Installing linux-atm (2.4.1-1) to root...
Downloading http://openwrt.dlabac.net/snapshots/atheros/packages/./linux-atm_2.4.1-1_mips.ipk
Configuring br2684ctl
Configuring linux-atm
Done.
root@OpenWrt:~#

Výše uvedený postup (3a) není doporučeným postupem pro balíčky z repozitáře. Jak získat seznam všech balíčků v repozitáři je uvedeno níže.

Výše uvedený postup je vhodné aplikovat pouze tehdy, není-li požadovaný balíček v repozitáři, ale nachází se někde jinde na webu, např. na stránkách OpenWRT.

  • 3b. Pokud znám název balíčku, nemusím ani provádět bod 2. ipkg si balíček stáhne sám:
root@OpenWrt:~# ipkg install br2684ctl
Installing br2684ctl (2.4.1-1) to root...
Downloading http://openwrt.dlabac.net/snapshots/atheros/packages/./br2684ctl_2.4.1-1_mips.ipk
Configuring br2684ctl
Done.
root@OpenWrt:~#

Výše uvedený postup (3b) je jednoznačně doporučeným postupem pro balíčky z repozitáře.

Některé balíčky jsou závislé na určitých knihovnách, ty se většinou pomocí závislostí stáhnou sami.

Odinstalace Balíčků

  • Vyberu balíček, který chci odebrat (např. kvůli úspoře místa), použiji parametr remove a jméno balíčku, nikoli název souboru s balíčkem.
root@OpenWrt:~# ipkg remove br2684ctl
Removing package br2684ctl from root...
Done.
root@OpenWrt:~#

Při odstraňování pozor abyste nesmazali něco co je potřeba pro správný chod systému! Můžete se dostat do situace kdy pomůže pouze sériový kabel.

Další užitečné parametry ipkg

  • list - vypíše všechny dostupné balíčky v repozitáři, seznam se bere z web adresy zapsané v /etc/ipkg.conf:
root@OpenWrt:~# cat /etc/ipkg.conf
src snapshots http://openwrt.dlabac.net/snapshots/atheros/packages
dest root /
dest ram /tmp
root@OpenWrt:~#
  • update - provede aktualizaci seznamu balíčků v repozitáři
  • list_installed - vypíše všechny balíčky, které jsou v zařízení již nainstalované
  • info - informace o balíčku:
root@OpenWrt:~# ipkg info bridge
Package: bridge
Version: 1.0.6-1
Status: unknown ok not-installed
Section: net
Architecture: mips
maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org>
MD5Sum: 93d49f6772d16acd981ede010fc5466b
Size: 9725
Filename: ./bridge_1.0.6-1_mips.ipk
Source: package/bridge
Description: Ethernet bridging configuration utility
 Manage ethernet bridging: a way to connect networks together to
 form a larger network.
Done.
root@OpenWrt:~#
  • download - stáhne daný balíček do současného adresáře, píše se jméno balíčku nikoli název souboru s balíčkem, to samé jako wget cesta_k_balíčku z předchozí části o instalaci
  • upgrade - provede aktualizaci všech balíčků, které se v repozitáři nachází v novější verzi. Vhodné je provést před tímto krokem aktualizaci seznamu balíčků.

Nahrání firmware z OpenWRT

Pokud chci do zařízení vrátit např. původní firmware, nebo jiný OpenWRT, postupuji následovně:

  • 1. Ověřím, že mám nainstalovaný balíček s názvem "flash" (ipkg info flash - status musí být "install..."), pokud nemám nainstaluji si ho podle návodu instalace balíčků
  • 2. Stáhnu si pomocí wget firmware někde ze sítě, např. wget http://openwrt.dlabac.net/Original_FW/CA8-4-AP-FW-v1_08e05.bin
  • 3. Flashnu nový firmware (flash jmeno_souboru_s_firmware), celý postup:
root@OpenWrt:~# ipkg info flash
...
Status: install ok installed
...
Done.
root@OpenWrt:~# cd /tmp
root@OpenWrt:~# wget http://openwrt.dlabac.net/Original_FW/CA8-4-AP-FW-v1_08e05.bin
Connecting to openwrt.dlabac.net [213.192.30.98:80]
CA8-4-AP-FW-v1_08e05 100% |*******************************************************|  2080 KB 00:00:00 ETA
root@OpenWrt:~# flash CA8-4-AP-FW-v1_08e05.bin
  • 4. Čekám až se zařízení přeflashuje a restartuje (2-3min.)

Špatné nahrání firmware

Občas se stane, že se firmware nahraje špatně i když vše proběhne v pořádku. Při každém startu si zařízení samo zjišťuje zda je daný firmware validní pomocí hash kontroly, pokud není, pokusí se firmware nahrát z tftp serveru. Postup jak toto umožnit:

  • 1. Zařízení odpojím od napájení.
  • 2. na počítači si zařídím tftp server, pod win např. SolarWinds tftp server (tato verze odzkoušena, funguje), návod na Solarwinds: Tftp#SolarWinds_tftp_server.
  • 3. Stáhnu si firmware, který chci do zařízení nechat nahrát.
  • 4. Soubor s firmware přejmenuji na "zImage" bez uvozovek (pozor na velká/malá písmena!) a vložím ho do kořene tftp.
  • 5. Na počítači nastavím IP 192.168.1.254, maska 255.255.255.0, AriCA ve stavu čekajícím na fw je na IP 192.168.1.1.
  • 6. Propojím AirCAu s počítačem ethernetovým kabelem (jedno který port) a AirCAu připojím k napájení.
  • 7. Čekám zda AirCA přijme soubor s imagem firmware, pokud ne, je ještě možnost oživení pomocí seriového kabelu, viz dále.

Seriový kabel

Pokud se stalo to, že AirCA z nějakého důvodu nefunguje a postup z předchozí kapitoly nepomáhá, je třeba AirCAu připojit seriovým rozhraním Seriová konzole.

  • 1. Připravím si vše do takového stavu jak je popsáno v kapitole Špatné nahrání firmware.
  • 2. Nakonfiguruji si Hyperterminál nebo Minicon na následující hodnoty: přenosová rychlost 115200 baudů, 8 datových bitů, žádná parita a 1 stop bit, hardware řízení toku.
  • 3. Propojím AirCAu a Počítač seriovou konzolí.
  • 4. Připojím AirCAu k napájení, asi po 2s by měla vypsat toto:
     ============================================
       WNEWEB AR2312 Boot Loader Interface
       V1.00e00 2005-05-27 (zImage)
     ============================================
Please choose the operation:
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash.
   4: Load calibration data then write to Flash via XModem.
  • 5. Mám cca 3s abych vybral možnost za 2.
  • 6. AirCA by si měla stáhnou firmware z tftp, flashnout se a restartovat se.

Užitečný software a nastavení

P2P OpenVPN tunel

Pokud jste v jednom místě připojeni přes HKFree pomocí AirCAy a v druhém místě přes jiného poskytovatele opět pomocí AirCAy nebo jiného zařízení s OpenWRT a chete mít na obou místech přístup k vnitřním IP adresám HKFree (potažmo NFX), je řešením vytvořit si tunel mezi zmíněnými zařízeními s OpenWRT. Jedinou podmínkou je, aby alespoň jedna strana měla veřejnou IP adresu, což u některých poskytovatelů může být problém, proto uvažujme veřejnou IP adresu od HKFree. Je samozřejmě možné připojit se k OpenVPN serveru HKFree, ale dále uvedený postup umožní zpřístupnit i druhé zařízení, které je schované za NATem, pomocí forwardování portů. Uvedený tunel prochází i skrz NAT, kde jedinou podmínkou je, aby NAT nepřekládal vnitřní port na jiný. Např. pokud zařízení za NATem s OpenWRT ve funkci jednoho konce tunelu bude provozovat OpenVPN na portu 50001, musí být i na vnější straně NATu přeložen na port 50001.

  • 1. Nainstalujeme si balíček openvpn.
root@OpenWrt:~# ipkg install openvpn

Díky závislostem se nainstalují i další balíčky potřebné pro běh OpenVPN.

  • 2. Vygenerujeme si na jedné straně tunelu šifrovací klíč, kterým bude symetricky šifrována komunikace v tunelu. Klíč uložíme do souboru /etc/secret.key. Klíč přeneseme i do zařízení na druhém konci tunelu.
root@OpenWrt:~# openvpn --genkey --secret /etc/secret.key
  • 3. Vytvoříme na obou zařízeních a pomocí vi upravíme soubor /etc/vpn.conf, který bude obsahovat konfiguraci. Soubor bude vypadat takto:
remote 213.192.60.64
ifconfig 192.168.34.1 255.255.255.0
port 50001
proto udp
dev tap0
secret /etc/secret.key
ping 10
comp-lzo
verb 1
mute 10
daemon
user nobody
group nogroup
  • 4. Volby jsou následující (jen vybrané):
    • remote - IP adresa druhého konce tunelu. Pokud je druhý konec schovaný za NATem, tak veřejnou IP adresu.
    • ifconfig - IP adresa a maska síťového zařízení, které bude k tunelu přiřazeno.
    • port - port na kterém tunel pracuje
    • dev - síťové zařízení přiřazené k tunelu
    • secret - umístění šifrovacího klíče
  • 5. Zkouška spojení

V konfiguračním souboru /etc/vpn.conf zakomentujeme (přidáme # na začátek řádku) řádek s daemon, abychom dostali na konzoli výpis z openvpn. Jinak by se po spuštění program přesunul do pozadí a to zatím nepotřebujeme. Na obou zařízeních které budou sloužit jako konce tunelu spustíme OpenVPN pomocí příkazu openvpn --config /etc/vpn.conf. Na pořadí spuštění nezáleží.

root@OpenWrt:~# openvpn --config /etc/vpn.conf
Mon Sep 22 16:13:41 2008 OpenVPN 2.0.9 mips-linux [SSL] [LZO] [EPOLL] built on Mar  6 2007
Mon Sep 22 16:13:41 2008 WARNING: --ping should normally be used with --ping-restart or --ping-exit
Mon Sep 22 16:13:41 2008 WARNING: you are using user/group/chroot without persist-key/persist-tun -- this may cause restarts to fail
Mon Sep 22 16:13:41 2008 LZO compression initialized
Mon Sep 22 16:13:41 2008 TUN/TAP device tap0 opened
Mon Sep 22 16:13:41 2008 /sbin/ifconfig tap0 192.168.34.1 netmask 255.255.255.0 mtu 1500 broadcast 192.168.34.255
Mon Sep 22 16:13:41 2008 GID set to nogroup
Mon Sep 22 16:13:41 2008 UID set to nobody
Mon Sep 22 16:13:41 2008 UDPv4 link local (bound): [undef]:50001
Mon Sep 22 16:13:41 2008 UDPv4 link remote: 213.192.60.64:50001
Mon Sep 22 16:13:41 2008 Peer Connection Initiated with 213.192.60.64:50001
Mon Sep 22 16:13:42 2008 Initialization Sequence Completed

Pokud na obou koncích tunelu dostaneme na konci výpisu Initialization Sequence Completed mělo by být vše v pořádku a vytvoří se síťové rozhraní tap0. Rovněž se nastaví routování pro daný rozsah IP adres.

Pro ostrý provoz odkomentujeme v /etc/vpn.conf řádek s daemon. Pokud chceme, aby se tunel ustavil vždy po startu AirCAy, je nutné vložit příkaz openvpn --config /etc/vpn.conf do starovacího skriptu. Postup jak toho dosáhnout je na této stránce již několikrát uveden.

DNS a DHCP server

Pokud chceme, aby počítače připojené k AirCAe dostaly automaticky přiřazenou adresu a zároveň byly v síti dostupné pod svými jmény, je potřebné nainstalovat DNS a DHCP server.

  • 1. Nainstalujeme balíček dnsmasq, obsahující program dnsmasq, který plní úlohu DNS a DHCP serveru.
root@OpenWrt:~# ipkg install dnsmasq
  • 2. Veškerá nastavení pro dnsmasq jsou zapsána v souboru /etc/dnsmasq.conf. Po nainstalování vypadá soubor dnsmasq.conf takto:
# filter what we send upstream
domain-needed
bogus-priv
filterwin2k
localise-queries
# allow /etc/hosts and dhcp lookups via *.lan
local=/lan/
domain=lan
expand-hosts
resolv-file=/tmp/resolv.conf.auto
@ifdef dhcp_enable
dhcp-range=@@start@@,@@end@@,@@netmask@@,@@lease@@
dhcp-authoritative
dhcp-leasefile=/tmp/dhcp.leases
@endif
@ifdef wan_ifname
except-interface=@@wan_ifname@@
@endif
# use /etc/ethers for static hosts; same format as --dhcp-host
# <hwaddr> <ipaddr>
read-ethers
# other useful options:
# default route(s): dhcp-option=3,192.168.1.1,192.168.1.2
#    dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2
  • 3. Zakomentujeme (přidáním # na začátek) řádky začínající @.
  • 4. Změníme hodnotu resolv-file na /tmp/resolv.conf. Můžeme zakomentovat původní řádek a nový napsat pod něj.
#resolv-file=/tmp/resolv.conf.auto
resolv-file=/tmp/resolv.conf
  • 5. Na řádku obsahujícím hodnotu dhcp-range nahradíme @@start@@,@@end@@,@@netmask@@,@@lease@@ takto:
    • @@start@@ - počátek přidělovaného rozsahu IP adres
    • @@end@@ - konec přidělovaného rozsahu IP adres
    • @@netmask@@ - přidělovaná maska
    • @@lease@@ - doba propůjčení adresy v sekundách

Takže výsledný řádek může vypadat takto:

dhcp-range=192.168.33.2,192.168.33.20,255.255.255.0,1000

Kde je přidělovaný rozsah IP adres 192.168.33.2-20 s maskou 255.255.255.0 a dobou propůjčení adresy na 1000 s.

  • 6. Na řádku obsahujícím hodnotu except-interface nahradíme @@wan_ifname@@ jménem vnějšího síťového rozhraní. V našem případě ath0. AirCA bude přidělovat IP jen na LAN a nikoli ven směrem k AP.
except-interface=ath0
  • 7. Na konci souboru přidáme řádky obsahující IP adresu brány a DNS serveru, které budou pomocí DHCP nastaveny. Pokud je AirCA jako NATující klient, je za adresu brány zvolena vnitřní IP adresa AirCAy a jako DNS server je možné zvolit bučto vnitřní adresu AirCAy nebo DNS servery v HKFree. V našem případě je vnitřní adresa AirCAy 192.168.33.1.
# default route(s): dhcp-option=3,192.168.1.1,192.168.1.2
dhcp-option=3,192.168.33.1
#    dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2
dhcp-option=6,192.168.33.1
  • 8. Nakonec vytvoříme symbolický odkaz S51dnsmasq v adresáři /etc/rc.d/ na soubor /etc/init.d/dnsmasq.
root@OpenWrt:~# ln -s /etc/init.d/dnsmasq /etc/rc.d/S51dnsmasq

NTP klient

NTP slouží k přesnému nastavení času za pomoci NTP serveru. Po připojení napájení nebo po restartu, je na AirCAe čas 00.00:00 a datum 1.1.1970. Ruční nastavení je sice možné, ale značně nepraktické.

  • 1. Nainstaluji NTP klienta v podobě balíčku ntpclient.
root@OpenWrt:~# ipkg install ntpclient
  • 2. Nastavím správné časové pásmo pro Českou Republiku zapsáním CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00 do souboru /etc/TZ. Posun ze zimního času na letní a zpět se provádí automaticky.
echo CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00 > /etc/TZ
  • 3. Vyzkouším funkčnost a dostupnost NTP serveru pomocí příkazu ntpclient -s -h ntp.hkfree.org, kde ntp.hkfree.org je zvolený NTP server. Pokud je server dostupný a funkční, objeví se řada čísel a program se ukončí. Čísla jsou po každém spuštění jiná.
root@OpenWrt:~# ntpclient -s -h ntp.hkfree.org
39659 72662.170    2078.0     17.9   -8047.3 83140258.8         0

Správnost nastaveného času je možné ověřit za pomoci příkazu date.

root@OpenWrt:~# date
Fri Aug  1 22:12:04 CEST 2008
  • 4. Nastavení času po každém restartu zajistím vložením výše uvedeného příkazu do skriptu NTP v adresáři /etc/init.d/. Příkazem chmod +x učiníme skript spustitelným.

Obsah /etc/init.d/NTP:

#!/bin/sh /etc/rc.common
START=47
start() {
        ntpclient -s -h ntp.hkfree.org
        }
stop() {}

A vytvořením symbolického odkazu S53NTP v adresáři /etc/rc.d/.

root@OpenWrt:~# ln -s /etc/init.d/NTP /etc/rc.d/S53NTP

Pokud v době vykonávání výše uvedeného skriptu bude server nedostupný, zůstane čas na AirCAe nenastaven. V takovém případě je potřeba čas nastavit příkazem ntpclient s uvedenými parametry.

Logování událostí pomocí syslogd

Pokud chceme zaznamenávat např. přihlašení, jak oprávněná, tak i neoprávněná přes SSH, adresy přiřazené DHCP serverem a další, je vhodné mít na AirCAe spuštěného démona syslogd.

  • 1. Instalace

Syslogd není třeba instalovat, je součástí základní instalace OpenWRT, resp. programu BusyBox.

  • 2. Spuštění

Syslogd se spustí spuštěním programu syslogd.

root@OpenWrt:~# syslogd

V tomto defaultním nastavení se logy zapisují do /tmp/log/messages, maximální velikost logu je 200 kB a udržuje se aktuální a jeden odrotovaný log v souboru /tmp/log/messages.0. Logy jsou udržovány pouze v paměti RAM (jako celý /tmp) a proto po restartu je log prázdný.

Pokud chceme použít jiné nastavení než defaultní, je vhodné nechat si příkazem syslogd --help vypsat všechny možné varianty nastavení. Je tak možno určit soubor do kterého se bude logovat, velikost logu, počet odrotovaných logů a další.

Pozor však v případě, že byste ukládali logy do souboru uloženém ve flash paměti (cokoliv mimo /tmp) na to, aby byla maximální velikost logu menší, než je volné místo v paměti (zjistíme příkazem df) a počet odrotovaných logů nastaven na 0. Pokud by došlo k úplnému zaplnění paměti, nemuselo by se z ní dát už mazat. Je to vlastnost použitého souborového systému, který i pro mazání souborů potřebuje malý kousek volného místa.

Vhodné je udělat si pomocí ln -s /tmp/log/messages /www/messages.txt symlink na soubor s logy přístupný přes webserver pod souborem http://ip.ad.re.sa/messages.txt. Nemusíte se pak přihlašovat na AirCAu pro získání informací z log souboru. Nevýhodou ovšem zůstává, že k logům vaší AirCAy mají pak přístup všichni. Je ovšem možné přesunout log soubor do adresáře přístupného pouze po přihlášení (editací httpd.conf).