Számos alapvetően új dolog kerül bele a remélhetőleg lassan megjelenő 2.6-os Linux kernelbe. Ezek egyike a beta tesztelők, szoftver fejlesztők, hoszting szolgáltatást üzemeltetők számára érdekesnek ígérező User Mode Linux (UML) lehet.
Az UML-ről szóló első cikkben megnéztük, hogy hogyan lehet az UML-t feltelepíteni. Ahogy ígértem, ma a hálózati beállításokkal, és az utolsó simításokkal fogunk megismerkedni.
Talán az első dolog, amit meg szeretnél valósítani az UML-eddel, hogy kapcsolatot alakíts ki a virtuálisan futó Linux-od, és a külvilág között. Ennek számos oka lehet. Az egyik, hogy rajta valamilyen izolált szervizt akarsz futtatni. Pl. BIND-et, ftp szervert, webszervert, vagy esetleg olyan veszélyes dolgot, mint a "freeshell" szolgáltatás. Azt szeretnéd, hogy a külvilágból a felhasználók elérjék a gépedet, oda mondjuk be tudjanak jelentkezni, azon dolgozhassanak, úgy mint az tennék egy hagyományosan telepített rendszeren, de még véletlenül se veszélyeztessék a fő rendszered biztonságát. Erre tökéletesen megfelel az UML (pláne most, hogy a kernel ptrace bugban szenved). Ha esetleg valami nem várt dolog miatt az UML-rendszered elszáll, nem kell mást tenned, mint azt a filet, amely az UML filerendszerét adja (root fs - ha nem érted olvasd el az első részt!) visszamásolod egy backup-ból, és újra futhat a rendszered. Nem egész fél perc alatt újra működőképes rendszerrel indulhat a szolgáltatás.Szóval kapcsolat. A modern Linux rendszereken (2.4-es kernel) az UML hálózati kapcsolathoz a az ún. TUN/TAP megoldást kell használni (ha régebbi kernelt futtatsz olvasd el a HOWTO ide vonatkozó részét. A 2.2-es kernelekhez az ethertap nevű megoldás kell). A TUN tulajdonképpen a TUNnelling-ből ered, a virtuális hálózat alapja, és a TCP/IP protokoll IP részét használja. A TAP az Ethernet része a dolognak, ha különböző hálózati csatolókat használsz, akkor különböző driverekre lesz szükséged. Az ezzel kapcsolatos információkat megtalálod a itt.
Számos lehetőség van arra, hogy felállíts egy hálózatot az UML-ben. Az egyik biztonságosabb mint a többi, a másik kevésbé. Hogy neked melyik kell, azt neked kell eldöntened. Most nézzük a legegyszerűbbet. Ha úgy döntesz, hogy a rendszered komolyabb hosztolásra fogod használni, akkor olvasd el a HOWTO 6.7-es szekcióját a "TUN/TAP with a preconfigured TAP device" résznél. Ha Red Hat-ot használsz, akkor olvasd el ezt a levelet. Ezekben sokkal biztonságosabb módját mutatják be a hálózati konfigurációnak, mint amit most csinálunk.
Az első dolog amit ellenőrizned kell az a /dev/net/tun eszközön levő jogok. Alapból a jog 700, viszont ez azt jelenti, hogy csak a root tudja használni az eszközt. Meg kell változtatnod a jogokat az eszközön, vagy létre kell hoznod egy csoportot és abba beletenned azt a felhasználót, aki használhatja az UML hálózatát (és ennek a csoportnak a jogait beállítani természetesen).
Ha ezzel készen vagy, akkor be kell töltened a tun.o-t, amely nem más mint a TUN eszköz kernel modulja. Ezt legegyszerűbben az
insmod tun.o
parancs kiadásával teheted meg (vagy editálod a /etc/modules filet (debian) és beleírod kézzel, hogy minden boot-kor automatikusan töltődjön) vagy szerkeszted a /etc/modules.conf vagy /etc/conf.modules filet, ez disztribúció függő, neked kell megtalálni a megoldást (alias char-major-10-200 tun).
Eddig így indítottuk az UML-t:
linux ubd0=/elérési/út/ahova/kibontottad/a/root/fst
Most indítsuk el hálózati támogatással:
linux ubd0=/elérési/út/ahova/kibontottad/a/root/fst eth0=tuntap,,,10.0.0.5
Bootkor figyeljük az üzeneteket:
[...]
Initializing stdio console driver
Netdevice 0 : TUN/TAP backend - IP = 10.0.0.5
NET4: Linux TCP/IP 1.0 for NET4.0
[...]
Ha bebootolt az UML, nézd meg, hogy van-e loopback interfész
ifconfig
Ha nincs akkor húzd fel:
ifconfig lo 127.0.0.1 up
usermode:~# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
Hasonlóképpen kell eljárnunk az eth0 interfésszel is:
(figyelj oda arra, hogy az eth0 IP címe nem lehet ugyanaz, mint a virtuális hoszt IP címe!)
ifconfig eth0 10.0.0.6 up
Az IP címet úgy válasszuk meg, hogy az kapcsolódhasson az átjáróhoz (jelen esetben a default gateway a 10.0.0.5)
Következhet a tesztelés:
- pingeljük meg magunkat
- pingeljük meg az átjárót
- majd végül pingeljünk meg valakit az átjárón túl
- majd ha működik az internet kapcsolatunk, akkor pingeljünk meg valakit az interneten IP cím alapján
A név szerinti hivatkozáshoz szükség van a névfeloldásra:
szerkesszük meg a /etc/resolv.conf filet, és írjunk bele egy valós névszervert.
Ha kész, akkor próbáljunk meg megpingelni valaki az interneten a neve alapján (pl. ping www.bme.hu)
Ezek után már nincs más dolgunk, mint szépen befejezni a beállításokat. Beállítani a "basic networking"-et, stb.
Ha ez kész, akkor mennie kell az APT-nak is.
Szerkesszük meg a /etc/apt/sources.list file-t, és már telepíthetünk is bármit a rendszerünkre. Tökéletes teszt platform.
Debian felhasználóknak: többen kérdezték levélben, hogy hol vannak a telepítés után az UML kernel moduljai. Ők valószínűleg nem olvasták el körültekintően a README fileokat.
trey@sunshine:/usr/share/doc/user-mode-linux$ cat README.Debian | less
[...]
Kernel modules
--------------
Modules are installed in /usr/lib/uml/modules/. The easiest way to
get to them from within UML is to use hostfs, e.g.:
mkdir -p /lib/modules/`uname -r`/kernel
mount -t hostfs -o /usr/lib/uml/modules/`uname -r`/kernel
hostfs /lib/modules/`uname -r`/kernel
depmod -a
or copy them into your root filesystem (rootstrap can do this automatically).
[...]
A modulokat értelemszerűen be kell másolni a root fs-be. A root fs elkészítéséhez használhatod a rootstrap (köszönjük meg balsa-nak az infót ;-)) nevű programot, vagy egyszerűen mount-olva a root fs-t, azt szerkesztheted:
(kernelbe legyen loopback eszköz támogatás)
mount -o loop root_fs /ahova
cd /ahova
itt szerkeszted ami kell, pl. bemásolhatod a kernel modulokat
umount /ahova
Tulajdonképpen ennyi. Ez a két cikk nem volt más, mint egy kedvcsináló az UML-hez. Természetesen csak nagyon felületesen érintette a cikk az UML telepítését, beállítását, és feltételezte a cikk írója (én ;-)), hogy az alapvető Linuxos ismeretek megvannak. A telepítés és konfiguráció teljes leírására ott a HOWTO, mindenki olvassa el a neki szükséges részt.
A felhasznált irodalom:
User Mode Linux HOWTO
User Mode Linux: Coming to a Kernel Near You, Part 2
Ajánlott források:
UML honlap
UML a sourceforge-n
uml.openconsultancy.com
Jó szórakozást!