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ó.
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.)
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.
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.