4.4 Lecke 1
Tanúsítvány: |
Linux Essentials |
---|---|
Verzió: |
1.6 |
Témakör: |
4 A Linux Operációs Rendszer |
Fejezet: |
4.4 A Számítógép A Hálózaton |
Lecke: |
1/1 |
Bevezetés
A mai világban az eszközök hálózatokon keresztül cserélnek információt. A számítógépes hálózatok fogalmának középpontjában az eszköz és a peer(ek) közötti fizikai kapcsolatok állnak. Ezeket a kapcsolatokat linkeknek nevezzük és ezek a legalapvetőbb kapcsolatok két különböző eszköz között. A kapcsolatok különféle adathordozókon, például rézkábeleken, optikai szálakon, rádióhullámokon vagy lézereken keresztül hozhatók létre.
Minden link egy eszköz interfészéhez kapcsolódik. Az eszközöknek több interfészük is lehet és így több link is kapcsolódhat hozzá. Ezeken a linkeken keresztül a számítógépek hálózatot alkothatnak; közvetlenül egymáshoz kapcsolódni képes eszközök kis közösségét. Az ilyen hálózatokra számtalan példa van a világon. Az eszközök routereket használnak annak érdekében, hogy a linkek hálózatán túl is kommunikálhassanak. Gondoljunk az ilyen hálózatokra úgy, mint szigetekre, amelyeket routerek kötnek össze a többi szigettel — akárcsak a hidak, melyeken az információknak át kell jutniuk ahhoz, hogy elérjék egy távoli sziget részét képező eszközt.
Ez a modell azt eredményezi, hogy a hálózatnak különböző rétegei lesznek:
- Kapcsolati Réteg
-
A közvetlenül csatlakoztatott eszközök közötti kommunikációt kezeli.
- Hálózati Réteg
-
A hálózatokon kívüli útválasztást és az eszközök egyedi címzését kezeli egyetlen kapcsolati rétegű hálózaton túl.
- Alkalmazási Réteg
-
Lehetővé teszi az egyedi programoknak az egymáshoz kapcsolódást.
Első megjelenésükkor a számítógépes hálózatok ugyanazokat a kommunikációs módszereket alkalmazták, mint a telefonok, mivel áramkörkapcsolásúak voltak. Ez azt jelenti, hogy dedikált és közvetlen kapcsolatot kell létrehozni két csomópont között, hogy kommunikálni tudjanak. Ez a módszer jól működött, azonban az adott linken az összes hely szükséges volt ahhoz, hogy két hoszt kommunikálhasson.
Végül a számítógépes hálózatok az úgynevezett csomagkapcsolásra (packet switching) váltottak. Ebben a módszerben az adatokat fejléccel csoportosítják, ami információt tartalmaz arról, hogy honnan jön az adat és hová megy. A tartami információkat ez a keret tartalmazza és a linken keresztül továbbítja a fejléc keretében feltüntetett címzettnek. Ez több eszköz számára is lehetővé teszi, hogy egy linken osztozzanak és szinte egyszerre kommunikáljanak.
Kapcsolat Rétegű Hálózat
Bármely csomag feladata, hogy információt továbbítson a forrástól a célig a két eszközt összekötő linken keresztül. Szükséges, hogy ezek az eszközök azonosítani tudják magukat. Erre szolgál a kapcsolati réteg cím. Ethernet hálózatok esetén a Media Access Control Címek (MAC) azonosítják az egyedi eszközök azonosítására. Egy MAC-cím 48 bitből áll. Globálisan nem feltétlenül egyediek és az aktuális linken kívüli peereket nem címezhetik meg. Így ezek a címek nem használhatóak a csomagok másik linkekre való irányításához. A csomag címezettje ellenőrzi, hogy a célcím megegyezik-e a saját link rétegével és ha igen, akkor feldolgozza a csomagot. Ellenkező esetben a csomagot eldobja. Ez alól a szabály alól kivétel az _ üzenetszórás_ (broadcast — egy csomagot mindenkinek elküldünk a helyi hálózaton), amelyek mindig elfogadásra kerülnek.
Az ip link show
parancs megmutatja az elérhető hálózati interfészek és azok kapcsolati réteg címeinek listáját, valamint néhány további információt a maximális csomagméretről:
$ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff
A fenti kimeneten láthatjuk, hogy az eszköznek két interfésze van, lo
és ens33
. lo
a loopback eszköz és a MAC-címe 00:00:00:00:00:00
, az ens33
pedig egy ethernet interfész és a MAC-címe 00:0c:29:33:3b:25
.
IPv4 Hálózatok
Ahhoz, hogy olyan weboldalakat tudjunk meglátogatni, mint a Google vagy a Twitter, ellenőrizhessük az e-mailjeinket vagy lehetővé tegyük, hogy a vállalkozások kapcsolatba léphessenek egymással, a csomagoknak képeseknek kell lenniük arra, hogy átmehessenek az egyik kapcsolati rétegű hálózatról a másikra. Ezek a hálózatok gyakran csak közvetve vannak összekapcsolva egymással, több közbenső kapcsolati rétegű hálózattal, amelyeken a csomagoknak át kell haladniuk, hogy elérhessék tényleges céljukat.
A hálózati interfész kapcsolati réteg címei nem használhatóak az adott kapcsolati rétegű hálózaton kívül. Mivel ennek a címnek nincs jelentősége a más hálózatban lévő eszközök számára, az útválasztás megválasztásához globálisan egyedi címekre van szükség. Ezt a címzési rendszert, az útválasztás koncepciójával együtt az Internet Protocol (IP) implementálja.
Note
|
A protokoll olyan műveletek összessége, amelyekkel valamit meg lehet tenni, hogy a protokollt követő összes fél kompatibilis legyen egymással. A protokoll egy szabvány definíciójának tekinthető. A számítástechnikában az Internet Protocol egy mindenki által elfogadott szabvány, így a különböző gyártók által gyártott különböző eszközök mind kommunikálhatnak egymással. |
IPv4 Címek
Az IP címek, akárcsak a MAC-címek, jelzik, hogy az adatcsomag honnan származik és hová tart. Az IPv4 volt az eredeti protokoll. Az IPv4 címek 32 bitesek, elméletileg maximum 4,294,967,296 címmel. Az eszközök által felhasználható címek száma azonban sokkal kisebb, mivel bizonyos tartományokat speciális felhasználási esetekre tartanak fenn, például üzenetszórási címeknek (amelyeket egy adott hálózat összes résztvevőjének elérésére használnak), multicast címeknek (az üzenetszórási címekhez hasonló, de az eszköznek úgy kell hangolódnia, mint egy rádiónak) vagy olyan címeknek, amelyek privát célokra vannak lefoglalva.
Emberileg olvasható formátumban az IPv4 címeket négy számmal jelöljük, amelyeket ponttal választunk el. Minden szám 0
és 255
között kell, hogy legyen. Vegyük például az alábbi IP-címet:
192.168.0.1
Technikailag minden szám 8 különböző bitet képvisel, emiatt ez a cím akár így is leírható lenne:
11000000.10101000.00000000.00000001
A gyakorlatban azonban a fenti decimális jelölést alkalmazzuk. A bitenkénti ábrázolás azonban fontos az alhálózatok megértéséhez.
IPv4 Alhálózatok
Az útválasztás támogatásának érdekében az IP-címek két részre oszthatók: a hálózatra és a gazdagépre. A hálózati rész azonosítja a hálózatot, amelyen az eszköz van és csomagokat irányít az adott hálózatra. A hoszt arra szolgál, hogy azonosítson egy eszközt a hálózaton és átadja a csomagot a címzettnek, amikor az elérte a kapcsolati réteg hálózatot.
Az IP-címek bármikor felbonthatók alhálózati és hoszt részekre. Az úgynevezett alhálózati maszk határozza meg, hol történik ez a felosztás. Vizsgáljuk meg az IP-cím bináris reprezentációját az előbbi példából:
11000000.10101000.00000000.00000001
Ennek az IP-címnek az esetében az alhálózati maszk minden egyes bitet, ami a hálózati részhez tartozik, beállít 1
-re és minden bitet, ami a hoszthoz, 0
-ra:
11111111.11111111.11111111.00000000
A gyakorlatban a netmaszkot decimális formában írjuk:
255.255.255.0
Ez azt jelenti, hogy a hálózat 192.168.0.0
és 192.168.0.255
között van. Jegyezzük meg, hogy az első három szám, aminek minden bitje be van állítva a netmaszkban, változatlan marad az IP címekben.
Van egy alternatív jelölés az alhálózati maszkra, amit Classless Inter-Domain Routing (CIDR)-nek hívunk. Ez a jelölés csak azt jelzi, hogy hány bit van beállítva az alhálózati maszkban és ezt a számot hozzáadja az IP-címhez. A példánkban a lehetséges 32 bitből 24 van 1
-re állítva az alhálózati maszkban. CIDR-jelöléssel ez így fejezhető ki: 192.168.0.1/24
Privát IPv4 Címek
Ahogy már fentebb említettük, az IPv4 címterület bizonyos szakaszai speciális esetekre vannak fenntartva. Ezek egyike a privát címek hozzárendelése. A következő alhálózatok privát címzésre vannak fenntartva:
-
10.0.0.0/8
-
172.16.0.0/12
-
192.168.0.0/16
Az ezeken az alhálózatokon kívüli címeket bárki használhatja. Ezeket az alhálózatokat nem lehet a nyilvános interneten használni, mivel potenciálisan egyszerre akár több hálózat is használhatja őket.
Napjainkban a legtöbb hálózat ezeket a belső címeket használja. Külső címadás nélkül teszik lehetővé a belső kommunikációt. Ma a legtöbb internetkapcsolat csak egy külső IPv4 címmel rendelkezik. A routerek az összes belső címet leképezik arra az egyetlen külső IP-címre, amikor továbbítják a csomagokat az internetre. Ennek a neve a Network Address Translation (NAT). Speciális esete a NAT-nak, amikor egy router a belső címeket egy külső IP-címre képezi, a masquerading. Ez lehetővé teszi, hogy a belső hálózat bármely eszköze új kapcsolatokat létesítsen az internet bármely globális IP-címével.
Note
|
Masquerading esetén a belső eszközökre nem lehet hivatkozni az internetről, mivel nincs globálisan érvényes címük. Ez azonban még nem egy biztonságos megoldás. Masquerading esetén is szükséges egy tűzfal használata. |
IPv4 Címek Konfigurációja
Két fő lehetőség van az IPv4 címek konfigurálására. Vagy a címek manuális hozzárendelése, vagy automatikus konfiguráció a Dynamic Host Configuration Protocol (DHCP) segítségével.
A DHCP használatakor egy központi szerver ellenőrzi, hogy melyik eszközöknek melyik címet adták ki. A szerver a hálózat más információival is elláthatja az eszközöket, mint a DNS-szerverek IP-címe, az alapértelmezett router IP-címe vagy, komplikáltabb beállítások esetén az operációs rendszer elindítása a hálózatról. A DHCP a legtöbb hálózaton alapértelmezetten engedélyezett, ezért valószínűleg már van IP-címünk, amikor egy hálózathoz csatlakozunk.
Az IP-címek manuálisan is hozzáadhatok egy interfészhez az ip addr add
paranccsal. Az alábbi példában hozzáadjuk a 192.168.0.5
címet az ens33
interfészhez. A hálózat a 255.255.255.0
netmaszkot használja, ami /24
CIDR jelölésben:
$ sudo ip addr add 192.168.0.5/255.255.255.0 dev ens33
Az ip addr show
paranccsal meggyőződhetünk róla, hogy a cím hozzá lett adva:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever
A fenti kimenet mind a lo
és az ens33
interfészt a fenti paranccsal hozzáadott címmel mutatja.
Egy eszköz elérhetőségét a ping
paranccsal ellenőrizhetjük. Egy speciális, echo request típusú üzenetet küld, amelyben a feladó választ kér a címzettől. Ha a két eszköz között a kapcsolat sikeresen létrejött, a címzett visszaküld egy echo választ, ami megerősíti a kapcsolatot:
$ ping -c 3 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.16 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=1.85 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=3.41 ms --- 192.168.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 5ms rtt min/avg/max/mdev = 1.849/2.473/3.410/0.674 ms
A -c 3
paraméter megállítja a ping
-et három echo request elküldése után. Ellenkező esetben a ping
végtelen lesz és az alábbi billentyűparanccsal állítható meg Ctrl+C.
IPv4 Útválasztás
Az útválasztás az a folyamat, amelyben egy csomag a forráshálózattól a célhálózathoz jut. Minden eszköz fenntart egy útválasztó táblát, amely arról tartalmaz információt, hogy melyik IP-hálózat érhető el közvetlenül az eszköz kapcsolat rétegű hálózatain keresztül és melyik csomagok routeren keresztül való továbbításával. Az alapértelmezett útvonal meghatároz egy útválasztót, amely minden olyan csomagot fogad, ami egyik útvonalnak sem felel meg.
A kapcsolat létrehozásakor az eszköz az útválasztó táblázatában keresi a cél IP-címét. Ha egy bejegyzés megegyezik a címmel, a csomagot vagy a megfelelő kapcsolat rétegű hálózatba küldi, vagy továbbítja az útválasztó táblában jelölt routernek.
A routerek is tartanak fenn útválasztó táblázatokat. Csomagok fogadásakor az útválasztó megkeresi a célcímeket a saját útválasztó táblázatában és elküldi a csomagokat a következő routernek. Ez addig ismétlődik, amíg a csomag meg nem érkezik a célhálózat routeréhez. Minden router neve, ami részt vesz az utazásban, hop. Az utolsó router megtalálja a célcím közvetlen linkjét az útválasztó táblában és elküldi a csomagokat a cél interfészére.
A legtöbb otthoni hálózatból csak egy út vezet kifelé, az egyedi router, amit az internetszolgáltató (ISP) biztosít. Ebben az esetben az eszköz közvetlenül a routernek továbbítja az összes olyan csomagot, ami nem a helyi hálózatnak szól, a router pedig elküldi az internetszolgáltató routerének további továbbítás céljából. Ez az alapértelmezett útvonal egy példája.
Az ip route show
parancs kiírja az aktuális IPv4 útválasztó táblát:
$ ip route show 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
Alapértelmezett útvonal hozzáadásához a router belső címe szükséges, ami az alapértelmezett átjáró lesz. Például, ha a router címe 192.168.0.1
, az alábbi parancs állítja be azt alapértelmezett útvonalként:
$ sudo ip route add default via 192.168.0.1
Az ellenőrzéshez futtassuk újra az ip route show
parancsot:
$ ip route show default via 192.168.0.1 dev ens33 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
IPv6 Hálózatok
Az IPv6-ot úgy tervezték, hogy kezelje az IPv4 hiányosságait, elsősorban a címek számát, mivel egyre több és több eszköz lett online. Az IPv6 azonban más funkciókkal is bír, például új protokollok az automatikus hálózati konfigurációhoz. Az IPv6 címenként 32 helyett 128-at használ. Ez kb. 2128 címet tesz lehetővé. Az IPv4-hez hasonlóan a globálisan használható címek száma jóval kisebb, az egyéb célokra lefoglalt szekciók miatt. Ez a nagyszámú cím azt jelenti, hogy több mint elég publikus cím van minden internetre csatlakoztatott eszköz számára, ez csökkenti a masquerading igényét és annak problémáit, például a fordítás késését és azt, hogy lehetetlen a maszkolt eszközök direkt csatlakoztatása.
IPv6 Címek
Leírva a címek 8, 4 hexadecimális számjegyből álló csoportot alkotnak, kettősponttal elválasztva:
2001:0db8:0000:abcd:0000:0000:0000:7334
Note
|
A hexadecimális számok |
Az egyes csoportok nullái eltávolíthatók, de minden csoportnak legalább egy számjegyet kell tartalmaznia:
2001:db8:0:abcd:0:0:0:7334
Ha több, csak nullákat tartalmazó csoport követi egymást, teljes egészében '::' kerülhet a helyükre:
2001:db8:0:abcd::7334
Ez minden címben csak egyszer fordulhat elő.
IPv6 Előtag
Egy IPv6 cím első 64 bitje a routing prefix. Az előtagot a routerek használják, hogy meghatározzák, egy eszköz melyik hálózathoz tartozik és melyik útvonalon kell elküldeni az adatokat. Az alhálózatolás mindig az előtagon belül történik. Az internetszolgáltatók általában a /48 vagy /58 prefixet osztanak ki az ügyfeleiknek, a belső alhálózatolásra 16 vagy 8 bitet hagynak.
Az IPv6 esetén három fő előtag-típust ismerünk:
- Globális Egyedi Cím (Global Unique Address)
-
Ebben az előtagot a globális címek számára fenntartott blokkból rendeljük hozzá. Ezek a címek az egész interneten érvényesek.
- Egyedi Helyi Címek (Unique Local Address)
-
Nem routeolhatóak az interneten, szervezeten belül azonban igen. Ezeket a címeket hálózaton belül használják annak biztosítására, hogy az eszközöknek még akkor is legyen címe, ha nincs internetkapcsolat. A privát IPv4 címeknek felelnek meg. Az első 8 bit mindig
fc
vagyfd
, melyet 40 véletlenül generált bit követ. - Link Local Címek
-
Csak egy adott linkre érvényesek. Minden IPv6-képes hálózati interfésznek van egy ilyen címe,
fe80
-al kezdve. Ezeket a címeket az IPv6 belsőleg használja további címek kérésére az automatikus konfiguráció segítségével, és a hálózat többi számítógépének megtalálásához a Neighbor Discovery protokoll segítségével.
IPv6 Interfész Azonosító
Míg az előtag azt határozza meg, hogy melyik hálózaton van egy eszköz, az interfész azonosítóját a hálózaton belüli eszközök felsorolására használják. Az IPv6 cím utolsó 64 bitje alkotja az interfész azonosítót, csak úgy, mint az IPv4 utolsó bitjei.
Ha manuálisan határozzuk meg az IPv6 címet, az interfész azonosítót a cím részeként állítjuk be. Automatikus címkonfiguráció esetén az interfész azonosítója vagy véletlenszerű, vagy az eszköz kapcsolati réteg címéből származik. Ezáltal a kapcsolati réteg címének variációja megjelenik az IPv6 címen belül.
IPv6 Címek Konfigurációja
Az IPv4-hez hasonlóan az IPv6 címek is manuálisan vagy automatikusan hozzárendelhetők. Az IPv6 címeknek azonban kétféle automatikus konfigurációja van, a DHCPv6 és Stateless Address Autoconfiguration (SLAAC).
A két automatizált metódus közül a SLAAC a könnyebb és be van építve az IPv6 szabványba. Az üzenetek az új szomszéd-felderítő protokollt (Neighbor Discovery Protocol) használják, ami lehetővé teszi az eszközök számára, hogy megtalálják egymást és információt kapjanak a hálózatról. Ezt az információt a routerek küldik és IPv6 előtagokat tartalmazhat, amelyeket az eszközök az interfész azonosítóval kombinálhatnak, amíg a kapott cím nincs használatban. Az eszközök nem adnak visszajelzést a routernek az általuk létrehozott címekről.
A DHCPv6 a frissített DHCP, amelyet az IPv6 változásainak kezelésére hoztak létre. Lehetővé teszi a klienseknek átadott információk finomabb ellenőrzését, például lehetővé teszi, hogy ugyanazt a címet ugyanaz a kliens kapja minden alkalommal, valamint több lehetőséget kínál a klienseknek, mint a SLAAC. A DHCPv6 használatával a klienseknek meg kell kapniuk a DHCP-szerver kifejezett beleegyezését a cím használatához.
Egy IPv6 cím manuális hozzárendelése egy interfészhez ugyanaz, mint az IPv4 esetén:
$ sudo ip addr add 2001:db8:0:abcd:0:0:0:7334/64 dev ens33
Az ellenőrzéshez ugyanaz az ip addr show
parancs használatos:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever inet6 2001:db8:0:abcd::7334/64 scope global valid_lft forever preferred_lft forever
A link-local címet is látjuk: fe80::010c:29ff:fe33:3b25/64
.
A ping
parancs IPv6 esetén is használható az eszközök elérhetőségének ellenőrzésére:
$ ping 2001:db8:0:abcd::1 PING 2001:db8:0:abcd::1(2001:db8:0:abcd::1) 56 data bytes 64 bytes from 2001:db8:0:abcd::1: icmp_seq=1 ttl=64 time=0.030 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=3 ttl=64 time=0.072 ms --- 2001:db8:0:abcd::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 43ms rtt min/avg/max/mdev = 0.030/0.047/0.072/0.018 ms
Note
|
Linux rendszerek esetén a |
A link-local címek ellenőrzéséhez használjuk ismét a ping
parancsot. Mivel az összes interfész a fe80::/64
előtagot használja, a pontos interfészt a címmel együtt kell meghatározni:
$ ping6 -c 1 fe80::010c:29ff:fe33:3b25%ens33 PING fe80::010c:29ff:fe33:3b25(fe80::010c:29ff:fe33:3b25) 56 data bytes 64 bytes from fe80::010c:29ff:fe33:3b25%ens33: icmp_seq=1 ttl=64 time=0.049 ms --- fe80::010c:29ff:fe33:3b25 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.049/0.049/0.049/0.000 ms
DNS
Az IP címeket nehéz megjegyezni és nem kifejezetten hangzatosak, ha egy terméket vagy szolgáltatást akarunk reklámozni. Itt lép a képbe a Domain Name System. A legegyszerűbb formájában a DNS egy telefonkönyv, amely a könnyen megjegyezhető domaineket, mint a például az example.com
társítja az IP címekkel. Amikor a felhasználó megnyit egy webhelyet, az URL részeként megadja a DNS hosztnevét is. A böngésző elküldi a DNS-nevet egy konfigurált DNS-névfeloldónak. A DNS-feloldó megtalálja a domainhez tartozó címet. A névfeloldó ezzel a címmel válaszol és a böngésző megpróbálja elérni a webszervert ezen az IP-címen.
A Linux által használt névfeloldók az /etc/resolv.conf
konfigurációs fájlban vannak:
$ cat /etc/resolv.conf search lpi nameserver 192.168.0.1
Amikor a névfeloldó elkezd keresni, először ellenőrzi az /etc/hosts
fájlt, hogy tartalmaz-e címet a kért névhez. Ha igen, visszatér ezzel a címmel és nem lép kapcsolatba a DNS-el. Ez lehetővé teszi a rendszergazdák számára, hogy névfeloldást biztosítsanak anélkül, hogy egy teljes DNS-szervert kelljen bekonfigurálniuk. A fájl minden sora egy IP-címet tartalmaz, amelyet egy vagy több név követ:
127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 192.168.0.10 server 2001:db8:0:abcd::f server
A DNS-ben történő kereséshez használjuk a host
parancsot:
$ host learning.lpi.org learning.lpi.org has address 208.94.166.198
Részletesebb információt a dig
parancs szolgáltathat:
$ dig learning.lpi.org ; <<>> DiG 9.14.3 <<>> learning.lpi.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21525 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 2ac55879b1adef30a93013705d3306d2128571347df8eadf (bad) ;; QUESTION SECTION: ;learning.lpi.org. IN A ;; ANSWER SECTION: learning.lpi.org. 550 IN A 208.94.166.198 ;; Query time: 3 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Sat Jul 20 14:20:21 EST 2019 ;; MSG SIZE rcvd: 89
Itt láthatjuk a DNS rekordtípusok nevét, ebben az esetben az A
jelzi az IPv4-et.
Socketek
A socket egy kommunikációs végpont két egymással beszélő program számára. Ha a socket a hálózaton van csatlakoztatva, a programok különböző eszközökön lehetnek, például a felhasználó laptopján levő böngésző és egy cég adatközpontjában levő webszerver.
Három fő típusa van a socketeknek:
- Unix Socketek
-
Egyazon gépen futó folyamatokat kötnek össze.
- UDP (User Datagram Protocol) Socketek
-
Gyors, de nem rugalmas protokollt használó alkalmazásokat kötnek össze.
- TCP (Transmission Control Protocol) Socketek
-
Megbízhatóbbak, mint az UDP socketek és például megerősítik az adatok beérkezését.
A Unix socketek csak az ugyanazon az eszközön futtatott alkalmazásokat tudják csatlakoztatni. A TCP és az UDP socketek hálózaton keresztül is csatlakozhatnak. A TCP lehetővé teszi az adatfolyamot, ami mindig pontosan abban a sorrendben érkezik meg, amiben elküldték. Az UDP sokkal inkább "fire and forget"; a csomagot elküldi, de az, hogy a másik oldalon kézbesítésre kerül-e, az nincs garantálva. Az UDP-nek nincs meg a TCP magas költsége, így az alacsony késési időt igénylő alkalmazásokhoz, mint a játékok, tökéletes.
A TCP és az UDP egyaránt portokat használ arra, hogy ugyanazon az IP-címen több socketet címezzen. Míg a forrásport általában véletlenszerű, a célportokat egy adott szolgáltatásra szabványosítják. A HTTP általában például a 80-as porton fut, a HTTPS a 443-on. Az SSH, ami egy biztonságos belépési protokoll egy távoli Linux rendszeren, a 22-es portot hallgatja.
Az ss
parancs lehetővé teszi a rendszergazdáknak, hogy minden socketet megvizsgáljanak egy Linux rendszeren. Mindent megmutat a forráscímről; a célcímet és a típusát is. Az egyik legjobb tulajdonsága a szűrők használata, így a felhasználó bármilyen állapotú socketet monitorozhat. Az ss
több különböző kapcsolóval és szűrőkifejezéssel futtatható a megjelenített információk korlátozása érdekében.
Kapcsolók nélküli futtatás esetén a parancs az összes létező socketet kilistázza. A -p
kapcsoló információt ad a socketeket használó processzről. A –s
kapcsoló összefoglalást ad a socketekről. Sokkal több kapcsoló áll rendelkezésre, de a legfrissebbek a -4
és a -6
az IPv4 és IPv6 IP-protokollok közötti váltáshoz, a -t
és a -u
lehetővé teszi, hogy a rendszergazda válasszon a TCP vagy az UDP socketek között, az -l
pedig csak azokat a socketeket jeleníti meg, amelyek az új kapcsolatokat figyelik.
Az alábbi parancs például listázza az összes, éppen használatban levő TCP socketet:
$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.0.5:49412 192.168.0.1:https ESTAB 0 0 192.168.0.5:37616 192.168.0.1:https ESTAB 0 0 192.168.0.5:40114 192.168.0.1:https ESTAB 0 0 192.168.0.5:54948 192.168.0.1:imap ...
Gyakorló Feladatok
-
Egy hálózatmérnököt megkérnek, hogy az
ens33
interfészhez két IP-címet rendeljen hozzá, egy IPv4 címet (192.168.10.10/24
) és egy IPv6 címet (2001:0:0:abcd:0:8a2e:0370:7334/64
). Mely parancsokat kell mindenképp használnia, hogy elérje ezt? -
Melyik címek privátak az alábbiak közül?
192.168.10.1
120.56.78.35
172.16.57.47
10.100.49.162
200.120.42.6
-
Milyen bejegyzést kell hozzáadnunk a hosts fájlhoz, hogy a
192.168.0.15
-t hozzárendeljük azexample.com
-hoz? -
Milyen hatása lesz az alábbi parancsnak?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Gondolkodtató Feladatok
-
Nevezzük meg a DNS rekord típusát az alábbi kérések esetén:
-
Szöveges adatok
-
Fordított IP-cím keresés
-
Egy domain, aminek nincs címe és egy másik domainre támaszkodik ezért az információért
-
Mail Szerver
-
-
A Linuxnak van egy bridging nevű funkciója, mire jó ez és mikor hasznos?
-
Milyen kapcsoló kell az
ss
parancshoz, hogy az összes létrehozott UDP socketet láthassuk? -
Melyik paranccsal kaphatunk összefoglalót az összes futó socketről egy Linuxos eszközön?
-
Az alábbi kimenetet az előző gyakorlat egy parancsa generálta. Hány TCP és UDP socket aktív?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
Összefoglalás
Ez a témakör a Linux hálózatba való kapcsolásával foglalkozik. Először a hálózatok különböző szintjeiről tanultunk:
-
A kapcsolati réteg, amely közvetlenül köti össze az eszközöket.
-
A hálózati réteg, amely útválasztást biztosít a hálózatok és a globális címtér között.
-
Az alkalmazási réteg, amelyben az alkalmazások összekapcsolódnak egymással.
Láttuk, hogy hogyan használják az IPv4-et és az IPv6-ot az egyes számítógépek megcímzéséhez, hogyan sorolja fel a TCP és az UDP az alkalmazások által használt socketeket, hogyan kapcsolja össze őket egymással. Megtanultuk azt is, hogy hogyan használják a DNS-t a nevek IP címekké történő feloldására.
A gyakorlatok során használt parancsok:
dig
-
DNS-információk lekérdezése és részletes információk megadása a DNS-lekérdezésekről és válaszokról.
host
-
DNS-információk lekérdezése és sűrített kimenet biztosítása.
ip
-
Hálózat konfigurálása Linuxon, beleértve a hálózati interfészeket, a címzést és az útválasztást.
ping
-
Egy távoli eszközzel való kapcsolat tesztelése.
ss
-
Információk megjelenítése a socketekről.
Válaszok a Gyakorló Feladatokra
-
Egy hálózatmérnököt megkérnek, hogy az
ens33
interfészhez két IP-címet rendeljen hozzá, egy IPv4 címet (192.168.10.10/24
) és egy IPv6 címet (2001:0:0:abcd:0:8a2e:0370:7334/64
). Mely parancsokat kell mindenképp használnia, hogy elérje ezt?sudo ip addr add 192.168.10.10/24 dev ens33 sudo ip addr add 2001:0:0:abcd:0:8a2e:0370:7334/64 dev ens33
-
Melyik címek privátak az alábbiak közül?
192.168.10.1
X
120.56.78.35
172.16.57.47
X
10.100.49.162
X
200.120.42.6
-
Milyen bejegyzést kell hozzáadnunk a hosts fájlhoz, hogy a
192.168.0.15
-t hozzárendeljük azexample.com
-hoz?192.168.0.15 example.com
-
Milyen hatása lesz az alábbi parancsnak?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Hozzáad egy alapértelmezett útvonalat a táblához, amely az összes IPv6 forgalmat elküldi a routernek, amelyiknek a belső címe
2001:db8:0:abcd::1
.
Válaszok a Gondolkodtató Feladatokra
-
Nevezzük meg a DNS rekord típusát az alábbi kérések esetén:
-
Szöveges adatok
TXT
-
Fordított IP-cím keresés
PTR
-
Egy domain, aminek nincs címe és egy másik domainre támaszkodik ezért az információért
CNAME
-
Mail Szerver
MX
-
-
A Linuxnak van egy bridging nevű funkciója, mire jó ez és mikor hasznos?
Egy híd több hálózati interfészt köt össze. A hídhoz kapcsolt összes interfész úgy kommunikál, mintha ugyanahhoz a linkréteg-hálózathoz csatlakoztak volna. Minden eszköz ugyanazon alhálózat IP-címeit használja, és nem igényelnek routert ahhoz, hogy csatlakozzanak egymáshoz.
-
Milyen kapcsoló kell az
ss
parancshoz, hogy az összes létrehozott UDP socketet láthassuk?A
-u
kapcsoló megjeleníti az összes létrehozott UDP socketet. -
Melyik paranccsal kaphatunk összefoglalót az összes futó socketről egy Linuxos eszközön?
Az
ss -s
parancs összefoglalja az összes socketet. -
Az alábbi kimenetet az előző gyakorlat egy parancsa generálta. Hány TCP és UDP socket aktív?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
11 TCP és UDP socket aktív.