OPENWRT
Az OpenWrt egy nyílt forrású operációs rendszer beágyazott rendszerek számára, elsősorban routerek és egyéb hálózati eszközök szerepelnek a támogatott eszközök listáján, jellemzően ilyesmi paraméterekkel: 266-550Mhz, 4-8MB tárhely, 32-128MB RAM.
Parancssorból is elérhető, de van egy szimpatikus LuCI nevű webes felülete, amin a hagyományos routerekhez hasonlóan végezhetünk el beállításokat, ám jóval többféle funkcióból válogathatunk.
Van egy alaptelepítés, tűzfal, DNS, DHCP, NTP szerver, WiFi beállítások, stb.. ami mellé a rendelkezésünkre álló tárhely lehetőségeihez mérten egyéb csomagokat is telepíthetünk.
Egyéb szolgáltatás, mint pl: VPN, dynDNS, samba, (ez praktikus, amennyiben van USB csatlakozás a routeren, és NAS-t vagy hálózati nyomtatót készítünk belőle) és persze a magyar nyelv is telepíthető.. meg még vagy 3000 csomag.
Első lépésként keressük ki a routerünket a támogatott eszközök listájából:
https://wiki.openwrt.org/toh/start
A telepítés egy általános router esetében annyiból áll, hogy belépünk a router IP címén keresztül a menüjébe, és feltöltjük a fenti támogatott eszköz listájából - a típushoz megfelelő - letöltött "squashfs-factory.bin" végű binárist. (előtte ajánlják a gyári legújabb firmware frissítését, amennyiben az adott eszközhöz létezik)
Megjegyzés: a másik "squashfs-sysupgrade.bin" OpenWrt->OpenWrt, vagy OpenWrt<->LEDE irányba történő frissítésre való, nem a gyári firmware cseréjére!
Figyelmeztetés: van olyan letölthető firmware, mely nem tartalmazza a WebGUI-t, ezért érdemes a művelet előtt a támogatott eszközöknél szereplő leírást tanulmányozni, mert könnyen megeshet, hogy telnet-en keresztül kell megejtenünk az első beállításokat, és koránt sem biztos, hogy a későbbiekben fel fog férni az eszköz tárhelyére a WebGUI! Én szóltam!
Telepítés után az eszköz új IP címe 192.168.1.1, a belépési felhasználónév root, jelszó nincs.. ezen érdemes változtatni.
Természetesen egyéb ARM rendszerű gépekre is telepíthető, mint például a Raspberry (erre a Raspbian-nál már bemutatott lemezkép memóriakártyára történő felmásolásával lehet telepíteni az OpenWrt-t is), vagy a még kisebb - routerre hajazó paraméterű minigép - Onion Omega2 (580Mhz, 64MB RAM, 16MB belső tárhely)
Bár az RPI Zero W és az Omega2 árban és fogyasztásban is hasonlóak, a RPI teljesítménye és támogatottsága sokkal jobb, viszont a fizikai mérete az Omega2-nek kisebb (ESP8266-hoz hasonló méretű), így bizonyos projektekhez jobb lehet. Az Omega2 LEDE rendszerrel előtelepítve vásárolható.
LEDE
AZ OpenWrt-ből kivált egy éve egy projekt, a LEDE, aminek fejlesztése - legalábbis számomra - kissé dinamikusabbnak tűnik, az OpenWrt-ből ugyanis már elég régen nem adtak ki stabil kiadást. Viszont a nemrég napvilágra került WiFi WPA2 protokoll KRACK sérülékenységét ebben szinte azonnal javították, így márcsak ezért is érdemes LEDE-re váltani. Tehát éppen aktuális régi routerünk frissítése, mivel a régi eszközökre gyártói javítást várni gyakorlatilag felesleges.
Bár a két irány állítólag összeolvad a közeli jövőben, ismét az OpenWrt név alatt futva, ennek még semmi kézzelfogható jelét nem láttam, így váltottam. Szerencsére a LEDE-re minden további nélkül lehet sysupgrade image-el frissíteni az OpenWrt-ben levő beállításaink megtartásával.
LEDE esetén figyeljünk arra, hogy a 32MB RAM-al és 4MB tárhellyel szerelt régi routereinket nem nagyon támogatják, vagy csak telnet/parancsoros megoldással tudjuk beállítani, vagy kézzel kell machinálnunk, hogy webes felülethez jussunk...
Támogatott LEDE eszközök listája:
https://lede-project.org/toh/start
Frissítés OpenWrt-ről LEDE-re, a nehezebb út
A probléma leírása:
Van egy TP-Link MR3220 routerem, ami éppen 32MB RAM-al és 4MB tárhellyel szerelt, jelenleg OpenWrt+LuCI felülettel, a letölthető LEDE image-ben viszont nincs WebGUI és a rendelkezésre álló szabad hely sem elegendő a telepítéséhez.
A megoldás módja:
- A routeren van USB csatlakozás, tehát egy régi 1GB pendrive-ra teszem azt a részt, ami nem fér az alap 4MB-ba
- Ehhez bele kell tennem az alapimage-be az f2fs fájlrendszer támogatását (az ext4 nem fér bele)
- Ahhoz hogy a fenti beleférjen, további csomagokat kell eltávolítani az alaprendszerből, úgy mint a komplett IPv6 támgatás, a ppp és legnagyobb sajnálatomra a tűzfal, így a rá kötött gépek nem fognak tudni kijutni az internetre, amíg a folyamat nem fejeződik be sikeresen (de aki nem mer, az nem nyer)
- Sajnos nemcsak a tárhely, de a memória is problémás, ezért tüneti kezelésként a zram-swap csomagot is beletesszük, hogy az opkg ne fagyjon le, míg feltelepíti a luci-t.
- A végső megoldás a memóriagondra az, hogy a pendrive-on két partíciót hozok létre, az egyik egy f2fs, a másik pedig egy 64MB-os linux-swap típusú, ezzel a mennyiségű virtuális memóriával a LEDE már stabil(abb)an fut
Lépések:
Előkészítjük az Ubuntu/Debian asztali gépünket egy kis fordításra:
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget unzip python
Az MR3220 letöltési mappájában (amit a támogatott eszközök letöltési linkből tudunk meg) szétnézve:
https://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/generic/
Megtalájuk a megfelelő imagebuilder programot, ami esetünkben ez:
lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz
Letöltjük, kicsomagoljuk, belépünk a kitömörített mappába, majd az alábbi paraméterekkel futtatjuk:
make image PROFILE=tl-mr3220-v1 PACKAGES="block-mount kmod-fs-f2fs kmod-usb-storage mkf2fs f2fsck kmod-usb-ohci kmod-usb-uhci zram-swap -ppp -ppp-mod-pppoe -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables -libiwinfo-lua -liblua -libubus-lua -libuci-lua -lua -luci -luci-app-firewall -luci-base -luci-lib-ip -luci-lib-nixio -luci-mod-admin-full -luci-proto-ipv6 -luci-proto-ppp -luci-theme-bootstrap -uhttpd -uhttpd-mod-ubus -ppp-mod-pppoe -iptables -firewall -libip6tc -libxtables -kmod-nf-ipt -kmod-nf-conntrack -kmod-ipt-conntrack"
Ha netán valakinek pont ilyen routere van és szeretné frissíteni hozzám hasonló módon, legyen a vendégem:
lede_mr3220_f2fs.zip
A sysupgrade image fájlt feltöltjük az OpenWrt-be (Rendszer menü->Firmware frissítés), kínosan ügyelve, hogy bejelöljük a "Beállítások megtartása" jelölőnégyzetet. E közben a háttérben már régen előkészítettük a pendrive-ot a fent írt két partícióval. Újraindítás után jön az ínyenc rész: a korábbi IP címen elérhető a router, de webes felülete már nincs. SSH-n jelentkezünk be ugyanazzal a névvel és jelszóval, amivel korábban a webes felületre.
Behelyezzük a router USB csatlakozójába a pendrive-ot, és elvileg ez a parancs kiírja milyen meghajtókat ismert fel a router:
block info
Remélhetőleg a /dev/sda1 az adatpartíció, a /dev/sda2 pedig a swap partíció.
Ha nem formáztuk le az első partíciót, most ezzel a paranccsal megtehetjük:
mkfs.f2fs /dev/sda1
Az alábbi parancs mindent átmásol az aktuális overlay mappából a pendrive-ra:
mount /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt
Ez a parancs legenerálja a Linux által automatán csatolt meghajtók listáját:
block detect > /etc/config/fstab; \
sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab; \
sed -i s#/mnt/sda1#/overlay# /etc/config/fstab; \
cat /etc/config/fstab;
Nyomunk egy újraindítást:
reboot
Az alábbi parancsot kiadva az overlayfs:/overlay mappában immár láthatóan dúskálnunk kell a helyből:
df
Majd kis frissítés:
opkg update
opkg install fdisk
fdisk -l
Láthatjuk milyen néven fut a swap partíciónk, ezúttal /dev/sda2, be is állítjuk:
mkswap /dev/sda2
swapon /dev/sda2
És egy végső parancs:
opkg install luci
Ezután már egy sokkal barátibb webes felületen érhetjük el minden beállítását. A luci csomag függőségként feltesz minden alapcsomagot, többek között a tűzfalat is, így ez után a LAN porton, illetve WiFi-n felcsatlakozó gépek már kijutnak az internetre is. Sőt, özön helyünk van, attól függően milyen pendrive-ot áldoztunk be, rengeteg egyéb csomagot feltehetünk, vagy akár megosztva NAS-ként is használhatjuk... egy jó tanács: a pendrive-ot ne húzzuk ki, max addig, míg kikapcsoljuk, készítünk egy biztonsági mentést, hogy ne kelljen ezt újra eljátszani, ha netán tönkremegy.
Frissítés OpenWrt-ről LEDE-re, valamivel könnyebben
Adott egy TP-Link WDR 3600 router 128MB RAM-al, 8 MB tárhellyel, két USB porttal. Bőséges. Ennek ellenére nem szeretném, ha valami félreértés áldozatául esnék, és WebGUI nélkül maradnék, így az előbb ismertetett módon letöltöttem az imagebuilder-t, és a luci-t direktben hozzáadtam az alapcsomagokhoz, pár aprósággal, pl VPN, DDNS, USB tárhely támogatása (a szükséges fájlrendszerben még bizonytalan vagyok, így majd később telepítem opkg-vel), meg az összes magyar nyelvi csomaggal, mert bármilyen meglepő, de a cikk nyelvéhez illeszkedő eszközöket szeretek használni.
make image PROFILE=tl-wdr3600-v1 PACKAGES="luci luci-app-ddns luci-i18n-ddns-hu luci-i18n-openvpn-hu luci-mod-admin-full luci-app-firewall luci-theme-bootstrap openvpn-openssl ddns-scripts luci-app-openvpn luci-i18n-base-hu luci-i18n-firewall-hu kmod-usb-storage block-mount"
Ha netán valakinek pont ilyen routere van és szeretné frissíteni hozzám hasonló módon, legyen a vendégem:
lede_wdr3600.zip
A sysupgrade image fájlt feltöltjük az OpenWrt-be (Rendszer menü->Firmware frissítés), kínosan ügyelve, hogy bejelöljük a "Beállítások megtartása" jelölőnégyzetet, újraindulás után ugyanazokkal a beállításokkal, de megújulva tér vissza routerünk. Ez esetben nem kell trükközni, 8MB tárhellyel elő tudunk mindent készíteni, a 128MB RAM pedig elegendő a rendes üzemszerű működéshez.
Kapcsolódó irodalom:
OpenWrt eszközök hackelése haladóknak:
http://bkil.blogspot.hu/search/label/openwrt
OpenWrt képfájl készítő:
https://hub.docker.com/r/bkil/openwrt-image-generator/
OpenWrt telepítése vizuális típusúaknak:
http://www.gubamm.hu/toxin/
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.