News & Blog

PNETLab hálózat szimulátor

News & Blog

Bevezető

A PNETLab egy az EVE-NG-re épülő hálózatszimulációs eszköz, amely az EVE-NG közösségi verziójának funkcióit egészíti ki, így célszerű ezen írás előtt az EVE-NG alapok bejegyzés elolvasása és megismerése, hiszen itt csak megemlítem azokat a részeket, amelyeket ott kifejtettem. Másrészt, mivel a PNETLab egyik legjobb újítása a Docker rendszerbe integrálása, így célszerű a Docker alapok bejegyzés elolvasása is.

Hasonlóan az EVE-NG-hez, a PNETLab is egy virtuális gép formájában tölthető le a pnetlab.com oldalról. A virtuális gépet például a VMware, vagy a VirtualBox programban nyithatjuk meg a letöltési oldalon megadott paraméterek beállításával. Miután elindul a virtuális gép, jelentkezzünk be a root felhasználói névvel és a pnet jelszóval, és állítsuk be az EVE-NG-nél már megismert paramétereket. (Itt is érdemes a jelszót az elején változatlanul hagyni.) A gép újraindulása után jelentkezzünk be egy böngészőn keresztül a virtuális gépen megjelenített IP címmel. Ekkor szembesülhetünk az első nagy különbséggel, a PNETLab két üzemmóddal rendelkezik, az online és az offline móddal.

A legfontosabb és legmegnyugtatóbb számunkra, hogy mindkét módban ugyanazokat a funkciókat érhetjük el, tehát ebben nincsen különbség. Az online mód használatához internetkapcsolatra van szükségünk és regisztrálnunk kell, míg offline módban az admin/pnet adatokkal jelentkezhetünk be. Online módban a PNETLab-on keresztül megosztott topológiákhoz (labor fájlokhoz) is hozzáférhetünk, és ilyeneket készíthetünk is, azokat megoszthatjuk vagy eladhatjuk. Offline módban csak azokkal a topológiákkal dolgozhatunk, amelyeket már letöltöttünk vagy magunknak készítettünk. Mindkét módban összesen 10 hozzáférést használhatunk, bár ez a szám növelhető. Kattintsunk az online módra, és első alkalommal regisztráljunk email címünkkel (Sign Up!), majd a sikeres regisztráció után jelentkezzünk be.

A nyitóoldalon láthatjuk a letöltött és a saját magunk által készített labor fájlokat, innen érhetjük el a felhasználók kezelését (Accounts), tölthetünk le labor fájlokat (Download Labs), a sajátjainkat közzé tehetjük (Sell Your Labs). A két legfontosabb menüpont nekünk a System és a Devices. A System alatt érjük el a System Setting oldalt, ahol az egyes szolgáltatások újraindítása mellett az SFTP-vel feltöltött image állományok jogosultságát állíthatjuk be (Fix Permission). (Tehát már nem kell bejelentkezni ehhez a virtuális gépbe ehhez.) A Devices menüpontban előre elkészített Docker képfájlokat tudunk a rendszerbe integrálni. (Erről később majd részletesen is szó lesz.)

Lebegő HTML konzol

Az EVE-NG-hez képest sokkal használhatóbb a HTML konzol, mivel egy lebegő ablakban jelenik meg, és ugyanazon ablakon belül több terminálablakot is meg tud jeleníteni. Ráadásul kijelentkezés nélkül is tudunk váltani rá. Használjuk bátran!

Megosztott képfájlok

A PNETLab számára is a rendszerbe kell másolnunk vagy dynamips, vagy IOL vagy QEMU formában a szükséges eszközök képfájlját. Rendelkezésünkre áll egy ishare parancs, amellyel megosztott képfájlokat tudunk keresni (ishare search) és letölteni (ishare pull) a virtuális gépre. Noha a keresésre számos képfájlt kapunk eredményül, szinte egyetlen letöltés sem jár sikerrel. Viszont nem kell elkeserednünk, mert a keresés eredményeképpen legalább az egyes képfájlok nevét megismerhetjük, és rákeresve azokra, manuálisan letöltve, majd a virtuális gép megfelelő könyvtárába feltöltve használhatjuk is azokat. Keressünk például egy Windows7-es képfájlt az ishare search win paranccsal:

Ezután keressünk rá az interneten a kiválasztott képfájl nevére:

Majd töltsük le:

Ezután már csak az EVE-NG-nél megtanult módon fel kell tölteni a qemu könyvtár egy win-7 alkönyvtárába. Ne felejtsük el a System Setting menüpontban fixálni a jogosultságokat, és máris használhatjuk a Win7-es Node-t a topológiánkban:

HTML konzol módú Wireshark

A PNETLab egyik nagyszerű fejlesztése, hogy a Wireshark programot HTML konzol módban tudja futtatni. Ehhez csupán a Devices menüpontban a Wireshark-ot hozzá kell adni a rendszerhez. (Ilyenkor a Wireshark Docker képfájlját installálja fel.) Kattintsunk a Wireshark ikonja alatti Get Device gombra, és várjuk meg, míg a program a rendszerhez adódik. (A Wireshark ilyenkor a virtuális gépre kerül felinstallálásra, tehát a hoszton nem is kell meglennie.) Ezután már csak (ahogyan az EVE-NG-nél is láttuk) egy eszközre jobb gombbal kattintva ki kell választanunk azt a hálózati csatolót, amelyről forgalmazott csomagokat szeretnénk vizsgálni. (Az alábbi képen két PC közötti ICMP csomagokat jelenítjük meg.)

Beépített Docker alkalmazások telepítése

A PNETLab egyik legnagyobb újítása, hogy a virtuális gép már tartalmazza a Docker szolgáltatást, és akár előre elkészített Docker képfájlokat tudunk telepíteni webes felületen keresztül, de akár manuálisan is letölthetjük azokat. (Az EVE-NG esetén a Docker támogatás csak a fizetős, professional változatban volt elérhető.) Először próbáljunk ki két webes képfájlt. (A Wireshark is egy ilyen volt.) Az egyik egy Chrome böngészőt tartalmaz, a másik egy Apache webszervert. Ahogyan korábban már láttuk, ezeket a Devices menüponton keresztül érhetjük el. Itt találjuk meg a leírásukat is. Miután felinstalláltuk a két eszközt, készítsük el a következő kis topológiát.

(A Management(Cloud)-t és a kapcsolót az EVE-NG cikkben leírt módon installálhatjuk fel. Ne felejtsük el a jogosultságok beállítását!) A Docker eszköz kirakásakor válasszuk ki a megfelelő képfájlt, és állítsuk a hálózati csatoló IP konfigurációját DHCP-re.

A webszervert Telnet kapcsolaton keresztül érjük el, a böngészőket RDP-vel. (Ezt az eszköz Edit ablakában a Primary Console-nál állíthatjuk be.) Mivel DHCP-vel kértünk az Apache szervernek IP címet, így azt le is kell kérdeznünk. Erre vagy az ipconfig a parancsot használjuk, vagy (amennyiben ez nem elérhető, később lesz majd ilyen képfájl) a hostname -I is megteszi. (Természetesen beállíthattuk volna statikusan is a címet, de ilyenkor ne feledkezzünk meg az átjáró és amennyiben szükséges a DNS szerver címének a beállításáról sem.)

Jelenítsük meg az egyik böngészőben az Apache webszerver nyitóoldalát, a másikban pedig egy tetszőleges oldalt az internetről.

Természetesen lehetőség van az interfészek IP címének statikus beállítására is az X.Y.Z.W/P formátumban. (Pl. 192.168.1.10/24) Ilyenkor ne felejtsük el az alapértelmezett átjárót is beállítani (szintén az Edit lapon), amely az az IP cím, amelyen keresztül a szerver PNETLab virtuális gépünk web-es felületét is elértük.

Az előre elkészített Docker képfájlok között még több másik is rendelkezésünkre áll (például Ubuntu és CentOS7 szerverek és asztali verziók), melyeket a fentiekhez hasonló módon tudunk kipróbálni, illetve a rendszerbe integrálni.

Saját Docker alkalmazás telepítése

Az eddig a webes felületről felinstallált Docker alkalmazások teljesen hagyományos Docker képfájlokként kerülnek be a rendszerbe. Listázzuk csak ki őket:

Természetesen parancssoros felületről is felinstallálhatunk képfájlokat. Húzzunk le például az OwnCLoud alkalmazást a docker pull owncloud paranccsal, tegyük fel a laborfájlban a korábban felinstallált Chrome böngészővel együtt, és nyissuk meg a weboldalát. (Itt most statikus IP címeket állítottunk be.)

Python támogatás – Netmiko

Aki már próbát Python-t installálni, biztos sokszor találkozott olyan inkompatibilitási problémákkal, amelyeket elég nehéz megoldani. Szerencsére a PNETLab mögött álló virtuális gépen ilyen problémákat nem tapasztalhatunk. Pédaképpen installáljuk fel a Netmiko Python könyvtárat, és próbáljuk is ki. (A Netmiko teszi lehetővé, hogy python programból SSH-n keresztül parancsokat futtassunk le a Cisco hálózati eszközökön, és feldolgozzuk azok kimenetét.)

Jelentkezzünk be a PNETLab virtuális gépbe, majd először frissítsük a csomaglistát, majd telepítsük a python-netmiko csomagot:

apt-get update -y
apt-get install -y python-netmiko

(Előfordulhat, hogy a csomag felinstallálása nem sikerül, mert az apt-get zárolva marad. Ilyenkor törölni kell a /var/lib/dpkg könyvtárból a lock és a lock-frontend 0 bájt méretű fájlokat, majd újra ki kell adni a parancsot.)

Készítsünk el most egy nagyon egyszerű topológiát, rakjunk fel egyetlen kapcsolót, mely lásson ki a netre, rendeljünk hozzá IP címet, és konfiguráljunk rajta SSH hozzáférést (név: bob, jelszó: cisco).

Próbáljunk bejelentkezni a virtuális gépről SSH-val:

ssh bob@192.168.6.140

Azt tapasztaljuk, hogy nem sikerül a bejelentkezés. (No matching cipher found.) A megoldás egyszerű: Nyissuk meg a virtuális gépen a /etc/ssh/ssh_config fájlt, és vegyük ki a megjegyzés jelet a Chiper sor elől. Ezután már sikeres az SSH bejelentkezés. (A hoszt gépről is bejelentkezhetünk, de innen, amennyiben Windows-on dolgozunk, érdemes például a putty segédprogramot használnunk, mert a Windows beépített ssh kliense is ezt a hibát dobja.)

Ezután már kipróbálhatjuk a netmiko modult is. Egy szerkesztőben írjuk meg az alábbi kis python programot:

from netmiko import ConnectHandler

net_connect = ConnectHandler(
    device_type="cisco_xe",
    host="192.168.6.140",
    username="bob",
    password="cisco",
)

output = net_connect.send_command(
    "show vlan brief"
)
print(output) 

Másoljuk fel a virtuális gépre, és futtassuk le. Eredményül megkapjuk a kapcsoló VLAN információit:

Természetesen bonyolultabb programot is írhatunk, és bonyolultabb topológián is futtathatjuk. Arra viszont ügyeljünk, hogy ha olyan alhálózatban érhető el az eszköz, amelyet nem ismer a virtuális gép vagy a Windows, akkor vegyük fel hozzá a szükséges statikus útvonalakat.