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í | ||
IČ | 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 |
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
?