Bullet místo miniPCI

Z CZFree Wiki
Verze z 25. 11. 2009, 00:53, kterou vytvořil 8an (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Bullet má oproti Wi-Fi kartám v routeru několik výhod: není nutné tahat dlouhé kabely a pájet na střeše konektory, stačí Bullet našroubovat na anténu a připojit UTP. Navíc se eliminuje útlum signálu v dlouhém kabelu i rušení uvnitř počítače.

Vedle výhod však přináší náhrada miniPCI karet za Bullety i nevýhody:

  • Bullet musí mít nějakou IP adresu pro přístup do konfigurace, nestačí subnet /30 na spoj podle CZFree adresního plánu
  • Konfigurace Bulletů je zdlouhavé klikání, místo jednoho příkazu iwconfig ...
  • Nefungují klasické skripty pro měření signálu na spojích, síla signálu je jen na webu Bulletu
  • Víc Bulletů je nutné spojit switchem, ale tím se zároveň původně P2P spoje propojí na linkové vrstvě dohromady

Všechny tyto nevýhody jsou ale řešitelné - Bullet se může chovat a konfigurovat skoro stejně, jako miniPCI karta:

  • Automatickou konfiguraci adresy lze řešit pomocí IPv6
  • Přístup do nastavení bez hesla je možný přes SSH klíč
  • Rozdělení Bulletů ve switchi na virtuální rozhraní lze řešit VLANy (switche s podporou 802.1q jsou drahé, ale Bullet může tagovat sám)
  • Skript může přijímat parametry podobné ifconfig/iwconfig a upravovat podle nich konfiguraci Bulletu

Výsledek je, že v routeru bude místo athX z miniPCI karty rozhraní VLAN, které lze ale v systému (shaperu apod.) používat úplně stejně, a konfigurovat se bude také podobně.

Upravený firmware

Výše uvedené řešení vyžadovalo úpravy firmwaru Bulletů. Aktuální verze upraveného firmwaru je ke stažení zde:

Upozornění

  • Firmware je zatím experimentální, nenasazujte jej na kritické spoje!
  • Po nahrání se kvůli jinému nastavení bridge může změnit MAC adresa zařízení.

Vlastnostem upraveného firmwaru se budu dále věnovat podrobněji.

Podpora VLAN

Podpora VLAN tagování byla do firmwaru zahrnuta tak, aby vyřešila oba problémy: nutnost používat pro spoj subnet /29 a nasadit dražší VLAN switch. Bullet proto po nastavení VLANu posílá pakety z P2P spoje tagované, ale management je stále netagovaný.

Použití: Nahrajte firmware a pak přepněte Bullet do režimu Router. Na rozhraní LAN nastavte adresu, kterou měl management původně. Na WLAN nastavte libovolnou adresu, nebude se používat. Nyní nastavte nějaké VLAN ID (pomocí políčka, které je v upraveném FW nové). Potom bude management stále přístupný klasicky, ale data přicházející ze vzduchu budou přicházet přes LAN rozhraní otagované. Můžete tedy na routeru mít jeden management subnet, ve kterém jsou weby Bulletů, a pak klasická rozhraní se subnetem /30, jako na Wi-Fi kartách.

Podpora IPv6

Narozdíl od IPv4 umožňuje IPv6 automatickou konfiguraci adres - nastavená adresa je pevně dána MAC adresou rozhraní a lze ji snadno odvodit. Navíc IPv6 zavádí tzv. link-local adresy (začínají fe80::), které jsou automaticky nakonfigurovány na každém rozhraní (není-li IPv6 vypnuto). U link-local adres je nutno uvádět tzv. zónu - jméno rozhraní, oddělené procentem, například fe80::0215:6dff:fec0:6efb%eth1.

V upraveném firmwaru je zapnuta podpora IPv6 v SSH serveru i webovém rozhraní. Na Bullet se pak lze připojit pouze na základě znalosti jeho MAC adresy, i pokud neznáme IPv4 adresu - tu nakonec ani není nutné nastavovat. Navíc po zapnutí VLAN tagování bude Bullet na VLAN rozhraní dostupný vždy na adrese fe80::ff:fe00:1. Přes tuto adresu se lze tedy připojovat na Bullet na daném spoji bez nutnosti evidovat jeho MAC adresu.

Konfigurace

Jednou z nevýhod nasazení Bulletů bylo zdlouhavější konfigurování. Nastavení Bulletu je ale uloženo v obyčejném textovém souboru, není tedy složité jej generovat skriptem. Aktuální verze konfiguračních skriptů (včetně odpovídajícího firmwaru) je ke stažení zde:

Konfigurační skripty jsou zde ve skutečnosti dva: první nahrává firmware a provádí počáteční nastavení, druhý je pak obdobou příkazu iwconfig a nastavuje parametry Wi-Fi.

ubinit - počáteční konfigurace

Do nového Bulletu je nutno nahrát upravený firmware, nastavit jeho IP adresu pro správu a VLAN ID. K tomu slouží skript ubinit. Vyžaduje program ipcalc a dále používá několik souborů, které jsou součástí balíku bulletconf:

authorized_keys
SSH klíče pro přístup do Bulletu bez hesla. Soubor je dodáván prázdný, doplňte do něj své veřejné klíče.
bullet-template.cfg
Základní konfigurace. Pravděpodobně ji budete muset upravit - alespoň změnit heslo. Jednoduše dodanou konfiguraci nahrajte do Bulletu, změňte co je potřeba a zase ji uložte pod stejným jménem.
XS5.ar2313.v3.4.SDK.091023.0054.bin
Upravený firmware, který bude nahrán do Bulletu.

Parametry ubinit

Syntaxe příkazu ubinit je:

ubinit -a adresa/maska -v VLAN ubnt@192.168.1.20
  • -a - IP adresa pro management v CIDR formátu (například 192.168.1.20/24). Jako brána je nastavena první adresa z rozsahu, používáte-li jinou adresaci, budete si muset skript upravit.
  • -v - VLAN ID z rozsahu <1,4095>

Po spuštění se skript přes SSH připojí na Bullet (zeptá se na heslo, zadejte výchozí ubnt), nahraje do něj konfiguraci, SSH klíče a firmware, uloží nastavení a nakonec spustí flash firmwaru. Po skončení skriptu neodpojujte Bullet od napájení, dokud nepřestane červeno-oranžově blikat!

ubconfig - nastavování parametrů Wi-Fi

Díky VLAN tagování odpovídá každému spoji jedno rozhraní v routeru. Bullet má na tagovaném rozhraní vždy stejnou IPv6 adresu, výběr toho, se kterým se má komunikovat, se provede identifikátorem zóny v IPv6 adrese. Pro nastavování Bulletu tedy stačí zadat jen jméno interface - tak jako u příkazu iwconfig.

Parametry konfiguračního skriptu přesto nemohou být úplně stejné jako v Linuxu (resp. u Madwifi), protože zde se pro nastavování různých parametrů používají různé programy - ifconfig, iwconfig, iwlist, iwpriv, athctrl, wlanconfig... Ve FreeBSD jsou parametry jednodušší, ale ne o moc, vzdálenost se nastavuje podobně složitě jako v Madwifi. Parametry jsem proto přímo odnikud nepřebíral, ale snažil jsem se je udělat co nejintuitivnější: často existuje pro totéž více klíčových slov a snad je mezi nimi i to, které vás napadne bez čtení manuálu.

Parametry ubconfig

Základní syntaxe ubconfig je:

ubconfig [ -m MAC_adresa ] rozhraní [ příkazy ... ]

Volitelný parametr -m dovoluje zadat MAC adresu Bulletu, se kterým má skript komunikovat. Skript si z ní automaticky odvodí IPv6 link-local adresu.

Příkazy mění nastavení Bulletu. Nejsou-li zadány, skript vypíše aktuální stav Wi-Fi rozhraní. Všechna nastavení se automaticky ukládají (tj. vydrží restart Bulletu). Momentálně jsou implementovány tyto příkazy:

  • mode - přepínání režimu
    • ap, master, hostap - režim AP (s WDS)
    • client, station, managed - režim klient (s WDS)
  • ssid, essid - nastavení ESSID
  • chan, channel - nastavení kanálu
  • dist, distance - nastavení délky spoje v metrech (pro ACK timeout)

Bohužel ještě není implementováno všechno potřebné nastavení. V blízké době chci dodělat následující:

  • scanování sítí
  • regulace výkonu
  • nastavení pevné rychlosti