dum | žák

Linux

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu VY_32_INOVACE_21_PSS_406
Název tématické oblasti (sady) Operační systémy
Název materiálu Nastavení sítě
Anotace Text popisuje konfiguraci síťových rozhraní v systému Debian GNU Linux. Popisuje základní typy rozhraní jako loopback a klasické rozhraní pro technologii ethernet. Pomocí příkazů popisuje, jak lze zjisti aktuální stav konfigurace a jak lze konfiguraci měnit i trvale.
Autor Ivan Pomykacz Jazyk český
Očekávaný výstup Zjistí, jakou IP adresu má systém přidělenou. Změní IP adresu rozhraní. Konfiguruje rozhraní pro spolupráci s DHCP serverem. Zvládá základní diagnostiku nástrojem ping.
Klíčová slova síť, ethernet, loopback, ping, MAC, ICMP, IP adresa
Druh výukového zdroje Výklad Věková skupina žáků 17+
Typ interakce aktivita Ročník 3.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) 8.10.2013 Celková velikost

pdf icon
Nastavení sítě

Obsah

Smyslem GNU Linuxu je být připojen do sítě. Je tak i vidět z nástrojů pro konfiguraci a diagnostiku připojení. Následující text je opět zaměřen na distribuci Debian Wheezy. Zmiňuji to především proto, že nastavení sítě se v některých distribucích značně rozchází.

Nicméně, všechny distribuce disponují nástrojem ip.

Aktuální stav

V jakém stavu se nachází vaše síťové rozhraní lze zjistit z výpisu příkazu ip addr (nebo zkráceně ip a):

root@wheezy:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 08:00:27:64:08:c4 brd ff:ff:ff:ff:ff:ff

Z výpisu je patrné, že jsou v systému dvě rozhraní: lo a eth0.

loopback

Neboli zpětná smyčka je speciální virtuální rozhraní, tzn. fyzicky neexistuje. Vzniklo jako potřeba pro aplikace typu client/server, kde obě části takové aplikace (jak client, tak server) běží na tom samém počítači.

V Linuxu ovšem existují ještě tzv. sockety, speciální soubory, přes které mohou aplikace typu client/server rovněž komunikovat, ale toto teď neřešme.

Co loopback nabízí je tedy síťové rozhraní, ke kterému má přístup pouze operační systém (a aplikace v něm běžící). I když má loopback svou IP adresu (IPv4 127.0.0.1, IPv6 ::1), je tato adresa dosažitelnáp pouze z daného počítače. Každý počítač má totiž svůj vlastní loopback, ovšem s naprosto stejnou IP adresou.

Spuštěné aplikace typu server pak mohou naslouchat na daném rozhraní a čekat na příchozí spojení, následně spojení navázat a poté komunikovat třeba pomocí TCP/IP.

Rozhraní loopback je zpravidla nastaveno defaultně, tzn. je kdyspozici ihned po instalaci, takže není třeba nic řešit. Toto již funguje.

eth

Rozhraní označená jako ethX, kde X je číslo větší nebo rovno 0, je už reprezentace fyzického rozhraní (konkrétně na bázi technologie ethernet). V našem případě je v systému dostupné jediné ethernetové rozhraní eth0. Protože bylo detekováno jako první a první v pořadí, nese číslo 0.

Toto rozhraní bude pro nás nejzajímavější, protože toto rozhraní nám umožní přístup do sítě nebo naopak přístup do našeho systému ze sítě.

Aktuální stav je ten, že rozhraní není aktivní. Ve výpisu lze vidět příznak state DOWN.

MAC adresa

Z výpisu ip addr lze vyčíst i MAC adresu rozhraní. Jde o hexadecimální číslo zapsané po oktetech oddělených dvojtečkou, zde:

link/ether: 08:00:27:64:08:c4

Přidělení IP

Aby počítač mohl komunikovat na lokální síti, stačí mu pouze IP adresa a příslušná maska. Tady ovšem pozor, jedno rozhraní může mít současně více IP adres. Možná bude vhodné, před nastavování rozhraní jej jednoduše vyčistit od všech adres příkazem

root@wheezy:~# ip addr flush dev eth0

Nyní přidělme rozhraní eth0 adresu 192.168.12.32 s maskou 24 bitů (tedy 255.255.255.0).

root@wheezy:~# ip addr add 192.168.12.32/24 dev eth0

Přidělenou adresu můžeme ověřit opětovným zadáním ip addr.

root@wheezy:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:64:08:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.12.32/24 scope global eth0

Aktivace rozhraní

Rozhraní má sice už svou IP adresu, ale z výpisu ip addr je patrné, že stále není aktivní. To lze ovšem změnit příkazem:

root@wheezy:~# ip link set up dev eth0
root@wheezy:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:64:08:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.12.32/24 scope global eth0
    inet6 fe80::a00:27ff:fe64:8c4/64 scope link
       valid_lft forever preferred_lft forever

Při aktivaci rozhraní se mezi adresy přidala ještě navíc IPv6 lokální linková adresa fe80::a00:27ff:fe64:8c4/64.

Deaktivace rozhraní

Stejný příkaz jako u aktivace, jen slovíčko up zaměníme za down:

root@wheezy:~# ip link set down dev eth0

Diagnostika

Jak ověřit, že jsme připojeni do lokální sítě? K tomu lze využít nástroj ping. Můžeme provést ping z počítače na ten samý počítač.

root@wheezy:~# ping -c 3 192.168.12.32
PING 192.168.12.32 (192.168.12.32) 56(84) bytes of data.
64 bytes from 192.168.12.32: icmp_req=1 ttl=64 time=0.016 ms
64 bytes from 192.168.12.32: icmp_req=2 ttl=64 time=0.020 ms
64 bytes from 192.168.12.32: icmp_req=3 ttl=64 time=0.019 ms

--- 192.168.12.32 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.016/0.018/0.020/0.004 ms

Parametr -c 3 vyšle pouze 3 ICMP žádosti. Bez omezení parametrem -c bychom pingovali ještě dnes (v takovém případě lze přerušit vykonávání ping klávesami Ctrl+C.

Chybné stavy

V podstatě bychom mohli docílit několika chybných stavů v závislosti na tom, kde jsme udělali chybu mi nebo zda-li je chyba v síti.

Network is unreachable
  • Rozhraní není aktivní - aktivujte jej příkazem ip link set up dev eth0.

  • Rozhraní eth0 nemá přidělenou žádnou adresu - přidělte ji ip addr add 192.168.12.32/24 dev eth0.

  • Rozhraní eth0 je na jiné síti, nebo mi provádíme ping do jiné sítě - zkontrolujte první 3 oktety IP adresy.

Destination Host Unreachable

Tuto hlášku uvidíte zejména tehdy, budete-li provádět ping na vzdálený počítač nebo ze vzdáleného počítače. Tak nebo tak, počítač prostě není dosažitelný a nebo příchozí/odchozí žádosti blokuje firewall.

Pro testovací účely jsem naschvál provedl ping na jiný počítač (232), ale na stejné síti, protože předpokládám, že takovou adresu nikdo mít nebude.

root@wheezy:~# ping -c 3 192.168.12.232
PING 192.168.12.33 (192.168.12.33) 56(84) bytes of data.
From 192.168.12.32 icmp_seq=1 Destination Host Unreachable
From 192.168.12.32 icmp_seq=2 Destination Host Unreachable
From 192.168.12.32 icmp_seq=3 Destination Host Unreachable

--- 192.168.12.232 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 1999ms
pipe 3

Uložení nastavení

Přidělená IP adresa příkazem ip zůstane přidělená až do restartu počítače. Jakmile bychom tedy provedly vypnutí a zapnutí počítače, naše nastavení by zmizelo.

Abychom tomu zabránili, musíme někam uložit informaci o tom, jakou adresu si přejeme, aby naše rozhraní mělo přidělenou. Pro tyto účely lze využít konfigurační soubor /etc/network/interfaces. Soubor editujeme obyčejným textovým editorem, např. nano.

root@wheezy:~# nano /etc/network/interfaces

Obsah souboru je poněkud strohý (záleží, jak byla provedena instalace.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

V mém případě je v souboru zmínka pouze o rozhraní loopback. Volba auto aktivuje rozhraní při startu (resp. během spouštění skriptu pro aktivaci síťových rozhraní).

Za volbou auto obvykle následuje blok, který deklaruje parametry dalšího rozhraní. Pro naše potřeby dopišme následující řádky:

auto eth0
iface eth0 inet static
  address 192.168.12.32
  netmask 255.255.255.0

Nyní soubor uložíme a ukončíme editor nano.

Aktivace konfigurace

Pozn.: Pokud jste prováděli konfiguraci pomocí příkazu ip, je třeba ji zrušit (ip addr flush dev eth0).

Před aktivací nové konfigurace je nejprve potřeba deaktivovat tu stávající. Pro tyto účely se využívá služba networking.

root@wheezy:~# service networking stop
[ ok ] Deconfiguring network interfaces...done.

Následně lze provést aktivaci:

root@wheezy:~# service networking start
[ ok ] Configuring network interfaces...done.

Můžeme ověřit:

root@wheezy:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:64:08:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.12.32/24 brd 192.168.12.255 scope global eth0

Kdyby jste nyní provedli restart počítače, tak se nastaví síťového rozhraní automaticky obnoví.

Možné problémy

Při aktivaci služby se vypíše hláška: Failed to bring up eth0.

root@wheezy:~# service networking start
[....] Configuring network interfaces...Missing required variable: address
Missing required configuration variables for interface eth0/inet.
Failed to bring up eth0.
done.

Z výpisu lze dále vyčíst něco ohledně chybějící proměnné address. Buď tato proměnná opravdu chybí a nebo je zkomolený její název (typická chyba je ve spellingu, kde se píší dvě "d" a dvě "s").

Po spuštění příkazu service networking start se zdá být vše OK, ale při výpisu ip addr adresa u eth0 stále chybí. Nezapomněli jste dopsat do /etc/network/interfaces řádek auto eth0?