3 May 2008 cactus   » (Master)

Alternatív WRT firmware-ek

Nyilván az sosem volt ideális megoldás, hogy itthon egy full számítógép csak azért megy és zajong 24/7-ben, hogy levelezőszerverkedjen az itthoni gépeknek, meg persze NAT-oljon. Lőri hívta fel a figyelmemet a Linksys által gyártott NSLU2-re (becenevén "slug"), amiben az a truváj, hogy normális Linux disztribúció telepíthető fel rá. Szóval elhatároztam, hogy egy ilyennel meg egy Wi-Fi routerrel váltom ki a mostani dobozt. Az NSLU2-vel kapcsolatos információkról majd a következő részben olvashatsz, itt most a routerről lesz szó. Konkrétan a Linksys WRT54GL-ről.

Minek ezen bármit is hackelni?

Ez a kérdés természetesen adja magát, mivel a cucc, háztartási routerhez méltó módon, tényleg Magától Működik: összedugsz mindent, és NAT-ol meg DHCP szerver meg minden. Az viszont nagyon bosszantó, hogy van egy-két nagyon egyszerű feature, amit nem támogat, pedig nem kéne hozzá sok. Számomra a statikus DHCP volt ilyen (persze Dnsmasq-kel), amire mindenképp szükségem volt, de valamiért a router nem tud ilyet. Lehet, hogy ez már enterprise feature, és ilyenért sok pénzt kell elkérni?

Persze megfordult az is a fejemben, hogy a fent említett slugot használjam DHCP szervernek, de akkor meg a Dnsmasq nem az ISP-től kapja az upstream DNS címét, szóval nem ideális. De hát nem is véletlenül ezt a WRT modellt vásároltam, ez ugyanis a leg hackerbarátabb -- így hát nekiálltam megvizsgálni az elérhető alternatív firmware-eket.

Ezek mindegyike Linux alapú, mint ahogy a gyári firmware is az. A különbség a userlandben van, a hobbista csomagok több (lényegesen több) szolgáltatást nyújtanak, viszont nem mindig tökéletes az integráció.

DD-WRT

A wiki nagyon részletes leírást ad mindenről, igazából azért ez volt az első választásom, mert úgy éreztem, azelőtt mindent tudok már a rendszerről, hogy még akár csak letöltöttem volna az image-et. A telepítést a gyári firmware webes interfészén keresztül végeztem, és semmilyen probléma nem adódott. Utána ujraindult a router, és már a DD-WRT felhasználói felülete jön be. Elsőre minden pöpecnek tűnt.

Az első problémám órák múlva jelentkezett: a router nagyon megbízhatatlan volt. Futott egy BitTorrent kliens a gépemen, és ez teljesen megölte a NAT-ot. Namost annakidején az első gép, ami itthon a NAT-olást intézte, egy 100 Mhz-es Pentium volt, 16 mega memóriával, és sosem volt vele gond (persze konkrétan BitTorrent akkor még nem létezett), úgyhogy ezt a békát nem akaródzott lenyelni. A neten keresgélve találtam pár ötletet hogy milyen arkán beállításokat kell megváltoztatni a stabilabb működés érdekében, de eddigre már felfedeztem a másik problémát is:

A statikus DHCP konfigurálása kicsit furcsán működött ahhoz képest, ahogy azt a Dnsmasq lehetőségeit ismerve elképzeltem. Mivel alapvetően ezért cseréltem le a firmware-t, azt találtam ki, hogy hagyom a webes interface-t a francba, és SSH-n keresztül, kézzel bekonfigurálom. Namost ez megoldhatatlan feladat. A filerendszer read-only, a beállítások egy ramfs-ből jönnek, amibe bootkor konfigurációs file-okat generál valami feketemágia az NVRAM-ban lévő kulcs-érték párokból. Ez volt az a pont, amikor kidobtam a picsába az egészet.

(Most látom csak, hogy a website teljesen átalakult az utóbbi pár hétben, és valami fizetős-aktivációs bullshit van. Good riddance.)

OpenWRT

Na ez meg a website-ra vetett gyors pillantás alapján minden, csak nem Magától Működik. Bár az alapelgondolás vonzó volt (írható filerendszer, hagyományos Linux disztribúciókra emlékeztető, csomagokra bontott felépítés), nem éreztem ingerenciát, hogy beletanuljak a részletekbe.

X-Wrt

Ekkor szerencsére ráleltem az X-Wrt-re, ami a gyári firmware-hez, illetve a DD-WRT-hez hasonló webes felületet nyújt, de OpenWRT alapokon. Ez gyakorlatilag pont az, ami nekem kell.

Ráadásul a webes interfész alapból jobb, mint a DD-WRT-é, ezért aztán pont a Dnsmasq bekonfigurálásához nem is volt szükség a kézzel írható filerendszerre -- de kipróbáltam, működik (feelinges volt vi-jal szerkesztgetni az /etc-t). A tűzfal-beállítások, portforward rule-ok létrehozása, stb. is kényelmesen, de mégis flexibilisen végrehajtható böngészőből.

Ami pedig szerintem a legnagyobb a dologban, az a csomagkezelés integrációja a UI-ba. A webes interfészen ugyanis alapból az összes funkció megtalálható, és ha olyan lapra klikkelsz, ami egy nem telepített program beállításait tartalmazná, akkor felajánlja a telepítést -- egyetlen gombnyomással. Jó, jó, én mint ősöreg Debianos, nyilván naponta találkozom ezzel, csak akkor épp apt-get-nek hívják, de mégis, ez az integráció így együtt nagyon kényelmes és meggyőző. Pl. ezen az oldalon látható a használni kívánt NTP szerver textfield-je, eredetileg itt ehelyett egy gomb van, hogy "Ha NTP-t szeretnél használni, klikkelj ide, és telepítsd fel az ntpclient csomagot".

Ráadásul azóta már kb két hete megy, problémáknak a leghalványabb jele nélkül. És igen, azóta is futtatok BitTorrentet. Úgyhogy én az X-Wrt-nél kötöttem ki.

Ami még hátra van: ha elköltözöm, VPN-t akarok kiépíteni a lakásom és anyámék háza között, de úgy, hogy csak a két WRT54GL tudjon róla, a kliensgépek semmit ne vegyenek észre az egészből, csak annyit, hogy az ellenoldali gépek is ott lógnak a 10.0.0.x-en. Állítólag ehhez is minden adott (az X-Wrt-hez van OpenVPN csomag), de ezt az egész kérdést még nem invesztigáltam.

Syndicated 2008-02-01 22:10:00 from cactus.rulez.org

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!