UML: User Mode Linux (2. rész - a kapcsolat)

Címkék

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!