AirCA8-PRO: Porovnání verzí
(Není zobrazeno 18 mezilehlých verzí od 2 dalších uživatelů.) | |||
Řá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 348: | Řá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:// | + | 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 367: | Řádek 399: | ||
= Užitečný software a nastavení = | = Užitečný software a nastavení = | ||
− | == P2P OpenVPN == | + | == 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 == | == DNS a DHCP server == | ||
Řádek 410: | Řádek 486: | ||
dhcp-range=192.168.33.2,192.168.33.20,255.255.255.0,1000 | 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. | 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''. | + | *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 | 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''. | *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''. | ||
Řádek 417: | Řádek 493: | ||
# dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2 | # dns server(s): dhcp-option=6,192.168.1.1,192.168.1.2 | ||
dhcp-option=6,192.168.33.1 | dhcp-option=6,192.168.33.1 | ||
− | *8 | + | *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 | root@OpenWrt:~# ln -s /etc/init.d/dnsmasq /etc/rc.d/S51dnsmasq | ||
Řádek 446: | Řádek 509: | ||
root@OpenWrt:~# date | root@OpenWrt:~# date | ||
Fri Aug 1 22:12:04 CEST 2008 | 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/''. | + | *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'': | Obsah ''/etc/init.d/NTP'': | ||
Řádek 457: | Řádek 520: | ||
A vytvořením symbolického odkazu ''S53NTP'' v adresáři ''/etc/rc.d/''. | 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 | 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ý | + | 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
Obsah
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).