You are on page 1of 274

Hálózatok építése és üzemeltetése

Linux alapok gyakorlat

1 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Jupyter Notebook
 by Pelle István
 VM felépítése
 Vagrant program segítségével
 vagrantfile: https://goo.gl/33GBUQ
 Segédlet a telepítésről és a használatról
 https://goo.gl/Yf5XRY

2 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Alapvető parancsok

3 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Parancsok
 Parancsok a shell-ben adhatók ki
 általános felépítésük:
 parancs kapcsolók argumentumok ...
 kapcsolók legtöbbször “-” jellel kezdődnek
 ha fájlnév helyén áll “-”, akkor a standard inputot
vagy standard outputot jelenti
 pl: ls -l *.txt (részletes lista a .txt végződésű
fájlokról)

4 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Hasznos parancsok
 man
 leghasznosabb parancs, minden UNIX-alapú rendszer részét képezi
 felhasználói kézikönyv, mely az összes parancs, függvény, API hívás leírását tartalmazza,
valamint a főbb konfigurációs fájlokét
 a man oldalakról a q billentyű lenyomásával lehet kilépni
 pl: man ls
 mc
 Midnight Commander: könnyen használható fájlkezelő program sok hasznos
segédfunkcióval
 shutdown, halt, reboot, poweroff
 rendszer leállítása vagy újraindítása
 su, su username; sudo, sudo -u username
 superuser jogosultság megszerzése (su), illetve adott felhasználói jogosultság
megszerzése
 sudo használatával egy parancs hajtható végre az adott jogosultsággal

5 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Fájlrendszerrel kapcsolatos műveletek
 cd, pwd, mkdir, rmdir, ls, find, tar
 Könyvtárműveletek: aktuális könyvtár megváltoztatása, aktuális könyvtár kiíratása,
könyvtár létrehozása, üres könyvtár törlése, könyvtár tartalmának kiíratása, fájlok
keresése a könyvtár hierarchiában nevük vagy tulajdonságaik alapján, könyvtárak
archiválása vagy visszaállítása
 nem üres könyvtárak törlésére a fájltörlési parancs rekurzív változatát kell használni (rm
-r)

 touch, rm, cp, mv, ln


 Fájlműveletek: fájl létrehozása vagy "megérintése" (dátumok aktuálisra állítása rajta),
törlése, másolása, mozgatása, linkelése (szimbolikus link létrehozásához használjuk a -s
opciót)
 cp, mv, ln paraméterei mindig forrás – cél sorrendben követik egymást
 -r (vagy -R) kapcsolóval lehet rekurzívan (alkönyvtárakkal együtt) végeztetni
fájlműveleteket
6 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Fájlrendszerrel kapcsolatos műveletek
 Példák  Példák
 könyvtárak, fájlok kezelése
 szimbolikus link létrehozása a szülő
könyvtárban elhelyezkedő prog fájlra
 cd proglink néven:
 pwd  touch prog
 ls  mkdir valami
 ls –l  cd valami
 ln -s ../prog proglink
 ls –lah
 ls -l
 mkdir linux  az aktuális könyvtártól (“.”) rekurzívan
 cd linux keresi a .html fájlokat és a talált fájlokról
 touch test test2 részletes információt ad (mindegyik
 rm test találatra végrehajtja az ls -l parancsot):
 mkdir a; cd a
 cd ..
 touch a.html b.html c.html
 cd .  cd..; touch x.html
 rmdir linux  find . -name '*.html' -exec ls -l '{}' \;
 rm –fR linux

7 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Fájlrendszerrel kapcsolatos műveletek
 1. Feladat
 A rendszerbe való belépés után indíts el egy terminált. A saját
home könyvtáradban hozz létre egy 'linux-alapozo' alkönyvtárat
 Milyen jogosultságokkal rendelkeznek az egyes felhasználók a létrehozott
könyvtárhoz?
 Lépj be a 'linux-alapozo' könyvtárba és hozz létre három
tetszőleges tartalmú szöveges fájlt f1, f2 és f3 néven.
 Milyen védelmi kóddal jöttek létre a fájlok?
 Állítsd be úgy a jogosultságokat, hogy az f2 fájlra a csoportod többi tagja
is rendelkezzen írási joggal.
 Hozz létre egy 'linkek' alkönyvtárat, majd ezen belül hozzál létre
szimbolikus linkeket az előbb létrehozott három fájlra f1link, f2link,
f3link névvel.
8 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Szűrők

9 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Szűrők
 Nagyon hasznos Unix eszközök
 egyszerű programok
 standard bemenetüket a megfelelő művelet elvégzése után a standard
kimenetükre másolják
 sok önmagában nagyon egyszerű műveletet megvalósító szűrő van
 általában a segédprogramok képesek szűrőként is működni
 szűrők egymás után kapcsolhatók a pipe (csővezeték) segítségével
 shell által végrehatjott programok alapból 3 megnyitott állománnyal
indulnak
 standard input (0)
 standard output (1)
 standard error (2)
 ezek átirányíthatók

10 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Szűrők
 Bemenet/kimenet átirányítás
 prog < file: standard input átirányítása (vagy hosszabban: 0<)
 prog > file: standard output átirányítása (vagy hosszabban: 1>)
 prog 2> file: standard error átirányítása
 prog 2>&1: standard error átirányítása standard outputba
 prog 1>&2: standard output átirányítása standard errorba
 prog1 | prog2: pipe, prog1 kimenetének prog2 bemenetére
irányítása
 prog >> file: standard output hozzáírása (append) a megadott
fájlhoz

11 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Egyszerű példák
 echo, cat, tee
 Paraméterként átadott szöveg kiíratása (echo), illetve fájlok kiíratása és összefűzése
(cat). Gyakran használjuk a standard output átirányításával, vagy pipe-okkal együtt. A
tee parancs a standard inputról másol a standard outputra, valamint a paraméterként
megadott fájlokba is (adatfolyam elágaztatása).
 pl:
 cat /etc/passwd
 echo ’asdf’ > f1
 pl: cat program kimenetét átirányítjuk az f1 fájlba, így a standard bemeneten bevitt
sorok az adott fájlba íródnak egészen a fájlvége jel (ctrl-d) beviteléig:
 cat >f1
 more, less
 Fájlok kiíratása úgy, hogy egyszerre egy képernyőnyi tartalom jelenik meg, illetve
navigálási lehetőség biztosítása. A less a kifinomultabb változat.
 less /etc/apache2.conf
 cat /etc/apache2.conf | less

12 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Egyszerű példák
 head, tail
 Fájlok első (head), illetve utolsó (tail) n sorának kiíratása.
 head -2 /etc/group
 sudo tail –n 20 /var/log/syslog
 sudo tail -f /var/log/syslog
 tr
 Alapértelmezésben karakterfordítást végez (translate): az első paraméterként megadott
karaktereket cseréli a második paraméterben megadottakra. Tartomány is megadható, pl. [0-
9] a számokat jelenti, [a-z] a kisbetűket. Ha az első paramétere -d, akkor törli a második
paraméterben megadott karaktereket. Pipe részeként vagy átirányítással használjuk.
 echo ‘abcd’ | tr bc xy
 wc
 Kiírja a sorok, szavak és karakterek számát ("word count").
 wc /etc/passwd
 wc –l /etc/passwd
 wc –w /etc/passwd
 wc –c /etc/passwd

13 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Egyszerű példák
 cmp, diff, comm
 Fájlok összehasonlítása: bájtról bájtra (cmp) vagy szöveges fájlokat sorról sorra (diff). A
comm parancs két fájl közös sorainak kiíratására használható.
 diff .bashrc .bashrc~
 sort, uniq
 A két parancsot általában együtt (egymásba pipe-olva) használjuk és ilyen sorrendben: a
sort rendezi a bemenetet, míg a uniq a rendezett bemenet ismétlődő soraiból csak
egyet-egyet hagy meg.
 A uniq paraméterezésével többféle működés is elérhető, pl. a sorok különféle számolása
(pl. uniq -c), csak a többször szereplő (uniq -d), vagy az egyedi sorok kiíratása (uniq -u).
A sort paraméterezésével számok és stringek rendezése is megoldható.
 Például az alábbi egymás után kapcsolt szűrők a jelszófájlt rendezik a 3. oszlop szerint (-
k3) numerikusan (-n) csökkenő sorrendben (-r) és az utolsó két sor lesz az eredmény (tail
-n 2). A jelszófájlban a mezők közti szeparátor a :, ami a rendezésnél a -t kapcsolóval
adható meg:
 cat /etc/passwd | sort -t: -n -k3 -r | tail -n 2

14 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Egyszerű példák
 2. Feladat
 Készíts egy szűrőt, mely a standard bemenetét a
kimenetre másolja úgy, hogy közben azt
nagybetűssé konvertálja (a kisbetűket
nagybetűkké alakítja, a többi karaktert
változatlanul hagyja).
 Készítsd el az előző szűrő módosított változatát,
amely invertálást végez, vagyis a nagybetűket
kisbetűre, míg a kisbetűket nagybetűre cseréli.

15 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Egyszerű példák
 2. Feladat
 Készíts egy szűrőt, mely a standard bemenetét a
kimenetre másolja úgy, hogy közben azt
nagybetűssé konvertálja (a kisbetűket nagybetűkké
alakítja, a többi karaktert változatlanul hagyja).
 echo ‘asdfASDF’ | tr a-z A-Z
 Készítsd el az előző szűrő módosított változatát,
amely invertálást végez, vagyis a nagybetűket
kisbetűre, míg a kisbetűket nagybetűre cseréli.
 echo ‘asdfASDF’ | tr a-zA-Z A-Za-z
16 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
grep
 grep, egrep, fgrep
 Reguláris kifejezés-illesztő. A paraméterben (idézőjelben!) megadott reguláris kifejezésre
(regexp) illeszti a bemenetet.
 Fontosabb paraméterei:
 -A, -B: az illesztett sor környezetét (előző / következő, adott számú sorokat) is megmutatja
 -v: fordított működést eredményez (nem illesztett sorokat mutatja)
 -q: nincs output, csak a visszatérési értéket állítja be (if feltételeként szoktuk használni)
 grep és sed parancsok reguláris kifejezéseiben az operátorokat "escape-elni" kell
 (különben karakternek tekinti őket a program)
 pl: “\|” a vagy operátor, míg “|” a pipe karakter
 példák:
 $ echo "bcd" | grep "a.*"
 $ echo "bcacb" | grep "a.*b"
 bcacb
 $ echo "baaa" | grep "a*"
 baaa
 $ echo "baaa" | grep "^a*$"
17 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
sed
 sed
 Teljes funkcionalitását tekintve sorszerkesztő, mi reguláris fordítóként fogjuk
használni.
 Erre az s parancsa szolgál:
 s/kif1/kif2/
 kif1 reguláris kifejezést fordítja kif2 kifejezésre mindazon sorokon, amelyekre kif1 illeszkedik.
 a(z escape-elt) zárójelbe tett kifejezésrészletekre vissza lehet hivatkozni kif2 -ben a \1, \2, ...
referenciákkal.
 ha az s parancs záró / -je után még egy g paramétert írunk, akkor soronként többször is
végez illesztést
 Példák:
 $ echo 'xxxaaaxxx' | sed 's/aaa/bbb/'
 xxxbbbxxx
 $ echo "a0001b" | sed 's/a\([0-9]*\)b/x\1y/'
 x0001y

18 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Reguláris kifejezések
 c Maga a c karakter, ha az nem speciális karakter.
 \c Kikapcsolja a c karakter speciális jelentését. Pl: \[: zárójel kezdődik
 ^ Sor eleje.
 $ Sor vége.
 . Egy darab bármiyen karakter. (Az újsor kivételével minden karakter illeszkedik rá.)
 [abc] Bármelyik karakter a halmazból.
 [^abc] Bármelyik karakter, amelyik nincs a halmazban.
 [a-z] Bármelyik karakter a megadott tartományból.
 r* r reguláris kifejezés tetszőlegesen sokszor (akár 0-szor).
 r+ r reguláris kifejezés 1-szer vagy sokszor. (extended regexp)
 r? r reguláris kifejezés 0-szor vagy 1-szer. (extended regexp)
 r1r2 r1 és r2 egymás után úgy, hogy r1 a lehető leghosszabban illeszkedjen.
 r1¦r2 r1 vagy r2. (extended regexp)
 (...) egymásba ágyazott kifejezések. (extended regexp)
 r{n} r reguláris kifejezés n-szer megismétlődik. (extended regexp)
 r{n,} r legalább n-szer megismétlődik. (extended regexp)
 r{n,m} r legalább n-szer, legfeljebb m-szer megismétlődik. (extended regexp)
 \(r\) r reguláris kifejezés önmaga, amire később hivatkozni lehet \n alakban.
 \n hivatkozás az n-edik \(r\) reguláris kifejezésre.

19 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Reguláris kifejezések: példák
 Az /etc/passwd fájlból írassuk ki az összes olyan sort, amelyben az 'r' és a 't'
karakterek között tetszőleges számú 'o' szerepel:
 $ cat /etc/passwd | grep 'ro*t‘

 Írassuk ki az aktuális könyvtár összes olyan könyvtárát, amihez mindenkinek


írási joga van:
 $ ls -l | grep '^d.......w.‘

 Írassunk ki minden olyan sort, amiben egymás után szerepel ugyanaz a betű:
 $ cat /etc/passwd | egrep '(.)\1‘

 Cseréljünk le minden .conf fájlnév részletet .CONFIG-ra a kimeneten:


 $ ls | sed s/.conf/.CONFIG/
20 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Reguláris kifejezések: példák
 Első és második karakter felcserélése egy fájlban:
 $ cat file1 | sed 's/\(.\)\(.\)/\2\1/‘

 Jelszófájl első két mezőjének felcserélése (mező szeparátor a kettőspont):


 $ cat /etc/passwd | sed 's/^\([^:]*\):\([^:]*\):/\2:\1:/‘

 Számoljuk meg melyik login shell hányszor szerepel az /etc/passwd fájlban (utolsó
oszlop), majd ezt rendezzük csökkenő sorrendbe és írjuk ki a két legelsőt:
 $ cat /etc/passwd | sed 's/.*:\([^:]*\)/\1/' | sort | uniq -c | sort -
n -r | head -n2

21 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Bash alap(f)ok

22 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Bourne Again Shell
 Parancsértelmező és egy programozási nyelv is egyben
 segítségével egyszerűen kialakíthatók ún. shell scriptek, melyekkel a parancskészlet
tetszőlegesen bővíthető
 paraméterezhetősége hasonló a normál programokéhoz
 Linux rendszerek egyik alapértelmezett shellje
 egyszerű adminisztrációs programok készíthetők
 bemenet/kimenet átirányítás és a pipe alkalmazásával nagyon hatékony eszköz
 Bash-ben a sorok lezárhatók enterrel vagy pontosvesszővel
 hosszabb kódrészlet: do ... done blokkba (hasonlóan, mint a C programok { ... } blokkja)
 Futtatható script:
 első sora: hashbang + a bash elérési útja (#!/bin/bash)
 chmod a+x script paranccsal futtathatóvá kell tenni (enélkül bash script paranccsal történik)
 aktuális könyvtár alapértelmezésben nincs benne a PATH környezeti változóban
 így ./script paranccsal indíthatjuk
 (vagy hozzáadjuk a PATH -hoz az aktuális könyvtárat a PATH=$PATH:. paranccsal)

23 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Hasznos shell funkciók
 alt-F1,F2,... szöveges terminálok közti váltás
 ctrl-alt-F1,... másik terminálra váltás grafikus terminálról
 ↑ és ↓ history, korábbi parancsok behívása
 ctrl-r history, parancs illesztése az első megfelelőre (reverse
search)
 TAB állománynév kiegészítés
 shift-PgUP képernyő tartalmának léptetése
 shift-PgDown
 ctrl-a sor elejére ugrás
 ctrl-e sor végére ugrás
 ctrl-l képernyő újrarajzolása
24 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Változók, idézőjelek
 Változókat nem kell deklarálni, név szerint lehet rájuk hivatkozni
 értékadás: VAR=valami (egyenlőségjel baloldalán nincs szóköz!)
 érték lekérése: $VAR vagy ${VAR}
 standard inputról változóba: read parancs
 Idézőjelek:
 szimpla idézőjel: ‘echo $VAR’
 az idézett szöveg változtatás nélkül kerül feldolgozásra
 dupla idézőjel: “echo $VAR”
 az idézett szövegen lefut a változóhelyettesítés, majd változtatás nélkül kerül feldolgozásra
 vissza idézőjel: `echo $VAR`
 az idézett szöveget parancsként értelmezi, és az eredményét adja át
 parancshelyettesítés másképp, pl: current_dir=$(pwd)
 aritmetikai helyettesítés, pl: c=$(($1+$2)) vagy $((c=$1+$2))

25 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Wildcardok
 Állománynév-helyettesítés
 * tetszőleges számú tetszőleges karakter
 ? pontosan egy tetszőleges karakter
 [abc] bármelyik karakter a halmazból
 [a-z] bármelyik karakter az adott intervallumból
 {a,b,c} “brace expansion”
 Példák:
 $ ls -l image[1-3].jpg
 $ ls -l image[1-3].{jpg,bmp}
 shell erre fordítja: $ ls -l image1.jpg image1.bmp image2.jpg
image2.bmp image3.jpg image3.bmp

26 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Speciális változók
 $0 scriptfájl neve
 $\# bemeneti paraméterek száma
 $i az i-edik bemeneti paraméter
 $? utolsó visszatérési érték
 $@ és $* az összes paraméter
 $\$ processz ID
 $HOME home könyvtár
 $HOSTNAME gép hosztneve
 $PATH elérési utak az állományokhoz
 $UID aktuális user ID
 $PS1 aktuális prompt
 $IFS input mező szeparáló karakter

27 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Beépített parancsok
 : nem csinál semmit  bg/fg job háttérbe / előtérbe
 . vagy source más fájlok include-olása helyezése
 alias/unalias alias beállítása /  let aritmetikai kifejezés kiértékelése
eltávolítása  pwd aktuális könyvtár lekérdezése
 break/continue ciklus elhagyása /  read/readonly változóba olvasás
következő iteráció standard inputról
 cd aktuális könyvtár megváltoztatása  return visszatérés függvényből
 echo argumentumok kiírása  set/unset változók lekérdezése /
 eval argumentum mint parancs beállítása
végrehajtása  shift pozicionális paraméterek
 exec argumentum végrehajtása, de
léptetése
nem indul új shell
 test vagy [ ] feltétel kiértékelése
 exit kilépés
 export shell változó exportálása
 times futási idők

28 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Vezérlési szerkezetek
 if  for
 if [ "$VAR" == "valami" ]; then  for i in a b c; do
 echo "be van állítva"  echo $i
 else  done
 echo "nincs"
 fi
 for i in *; do
 if grep -q "hello"; then
 echo $i
 echo "szia"
 done
 fi

29 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Vezérlési szerkezetek
 while  case
 while read v; do  case "$VAR" in
 echo "Új sor jött: $v"  hello)
 done  echo "szia"
 ;;
 bye)
 echo "bye-bye"
 ;;
 *)
 echo "nem értem"
 ;;
 esac

30 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Feltételek kiértékelése (test vagy [ ])
 test sigaz, ha s nem null string
 test -z s igaz, ha s nulla hosszúságú string
 test -n sigaz, ha s nem nulla hosszúságú string
 test s1==s2 igaz, ha s1 string megegyezik s2-vel
 test s1!=s2 igaz, ha s1 string nem egyezik meg s2-vel
 test n1 -eq n2 igaz, ha n1 aritmetikailag egyenlő n2-vel
 -ne, -gt, -ge nem egyenlő, nagyobb, nagyobb vagy egyenlő
 -lt, -le kisebb, kisebb vagy egyenlő
 test -f igaz, ha f file létezik és nem könyvtár
 test -r igaz, ha f file létezik és olvasható
 test -w igaz, ha f file létezik és írható
 kombinálhatók: ! (tagadás), -o (vagy), -a (és)

31 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Példák
 Egész számok kiírása 1-től  hány fájl van az aktuális könyvtárban:
100-ig:
 #!/bin/bash
 n=0
 #!/bin/bash  for i in *; do
 c=1  if [ -f $i ]; then
 while [ $c -le 100 ]  n=$(($n+1))
 do  fi
 done
 echo $c
 echo "$n fájl van a könyvtárban"
 c=$(($c+1))
 done

32 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
3. Feladat
 Írj egy bash scriptet, ami egy könyvtárban az
összes .htm kiterjesztésű fájlt .html
kiterjesztésűre cseréli.

 Készítsd el a fordított változatot is, ami .html-


ről .htm-re cserél.

33 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
3. Feladat
 Írj egy bash scriptet, ami egy könyvtárban az összes .htm kiterjesztésű
fájlt .html kiterjesztésűre cseréli.
 #!/bin/bash
 for i in *.htm; do
 mv $i ${i}l
 done

 Készítsd el a fordított változatot is, ami .html-ről .htm-re cserél.


 #!/bin/bash
 for i in *.html; do
 mv $i "$(echo $i | sed 's/.$//')"
 vagy: mv $i "$(echo $i | sed 's/html$/htm/')"
 vagy: rename 's/\.html$/\.htm/' *.html
 done

34 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
4. Feladat
 Írj scriptet, mely az aktuális könyvtárban található
összes .jpg, .bmp és .png képet 50%x50%-osan kicsinyíti. Ehhez
használd a convert programot, mely az imagemagick csomag
része. A convert program használatát, és az átméretezéshez
szükséges opciót a man convert paranccsal nézheted meg.

 ha nincs imagemagick:
 sudo apt-get update
 sudo apt-get install imagemagick

35 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
4. Feladat
 Írj scriptet, mely az aktuális könyvtárban található
összes .jpg, .bmp és .png képet 50%x50%-osan kicsinyíti. Ehhez
használd a convert programot, mely az imagemagick csomag
része. A convert program használatát, és az átméretezéshez
szükséges opciót a man convert paranccsal nézheted meg.

 #!/bin/bash
 for i in *.{jpg,png,bmp}; do
 convert -resize 50% $i conv_$i
 done

36 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
5. Feladat
 Írj scriptet, mely az aktuális könyvtár tartalmán rekurzívan
végigmegy, és minden szimbolikus link helyére bemásolja azt a
fájlt, amelyre az mutatott (ehhez közben a linket letörli).
 Segítség: a find paranccsal nézd végig a fájlokat, melyekre ellenőrizd, hogy
szimbolikus linkek-e. Ehhez if [ ] típusú feltételes elágazásra lesz szükséged,
a megfelelő if -feltételt a man test oldalon találod meg. A linkek célpontját pl.
az ls -l paranccsal is kinyerheted.

37 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
5. Feladat
 #!/bin/bash

 for i in `find`; do
 if [ -h $i ]; then
 target=`ls -l $i | sed 's/.*->.//'`
 vagy: target=`ls -l $i | sed 's/.*->\s\(.*\)/\1/'`
 vagy target=`ls -l $i | cut -d' ' -f 10`
 vagy target=$(file $i | awk '{print $5}')
 vagy target=$(readlink $i)
 rm $i
 cp $target $i
 fi
 done

38 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Kiugró

39 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Kiugró
 Minden gyakorlat végén egy rövid (5 perces) kvíz
 teszt kérdések a gyakorlat anyagából
 Aki minden kérdésre jól válaszol
 +1 pont a vizsgán
 (de max 5 plusz pont gyűjthető)
 (vizsga: 50 pontos)
 FIGYELEM: a kvíz “multi-choice”-os
 találat, ha minden jó válasz megjelölve (és egy rossz sem)

40 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Kiugró

https://sb.tmit.bme.hu/haepuz-gyak1

41 Hálózatok építése és üzemeltetése, Linux alapok gyakorlat - Sonkoly Balázs, BME-TMIT 2020/09/16
Hálózatok építése és üzemeltetése

Szoftver szerszámok

1 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat 0: man ping Feladat 1: Traceroute
a ping program  Milyen routereken
segítségével állapítsuk keresztül érhető el a
meg, hogy www.elte.hu és a
 hány hopra van a www.u-szeged.hu?
www.bme.hu (és a  Hány közös hop van a
www.u-szeged.hu) két útban?
 a man page alapján
lehet-e következtetni a
válaszra a “ping
hostname” parancsból.

2 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat 0: man ping
 a ping program segítségével állapítsuk meg, hogy
 hány hopra van a www.bme.hu,
for i in {1..255}; do
ping –c 1 –t $i www.bme.hu > /dev/null
if [ $? != 1 ]; then
echo $i hop; exit
fi
done
echo a gep nem elerheto
 a man page alapján lehet-e következtetni a válaszra a “ping
hostname” parancsból.
Nem, a TTL DETAILS leírja, hogy a célgép tetszőleges értékre állíthatja
a válaszában a TTL értéket.

3 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat 1: traceroute
 Milyen routereken keresztül érhető el a www.elte.hu és a www.u-szeged.hu? # traceroute www.u-szeged.hu
# traceroute www.elte.hu traceroute to www.u-szeged.hu (160.114.8.5), 30 hops max, 60 byte packets
traceroute to www.elte.hu (157.181.152.1), 30 hops max, 60 byte packets 1 244gw.tmit.bme.hu (152.66.244.254) 0.190 ms 0.187 ms 0.183 ms
1 244gw.tmit.bme.hu (152.66.244.254) 0.199 ms 0.194 ms 0.189 ms 2 vl121.ixion.net.bme.hu (152.66.245.254) 0.822 ms 0.916 ms 1.046 ms
2 vl121.ixion.net.bme.hu (152.66.245.254) 0.739 ms 0.828 ms 0.963 ms 3 xge4-2.styx.net.bme.hu (152.66.0.72) 7.678 ms 7.743 ms 7.844 ms
3 xge4-2.styx.net.bme.hu (152.66.0.72) 1.330 ms 1.580 ms 1.754 ms 4 xge2-2.taz.net.bme.hu (152.66.0.78) 1.027 ms 1.154 ms 1.151 ms
4 xge2-2.taz.net.bme.hu (152.66.0.78) 1.095 ms 1.196 ms 1.195 ms 5 tg0-1-0-1.rtr.bme.hbone.hu (152.66.0.126) 1.471 ms 1.470 ms 1.466 ms
5 tg0-1-0-1.rtr.bme.hbone.hu (152.66.0.126) 1.186 ms 1.183 ms 1.285 ms 6 tg0-0-0-6.rtr1.vh.hbone.hu (195.111.100.43) 5.227 ms 5.028 ms 5.111 ms
6 tg0-1-0-2.rtr.elte.hbone.hu (195.111.106.66) 1.541 ms 1.730 ms 1.725 ms 7 be3.rtr.szeged.hbone.hu (195.111.111.191) 5.017 ms 4.919 ms 4.949 ms
7 taurus.hbone-elte.elte.hu (157.181.141.13) 0.807 ms 0.796 ms 0.592 ms 8 c7-c29.net.u-szeged.hu (160.114.120.78) 4.648 ms 4.855 ms 4.930 ms
8 fw1.fw.backbone.elte.hu (192.153.18.145) 1.158 ms 1.151 ms 0.890 ms 9 vb-kul.fw1.u-szeged.hu (160.114.120.177) 5.186 ms 5.346 ms 5.165 ms
9 taurus.firewall.elte.hu (157.181.141.146) 1.329 ms 1.317 ms 1.589 ms 10 160.114.120.54 (160.114.120.54) 5.160 ms 5.061 ms 5.236 ms
10 leo.taurus-leo.elte.hu (157.181.126.46) 1.318 ms 1.311 ms 1.515 ms 11 * * *
11 crux.crux-leo.elte.hu (157.181.126.9) 2.514 ms 2.503 ms 2.992 ms 12 * * *
12 www2.elte.hu (157.181.152.1) 1.139 ms 1.367 ms 1.360 ms  A gépek vagy nem generálnak ICMP time exceeded üzenetet vagy valamelyik
router kiszűri ezeket. De a pingre válaszol a cél, így ping ttl-el megállapítható, hogy
milyen messze van.

 Hány közös hop van a két útban?


5

4 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Teszthálózat (mininetben)
 $ wget http://hsn.tmit.bme.hu/topo.py
 $ sudo -E mn --custom ~/topo.py --topo mytopo --link tc
 mininet> xterm h1 h2 h3 r1 r2 r3
h2

r2

h1 r1 r3 h3

 h1$ date > test.txt Közös fájlrendszer


 h2$ cat test.txt
5 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30
Feladat 2:
interfészek és útvonalválaszás beállítása
h2

10.1.2.1/24
 Kézzel is fel lehet konfigurálni a rendszert, IP forwarding engedélyezése:
de talán gyorsabb, ha az egyik router r1:# sysctl -w net.ipv4.ip_forward=1
beállítása után lementjük a parancsokat egy r2:# sysctl -w net.ipv4.ip_forward=1
fájlba és azt editáljuk…

10.1.2.2/24
r3:# sysctl -w net.ipv4.ip_forward=1

r2-eth0
 Először érdemes csak a címeket kiosztani
 Kapcs. ellenőrzése linkvégek között: h1-r1, r1-r2, …

 Majd a routingot kell beállítani r2


 ellenőrzés: h1-h2, …

r1-eth0 r1-eth2 r3-eth2 r3-eth0


h1 10.1.1.1/24 10.1.1.2/24
r1 10.2.13.1/24 10.2.13.3/24
r3 10.1.3.2/24 10.1.3.1/24
h3
6 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30
Névfeloldás
 A libnss a DNS-en kívül mást is haszálnat
névfeloldásra
 Pl. az /etc/hosts fájlt is figyelembe veszi (man hosts):
127.0.0.1 localhost
127.0.1.1 p2p-VirtualBox

10.1.1.1 h1
10.1.2.1 h2
10.1.3.1 h3

7 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat 2:
interfészek és útvonalválaszás beállítása
#!/bin/bash r3)
r1)
case $1 in sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.ip_forward=1
h1) ip addr del 10.0.0.6/8 dev r3-eth0
ip addr del 10.0.0.4/8 dev r1-eth0
ip addr del 10.0.0.1/8 dev h1-eth0 ip addr add 10.1.3.2/24 dev r3-eth0
ip addr add 10.1.1.2/24 dev r1-eth0
ip addr add 10.1.1.1/24 dev h1-eth0 ip addr add 10.2.23.3/24 dev r3-eth1
ip addr add 10.2.12.1/24 dev r1-eth1
ip route add default via 10.1.1.2 ip addr add 10.2.13.3/24 dev r3-eth2
ip addr add 10.2.13.1/24 dev r1-eth2
;; ip route add 10.1.1.0/24 via 10.2.13.1
ip route add 10.1.2.0/24 via 10.2.12.2
h2) ip route add 10.1.2.0/24 via 10.2.23.2
ip route add 10.1.3.0/24 via 10.2.13.3
ip addr del 10.0.0.2/8 dev h2-eth0 ;;
;;
ip addr add 10.1.2.1/24 dev h2-eth0 *)
r2)
ip route add default via 10.1.2.2 echo usage $0 hostname >&2
sysctl -w net.ipv4.ip_forward=1
;; ;;
ip addr del 10.0.0.5/8 dev r2-eth0
h3) esac
ip addr add 10.1.2.2/24 dev r2-eth0
ip addr del 10.0.0.3/8 dev h3-eth0
ip addr add 10.2.12.2/24 dev r2-eth1
ip addr add 10.1.3.1/24 dev h3-eth0
ip addr add 10.2.23.2/24 dev r2-eth2
ip route add default via 10.1.3.2
ip route add 10.1.1.0/24 via 10.2.12.1
;; wget http://hsn.tmit.bme.hu/c.sh
ip route add 10.1.3.0/24 via 10.2.23.3
;;

8 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat 3:
alternatív útvonalak eltérő költséggel
Példa:
h2 ip route add 1.1.1.1/1 via 2.2.2.2 metric 3
több út esetén a kisebb költségűt választja a router

10.1.2.1/24
Tesztelés pl.:
 h1# ping h2

Közben

10.1.2.2/24
 r1# ip link set dev r1-eth1 down

r2-eth0
 r2# ip link set dev r2-eth1 down

Mennyivel nő az RTT? r2

r1-eth0 r1-eth2 r3-eth2 r3-eth0


h1 10.1.1.1/24 10.1.1.2/24
r1 10.2.13.1/24 10.2.13.3/24
r3 10.1.3.2/24 10.1.3.1/24
h3
9 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30
Feladat 3:
alternatív útvonalak eltérő költséggel
r1) r3)
#!/bin/bash
sysctl -w net.ipv4.ip_forward=1 sysctl -w net.ipv4.ip_forward=1
case $1 in
ip addr del 10.0.0.4/8 dev r1-eth0 ip addr del 10.0.0.6/8 dev r3-eth0
h1)
ip addr add 10.1.1.2/24 dev r1-eth0 ip addr add 10.1.3.2/24 dev r3-eth0
ip addr del 10.0.0.1/8 dev h1-eth0
ip addr add 10.2.12.1/24 dev r1-eth1 ip addr add 10.2.23.3/24 dev r3-eth1
ip addr add 10.1.1.1/24 dev h1-eth0
ip addr add 10.2.13.1/24 dev r1-eth2 ip addr add 10.2.13.3/24 dev r3-eth2
ip route add default via 10.1.1.2
ip route add 10.1.2.0/24 via 10.2.12.2 metric 10 ip route add 10.1.1.0/24 via 10.2.13.1
;;
ip route add 10.1.2.0/24 via 10.2.13.3 metric 20 ip route add 10.1.2.0/24 via 10.2.23.2
h2)
ip route add 10.1.3.0/24 via 10.2.13.3 ;;
ip addr del 10.0.0.2/8 dev h2-eth0
;; *)
ip addr add 10.1.2.1/24 dev h2-eth0
r2) echo usage $0 hostname >&2
ip route add default via 10.1.2.2
sysctl -w net.ipv4.ip_forward=1 ;;
;;
ip addr del 10.0.0.5/8 dev r2-eth0 esac
h3)
ip addr add 10.1.2.2/24 dev r2-eth0
ip addr del 10.0.0.3/8 dev h3-eth0
ip addr add 10.2.12.2/24 dev r2-eth1
ip addr add 10.1.3.1/24 dev h3-eth0
ip addr add 10.2.23.2/24 dev r2-eth2
ip route add default via 10.1.3.2
ip route add 10.1.1.0/24 via 10.2.12.1 metric 10 wget http://hsn.tmit.bme.hu/d.sh
;;
ip route add 10.1.1.0/24 via 10.2.23.3 metric 20
ip route add 10.1.3.0/24 via 10.2.23.3
;;
10 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30
Feladat 4:
 Mi történik, ha h1-eth0 10.1.1.1/24 címét 10.1.1.1/8
–ra cseréljük és h1-ről pingeljük h2-t?
 Nézzük meg tcpdumppal, vagy wiresharkkal.

11 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat 4:
 Mi történik, ha h1-eth0 10.1.1.1/24 címét 10.1.1.1/8 –ra
cseréljük és pingeljük h1-ről h2-t?
 Nézzük meg tcpdumppal, vagy wiresharkkal.
h1 szerint h2 egy alhálózatban van vele, ezért a MAC címét
próbálja lekérni (sikertelenül).

Feladat 5:
 Adjuk h1 ARP táblájához hozzá h2-t 66:55:44:33:22:11
mac címmel. Mi történik, ha h1 pingeli h2-t?
12 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30
Feladat 5: arp
 h1# arp -s 10.1.2.1 66:55:44:33:22:11
 h1# ping h2

 h1# tcpdump -e -i h1-eth0

13 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Python - scapy
$ sudo apt install python-scapy
$ wget http://hsn.tmit.bme.hu/smallFlows.pcap
(https://s3.amazonaws.com/tcpreplay-pcap-files/smallFlows.pcap )

14 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat N+1:
melyik TOS értékből hány darab van a pcap fájlban?
 Például:
TOS Darab
0x0 123
0x2 44
0x10 2

15 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Feladat N+1:
melyik TOS értékből hány darab van a pcap fájlban?
Kimenet:
cap=rdpcap("smallFlows.pcap")
0 13787
tos = {} 8 428
for p in cap: 3 8
if IP in p: 192 20
t = p[IP].tos
tos[t] = tos.get(t, 0) + 1

for t in tos:
print t, tos[t]

16 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Kiugró

https://sb.tmit.bme.hu/haepuz-gyak2

17 Hálózatok építése és üzemeltetése, Szof tver szerszámok, BME-TMIT 2020-09-30


Hálózatok építése és üzemeltetése

Hálózati funkciók a gyakorlatban gyakorlat…

1 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
A példa hálózatunk

BME VIK Cloud - Smallville

2 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
https://cloud.bme.hu
Smallville
BME VIK

Címtáras
belépés

Special thanks to:


Szeberényi Imre (IIT) & CIRCLE Cloud team

3 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
VM-ek indítása

Start VM

Client VM

Gateway VM

4 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Hálózati elrendezés Közös VM
(külvilág)

10.9.2.169/16
pwd: sdx6dcLE9W

ID: https://sb.tmit.bme.hu/haepuz-gyak3-ip
5 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Belépés: ssh

-Y

6 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Belépés: ssh
 célszerű Linux kliensről
 pl.: HaEpUz VM
 célszerű ssh kulcs
feltöltése
 My profile
 SSH public keys
 kulcs pár (priv, pub)
 generálása (pl.: ssh-keygen)
 vagy meglévő feltöltése
 VM/Home
 Install SSH keys

7 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Belépés: ssh
 Hasonlóan a kliens gépre is
 DE itt a default hálózati kapcsolatot leállítjuk (majd)
 VIGYÁZZ!!
 ki ne zárd magad a VM-ről!
 mindig legyen legalább egy belépési lehetőség
 pl. a GW gépről a belső hálózaton keresztül
 Javaslat
 ssh kulcsot másoljuk fel mindkét gépre
 scp -i ~/.ssh/haepuz_id_rsa -P 10305 ~/.ssh/haepuz_id_rsa
cloud@vm.smallville.cloud.bme.hu:~/.ssh/id_rsa
8 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
VM-ek konfigurálása
 IPv6 kipucolása
 sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
 sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
 vagy /etc/sysctl.conf fájlhoz hozzáadni
 net.ipv6.conf.all.disable_ipv6=1
 net.ipv6.conf.default.disable_ipv6=1
 net.ipv6.conf.lo.disable_ipv6=1
 utána: sudo sysctl -p
 resolvconf vs. systemd-resolved
 sudo dpkg-reconfigure resolvconf (Yes, OK)
 sudo apt update; sudo apt install apache2
9 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
VM-ek konfigurálása
 Gateway (GW)
 sudo systemctl stop bind9
 sudo ifconfig eth1 up
 (vagy: sudo ip link set dev eth1 up)
 sudo ifconfig eth1 10.”ID”.0.1/24
 (vagy: sudo ip addr add 10.”ID”.0.1/24 dev eth1)
 Kliens (CLIENT)
 sudo ifconfig eth1 up
 sudo ifconfig eth1 10.”ID”.0.2/24
 ellenőrzés:
 ifconfig (vagy ip addr)
 route -n (vagy: ip route)
 cat /etc/resolv.conf
10 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
VM-ek konfigurálása
 belépés: GW -> CLIENT
 GW:~$ ssh -Y 10.”ID”.0.2
 működik??
 Igen: kliens “levágása” a default hálózatról
 CLIENT:~$ sudo ifdown eth0
 Nem: további tesztelés

 ~/.bashrc: force_color_prompt=yes
 PS1=… 32m… 34m… vs. PS1=… 31m… 36m...
11 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Összeköttetés tesztelése
 CLIENT <-> GW
 GW <-> külvilág (INTERNET VM)
 CLIENT <-> külvilág (INTERNET VM)

 mi működik, mi nem?

12 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Hogyan tovább?
 Belső hálózatról (CLIENT) szeretnénk “netezni”
 NAT
 Azért minden forgalmat nem szeretnénk
engedélyezni
 Firewall
 Manuális konfiguráció???
 DHCP, DNS

13 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
NAT

iptables

14 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
SNAT konfigurálása (GW)
 Első lépés: forwarding engedélyezése
 alapból nem tudjuk routerként használni a gépünket
 cat /proc/sys/net/ipv4/ip_forward
 engedélyezés
 sudo sysctl -w net.ipv4.ip_forward=1
 címfordítás beállítása

15 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
SNAT konfigurálása (GW)
 Első lépés: forwarding engedélyezése
 alapból nem tudjuk routerként használni a gépünket
 cat /proc/sys/net/ipv4/ip_forward
 engedélyezés
 sudo sysctl -w net.ipv4.ip_forward=1
 címfordítás beállítása
 iptables -t nat
 -A POSTROUTING (append, új szabály hozzáfűzése a
POSTROUTING lánchoz)
 -s 10.”ID”.0.0/24 (ha ez a source IP)
 -o eth0 (ha ez az output interfész)
 -j MASQUERADE (akkor source IP fordítása dinamikusan)
 (output interfésztől függően)

16 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
SNAT konfigurálása (CLIENT)
 default gateway beállítása
 sudo route add default gw 10.”ID”.0.1 [dev eth1]
 tesztelés
 ping 8.8.8.8
 ping telex.hu ???

17 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
DNAT konfigurálása (GW)
 Adott porton tegyük elérhetővé kívülről a belső gép
 web szerverét (8080)
 de előtte installáljuk! (apache2)
 címfordítás beállítása

18 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
DNAT konfigurálása (GW)
 Adott porton tegyük elérhetővé kívülről a belső gép
 web szerverét (8080)
 de előtte installáljuk! (apache2):
 sudo apt-get install apache2; sudo systemctl start apache2
 címfordítás beállítása
 iptables -t nat
 -A PREROUTING (append, új szabály hozzáfűzése
PREROUTING-hoz)
 -d 10.9.0.138 (ha ez a destination IP)
 -p tcp (ha TCP protokoll)
 --dport 8080 (és 8080-as TCP destination port)
 -j DNAT (akkor destination IP:port fordítása)
 --to-destination 10.0.0.2:80 (a belső web szerverre)
19 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
DNAT tesztelése
 INTERNET VM gépről
 web browser: lynx :)
 http://10.9.0.X
 http://10.9.0.X:8080
 vagy nc
 GW, CLIENT: nc -k -l 80
 INTERNET VM: nc 10.9.0.X 80
 INTERNET VM: nc 10.9.0.X 8080

20 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Firewall

iptables

21 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Firewall konfigurálása (GW)
 Jó tanácsok:
 default policy legyen DROP (vagy REJECT)
 a kívánt forgalmakat külön-külön, explicit módon
engedélyezzük (ACCEPT)
 amelyik csomag végigmegy minden láncon és
nincs illeszkedés, eldobásra kerül
 a végére betehetünk egy loggoló szabályt, ami az
eldobás előtt egy log bejegyzést készít

22 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Firewall konfigurálása (GW)
 Feladat
 az előadáson látott példa alapján konfiguráljuk fel a GW
FORWARD láncát hasonló funkcionalitásra
 de most az ssh-val nem kell foglalkozni, csak a web
forgalommal
 szerkesztéshez pl. nano

 ne lepődjünk meg az ufw üres láncaitól…


 Uncomplicated Firewall
 le van tiltva (sudo systemctl disable ufw.service)
23 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Firewall konfigurálása (GW)
Átmenő forgalom szűrése
(FORWARD lánc)
előadáson bemutatott
példa

24 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Firewall konfigurálása (GW)
#!/bin/bash Átmenő forgalom szűrése
# delete chains (FORWARD lánc)
iptables -F FORWARD
iptables -X # delete all user-specified chains előadáson bemutatott
iptables -Z # reset counters
# set default policies
példa
iptables -P FORWARD DROP

# allow icmp traffic


iptables -A FORWARD -p icmp -j ACCEPT
# enable outgoing traffic
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
# enable backward direction if it was initiated from the internal domain
iptables -A FORWARD -d 10.0.0.0/24 -p tcp \
-m state --state ESTABLISHED,RELATED -j ACCEPT
# enable DNAT ports from the external net
iptables -A FORWARD ! -s 10.0.0.0/24 -p tcp --dport 80 \
-m state --state NEW -j ACCEPT
iptables -A FORWARD ! -s 10.0.0.0/24 -p tcp --dport 22 \
-m state --state NEW -j ACCEPT
# enable DNS
iptables -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
# log dropped packets
iptables -A FORWARD -m limit --limit-burst 5 --limit 2/s \
-j LOG --log-prefix 'FIREWALL: ' --log-level 7

25 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Tesztelés
 ping, web, közben logok figyelése
 CLIENT -> INTERNET

 INTERNET -> CLIENT

26 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
DHCP

27 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Installáljunk dhcp szervert!
 GW VM-en telepítve van
 sudo apt-get install isc-dhcp-server
 (Ubuntu-t vagy Debiant feltételezünk)
 Internet Software Consortium implementációja
 alapból nem indul
 tesztelés (újabb systemd)
 sudo systemctl status isc-dhcp-server
 tesztelés (régebbi SysV init)
 sudo service isc-dhcp-server status
28 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Konfiguráljunk dhcp szervert!
 1. lépés
 állítsuk be az interfészeket, ahol DHCP kéréseket kezelünk
 /etc/default/isc-dhcp-server

 2. lépés
 konfiguráljuk a szervert
 /etc/dhcp/dhcpd.conf
 csak a saját kliensünket szolgálja ki!
 mástól jön kérés, ignoráljuk
 saját kliens mindig ugyanazt az IP címet kapja
 3. lépés
 isc-dhcp-server service indítása:
 sudo systemctl start isc-dhcp-server
 sudo systemctl status isc-dhcp-server
29 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Konfiguráljunk dhcp szervert!
 1. lépés
 állítsuk be az interfészeket, ahol DHCP kéréseket kezelünk
 /etc/default/isc-dhcp-server 102
 INTERFACESv4="eth1“
 2. lépés
 konfiguráljuk a szervert
 /etc/dhcp/dhcpd.conf
 csak a saját kliensünket szolgálja ki!
 mástól jön kérés, ignoráljuk
 saját kliens mindig ugyanazt az IP címet kapja
 3. lépés
 isc-dhcp-server service indítása:
 sudo systemctl start isc-dhcp-server
 sudo systemctl status isc-dhcp-server
30 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Teszteljük a kliens gépről!
 Közben GW-en: wireshark capture
 /etc/ssh/sshd_config: X11Forwarding11 yes és X11UseLocalhost no
 sudo systemctl restart sshd… utána működik az X forwarding (ssh -Y)
 CLIENT
 trükkösen csináljuk egy lépésben!
 manuálisan konfigurált cím törlése
 cím kérése dhcp-vel
 nohup sh -c ‘sudo ip addr del 10.ID.0.2/24 dev eth1; sudo dhclient eth1’
 belépés GW-ről az új (dhcp) címen
 routing tábla ellenőrzése
 névfeloldás (resolv.conf fájl) ellenőrzése
 teszt: ping telex.hu
31 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Kliens gép konfigurálása
 Ha nem akarjuk kézzel kérni a címet
 eth1 interfész konfigurálása az
/etc/network/interfaces fájlban:
 auto eth1
 iface eth1 inet dhcp
 ezután használhatók a következő parancsok
 sudo ifup eth1
 sudo ifdown eth1
 “auto” esetén indulásnál felkonfigurálódik
32 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
DNS

bind9

33 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
bind9
 GW VM-en telepítve van
 sudo apt-get install bind9
 sudo netstat -aputne | grep -i listen
 konfigurációs fájlok
 /etc/bind könyvtár alatt
 named.conf.default-zones
 zone entry-k megadása
 zone db hivatkozás (pl. db.local)
 nézzünk meg pár példát!

34 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
A példa alapján
konfiguráljuk be
bind9 (db.root) a saját GW-t! (named.conf.options)

35 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
GW konfigurálása, tesztelés
 bind9 indítása (vagy újraindítása)
 sudo systemctl start bind9 (sudo service bind9 start)
 sudo systemctl status bind9 (sudo service bind9 status)
 milyen portokon figyel? milyen protokollt használ?

 DHCP átkonfigurálása
 saját DNS szerver (8.8.8.8 helyett)
 DHCP szerver újraindítás!
 forgalom rögzítése GW-en
 wireshark vagy
 sudo tcpdump -i any -ne port 53 [-vvv]
36 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
GW konfigurálása, tesztelés
 bind9 indítása (vagy újraindítása)
 sudo systemctl start bind9 (sudo service bind9 start)
 sudo systemctl status bind9 (sudo service bind9 status)
 milyen portokon figyel? milyen protokollt használ?
 sudo netstat -aputne | grep named
 udp és tcp!
 53, 953
 DHCP átkonfigurálása
 saját DNS szerver (8.8.8.8 helyett)
 DHCP szerver újraindítás!
 forgalom rögzítése GW-en
 wireshark vagy
 sudo tcpdump -i any -ne port 53 [-vvv]
37 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
CLIENT konfigurálása
 sudo dhclient -v eth1
 cat /etc/resolv.conf
 nameserver 10.”ID”.0.1
 sudo systemd-resolve --status
 (systemd-resolved vs. resolvconf)
 tesztelés
 ping telex.hu

38 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
CLIENT: “DNS teszt”
 tesztelés a kliens gépről (közben GW-en capture)
 dig stanford.edu +norecurse +short

 dig stanford.edu +short

 dig stanford.edu +norecurse +short

 dig @10.0.0.1 stanford.edu +norecurse +short

 dig -t A @10.0.0.1 stanford.edu +trace


.
39 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
CLIENT: “DNS teszt”
 tesztelés a kliens gépről (közben GW-en capture)
 dig stanford.edu +norecurse +short
 nincs találat, referral jön vissza (root DNS szerverek listája)
 dig stanford.edu +short
 van találat, rekurzív lekérdezések (->10.0.0.1->8.8.8.8)
 dig stanford.edu +norecurse +short
 nincs találat a local stub-tol (systemd-resolved)
 dig @10.0.0.1 stanford.edu +norecurse +short
 van találat, cache-ből (10.0.0.1 server)
 dig -t A @10.0.0.1 stanford.edu +trace
 iteratív lekérdezés nyomonkövetése
40 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Összefoglalás
 Egyszerű teszthálózat kialakítása
 Smallville CIRCLE Cloud
 GW, CLIENT, belső hálózat
 Hálózati funkciók vizsgálata, konigurálása
 NAT
 SNAT, DNAT 10.9.2.169/16
 iptables
 Firewall
 iptables
 DHCP
 isc-dhcp-server
 DNS
 bind9

41 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Kiugró

42 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Kiugró
 Minden gyakorlat végén egy rövid (5 perces) kvíz
 teszt kérdések a gyakorlat anyagából
 Aki minden kérdésre jól válaszol
 +1 pont a vizsgán
 (de max 5 plusz pont gyűjthető)
 (vizsga: 50 pontos)
 FIGYELEM: a kvíz “multi-choice”-os
 találat, ha minden jó válasz megjelölve (és egy rossz sem)

43 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Kiugró

https://sb.tmit.bme.hu/haepuz-gyak3-nf

44 Hálózatok építése és üzemeltetése, Hálózati funkciók gyak. - Sonkoly Balázs, BME-TMIT 2020/10/20
Hálózatok építése és üzemeltetése

Troubleshooting gyakorlat

1 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
1. feladat
 Az alábbi hálózatban hiba lép fel, melynek eredményeként
legalább egy hoszt nem éri el az Internetet.

2 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
1. feladat
 Milyen hibák léphetnek fel?
 Mi a legjobb módja a hiba felderítésének? Milyen sorrendben
végezne teszteket a hálózat egyes elemein (hosztok, switchek,
router, tűzfal stb.)?

3 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
1. feladat – megoldás
 Milyen hibák léphetnek fel?
 Tápellátás; link/interfész hibák a hosztokon, switcheken, routeren;
rosszul konfigurált hosztok: rossz IP cím, netmask, gateway; rosszul
konfigurált switch portok; rosszul konfigurált router: nincs route az
Internet felé, rosszul beállított NAT, tűzfal; DNS hiba stb.
 Milyen sorrendben végezne teszteket a hálózat egyes elemein
(hosztok, switchek, router, tűzfal stb.)?
 Az egyik hosztról kiindulva feltérképezzük, hogy meddig vagyunk
képesek elérni a hálózatot: kapcsolatfelvétel a routerrel, más
hosztokkal a hálózaton. A router Internet elérésének tesztelése:
kapcsolat felvétele egy távoli géppel, kapcsolat felvétele egy távoli
webszerverrel.
 Mi a legjobb módja a hiba felderítésének?
4 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Hibaelhárítás
 Dokumentáljunk
 Egy jól dokumentált hálózatban sokkal könnyebb hibát keresni
 Gyűjtsünk információt és azonosítsuk a tüneteket
 Szűrjük ki azokat, amelyeknek közük lehet a hibához
 Szükséges a normális viselkedés ismerete
 Ha nem személyesen tapasztaljuk a hibát, próbáljuk meg reprodukálni
 Ismerjük meg a problémát
 A gyűjtött adatok alapján keressünk okokat, melyek az adott
tüneteket okozhatják
 Azonosítsuk azokat a rendszerelemeket, melyek részt
vehetnek a probléma kialakulásában

5 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Hibaelhárítás
 Állítsunk fel tesztelhető hipotéziseket az eddig begyűjtött
ismeretekre alapozva
 Állapítsuk meg, mely tesztekkel lehet ezeket a leghatékonyabban
elkülöníteni egymástól
 Válasszunk és alkalmazzunk teszteket
 Szempontok: erőforrásigény, komplexitás és információtartalom
 Adott esetben egy egyszerű teszt jelentős információval szolgálhat,
míg a komplex teszt nem feltétlenül hoz a bonyolultságával arányos
többlet információt
 Értékeljük az eredményeket
 Ezek alapján egyre hatékonyabb teszteket végezhetünk és
finomíthatjuk a hipotézisünket
6 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Hibaelhárítás
 Készítsünk megoldási javaslatokat és elemezzük, értékeljük őket
 Több megoldás is lehet egy problémára, eltérő hatékonysággal
 A jelenlegi helyzetnek legmegfelelőbbet válasszuk
 Lehet, hogy a legjobb megoldás jelenleg nem kivitelezhető, viszont egy
nem optimális ideiglenes megoldás már elfogadható eredményeket
hozna: értékeljük, milyen pozitív illetve negatív hatásai lennének az
ideiglenes megoldásnak az optimálissal szemben
 Alkalmazzuk a választott megoldást és értékeljük az eredményeket
 Definiáljuk, mit várunk el a választott megoldástól
 Ellenőrizzük, hogy a választott megoldás ténylegesen a várt
eredményeket hozza-e

7 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Hibaelhárítás
 A hibajelenségek általában elég bonyolultaknak
tűnnek, de ez nem feltétlenül jelenti azt, hogy
valami rendkívül összetett probléma az okozójuk
 Gyakran egy egyszerű hiba is szerteágazó
problémákhoz vezethet
 Érdemes ezért minidig a legegyszerűbb hibákat
feltételezni, és első körben azokat kizárni

8 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Eszközök

9 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
1. feladat
 Az alábbi hálózatban hiba lép fel, melynek eredményeként
legalább egy hoszt nem éri el az Internetet.
 Milyen hibakereső eszközöket használna a hiba feltárásához,
milyen sorrendben?

10 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
ARP cache
 ARP cache: az eszköz által rögzített IP cím–fizikai cím
összerendeléseket rögzíti
 Az arp parancs használatával az ARP cache kérdezhető le vagy
állítható be
 A -n kapcsoló használatával elkerülhető a kapott IP címek feloldása
 A -i kapcsoló használatával szűkíthető az információ egy adott
interfészre
 Pl.: $ arp –ni eth0
 A lekérdezéshez használható az ip neighbor (ip neighbour)
parancs is
 Pl. összes interfész lekérdezése: $ ip n
 Pl. csak az eth0 lekérdezése: $ ip n show dev eth0
11 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Interfész beállítások
 Az ifconfig parancs az interfészek IP paramétereinek beállítására,
lekérdezésére használható
 Alapértelmezetten azt adja meg, hogy mely interfészek működnek
jelenleg,
és ezekhez milyen konfiguráció tartozik:
 A jelenleg használt IP cím, netmask
 Statisztikát készít a fogadott és küldött csomagokról és az ezekkel kapcsolatos
hibákról
 A -a kapcsoló segítségével megnézhetjük az összes (működő és nem
működő) interfészt
 Interfész konfigurálása:
 $ sudo ifconfig <interfész név> <IP cím> netmask <netmask> [up]
 Pl.: $ ifconfig eth0

12 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Interfész beállítások
 Az ip address/ip link parancsok is
használhatók
 Pl.: $ ip a
 Pl.: $ ip l
 Interfész konfigurálása:
 Interfész bekapcsolása:
$ sudo ip link set <interfész név> up
 IP cím hozzárendelése:
$ sudo ip address add <IP cím>[/<netmask>] dev <interfész név>
 Törlés:
$ sudo ip address del ...

13 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
netcat
 A netcat egy egyszerű szoftveres eszköz,
amivel TCP vagy UDP hálózati kapcsolatokat
használva írhatunk vagy olvashatunk adatokat
 –z kapcsoló: ellenőrzi, hogy a célon hallgat-e
megfelelő folyamat
 –v kapcsoló: bővebb információt ad
 Pl. $ nc google.com 80
HEAD / HTTP/1.0
14 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
telnet
 A telnet alapvetően távoli bejelentkezéshez
volt használható, mely helyett biztonsági
okokból az ssh használatos
 Használható hibakereséshez: nyílt szöveget küld
a fogadó félnek, így szöveges alapú
kiszolgálóhoz csatlakozhat, és ellenőrizheti a
működésüket
 Pl. $ telnet google.com 80
HEAD / HTTP/1.0
15 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
ssh
 Az ssh titkosított kommunikációt biztosít
hosztok között nem megbízható hálózat felett
 Lehetővé teszi a bejelentkezést távoli
gépekre, valamint utasítások végrehajtását
 A –X kapcsoló használatával X11 kapcsolatok
felépítését is biztosítja

16 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
nslookup
 Az nslookup segítségével a címfeloldás
ellenőrizhető
 Egy név alapján a DNS kiszolgálók segítségével
megkísérli kikeresni a névhez tartozó IP címet
vagy címeket
 Paraméterként megadhatjuk azt a DNS szervert,
melytől a lekérdezés eredményét várjuk:
$ nslookup <keresett név> [<DNS szerver IP címe>]
 Pl. $ nslookup google.com
17 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
ping
 A ping révén egyszerű kapcsolat felvételi
teszt végezhető
 ICMP echo requesteket küld és az ezekre
érkezett replyokból kiszámolja a körülfordulási
időt
 Pl. $ ping google.com
 Miért szakad meg a ping?

18 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Útválasztás
 A route parancs használható útválasztási szabályok
felvételére, törlésére és lekérdezésére
 Lekérdezéskor megkapjuk a cél hálózat címét és
maszkját, azt az átjárót és interfészt, amin keresztül
a hálózat elérhető
 A -n kapcsoló használatával gyorsítható a lekérdezés,
ilyenkor a routing táblában tárolt IP címeket nem
kísérli meg DNS használatával feloldani az eszköz
 Pl. $ route -n

19 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Útválasztás
 Default gateway konfigurálása a route parancs használatával:
 $ sudo route add default gw <default gw IP címe>
 Route létrehozása:
 $ sudo route add –net <IP cím> netmask <netmask>
gw <gateway IP címe> <saját interfész neve>
 Pl.:

r1$ sudo route add –net 120.0.0.0 netmask


255.255.255.0 gw 114.0.4.10 eth0
 Törlés:
 $ sudo route del ...

20 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Útválasztás
 Default gateway konfigurálása ip route használatával:
 $ sudo ip route add default via <IP cím>
 Route létrehozása:
 $ sudo ip route add <IP cím>/<netmask> via <IP cím>
 Pl.:

 r1$ sudo ip route add 120.0.0.0/24 via 114.0.4.10


 Törlés:
 $ sudo ip route del ...
 Pl. lekérdezés:
 $ ip r
21 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
traceroute
 A traceroute két végpont közötti útvonal
felderítését végzi el
 Az útvonal követésénél azon IP címeket sorolja
fel, melyek a csomagot fogadták
 Mivel a csomagok az oda és a vissza úton eltérő
útvonalakon haladhatnak, így előfordulhat, hogy
a traceroute által visszaadott IP címek nem
feleltethetőek meg ugyanazon routereknek
 Pl. $ traceroute google.com
22 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Wireshark
 A Wireshark egy csomagelemző
 Egy vagy több interfészen beérkező és távozó
csomagokat figyelhetünk meg vele
 Lehetőséget biztosít arra, hogy beletekintsünk
az egyes csomagok fejléceibe, ha több
rétegben történt betokozás, akkor az összes
réteg fejlécét is képes visszafejteni

23 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
tcpdump
 A tcpdump segítségével egy interfészen
áthaladó csomagokat tudjuk megjeleníteni
 Nem használ GUI-t
 Pl. $ sudo tcpdump –i eth0

24 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Feladatok

25 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
VM
 Jobb egérgomb: Fluxbox menü
 TS seminar: gyakorlat feladatai
 Keyboard layout: angol/magyar
billentyűzetkiosztás
 Alt + F1: új xterm indítása
 Egyszerre csak egy Firefox
legyen elindítva

26 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
2. feladat (VM)
 A hálózatban jelenleg minden hoszt végez átvitelt.
 Figyelje meg, hogy milyen irányban folyik adatátvitel és dokumentálja az
eredményeit!
 ssh segítségével lépjen be az egyes hosztokra (pl. h1 esetén használja az
$ ssh -X h1 utásítást)!
 Indítsa el a Wireshark monitorozó eszközt ($ sudo wireshark &), majd figyelje meg az
eth0 interfész forgalmát!
 Jegyezze fel a következőket:
 az adott hosztra honnan érkezik forgalom és ez milyen típusú (protokoll)?
 az adott hosztról merre indul forgalom és ez milyen típusú (protokoll)?
 a végpontoknak mi a MAC címük?
 A megfigyelései alapján milyen bejegyzéseket kellene tartalmaznia a router
ARP cache-ének?
 Milyen utasítások használatával derítené fel, hogy egyezik-e az ARP cache
tartalma az elvártakkal?

27 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
2. feladat (VM) – megoldás
 Figyelje meg, hogy milyen irányban folyik adatátvitel és dokumentálja az
eredményeit!
 ping (ICMP): h1 r1, h2 h4, h3 r1, h4 h2; UDP forgalom: h4 h1. A MAC
címeket a Wireshark középső ablakában az Ethernet II mező adja meg. (A
h1-re történő bejelentkezéshez az ssh -X h1 parancs használható.)
 A megfigyelései alapján milyen bejegyzéseket kellene tartalmaznia a
router ARP cache-ének?
 A h1, és h3 eth0 interfészeinek MAC címeit kellene látni.
 Milyen utasítások használatával derítené fel, hogy egyezik-e az ARP
cache tartalma az elvártakkal?
 arp -n a routeren és ifconfig h<1, 3>-eth0 a hosztokon, vagy a
Wireshark eredményei alapján meghatározott MAC címeket lehet itt is
használni.

28 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
3. feladat (VM)
 A hálózatban a h1 hoszt csak részlegesen tud
kommunikálni a hálózattal: bizonyos hosztokat elér,
míg másokat nem, valamint az s1 szerverrel sem
képes kommunikálni. A hoszt IP címe és hálózati
maszkja statikusan van konfigurálva.
 Mi lehet a probléma?
 Tesztelje a többi hoszt elérhetőségét ping segítségével!
 Ellenőrizze a h1 interfészének konfigurációját és vesse
össze a hálózat ábrájával!
 Javítsa a hibát!
29 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
3. feladat (VM) – megoldás
 Tesztelje a többi hoszt elérhetőségét ping segítségével!
 pinget használva rájöhetünk, hogy a h1 eléri a h4-et, de az r1-et, h2-t és h3-at nem.
 Ellenőrizze a h1 interfészének konfigurációját és vesse össze a hálózat ábrájával!
 A h1-en az ifconfig kimenetét megvizsgálva látható, hogy /25-ös maszk van
megadva /24-es helyett. Ha a route kimenetét nézzük meg előbb, látható, hogy
rossz default gw van beállítva.
 Javítsa a hibát!
 Az ifconfig javítása után a default gw-t is meg kell adni.

$ sudo ifconfig h1-eth0 192.168.0.254 netmask 255.255.255.0 up


$ ping 125.0.1.254
connect: Network unreachable
$ route –n
...
$ sudo route add default gw 192.168.0.1
$ ping 125.0.1.254

30 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
4. feladat
 Egy irodában az a szokás, hogy a dolgozók az asztalok között vándorolnak,
és ilyenkor viszik magukkal a laptopjukat is. Mivel a wifi elérhetősége nem
mindenütt megfelelő, ezért a dolgozók vezetékes kapcsolaton keresztül
csatlakoznak a hálózatra. Egy dolgozó az egyik nap azonban azt veszi
észre, hogy míg korábban tetszőleges asztalhoz leülve sikeresen
csatlakozott a hálózathoz, most ugyan az első helyen, ahol csatlakozni
próbált, ott sikerült neki, de amikor átment egy másik helyre – ahol
korábban már ült valaki –, ott már nem. Furcsa módon amikor az előzőleg
ott ülő kolléga visszatér, neki sem sikerül csatlakozni a hálózathoz.
 A két munkatárs értesíti is önt a szokatlan hibajelenségről. Önnek eszébe
jut, hogy most lépett érvénybe a cég új hálózati policyje, mely azt célozza,
hogy illetéktelenek ne csatlakozhassanak a hálózatra. Milyen problémára
kezd gyanakodni? Hogyan oldaná meg? Megfelelőnek tartja-e az ilyen
típusú védekezést az illetéktelenek hálózatra kapcsolódása ellen?

31 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
4. feladat – megoldás
 Milyen problémára kezd gyanakodni?
 A switchek megtanulják, hogy milyen MAC címről csatlakoztak hozzájuk és csak azt
az egyet hajlandóak beengedni. Ha más MAC címmel csatlakozunk az adott portra,
azt a portot letiltja a switch.
 Hogyan oldaná meg?
 Be lehetne állítani, hogy több MAC címről is lehessen csatlakozni az interfészre,
vagy ha valaki lecsatlakozik, akkor azt egy idő után felejtse el. Azt is be lehetne
állítani, hogy amikor nem engedélyezett felhasználó csatlakozik egy switch
porthoz, akkor azt logolja, az ő forgalmát dobja, de a korábban megtanult MAC
címről később engedélyezze a forgalmat. Lehet az is, hogy az összes MAC címet
összegyűjtik, amiről lehet majd csatlakozni, és ezeket adják meg
engedélyezendőként.
 Megfelelőnek tartja-e az ilyen típusú védekezést az illetéktelenek hálózatra kapcsolódása ellen?
 A MAC cím alapú szűrés nem feltétlenül nyújt biztonságot, hiszen egy hálókártya
MAC címe módosítható.

32 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
5. feladat
 Az alábbi hálózat esetén, a h1 hoszt egyik – hálózati
megoldásokban nem igazán jártas – felhasználója
szeretne fájlokat megosztani az s1 előtt ülő ismerősével.

33 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
5. feladat
 Egy egyszerű fájl szerver indítása után lekérdezi a h1 IP
címét és átküldi azt ismerősének. Az s1 előtt ülő
felhasználó ezt az IP címet használva szeretne csatlakozni
h1-hez, azonban nem tud.
 A h1 hoszt felhasználója
vajon milyen IP címet
kérdezhetett le és milyen
eszközzel?
 Mi lehet az oka, hogy s1
nem tud kapcsolódni h1-hez?

34 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
5. feladat – megoldás
 A h1 hoszt felhasználója vajon milyen IP címet kérdezhetett le és
milyen eszközzel?
 Privát IP címet pl. ifconfiggal, vagy akár nyilvánosat pl. a google vagy
a http://www.whatsmyip.org/ használatával.
 Mi lehet az oka, hogy s1 nem tud kapcsolódni h1-hez?
 Az első esetben egyértelmű a probléma, a h1 privát IP címe a hiba, a
második esetben tűzfal vagy NAT beállítások okozhatják a hibát. Tűzfal
esetén előfordulhat, hogy csak olyan adatáramlás engedélyezett, mely
a h1 hálózatán belülről indul, és csak az erre érkező válaszok juthatnak
át a tűzfalon. Dinamikus NAT használatakor lehetséges, hogy a fájl
szerverhez nem került még nyilvános IP cím/port lefoglalásra, vagy egy
másik publikus IP cím tartozik hozzá, mint amit a HTTP alapú
lekérdezéskor kapott a h1 felhasználója.

35 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
6. feladat
 Egy irodai hálózaton – ahol egyre több eszköz
kapcsolódik a hálózatra – DHCP-n keresztül kapja
minden hoszt a hálózati konfigurációját. Néha előfordul,
hogy egy-egy hoszt nem képes csatlakozni a hálózathoz.
Ilyen esetben az interfész konfigurációt lekérdezve ön
azt tapasztalja, hogy az eszköz nem kapott IP címet.
 Miért lehet ez?
 Nagyvonalakban hogyan ellenőrizné, hogy helyes-e a
megállapítása?
 Mi lehet a megoldás a problémára?

36 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
6. feladat – megoldás
 Miért lehet ez?
 A DHCP pool kimerül és már nem jut IP cím a hosztnak.
 Nagyvonalakban hogyan ellenőrizné, hogy helyes-e a
megállapítása?
 Ellenőrizni lehet úgy, hogy a hoszton újrakezdjük a DHCP
konfigurációkérési folyamatot és közben figyeljük a
beérkező csomagokat, vagy a DHCP szerverre bejelentkezve
lekérdezzük, hogy a kiosztható IP címek közül mennyi
foglalt.
 Mi lehet a megoldás a problémára?
 Megoldás lehet a DHCP pool méretének növelése.

37 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
7. feladat (VM)
 A hálózatban a h1 hosztról nem érhető el az s1 szerver.
 Mi lehet a probléma?
 A h1 hosztra történő bejelentkezés után nslookup
használatával kérdezze le a 192.168.0.252-es IP címen
elérhető DNS szervertől az s1.tslab IP címét!
 Indítson pinget a kapott IP címre! Hogyan értékeli a
kapott eredményt?
 Hogyan lehet javítani a hibát?

38 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
7. feladat (VM)
 A hálózatban a h1 hosztról nem érhető el az s1 szerver.
 Mi lehet a probléma?
 A h1 hosztra történő bejelentkezés után nslookup használatával
kérdezze le a 192.168.0.252-es IP címen elérhető DNS szervertől az
s1.tslab IP címét!
 Indítson pinget a kapott IP címre! Hogyan értékeli a kapott
eredményt?
 Hogyan lehet javítani a hibát?
 Statikus bejegyzéssel? Elég hatékony-e a kapott routing tábla,
össze lehet-e vonni benne bejegyzéseket?
 Ha kézzel nem lehet módosítani r1 routing tábláját, de tudjuk, hogy
r2 OSPF-et futtat?
39 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
7. feladat (VM) – megoldás
 Mi lehet a probléma?
 Jelentkezzünk be h1-re (ssh h1), kérdezzük le nslookup segítségével az s1 IP címét (nslookup s1.tslab
192.168.0.252). A ping 125.0.1.138 eredményeként látható, hogy a gw (192.168.0.1) nem talál utat
s1-hez (...From 192.168.0.1 icmp_seq=1 Destination Net Unreachable...). r1-re bejelentkezve
(ssh r1), majd a routing táblát lekérdezve (route -n vagy ip route show) látható, hogy a szerver címe
már pont nincs lefedve route-tal: csak a125.0.1.0/25 hálózat felé van route, de s1 (125.0.1.138) már kiesik
ebből a tartományból.
 Hogyan lehet javítani a hibát?
 Adjuk hozzá r1 routing táblájához a maradék tartományt is:

$ sudo route add -net 125.0.1.128 netmask 255.255.255.128 gw 125.0.0.6 r1-eth1

Így már pingelhető s1, viszont a routing tábla lehetne egyszerűbb is: a 125.0.1.0/25 és a 125.0.1.128/25-
ös bejegyzések összevonhatóak.

$ sudo route add -net 125.0.1.0 netmask 255.255.255.0 gw 125.0.0.6 r1-eth1


$ sudo route del -net 125.0.1.0 netmask 255.255.255.128 gw 125.0.0.6 r1-eth1
$ sudo route del -net 125.0.1.128 netmask 255.255.255.128 gw 125.0.0.6 r1-eth1

 Vagy csak kapcsoljuk be és konfiguráljuk az OSPF-et r1-en is (ehhez nincs támogatás a VM-en).

40 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
8. feladat (VM)
 A hálózat felhasználói arra panaszkodnak, hogy amikor az s1.tslab
oldalt szeretnék betölteni, akkor azon a Welcome to s2! felirat
olvasható. Az s2.tslab oldal betöltésekor is hasonló problémába
ütköznek. Ön már tudja, hogy az s1 és az s2 a megfelelő oldalakat
ajánlja ki, a h1 felől mégsem ez látszik.
 h1-re történő bejelentkezés után egy böngésző (Firefox) segítségével
ellenőrizze le, hogy valóban fennáll-e a hiba! (A böngésző kissé lassan
tölti be az oldalt.)
 Mi történik, ha nem az s1.tslab ill. az s2.tslab neveket írja a böngésző
címsorába, hanem azok IP címét? (Az IP címeket a hálózat ábráján találja.)
 Mi lehet a probléma oka? (nslookup használatával ellenőrizze a
címfeloldást!)
 Milyen IP címen keresné a problémát okozó eszközt?

41 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
8. feladat (VM) – megoldás
 h1-re történő bejelentkezés után egy böngésző (Firefox) segítségével ellenőrizze le, hogy valóban
fennáll-e a hiba!
 $ ssh -X h1
$ firefox
 Az s1.tslab oldalra navigálva tényleg rossz oldal töltődik be. Az s2.tslab esetén is.
 Mi történik, ha nem az s1.tslab ill. az s2.tslab neveket írja a böngésző címsorába, hanem azok IP
címét?
 A 125.0.1.254 (s1) ill. a 125.0.1.253 (s2) IP címeket használva a helyes oldalak töltődnek be.
 Mi lehet a probléma oka? (nslookup használatával ellenőrizze a címfeloldást!)
 A hibát az okozza, hogy a DNS szerverben a két szerverhez kapcsolódó címek fel vannak
cserélve. Az nslookup s1.tslab és nslookup s2.tslab eredményéből látható is, hogy az
ábrához képest a címek fel vannak cserélve.
 Milyen IP címen keresné a problémát okozó eszközt?
 Az előző pontban futtatott nslookupok alapján látható, hogy a hibás DNS szerver a
192.168.0.252-es IP címen érhető el. A feladatban a szerver szerepét a h1-en futó dnsmasq
játssza, a hibás bejegyzéseket a ~/ts-sem/dns/dnserr fájl tartalmazza.

42 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
9. feladat
 Az előző feladat tanulságait felhasználva
válaszolja meg a következő kérdéseket!
 Ha egy hálózatban a hosztok képesek elérni
egymást nevek használatával, de egyetlen
külső szervert sem képesek név alapján elérni,
csak közvetlenül IP címet használva, akkor
milyen problémára gyanakodna?
 Milyen megoldás jöhet szóba?

43 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
9. feladat – megoldás
 Ha egy hálózatban a hosztok képesek elérni egymást
nevek használatával, de egyetlen külső szervert sem
képesek név alapján elérni, csak közvetlenül IP címet
használva, akkor milyen problémára gyanakodna?
 A helyi DNS nincs helyesen konfigurálva, nem
hivatkozik felsőbb rendű DNS szerverre, így ami nincs
a saját címtárában, azt nem is ismeri.
 Milyen megoldás jöhet szóba?
 Ezt a felsőbb rendű DNS szervert kellene megadni.

44 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
10. feladat (VM)
 Időnként a h1 vagy a h2 hoszt felhasználóitól hibabejelentést kap, mely szerint
az s1 szerver időnként elérhetetlen. Amikor viszont ön próbál kapcsolódni a
hosztokról az s1-hez, minden esetben sikeres a kapcsolatfelépítés. Más
hosztok felhasználóitól sem érkezik ilyen panasz, és ön a saját hosztjáról is
bármikor képes elérni az s1 szervert. Ma éppen sem a h1, sem a h2 hosztot
nem használja senki. Úgy dönt, kivizsgálja az esetet.
 A h1 hosztra történő bejelentkezés után pingelje meg az s1 szervert!
 Anélkül, hogy leállítaná az előző pinget, a h2 hosztról szintén pingelje meg az s1
szervert!
 Mit tapasztal? Mit gondol, miért történhet ilyen?
 Hasonlítsa össze a h1 és h2 interfész konfigurációját az ifconfig parancs
használatával!
 Válasszon egy szabad IP címet a hálózaton és ennek megfelelően javítsa a hibát a h2
hoszton! Ne felejtse el beállítani a default gateway-t! Ellenőrizze, hogy a probléma
még mindig fennáll-e!

45 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
10. feladat (VM) – megoldás
 h1 hosztra történő bejelentkezés után pingelje meg az s1 szervert!
 $ ssh h1
$ ping 125.0.1.254
 Anélkül, hogy leállítaná az előző pinget, a h2 hosztról szintén pingelje meg az s1 szervert!
 $ ssh h2
$ ping 125.0.1.254
 Mit tapasztal? Mit gondol, miért történhet ilyen?
 Először a h1-ről indított ping probléma nélkül fut, majd amikor h2-ről indítunk pinget, megáll, és többet nem is indul újra
(akkor sem, ha h2-n megállítjuk a pinget). A jelenség IP cím ütközésre utal.
 Hasonlítsa össze a h1 és h2 interfész konfigurációját az ifconfig parancs használatával.
 ifconfig h<1 vagy 2>-eth0-t futtatva látható, hogy mind a két hoszt ugyanazt az IP címet használja.
 Válasszon egy szabad IP címet a hálózaton és ennek megfelelően javítsa a hibát a h2 hoszton! Ne felejtse el beállítani a
default gateway-t! Ellenőrizze, hogy a probléma még mindig fennáll-e!
 A maradék két hosztra bejelentkezve látható, hogy a 192.168.0.3 (h3) és a 192.168.0.251-es (h4) ill. a 192.168.0.1-es
cím (r1) címek foglaltak. Bármi más szabadon használható, válasszuk mondjuk a 192.168.0.2 címet:

$ sudo ifconfig h2-eth0 192.168.0.2 netmask 255.255.255.0 up


$ sudo route add default gw 192.168.0.1

Ha ezután h1-ről megpróbáljuk pingelni s1-et, továbbra is sikertelen lesz, mivel a h2 és s1 közötti eszközök még nem
értesültek arról, hogy h2 IP címét lecseréltük. Ezért először h2-ről kell pingelni s1-et, majd ezután h1-ről is elindítva a
pinget kapjuk a várt eredményt.

46 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
11. feladat (VM)
 A hálózatban az s1 és az s2 szerverek 80-as portján egy-egy
HTTP szervernek kellene elérhetőnek lennie. A hálózat
felhasználói viszont arra panaszkodnak, hogy az s2 szerveren
lévő weboldat nem érik el. Feltételezhetjük, hogy a hálózattal
minden rendben van. Mi lehet a probléma?
 A h1 hoszton indítson el egy böngészőt és hasonlítsa össze, hogy
milyen eredményeket kap az s1.tslab ill. az s2.tslab oldalakat betöltve!
 netcat használatával ellenőrizze, hogy a 80-as port nyitott-e az s2
szerveren! (A lekérdezéskor a szerver IP címét használja!)
 netcat vagy telnet használatával csatlakozzon az s1 és s2 szerverek
80-as portjára és ellenőrizze, hogy ott valóban egy HTTP szerver
található-e! Értékelje az eredményeket!

47 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
11. feladat (VM) – megoldás
 A h1 hoszton indítson el egy böngészőt és hasonlítsa össze, hogy milyen eredményeket kap az
s1.tslab ill. az s2.tslab oldalakat betöltve!
 Az s1.tslab betölt, az s2.tslab nem.
 netcat használatával ellenőrizze, hogy a 80-as port nyitott-e az s2 szerveren! (A lekérdezéskor a
szerver IP címét használja!)
 $ nslookup s2.tslab
$ nc -z -v 125.0.1.253 80
 netcat vagy telnet használatával csatlakozzon az s1 és s2 szerverek 80-as portjára és ellenőrizze,
hogy ott valóban egy HTTP szerver található-e! Értékelje az eredményeket!
 $ nc 125.0.1.254 80
HEAD / HTTP/1.0

HTTP/1. 0 200 OK...

$ nc 125.0.1.253 80
HEAD / HTTP/1.0

Semmi válasz.
Az s2 80-as portján vagy nem egy HTTP szerver figyel, vagy be van fagyva és nem válaszol.

48 Hálózatok építése és üzemeltetése, Troubleshooting gyak. – Gulyás András, Pelle István, BME-TMIT 2020/10/28
Hálózatok építése és üzemeltetése

OSPF gyakorlat

1 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Ismétlés

2 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Routing protokollok
 Feladatuk
 optimális útvonal (next hop) kiszámítása bármely
csomópontok között
 aktuális állapot információ gyűjtés a hálózatról
 útvonalak kalkulálása
 forwarding táblák
 konfigurálása
 dinamikus karbantartása, frissítése
 bejövő routing protokoll üzenetek alapján
 routing információk
 feldolgozása
 terjesztése

3 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Routing protokollok
 Hálózat: absztrakt gráf
 csomópontok: routerek
 élek: linkek
 élköltség: valamilyen metrika (pl.
késleltetés, sávszélesség kifejezése)
 cél:
 (valamilyen értelemben) optimális,
legkisebb költségű útvonal
meghatározása két csomópont
között
 pl. legrövidebb út
 Ismerős algoritmusok:
 Dijkstra algoritmus
 Bellman-Ford algoritmus
J. Kurose, K. Ross, “Computer Networking: A Top-Down Approach”, Pearson, 2012
4 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Csoportosításuk
 Globális vs. Elosztott
 globális: minden router ismeri a teljes topológiát
 elosztott: minden router csak a szomszédjait és a tőlük kapott üzeneteket
ismeri
 Intra-domain vs. Inter-domain
 intra: Interior Gateway Protocol (IGP)
 közös adminsztratív domain
 rugalmatlan szabályok
 egyes esetekben nem jól skálázódik
 inter: Exterior Gateway Protocol (EGP)
 külön adminisztratív domainek, AS-ek (Autonomous System) között
 jól skálázódik (internet)
 Link state vs. Distance Vector (ld. később)
5 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Csoportosításuk
 Interior Gateway Protocol (IGP) példák
 OSPF (OpenShortest Path First)
 IS-IS (Intermediate System to Intermediate System)
 RIP (Routing Information Protocol)
 EIGRP (Enhanced Interior Gateway Routing Protocol)
 Exterior Gateway Protocol (EGP)
 BGP (Border Gateway Protocol)
 ld. MSc (Internet architektúra és szolgáltatások főspecializáció)

6 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Link State alapú routing
 Működési elv
 globális nézeten dolgozik
 LSP: Link State Packet (id, costs, seq.no, ttl)
 egy router
 mindenkinek küld LSP-t (broadcast)
 a közvetlenül kapcsolódó linkjeiről
 periodikusan újra generálja (seq.no++)
 legfrissebb beérkezett LSP-ket tárolja
 mindenki ugyanazt a topológiát látja
 azon számolja az útvonalakat
 útvonalszámítás: Dijkstra algoritmus
7 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Például: OSPF
 Open Shortest Path First (v2)
 nyílt, IETF szabvány
 v2: RFC 2328
 IP felett
 együttműködés különböző gyártók termékei között!
 korlátozott erőforrás igény
 viszonylag gyors, automatikus konvergencia topológia változásokra
 támogatja
 különböző útvonal költségek számítását
 hierarchikus, többszintű topológiát
 alkalmazás típusára alapozott forgalomirányítást
 autentikációt minden üzenetre

8 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Hálózatemulációs környezet

Netkit, Quagga

9 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Újabb platformjuk:

10 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


11 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Netkit

12 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Netkit

13 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


14 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
15 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Quagga/Zebra
 Routing Szoftver csomag
 GPL
 FreeBSD, Linux, Solaris, NetBSD
 GNU Zebra volt előbb
 Quagga egy fork volt
 “The Quagga tree aims to build a more involved
community around Quagga than the current centralised
model of GNU Zebra.”
 az élővilágban a quagga halt ki
 a routing világban a zebra
16 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Quagga/Zebra
 Routing Szoftver csomag
 zebra (core daemon)
 kernel interface, static routes
 zserv szerver (API) -> quagga kliensek felé
 quagga démonok
 routing protokollok
 ripd, ripngd, ospfd, ospf6d, bgpd, isisd
 mindegyikkel dedikált CLI-n (vty) keresztül kommunikálhatunk
 hasonló interfész, mint egy HW routernél
 speciális quagga tool: vtysh
 közös front-end minden démonhoz

17 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


18 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Vizsgálati környezet kialakítása
 IB213 labor: default HaEpUz (Mininet+Netkit) boot image
 Saját gép:
 Kiadott HaEpUz VM (Jupyter Notebook)
 de most nem a notebookot használjuk
 Indítás VMware player vagy importálás Virtualbox-ba
 A rendszer egy Ubuntu 64-bit Linux + desktop environment,
tartalma:
 Mininet hálózatemuláció
 Netkit hálózatemuláció
 OSPF lab indítása:
 $ cd ~/netkit/labs/netkit-lab_ospf-singlearea
 $ lstart
19 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
OSPF lab#1

netkit-lab_ospf-singlearea

20 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


OSPF lab#1 topológia
 single
(backbone)
area
 0.0.0.0
 minden
interfészhez
 ospf cost
 default: 10
 néha
trükkösen van
beállítva!
indítás:
$ cd ~/netkit/labs/netkit-lab_ospf-singlearea
$ lstart

21 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


OSPF lab#1 topológia
 quagga teszt, pl. bb0 routeren
 cd /etc/zebra; ls -l
 daemon conf fájlok
 cat daemons
 cat zebra.conf (passwd!)
 cat ospfd.conf

22 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


OSPF lab#1 topológia
 quagga teszt, pl. bb0 routeren
 telnet localhost zebra
 szokásos lehetőségek
 enable, configure terminal, ?, <tab>,
show, list
 telnet localhost ospfd
 show ip ospf
 vtysh (minden démonhoz)

23 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Legrövidebb utak
 traceroute -I
icmp
 bb1->10.0.2.1
 melyik
útvonal?
 hogy jönnek
vissza az
ICMP
válaszok?
 bb1->10.0.3.2
 melyik
útvonal?
24 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Legrövidebb utak
 routing táblák
 értelmezzük minden
routeren
 vtysh
 show ip route
 administrative distance:
110 (default OSPF)
 ospf metric: 10, 20, …
 connected metric: 1

25 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Legrövidebb utak
 ospf vizsgálata
 nézzük meg minden
routeren
 vtysh
 show ip ospf database
 show ip ospf neighbor
 show ip ospf route

26 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Speciális gráf modell
 Broadcast
hálózatok
 nem pont-
pont linkek
 pl. Ethernet
 hálózat is
csomópont

 pont-pont
linkeknél
 router-
router él
27 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
Designated Router (DR) és BDR
 Broadcast
hálózatoknál
 pl. Ethernet
 DR és Backup DR:
kitüntetett routerek
 választás alapján
 router id alapján (max.)
 (ami interfész id)
 többi OSPF router csak
velük van full
szomszédságban
 különben mindenki-
mindenkivel
kommunikálna
 útvonalfrissítés csak
show ip ospf DR-től
router legnagyobb
IP címe
interface  sok erőforrás spórolható
28 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
29 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
30 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
router
legnagyobb IP
címe

31 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
DR IP címe
abban a
hálózatban

32 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
33 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
34 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
35 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
router
legnagyobb IP
címe

36 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
37 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
38 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
39 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
40 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
41 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
42 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
43 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
44 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
45 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
46 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
47 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
48 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25
forrás: http://wiki.netkit.org/netkit-labs/netkit-labs_advanced-topics/netkit-labs_ospf/netkit-labs_ospf.pdf
Dinamikus működés
 OSPF üzenetek (Hello, majd LSA-k)
 Mi történik, ha lemegy egy link?
 Mi történik, ha lemegy egy DR link?
 Mi történik, ha lemegy egy router?

49 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Dinamikus működés
 OSPF Hello üzenetek, később LSA-k
 tcpdump -ne ip proto ospf
 (esetleg -vv a részletes nézethez)
 vizsgáljuk meg részletesebben
 (később is érdemes pl. az egyik routeren futtatni)

50 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Dinamikus működés
 Mi történik, ha lemegy egy link?
 ifconfig vagy ip parancs használható
 pl. BB3 eth1 interfész down (majd up)
 hogy változnak az útvonalak?
 pl. BB1-ről → 10.0.2.1 felé
– traceroute -I icmp 10.0.2.1
 routing táblák vizsgálata
– show ip ospf route

51 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Dinamikus működés
 Mi történik, ha lemegy egy link?
 ifconfig vagy ip parancs használható
 pl. BB3 eth1 interfész down (majd up)
 hogy változnak az útvonalak?
 pl. BB1-ről → 10.0.2.1 felé
– traceroute -I icmp 10.0.2.1
 routing táblák vizsgálata
– show ip ospf route

52 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Dinamikus működés
 Mi történik, ha DR link megy le?
 pl. BB3 eth0 down majd up
 BB2-n ellenőrizzük az OSPF interfészeket és database-t
– show ip ospf interface
–show ip ospf database
 BB3 eléri a 10.0.1.0 hálózatot?
 BB3-n húzzuk vissza az eth0 interfészt
 BB2-n újra vizsgáljuk az interfészeket/database-t
– show ip ospf interface
– show ip ospf database
– show ip ospf database network

53 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Dinamikus működés
 Mi történik, ha DR link megy le?
 pl. BB3 eth0 down majd up
 BB2-n ellenőrizzük az OSPF interfészeket és database-t
– show ip ospf interface
–show ip ospf database
 BB3 eléri a 10.0.1.0 hálózatot? igen, 2 úton is, 40-es költségű lesz az aktív
 BB3-n húzzuk vissza az eth0 interfészt
 BB2-n újra vizsgáljuk az interfészeket/database-t
– show ip ospf interface
– show ip ospf database
– show ip ospf database network

54 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Dinamikus működés
 Mi történik, ha lemegy egy router?
 pl. minden interfészét down állapotba kapcsoljuk
 házi feladat

55 Hálózatok építése és üzemeltetése, OSPF gyakorlat - Sonkoly Balázs, BME-TMIT 2020/11/25


Hálózatok építése és üzemeltetése

OpenFlow / POX gyakorlat

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


 Előző gyakorlat:
 OSPF (routing protokoll)
 elosztott működés
 több-több (many-to-many) kommunikáció
 bonyolult!
 Most:
 más koncepció, SDN
 (bonyolult??)

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


1. feladat:
térképezzük fel az emulált topologiát
 $ sudo -E mn --topo tree,depth=2 --controller=remote,port=6633
 Használható parancsok:
 mininet> net
 mininet> dump
 mininet> h1 ifconfig
 mininet> …

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


1. feladat:
térképezzük fel az emulált topologiát ☻
 $ sudo –E mn --topo tree,depth=2 --controller=remote

s1-eth2 s3-eth3 s3-eth2 h4-eth0


h1 h1-eth0
10.0.0.1/8
s2-eth1
S2 s2-eth3 s1-eth1
S1 S3 10.0.0.4/8
h4
s2-eth2 s3-eth1

h2-eth0 h3-eth0
10.0.0.2/8 10.0.0.3/8

h2 h3

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


2. feladat: forgalom megfigyelése
 mininet> xterm h1
 h1: ~# ping –c 1 10.0.0.4
 Figyeljük meg az s?-eth? interfészket. Meddig jutnak
el az ARP kérések?
 (érdemes külön ablakokban tcpdumpot futtatni.) controller

 vizsgálandó linkek: h1 h1-eth0


10.0.0.1/8
s2-eth1
S2 s2-eth3 s1-eth1 S1 s1-eth2 s3-eth3
S3 s3-eth2
10.0.0.4/8
h4-eth0
h4
s2-eth2 s3-eth1
 h1-s2, s1-s2, s2-h2
h2-eth0 h3-eth0
10.0.0.2/8 10.0.0.3/8

h2 h3

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


2. feladat: forgalom megfigyelése
 h1: ~# ping –c 1 10.0.0.4
 Figyeljük meg az s?-eth? interfészket. Meddig jutnak
el az ARP kérések?
 ALT-F2 xterm, majd: ~$ sudo wireshark &
 .

 Hallgassunk bele a lo interfészbe is!


 (itt a wiresharkot érdemes használni, de az installált verzió már
nem támogatja megfelelően a OF1.0-ás csomagokat)
Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27
2. feladat: forgalom megfigyelése ☻
 h1: ~# ping –c 1 10.0.0.4
 Figyeljük meg az s?-eth? interfészket. Meddig jutnak
el az ARP kérések?
 ALT-F2 xterm, majd: ~$ sudo wireshark &
 Mindössze három ARP csomag lesz a h1-s2 linken.

 Hallgassunk bele a lo interfészbe is!


 (itt a wiresharkot érdemes használni, de az installált verzió már
nem támogatja megfelelően a OF1.0-ás csomagokat)
Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27
2. feladat: forgalom megfigyelése ☻
 h1: ~# ping –c 1 10.0.0.4
 Figyeljük meg az s?-eth? interfészket. Meddig jutnak
el az ARP kérések?
 ALT-F2 xterm, majd: ~$ sudo wireshark &
 Mindössze három ARP csomag lesz a h1-s2 linken.

 Hallgassunk bele a lo interfészbe is!


 A switchek próbálnak kapcsolódni a kontrollerhez.

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


1. feladat:
térképezzük fel az emulált topologiát

controller

s1-eth2 s3-eth3 s3-eth2 h4-eth0


h1 h1-eth0
10.0.0.1/8
s2-eth1
S2 s2-eth3 s1-eth1
S1 S3 10.0.0.4/8
h4
s2-eth2 s3-eth1

h2-eth0 h3-eth0
10.0.0.2/8 10.0.0.3/8

h2 h3

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


POX: OpenFlow kontroller-keretrendszer
 Elavult: csak OpenFlow 1.0-t támogat
 Konkurensek: OF 1.4+, OF-config, netconf, snmp
 Fejlesztése gyakorlatilag leállt
 Hibajavítások kivételével
 Ipari igényeket nem elégít ki

 Minimális függőségi lista (python 2.7)


 Könnyen installálható http://www.noxrepo.org
 Szkript nyelvet használ: http://github.com/noxrepo/pox/
 gyors edit/(compile)/debug ciklus https://noxrepo.github.io/pox-doc/html/
 gyors prototípus implementálás
 Rendkívül elegáns eseménykezelő keretrendszer
 Single threaded: így is gyors, de nehezebb hibázni
 Keretrendszer, amiben alkalmazások írhatók

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


POX installálása, frissítése

A kiadott VM-en nincs rá szükség

git clone http://github.com/noxrepo/pox


cd ~/pox
git pull
git checkout eel

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Egyszerű kontrolleralkalmazás
 ~/pox$ ./pox.py forwarding.hub
 Most sikeres lesz az előző ping parancs, de
hol lesz most adatforgalom?
 (érdemes külön ablakokban tcpdumpot futtatni.)
 vizsgálandó linkek: controller

 h1-s2, s1-s3, s2-h2 h1 h1-eth0 s2-eth1


S2 s2-eth3 s1-eth1 S1 s1-eth2 s3-eth3
S3 s3-eth2 h4-eth0
h4
10.0.0.1/8 10.0.0.4/8

 és interfész: s2-eth2 s3-eth1

 lo h3-eth0
h2-eth0
10.0.0.2/8 10.0.0.3/8

h2 h3

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Egyszerű kontrolleralkalmazás ☻
 ~/pox$ ./pox.py forwarding.hub
 Most sikeres lesz az előző ping parancs, de
hol lesz most adatforgalom?
 minden linken
 hub: controller

 L1-es működés h1 h1-eth0 s2-eth1


S2 s2-eth3 s1-eth1 S1 s1-eth2 s3-eth3
S3 s3-eth2 h4-eth0
h4
10.0.0.1/8 10.0.0.4/8

 buta csomagmásolás s2-eth2 s3-eth1

h2-eth0 h3-eth0
10.0.0.2/8 10.0.0.3/8

h2 h3

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Mi történik a kontrollerrel?
 Vizsgáljuk meg a lo forgalmát a kontroller
indításakor?
 Értelmezzük az üzeneteket!

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Mi történik a kontrollerrel? ☻
 Vizsgáljuk meg a lo forgalmát a kontroller
indításakor?
 kapcsolatfelépítés
 FlowMod: szabályok installálása a switch-ekbe

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Mi történik a kontrollerrel?
 Hogy nézhetnek ki a folyamtáblák a switch-ekben?
 Nézzük meg a folyamtáblákat!
 $ sudo ovs-ofctl show s2
 $ sudo ovs-ofctl dump-flows s2
 mininet> dpctl dump-flows
 $ dpctl dump-flows tcp:localhost:6654 (vagy 55, 56)

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Folyamtábla-bejegyzés
Match Action Stats
(illeszkedési szabály) (művelet) (statisztikák)

csomag + byte számlálók


1. csomagtovábbítás a megadott porton
2. kontrollerhez küldés
3. csomag eldobása
4. normál (hagyományos) feldolgozás
5. fejrész mezők módosítása

Switch VLAN MAC MAC Eth IP IP IP TCP TCP


Port ID src dst type Src Dst Prot sport dport
+ a nem szükséges mezők maszkolhatók (wildcard)
Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27
Egyszerű kontrolleralkalmazás 2.
 ~/pox$ ./pox.py log.level --DEBUG forwarding.hub --reactive
 Most sikeres is lesz az előző ping parancs, de
hogyan alakul most a kontrollforgalom?
 Mi lesz a folyamtáblákban? Miért?
 .

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Egyszerű kontrolleralkalmazás 2. ☻
 ~/pox$ ./pox.py log.level --DEBUG forwarding.hub --reactive
 Most sikeres is lesz az előző ping parancs, de
hogyan alakul most a kontrollforgalom?
 Mi lesz a folyamtáblákban? Miért?
 Semmi, mert a switch-ek minden csomagot felküldenek a
kontrollernek, ami nem installál folyamtábla-
bejegyzéseket, hanem minden egyes csomagra
megmondja, hogy merre kell továbbítania a switch-nek.

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Érdekesebb folyamtábla bejegyzések
$ ./pox.py log.color log.level --DEBUG forwarding.l2_learning
h2:~$ nc -l 2222
h1:~$ date|nc 10.0.0.2 2222
mininet> dpctl dump-flows

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Érdekesebb folyamtábla bejegyzések
$ ./pox.py log.color log.level --DEBUG forwarding.l2_learning
h2:~$ nc -l 2222
h1:~$ date|nc 10.0.0.2 2222 Érdekesebb statisztikai mezők
cookie=0x0, duration=2.27s, table=0, n_packets=5, n_bytes=367,
idle_timeout=10, hard_timeout=30, idle_age=2, priority=65535,
tcp,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,
nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,tp_src=46359,tp_dst=2222
actions=output:2

cookie=0x0, duration=2.267s, table=0, n_packets=3, n_bytes=206,


idle_timeout=10, hard_timeout=30, idle_age=2, priority=65535,
tcp,in_port=2,vlan_tci=0x0000,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,
nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,tp_src=2222,tp_dst=46359
actions=output:1

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Érdekesebb folyamtábla bejegyzések
$ ./pox.py log.color log.level --DEBUG forwarding.l2_learning
h2:~$ nc -l 2222
h1:~$ date|nc 10.0.0.2 2222 Érdekesebb illeszkedési mezők
cookie=0x0, duration=2.27s, table=0, n_packets=5, n_bytes=367,
idle_timeout=10, hard_timeout=30, idle_age=2, priority=65535,
tcp,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,
nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,tp_src=46359,tp_dst=2222
actions=output:2

cookie=0x0, duration=2.267s, table=0, n_packets=3, n_bytes=206,


idle_timeout=10, hard_timeout=30, idle_age=2, priority=65535,
tcp,in_port=2,vlan_tci=0x0000,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,
nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,tp_src=2222,tp_dst=46359
actions=output:1

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Érdekesebb folyamtábla bejegyzések
$ ./pox.py log.color log.level --DEBUG forwarding.l2_learning
h2:~$ nc -l 2222
h1:~$ date|nc 10.0.0.2 2222 Egyszerű akciólista
cookie=0x0, duration=2.27s, table=0, n_packets=5, n_bytes=367,
idle_timeout=10, hard_timeout=30, idle_age=2, priority=65535,
tcp,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,
nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,tp_src=46359,tp_dst=2222
actions=output:2

cookie=0x0, duration=2.267s, table=0, n_packets=3, n_bytes=206,


idle_timeout=10, hard_timeout=30, idle_age=2, priority=65535,
tcp,in_port=2,vlan_tci=0x0000,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,
nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,tp_src=2222,tp_dst=46359
actions=output:1

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


 sudo -E mn --mac --topo linear,k=5,n=1 --controller=remote,port=6633 --link=tc,delay=10ms
 pox.py log.color log.level --DEBUG forwarding.l2_learning

 mininet> h1 ping h5
 …

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


 sudo -E mn --mac --topo linear,k=5,n=1 --controller=remote,port=6633 --link=tc,delay=10ms
 pox.py log.color log.level --DEBUG forwarding.l2_learning
 mininet> h1 ping h5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=459 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=167 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=124 ms
64 bytes from 10.0.0.5: icmp_seq=4 ttl=64 time=121 ms
^C
 Mitől nagyobb az első válaszidő?
 szokásos tcpdump + wireshark + … megfigyelések kellenek

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27



 sudo -E mn --mac --topo linear,k=5,n=1 --controller=remote,port=6633 --link=tc,delay=10ms
 pox.py log.color log.level --DEBUG forwarding.l2_learning
 mininet> h1 ping h5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=459 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=167 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=124 ms
64 bytes from 10.0.0.5: icmp_seq=4 ttl=64 time=121 ms
^C
 Mitől nagyobb az első válaszidő?
 ARP + ping + kontrollerkommunikáció

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


pox.py log.color log.level --DEBUG forwarding.l2_learning proto.arp_responder --10.0.0.5=00:00:00:00:00:05 --
10.0.0.1=00:00:00:00:00:01 py

 mininet> h1 ping h5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=232 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=186 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=121 ms
^C
 POX> arp
 …
Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27

pox.py log.color log.level --DEBUG forwarding.l2_learning proto.arp_responder --10.0.0.5=00:00:00:00:00:05 --
10.0.0.1=00:00:00:00:00:01 py

 mininet> h1 ping h5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=232 ms
 gyorsabb az első PING, mert az első switch felküldi az
ARP requestet a kontrollernek, ami rögtön
megválaszolja; nem kell a csomagot 5 hopon keresztül
küldeni
 POX> arp
 POX CLI, lekérdezi az arp modul egyik változóját: az ARP
táblát.
Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27
Szorgalmi (iMSc) feladat: POX módosítása
 Soronként megadni az ARP táblát macerás.
Egyszerűbb is lehet az üzemeltetés, ha ismerjük a
topológiát vagy algoritmikusan kikövetkezethető a
tábla.
 Jelenleg: 10.0.0.X 00:00:00:00:00:X
 Írjuk át az arp_responder modult, hogy automatikusan
válaszoljon a 10.0.0.0/24-es kérésekre!

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


POX, ethernet címek
 Írjuk át az arp_responder modult, hogy
automatikusan válaszoljon a 10.0.0.0/24-es
kérésekre!

 from pox.lib.addresses import EthAddr


 String EthAddr:
mac = EthAddr(“aa:cc:dd:cc:AC:DC”)
 EthAddr  string:
s = str(mac)

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


forwarding.topo_proactive
 A debuggolást megkönnyíti a mininet --mac
argumentuma, de a valóságban az IP-mac cím
hozzárendelés előre nem ismert.
 De ha az IP címeket a DHCP szerver szisztematikusan
osztja ki, akkor azt figyelembe lehet venni a routingnál.

 címkiosztási séma: 10.switchID.portNumber.x


 Szorgalmi (IMSC) feladat: az implementáció megértése
és elmagyarázása
Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27
LLDP: Link Layer Discovery Protocol
openflow.discovery (EtherType == 0x88cc)
 A packet_in vétele után
Packet_in,
s2, port 1  a kontroller megtanulja, hogy van egy
s1.p1-s2.p1 link
Packet_out, LLDP
s1, port 1 (s1, p1)  Az openflow.discovery küld egy
LLDP LinkEvent üzenetet.
(s1, p1)
 LinkEventet az kapja meg, aki feliratkozik rá,
p2 p1 p1 pl:
 ./pox.py openflow.discovery misc.gephi_topo \
LLDP
(s1, p1) host_tracker forwarding.l2_learning
s1 s2,
OF rule:
send LLDP to
controller

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


forwarding.topo_proactive
 Kis segítség…
 POX indítása: kell a discovery modul is (ld. előadás 54. fólia)
 pox.py log.color log.level --DEBUG openflow.discovery forwarding.topo_proactive
 Mininetben
 IP címeket törölni kell a hosztokon, majd dhcp-vel kérni
 amit a POX-on futó dhcp szerver oszt ki
 ip addr del 10.0.0.1/8 dev h1-eth0; dhclient -v h1-eth0
 bug a POX használt verziójában
 ~/pox/pox/proto/arp_helper.py
 egy változó nincs inicializálva
 gyors fix (ld. git diff)

Hálózatok építése és üzemeltetése, OpenFlow / SDN kontroller gyakorlat, BME-TMIT 2019-11-27


Hálózatok építése és üzemeltetése

EAP – RADIUS : Gyakorlati útmutató


EAP-RADIUS gyakorlat
 A gyakorlat alatt egy, az IEEE 802.1X szerint működő
hozzáférés vezérlést fogunk megvalósítani. A hozzáférés 3
szereplője:
 Supplicant: Ő szeretne csatlakozni
 Authenticator: Ő vezérli a hozzáférési portot és kéri a hitelesítést
 Authenticaton Server (AS): Ő hitelesíti a felhasználót

 Enterprise WiFi környezetben szinte mindig ezzel találkozunk,


de vezetékes környezetben is használatos és hasznos.
2 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1
Hozzávalók
 A 3 szereplőhöz 3 külön gépet rendelünk
 Lehet a BME Cloudon 3 gépet indítani
 Lehetséges, hogy 3 hallgató együtt dolgozik

 A hálózati forgalom megfigyeléséhez szükséges lesz egy


WireShark program a lokális számítógépen. Ezt telepíteni
kell. Viszonylag kevés mellékhatással jár a hordozható
verzió (portable) telepítése.

3 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


BME Cloud sablon
 A gyakorlathoz szinte tetszőleges, ami Ubuntu vagy Debian sablon
használható. De készült egy sablon kifejezetten a méréshez is EAP-
RADIUS néven
 A BME Cloud virtuális gépén nem szükséges grafikus felületet
futtatni, a parancssoros elérés elegendő
 A BME Cloud géphez ssh elérés kell. Ajánlott a putty program
használata.
 A BME Cloud Ubuntu gépein alapértelmezésben tűzfal fut, amelyet
konfigurálni kell. Most az egyszerűség kedvéért akár le is tilthatjuk a
tűzfalat, tudva, hogy nem ez a helyes hozzáállás
$ sudo ufw disable

4 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


1. feladat

RADIUS szerver életre keltése


Teszt kapcsolat a RADIUS szerverrel
Jelszavas hitelesítés

5 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


RADIUS Authentication Server
 A RADIUS szerver végzi a felhasználók hitelesítést, ő lesz
az AS szereplő
 A freeradius programot használjuk, amely nagy tudású,
nyílt forrású és ingyenesen elérhető.
 Amennyiben nincs telepítve a freeradius, úgy azt telepíteni
kell. A telepítéshez a következő parancsot használjuk:
$ sudo apt-get update
$ sudo apt-get install freeradius

6 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Freeradius konfigurálása
 A RADIUS szervert sokféleképpen lehet konfigurálni,
most csak egy egyszerű konfigurációt hajtunk végre, hogy
működjön a hitelesítés. A valóságban ennél bonyolultabbat
érdemes használni, mellőze a nyílt jelszavakat.
 A RADIUS szerverhez fel kell venni egy új felhasználót
 Ehhez a /etc/freeradius/3.0/users fájlt kell módosítani
 A fájlba a következő sort kell beírni:
test Cleartext-Password := "password"
 Hatására egy test nevű felhasználó jön létre password jelszóval.

7 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Freeradius konfigurálása (folyt.)
 A RADIUS szerverhez engedélyezni kell az Authneticator
kapcsolódását, a kapcsolat jelszóval van hitelesítve és védve
 Ehhez a /etc/freeradius/3.0/clients.conf fájlt kell módosítani
 A fájlba a következő sort kell beírni, a megfelelő IP cím
helyettesítésével:
client 10.9.0.36/32 {
secret = testing123
shortname = test
}
 Hatására a megadott IP címről a megadott jelszóval lehet csatlakozni.

8 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Freeradius tesztelése
 A felhasználó és Authenticator helyes beállítását a radtest
paranccsal tudjuk tesztelni.
 Először érdemes lokálisan testelni, azaz a RADIUS szerver
gépen.
 Állítsuk le a freeradius daemon-t és indítsuk el úgy, hogy jobban
lássuk mi történik, azaz maradjon előtérben és írjon ki
sokmindent. Ezt hagyjuk egy külön terminálban.
$ sudo /etc/init.d/freeradius stop
$ sudo freeradius -X

9 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Freeradius tesztelése (folyt.)
 Indítsuk el a radtest programot arról a gépről, amelyen a
RADIUS is fut.
 Paraméternek a felhasználónév, jelszó, RADIUS szerver cím, NAS
port és a RADIUS kapcsolat jelszó kerül
 Amennyiben itt hibát kapunk, akkor valószínűleg a felhasználó nincs
beállítva rendesen
 Majd indítsuk el a radtest programot egy távoli gépről és
használjuk a RADIUS szerver IP címét
 Amennyiben itt hibát kapunk, de a lokális teszt működött, akkor a
RADIUS szerveren nincs beállítva a kliens rendesen
 Előfordulhat, hogy a kapcsolat nem hozható létre. Ellenőrizzük ping-
gel a másik gép elérését, illetve ellenőrizzük a tűzfal beállításokat
10 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1
Freeradius tesztelése (folyt)
Lokális kliens RADIUS szerver
$ radtest test password localhost 1 Ready to process requests
testing123 radyt (19) Received Access-Request Id 11
Sent Access-Request Id 11 from 0.0.0.0:36785 from 127.0.0.1:36785 to 127.0.0.1:1812
to 127.0.0.1:1812 length 74 length 74
User-Name = "test" (19) User-Name = "test"
User-Password = "password" (19) User-Password = "password"
NAS-IP-Address = 127.0.1.1 (19) NAS-IP-Address = 127.0.1.1
NAS-Port = 1 (19) NAS-Port = 1
Message-Authenticator = 0x00 (19)Message-Authenticator =
Cleartext-Password = "password" 0xbd4c15518765b6652081460f49922880
Received Access-Accept Id 11 from …
127.0.0.1:1812 to 0.0.0.0:0 length 20 (19) Sent Access-Accept Id 11 from
127.0.0.1:1812 to 127.0.0.1:36785 length 0
(19) Finished request
Waking up in 4.9 seconds.
(19) Cleaning up request packet ID 11 with
timestamp +6724

11 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Freeradius tesztelése (folyt)
Távoli kliens RADIUS szerver
$ radtest test password 10.9.0.36 1 Ready to process requests
testing123 (1) Received Access-Request Id 52 from
Sent Access-Request Id 52 from 0.0.0.0:41859 10.9.0.172:41859 to 10.9.0.36:1812 length 74
to 10.9.0.36:1812 length 74 (1) User-Name = "test"
User-Name = "test" (1) User-Password = "password"
User-Password = "password" (1) NAS-IP-Address = 127.0.1.1
NAS-IP-Address = 127.0.1.1 (1) NAS-Port = 1
NAS-Port = 1 (1)Message-Authenticator =
Message-Authenticator = 0x00 0xfc55fa47b24c8755ebf11e2b3b0c68f1
Cleartext-Password = "password" …
Received Access-Accept Id 52 from (19) Sent Access-Accept Id 11 from
10.9.0.36:1812 to 0.0.0.0:0 length 20 127.0.0.1:1812 to 127.0.0.1:36785 length 0
(19) Finished request
Waking up in 4.9 seconds.
(19) Cleaning up request packet ID 11 with
timestamp +6724

12 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


RADIUS forgalom megfigyelése
 A hitelesítés során a távoli RADIUS kliens és a RADIUS
szerver között RADIUS forgalom megy az 1812 UDP
porton. Ezt a forgalmat megfigyelhetjük úgy, hogy az IP
csomagokat meglessük és eltároljuk.
 A forgalom megfigyelésére a tcpdump parancsot
használjuk. Amennyiben nem létezik az adott gépen, akkor
telepíteni kell (apt-get install).

13 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


RADIUS forgalom megfigyelése (folyt)
 A megfigyelésnél a RADIUS szerveren egy külön terminált
indítunk, onnan futtatjuk a tcpdump parancsot
 Paraméterként az interfészt és a fájl nevét adjuk meg,
valamint a szűrési feltételt
 A parancsot a mérés végén a CTRL+C
billentyűzetkombinációval állítjuk meg
$ sudo tcpdump -i eth0 –w file.pcap port 1812

14 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


RADIUS forgalom megfigyelése (folyt)
 Hajtsuk végre az előző távoli mérést úgy, hogy közben megfigyeljük a RADIUS
szerver forgalmát!
 A lementett forgalom a file.pcap fájlban lesz a megfigyelő gépen. Ezt a fájlt kell
eljuttatni a saját gépünkre, ahol a WireShark majd elemezni tudja.
 A fájlt át tudjuk másolni az linuxos scp, illetve a putty mellett érkező pscp paranccsal. De
egyszerű lehet az is, ha egy webszervert indítunk és egy böngészővel töltjük le a fájlt. Ez
utóbbi megoldáshoz a BME Cloud kezelőfelületén meg kell nyitni a 80-as portot a web
forgalom számára. A megfigyelő gépen a következő paranccsal indíthatjuk a web szervert
(Ha nincs busybox, telepíteni kell.)
$ sudo busybox httpd
 A böngészőből a következő URL használható, a megfelelő port számot beírva

http://http://vm.smallville.cloud.bme.hu:11553/file.pcap

15 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


WireShark
 A WireShark segítségével be kell tölteni a lementett
csomagokat, amely ezután kijelzi azokat.

16 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


2. Feladat

CHAP hitelesítés

17 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


PAP, CHAP, MSCHAP, EAP-MD5
 A radtest parancs segítségével az alapértelmezett PAP
hitelesítés mellett más hitelesítéseket is tesztelhetünk.
 A CHAP teszteléséhez a következő paranccsal történik:
$ radtest -t chap test password 10.9.0.36 1 testing123

 Vizsgáljuk meg a különböző hitelesítések üzeneteit a


WireShark segítségével!
 Ehhez a korábbi lépések ismétlése szükséges
18 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1
CHAP tesztelése
Távoli kliens RADIUS szerver
$ radtest -t chap test password 10.9.0.36 1 Ready to process requests
testing123 (2) Received Access-Request Id 61 from
Sent Access-Request Id 61 from 0.0.0.0:55837 10.9.0.172:55837 to 10.9.0.36:1812 length 75
to 10.9.0.36:1812 length 75 (2) User-Name = "test"
User-Name = "test" (2) CHAP-Password =
CHAP-Password = 0x979674421828f27f8875846a16d4aca5d8
0x979674421828f27f8875846a16d4aca5d8 (2) NAS-IP-Address = 127.0.1.1
NAS-IP-Address = 127.0.1.1 (2) NAS-Port = 1
NAS-Port = 1 (2)Message-Authenticator =
Message-Authenticator = 0x00 0x5d1db7f15d84f064d2911765d937f98e
Cleartext-Password = "password" …
Received Access-Accept Id 61 from (2) Sent Access-Accept Id 61 from
10.9.0.36:1812 to 0.0.0.0:0 length 20 10.9.0.36:1812 to 10.9.0.172:55837 length 0
(2) Finished request
Waking up in 4.9 seconds.
(2) Cleaning up request packet ID 61 with
timestamp +16103

19 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


3. Feladat

802.1X környezet összerakása


Supplicant – Authenticator – Authentication server
EAP-MD5 hitelesítés

20 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


IEEE 802.1X
 A folyamat a Supplicant, az Authenticator és az Authentication
Server között zajlik. Így most mint a három szerepre szükség lesz.
 A Supplicant –et és az Authenticator –t egy lokális link köti össze.
 Az Authenticator szerepét a hostapd program látja el. Az erre szánt
virtuális gépen ezt telepíteni kell. (hostapd csomag)
 A megoldás nem tökéletes, de a hitelesítés szempontjából jól működik
 A Supplicant szerepét a wpa_supplicant program látja el. Az erre
szánt gépen ezt telepíteni kell (wpasupplicant csomag)
 Mindkét program elsősorban a vezetéknélküli környezethez lett
kialakítva, de ismerik a vezetékes hálózatokat is

21 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Lokális link
 A BME Cloud gépei esetében most nincsen lokális hálózat
beállítva, így a lokális linket IP alapon kell felépíteni a két
távoli gép között. (Persze valójában egy hoston futnak)
 A link kialakításához következő parancsok szükségesek, a
megfelelő címek átírásával:
$ sudo ip link add tunnel0 type gretap remote <Távoli cím>
local <Lokális cím>
$ sudo ip addr add 10.0.0.1 dev tunnel0
$ sudo ip link set tunnel0 up
$ sudo route add -net 10.0.0.0/24 dev tunnel0

22 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Lokális link (folyt.)
 A linket mindkét gépen be kell állítani. A példában így a
10.0.0.1 címet 10.0.0.2 címre kell cserélni, illetve
természetesen megcserélődnek a local és remote címek
is.
 A sikeres beállítást érdemes a ping paranccsal ellenőrizni.
 Amennyiben nem válaszol a távoli gép, érdemes ellenőrizni a
tűzfalat, illetve az IP cím beállításokat.

23 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Hostapd
 A hostapd program kapcsolódik a RADIUS szerverhez,
illetve vezérli a supplicant portot, amely jelen esetben a
létrehozott lokális link.
 A hostpad program paramétereit egy konfigurációs fájl
segítségével állítjuk be
 A fájlban a RADIUS szerver paramétereit és a vezetékes
működési módot állítjuk be
 A RADIUS IP címeket be kell állítani a valóságnak megfelelően

24 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Hostapd konfigurációs fájl
interface=tunnel0
driver=wired
use_pae_group_addr=1
ieee8021x=1
eap_reauth_period=3600
#own_ip_addr=127.0.0.1
#nas_identifier=demo.ap
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=testing123
acct_server_addr=127.0.0.1
acct_server_port=1813
acct_server_shared_secret=testing123
logger_stdout=1
logger_stdout_level=4

25 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Hostapd futtatása
 A hostapd futtatása a következő paranccsal történik
$ sudo hostapd -dd -t hostapd.conf

 Amennyiben megfelelően van konfigurálva, nincs


komolyabb hibaüzenet
1543962072.430604: tunnel0: interface state UNINITIALIZED-
>ENABLED
1543962072.430718: tunnel0: AP-ENABLED
1543962072.430795: tunnel0: Setup of interface done.
1543962072.430871: ctrl_iface not configured!
1543962072.431024: RADIUS message: code=5 (Accounting-
Response) identifier=0 length=20
26 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1
Supplicant
 A Supplicant az EAPoL protokoll segítségével fog
kapcsolatot kezdeményezni a port felnyitásáért az
Authenticatornál
 A Supplicant paramétereit egy konfigurációs fájlba írjuk
 Jelen esetben a RADIUS szerverünk nagyon sok
hitelesítést támogat, így a Supplicant konfigurációja fogja
eldönteni, hogy melyik EAP metódus legyen

27 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Wpa_supplicant konfigurációs fájl példa
 Az EAP-MD5 módszerhez használt konfigurációs fájl
ctrl_interface=/var/run/wpa_supplicant
network={
proto=WPA
key_mgmt=WPA-EAP
pairwise=CCMP
eap=MD5
identity="test"
password="password"
}

28 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Supplicant indítása
 A Supplicant a következő paranccsal indul
 Az utolsó paraméter a konfigurációs fájl neve
$ sudo wpa_supplicant -Dwired -itunnel0 -c client_PEAP-
MSCHAPv2.conf

 Sikeres indulásnál megtörténik a hitelesítés, majd a


következő válasszal tér vissza:
tunnel0: CTRL-EVENT-EAP-SUCCESS EAP authentication
completed successfully

29 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Supplicant forgalma
 A Supplicant az EAPoL protokollal kommunikál. A
tcpdump parancs képes ezt a forgalmat is elmenteni
 Az elmentéshez használt parancs:
$ sudo tcpdump -i any -A -w file.pcap -e ether proto
0x888e or port 1812

 A fájl átmásolása és vizsgálata korábban leírtak alapján


történik

30 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


4. Feladat

MSCHAPv2 Hitelesítés

31 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Wpa_supplicant konfigurációs fájl
 Az MSCHAPv2 módszerhez használt konfigurációs fájl
ctrl_interface=/var/run/wpa_supplicant
network={
proto=WPA
key_mgmt=WPA-EAP
pairwise=CCMP
eap=MSCHAPV2
identity="test"
password="password"
}

32 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


5. Feladat

EAP-TTLS-PAP hitelesítés

33 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Wpa_supplicant konfigurációs fájl
 Az EAP-TTLS-PAP módszerhez használt konfigurációs fájl
ctrl_interface=/var/run/wpa_supplicant
network={
proto=WPA
key_mgmt=WPA-EAP
pairwise=CCMP
eap=TTLS
identity="test"
anonymous_identity="senki@sehol.hu"
password="password"
phase2="auth=PAP"
}

34 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


6. Feladat

PEAP-MSCHAPV2 hitelesítés

35 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1


Wpa_supplicant konfigurációs fájl
 A PEAP-MSCHAPv2 módszerhez használt konfigurációs
fájl
ctrl_interface=/var/run/wpa_supplicant
network={
proto=WPA
key_mgmt=WPA-EAP
pairwise=CCMP
eap=PEAP
identity="test"
anonymous_identity="senki@sehol.hu"
password="password"
phase2="auth=MSCHAPV2"
}

36 Hálózatok építése és üzem., EAP & RADIUS - Fehér Gábor 2020-21.1

You might also like