109.3 Lecke 1
Tanúsítvány: |
LPIC-1 |
---|---|
Verzió: |
5.0 |
Témakör: |
109 Hálózati alapok |
Fejezet: |
109.3 Alapvető hálózati hibaelhárítás |
Lecke: |
1/2 |
Bevezetés
A Linux nagyon rugalmas és hatékony hálózati képességekkel rendelkezik. Valójában a Linux-alapú operációs rendszereket gyakran használják az általános hálózati eszközökön, beleértve a drága kereskedelmi berendezéseket is. A Linux hálózatépítés önmagában is egy tanúsítvány lehetne. Ezt szem előtt tartva ez a lecke csak néhány alapvető konfigurációs és hibaelhárítási eszközzel foglalkozik.
Mielőtt belekezdenénk ebbe a leckébe, mindenképpen olvassuk el az internetprotokollokról és a tartós hálózati konfigurációról szóló leckéket. Ebben a leckében az IPv4 és IPv6 hálózatok konfigurálásához és hibaelhárításához szükséges eszközökkel foglalkozunk.
Bár nem hivatalos célúak, a packet sniffers (csomagelemzők), mint például a tcpdump
hasznos hibaelhárító eszközök. Lehetővé teszik a hálózati interfészre érkező vagy onnan kimenő csomagok megtekintését és rögzítését. Az olyan eszközök segítségével, mint a hex viewers és a protocol analyzers ezeket a csomagokat részletesebben lehet megtekinteni, mint ahogyan azt a csomagelemzők általában lehetővé teszik. Nem árt, ha legalább nagyjából ismerjük az ilyen programokat.
Az ip
parancs
Az ip
parancs egy meglehetősen új segédprogram, amellyel szinte bármit megtekinthetünk és beállíthatunk, ami a hálózati konfigurációkkal kapcsolatos. Ez a lecke az 'ip' leggyakrabban használt alparancsaival foglalkozik, de ezzel is csak a felszínt kapargatjuk. Ha elolvassuk a dokumentációt, akkor sokkal hatékonyabban tudjuk használni.
Az ip
minden egyes alparancsának megvan a maga man oldala. Az 'ip' man oldal SEE ALSO
szakaszában ezek listája található meg:
$ man ip ... SEE ALSO ip-address(8), ip-addrlabel(8), ip-l2tp(8), ip-link(8), ip-maddress(8), ip-monitor(8), ip-mroute(8), ip-neighbour(8), ip-netns(8), ip- ntable(8), ip-route(8), ip-rule(8), ip-tcp_metrics(8), ip-token(8), ip- tunnel(8), ip-xfrm(8) IP Command reference ip-cref.ps ...
Ahelyett, hogy minden alkalommal megnéznénk, amikor szükségünk van a man oldalra, egyszerűen csak adjuk hozzá a -
és az alparancs nevét az ip
-hez, pl. man ip-route
!
Egy másik információforrás a súgó funkció. A beépített súgó megtekintéséhez írjuk be a help
szót az alparancs után:
$ ip address help Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ] [ CONFFLAG-LIST ] ip address del IFADDR dev IFNAME [mngtmpaddr] ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ master DEVICE ] [ type TYPE ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] [ vrf NAME ] ] ip address {showdump|restore} IFADDR := PREFIX | ADDR peer PREFIX ...
A netmask és az útvonalválasztás felülvizsgálata
Az IPv4 és az IPv6 úgynevezett útválasztott (routed) vagy útválasztható (routable) protokollok. Ez azt jelenti, hogy úgy tervezték őket, hogy a hálózat tervezői számára lehetővé tegyék a forgalomáramlás szabályozását. Az Ethernet nem routolható protokoll. Ez azt jelenti, hogy ha sok eszközt csatlakoztatnánk egymáshoz csak az Ethernet segítségével, akkor nagyon keveset tehetnénk a hálózati forgalom irányításának érdekében. A forgalom irányítását célzó bármilyen intézkedés a jelenlegi routolható és útválasztó protokollokhoz hasonlóan végződne.
Az útválasztó protokollok lehetővé teszik a hálózattervezők számára a hálózatok szegmentálását a csatlakoztatható eszközök feldolgozási igényeinek csökkentése, a redundancia biztosítása és a forgalom kezelése érdekében.
Az IPv4 és IPv6 címek két részből állnak. Az első bitcsoport alkotja a hálózati részt, míg a második bitcsoport a host részt. A hálózati részt alkotó bitek számát a netmask (más néven subnet mask) határozza meg. Néha prefix hossznak (prefix length) is nevezik. Bárhogy is hívják, ez azon bitek száma, amelyet a gép a cím hálózati részeként kezel. Az IPv4 esetében ez néha pontokkal elválasztott decimálisokkal van megadva.
Az alábbiakban egy IPv4-es példát mutatunk be. Vegyük észre, hogy a bináris számjegyek megtartják helyértéküket az oktettekben, még akkor is, ha azt a netmaskokkal osztjuk fel!
192.168.130.5/20 192 168 130 5 11000000 10101000 10000010 00000101 20 bit = 11111111 11111111 11110000 00000000 Hálózat = 192.168.128.0 Host = 2.5
A cím hálózati részét az IPv4 vagy IPv6 gépek arra használják, hogy a routing table-ben (útválasztási táblázatban) megnézzék, hogy egy csomagot melyik interfészen kell elküldeni. Amikor egy IPv4 vagy IPv6 routingot engedélyező host olyan csomagot kap, amely nem magának a hostnak szól, megpróbálja a célállomás hálózati részét a routing table-ben szereplő hálózathoz rendelni. Ha talál megfelelő bejegyzést, akkor a csomagot a routing table-ben megadott célállomásra küldi. Ha nem talál bejegyzést, és van alapértelmezett útvonal konfigurálva, akkor az alapértelmezett útvonalra küldi a csomagot. Ha nem talál bejegyzést, és nincs konfigurálva alapértelmezett útvonal, a csomagot elveti.
Interfész konfigurálása
Két eszközzel fogunk foglalkozni, amelyeket a hálózati interfész konfigurálásához használhatunk: ifconfig
és ip
. Az ifconfig
program, bár még mindig széles körben használatos, már elavult eszköznek számít, és nem biztos, hogy elérhető az újabb rendszereken.
Tip
|
Az újabb Linux disztribúciókban a |
Egy interfész konfigurálása előtt először tudnunk kell, hogy milyen interfészek állnak rendelkezésre. Ezt többféleképpen is megnézhetjük, az egyik lehetőség az ifconfig
-a
kapcsolójának használata:
$ ifconfig -a
Egy másik lehetőség az ip
. Néha láthatunk példákat az ip addr
, ip a
, néhányat pedig az ip address
használatával. Ezek szinonimák. Hivatalosan az alparancs az ip address
. Ez azt jelenti, hogy ha meg akarjuk nézni a man oldalt, akkor a man ip-address
-t kell használnunk, nem pedig a man ip-addr
-t.
A ip
parancs link
alparancsa felsorolja a konfigurálható interfészkapcsolatokat:
$ ip link 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:18:57 brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:ab:11:3e brd ff:ff:ff:ff:ff:ff
Feltételezve, hogy a sys
fájlrendszer mountolva van, a /sys/class/net
fájlrendszer tartalmát is ki tudjuk listázni:
$ ls /sys/class/net enp0s3 enp0s8 lo
Root felhasználóként kell bejelentkeznünk, ha szeretnénk egy interfészt az ifconfig
paranccsal konfigurálni, vagy a sudo
segítségével, root jogosultsággal kell futtatnunk a parancsot. Nézzük az alábbi példát:
# ifconfig enp1s0 192.168.50.50/24
Az ifconfig
Linux verziója rugalmasan kezeli az alhálózati maszk megadásának módját:
# ifconfig eth2 192.168.50.50 netmask 255.255.255.0 # ifconfig eth2 192.168.50.50 netmask 0xffffff00 # ifconfig enp0s8 add 2001:db8::10/64
Vegyük észre, hogy az IPv6 esetében az add
kulcsszót használtuk! Ha az IPv6-cím előtt nem írjuk be az add
szót, hibaüzenetet kapunk.
A következő parancs az ip
-vel konfigurál egy interfészt:
# ip addr add 192.168.5.5/24 dev enp0s8 # ip addr add 2001:db8::10/64 dev enp0s8
Az ip
-vel a parancs ugyanaz IPv4 és IPv6 esetén is.
Alacsonyszintű konfiguráció
Az ip link
parancs alacsonyszintű interfész- vagy protokollbeállítások, például VLAN-ok, ARP vagy MTU-k konfigurálására, illetve egy interfész letiltására szolgál.
Az ip link
gyakori feladata egy interfész letiltása vagy engedélyezése. Ez az ifconfig
segítségével is elvégezhető:
# ip link set dev enp0s8 down # ip link show dev enp0s8 3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000 link/ether 08:00:27:ab:11:3e brd ff:ff:ff:ff:ff:ff # ifconfig enp0s8 up # ip link show dev enp0s8 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:ab:11:3e brd ff:ff:ff:ff:ff:ff
Néha szükség lehet egy interfész MTU-jának beállítására. Az interfészek engedélyezéséhez/tiltásához hasonlóan ezt is az ifconfig
vagy az ip link
segítségével lehet elvégezni:
# ip link set enp0s8 mtu 2000 # ip link show dev enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:53:59 brd ff:ff:ff:ff:ff:ff # ifconfig enp0s3 mtu 1500 # ip link show dev enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:53:59 brd ff:ff:ff:ff:ff:ff
A routing table
A route
, netstat -r
és ip route
parancsok mind használhatók a routing table megtekintésére. Ha módosítani szeretnénk az útvonalakat, akkor a route
vagy az ip route
parancsot kell használni. Az alábbiakban láthatunk példákat a routing table megtekintésére:
$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default 10.0.2.2 0.0.0.0 UG 0 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8 $ ip route default via 10.0.2.2 dev enp0s3 proto dhcp metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.150.0/24 dev enp0s8 proto kernel scope link src 192.168.150.200 $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
Vegyük észre, hogy nincs IPv6-ra vonatkozó kimenet! Ha meg szeretnénk tekinteni az IPv6-os routing table-t, akkor a route -6
, netstat -6r
és ip -6 route
parancsokat kell használnunk!
$ route -6 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If 2001:db8::/64 [::] U 256 0 0 enp0s8 fe80::/64 [::] U 100 0 0 enp0s3 2002:a00::/24 [::] !n 1024 0 0 lo [::]/0 2001:db8::1 UG 1 0 0 enp0s8 localhost/128 [::] Un 0 2 84 lo 2001:db8::10/128 [::] Un 0 1 0 lo fe80::a00:27ff:fe54:5359/128 [::] Un 0 1 0 lo ff00::/8 [::] U 256 1 3 enp0s3 ff00::/8 [::] U 256 1 6 enp0s8
A netstat -r6
példáját kihagyjuk, mert a kimenete ugyanaz, mint a route -6
esetén. A fenti route
parancs néhány kimenete magától értetődő. A Flag
oszlop az útvonalról ad némi információt. Az U
flag azt jelzi, hogy az útvonal működik. A !
azt jelenti, hogy az útvonal elutasítva, azaz a !
jelzővel ellátott útvonalat nem fogjuk használni. Az n
azt jelenti, hogy az útvonal nincs gyorsítótárazva. A kernel a gyorsabb keresés érdekében az összes ismert útvonaltól elkülönítve tárolja az útvonalak gyorsítótárát. A G
flag egy gatewayt jelöl. A Metric
vagy Met
oszlopot a kernel nem használja. Ez a céltól való adminisztratív távolságra utal, amit az routing protokollok használnak a dinamikus útvonalak meghatározásához. A Ref
oszlop a hivatkozások száma, vagyis az útvonal használatának a gyakorisága. A Metric
oszlophoz hasonlóan ezt sem használja a Linux kernel. A Use
oszlop az útvonal keresések (lookup) számát mutatja.
A netstat -r
kimenetében az MSS
az adott útvonalon keresztül futó TCP-kapcsolatok maximális szegmensméretét jelzi. A Window
oszlop a defualt TCP ablakméretet mutatja. Az irtt
a csomagok ezen az útvonalon történő oda-vissza utazási idejét mutatja.
Az ip route
és az ip -6 route
kimenete a következőképpen néz ki:
-
Úticél.
-
Választható cím, majd az interfész.
-
Az útvonal hozzáadásához használt routing protokoll.
-
Az útvonal hatóköre. Ha ez nincs megadva, akkor vagy globális hatókör, vagy gateway.
-
Az útvonal metrikája. A dinamikus routing protokollok ezt használják az útvonal költségének meghatározására. Ezt a legtöbb rendszer nem használja.
-
Ha IPv6 útvonalról van szó, az RFC4191 szerinti útvonalpreferencia.
Nézzünk meg néhány példát, hogy érthetőbb legyen:
- IPv4 Példa
-
default via 10.0.2.2 dev enp0s3 proto dhcp metric 100
-
Az úticél a default route.
-
A gateway cím
10.0.2.2
, ami azenp0s3
interfészen keresztül érhető el. -
A routing table-be a DHCP által került be.
-
Scope nincs, így az globális.
-
Az út költsége
100
. -
Nincs IPv6 útpreferencia.
-
- IPv6 Példa
-
fc0::/64 dev enp0s8 proto kernel metric 256 pref medium
-
Az úticél
fc0::/64
. -
Az
enp0s8
interfészen keresztül érhető el. -
A kernel automatikusan adta hozzá.
-
Scope nincs, tehát globális.
-
Az út költsége
256
. -
Az IPv6 preferencia
medium
.
-
Útvonalak menedzselése
Az útvonalakat a route
vagy az ip route
használatával lehet kezelni. Az alábbiakban látható egy példa egy útvonal hozzáadására és eltávolítására a route
parancs használatával. A route
parancsban az IPv6 esetén a -6
kapcsolót kell használni:
# ping6 -c 2 2001:db8:1::20 connect: Network is unreachable # route -6 add 2001:db8:1::/64 gw 2001:db8::3 # ping6 -c 2 2001:db8:1::20 PING 2001:db8:1::20(2001:db8:1::20) 56 data bytes 64 bytes from 2001:db8:1::20: icmp_seq=1 ttl=64 time=0.451 ms 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.438 ms # route -6 del 2001:db8:1::/64 gw 2001:db8::3 # ping6 -c 2 2001:db8:1::20 connect: Network is unreachable
Lentebb látható ugyanaz a példa, az ip route
parancs használatával:
# ping6 -c 2 2001:db8:1:20 connect: Network is unreachable # ip route add 2001:db8:1::/64 via 2001:db8::3 # ping6 -c 2 2001:db8:1:20 PING 2001:db8:1::20(2001:db8:1::20) 56 data bytes 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.529 ms 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.438 ms # ip route del 2001:db8:1::/64 via 2001:db8::3 # ping6 -c 2 2001:db8:1::20 connect: Network is unreachable
Gyakorló feladatok
-
Mely parancsokkal listázhatjuk a hálózati interfészeket?
-
Hogyan lehet ideiglenesen letiltani egy interfészt? Hogyan lehet újra engedélyezni?
-
Az alábbiak közül melyik fogadható el IPv4 alhálózati maszkként?
0.0.0.255
255.0.255.0
255.252.0.0
/24
-
Mely parancsokkal tudjuk ellenőrizni az alapértelmezett útvonalat?
-
Hogyan adhatunk hozzá egy második IP-címet egy interfészhez?
Gondolkodtató feladatok
-
Az
ip
melyik alparancsa használható vlan címkézés (tagging) konfigurálására? -
Hogyan lehet konfigurálni egy alapértelmezett útvonalat?
-
Hogyan kaphatunk részletes információkat az
ip neighbour
parancsról? Mi történik, ha önmagában futtatjuk? -
Hogyan készíthetünk biztonsági másolatot az routing table-ről? Hogyan állíthatjuk vissza?
-
Melyik
ip
alparancs használható a spanning tree (feszítőfa) beállításainak konfigurálására?
Összefoglalás
A hálózatot általában a rendszer indítási parancsfájljai vagy egy segédprogram, például a NetworkManager konfigurálja. A legtöbb disztribúció rendelkezik olyan eszközökkel, amelyek szerkesztik az indítóscript konfigurációs fájljait. A részletekért nézzük meg a disztribúció dokumentációját!
A hálózat manuális konfigurálása lehetővé teszi a hatékonyabb hibaelhárítást. Hasznos a minimalista környezetekben, például biztonsági mentésekből való visszaállításhoz vagy új hardverre való áttéréshez.
Az ebben a szakaszban tárgyalt segédprogramok több funkcióval rendelkeznek, mint amennyit ez a lecke tartalmaz. Érdemes átfutni mindegyik man oldalát, hogy megismerkedjünk a rendelkezésre álló lehetőségekkel. Az ss
és az ip
parancsok a dolgok modern módját jelentik, míg a többi tárgyalt eszköz, bár még mindig használatban van, már elavultnak számít.
A legjobb módja annak, hogy megismerkedjünk a tárgyalt eszközökkel — a gyakorlás. Egy szerény mennyiségű RAM-mal rendelkező számítógéppel virtuális gépek segítségével virtuális hálózati laboratóriumot hozhatunk létre, amelyen gyakorolhatunk. Három virtuális gép már elég a felsorolt eszközökkel való megismerkedéshez.
A leckében használt parancsok:
ifconfig
-
Hálózati interfészek konfigurálására és állapotuk áttekintésére használt, legacy segédprogram.
ip
-
Modern és sokoldalú segédprogram a hálózati interfészek konfigurálására és állapotuk áttekintésére.
netstat
-
Az aktuális hálózati kapcsolatok és útvonal-információk megtekintésére szolgáló legacy parancs.
route
-
A routing table megtekintésére vagy módosítására használt legacy parancs.
Válaszok a gyakorló feladatokra
-
Milyen parancsokkal lehet listázni a rendszerben lévő hálózati adaptereket?
Az alábbi parancsok közül bármelyikkel:
ip link
,ifconfig -a
, vagyls /sys/class/net
-
Hogyan lehet ideiglenesen letiltani egy interfészt? Hogyan lehet újra engedélyezni?
Használhatjuk az
ifconfig
vagy azip link
parancsokat:ifconfig
:$ ifconfig wlan1 down $ ifconfig wlan1 up
ip link
:$ ip link set wlan1 down $ ip link set wlan1 up
-
Az alábbiak közül melyik fogadható el IPv4 alhálózati maszkként?
-
255.252.0.0
-
/24
A többi felsorolt maszk érvénytelen, mert nem választja szét a címet tisztán két részre, ahol az első rész a hálózatot, a második pedig a hosthelyet határozza meg. A maszk bal oldali bitjei mindig
1
, a jobb oldali bitek pedig mindig0
értékűek.
-
-
Mely parancsokkal tudjuk ellenőrizni az alapértelmezett útvonalat?
Használhatjuk a
route
,netstat -r
, vagyip route
parancsokat:$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default server 0.0.0.0 UG 600 0 0 wlan1 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlan1 $ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default server 0.0.0.0 UG 0 0 0 wlan1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1 $ ip route default via 192.168.1.20 dev wlan1 proto static metric 600 192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.24 metric 600
-
Hogyan adhatunk hozzá egy második IP-címet egy interfészhez?
Használhatjuk az
ip address
vagyifconfig
parancsokat. Ne feledjük, hogy azifconfig
egy legacy eszköz:$ ip addr add 172.16.15.16/16 dev enp0s9 label enp0s9:sub1
A
label enp0s9:sub1
parancs egy aliast ad azenp0s9
parancshoz. Ha nem használjuk a legacyifconfig
parancsot, akkor ezt kihagyhatjuk. Ebben az esetben a parancs továbbra is működni fog, de az imént hozzáadott cím nem fog megjelenni azifconfig
kimenetében.Az
ifconfig
-ot is használhatjuk:$ ifconfig enp0s9:sub1 172.16.15.16/16
Válaszok a gondolkodtató feladatokra
-
Az
ip
melyik alparancsa használható vlan címkézés (tagging) konfigurálására?Van egy
vlan
kapcsoló, amit használhatunk. Az alábbi példában egy hálózati interfészt vlan 20-szal címkézünk fel.# ip link add link enp0s9 name enp0s9.20 type vlan id 20
-
Hogyan lehet konfigurálni egy alapértelmezett útvonalat?
A
route
vagy azip route
használatával:# route add default gw 192.168.1.1 # ip route add default via 192.168.1.1
-
Hogyan kaphatunk részletes információkat az
ip neighbour
parancsról? Mi történik, ha önmagában futtatjuk?A man oldalának elolvasásával:
$ man ip-neigbour
Megjeleníti az ARP cache-t:
$ ip neighbour 10.0.2.2 dev enp0s3 lladdr 52:54:00:12:35:02 REACHABLE
-
Hogyan készíthetünk biztonsági másolatot az routing table-ről? Hogyan állíthatjuk vissza?
Az alábbi példa bemutatja a biztonsági másolat készítését és a helyreállítást is:
# ip route save > /root/routes/route_backup # ip route restore < /root/routes/route_backup
-
Melyik
ip
alparancs használható a spanning tree (feszítőfa) beállításainak konfigurálására?A vlan beállítások menedzseléséhez hasonlóan, az
ip link
abridge
típus használatával konfigurálhatja a feszítőfát. Az alábbi példa egy virtuális interfész hozzáadását mutatja 50-es STP prioritással:# ip link add link enp0s9 name enp0s9.50 type bridge priority 50