====== Praktikum – Směrování Linux ======
===== Cíl cvičení =====
V síti počítačů, pracujících pod operačním systémem Linux (distribuce Debian), a propojených spoji
Ethernet podle obrázku:
{{vyuka:cviceni:x36pko:lablinux-pic.png|}}
- **navrhněte přidělení adres sítím a jednotlivým síťovým rozhraním**
- pro vnitřní rozhraní využijte privátní adresní prostor,
- konfigurujte rozhraní pro zvolené statické IP adresy (příkaz ''ifconfig''),
- konfigurujte statické směrovací tabulky (příkaz ''route''),
- připojte počítače do veřejné sítě (NAT) a
- ověřte provozuschopnost celé konfigurace (příkazy ''ping'', ''telnet'').
**Správnost návrhu přiřazení síťových adres rozhraním ověří cvičící na začátku cvičení, mějte návrh proto připraven do začátku cvičení!**
===== Pokyny =====
Počítače node-[2-4] jsou ovladatelné seriovou konzolí z počítače dsnlab1. K zařízením se
připojujte programem minicom s parametrem označení terminálu (viz Tab.1).
minicom S2
^Počítač^Port^
|node-2|S2|
|node-3|S3|
|node-4|S4|
Počítač **dsnlab1** je dostupný z libovolného pracoviště v laboratoři protokolem ssh pod adresou
**147.32.83.128**, uživatelský účet máte k dispozici pod jménem **dsy** a heslem **NoD123**.
Superuživatelský účet **root** na počítačích node-[2-4] má heslo **NoD123**.
**Upozornění:** Pracoviště je umístěno za směrovačem s implementovaným překladem adres (NAT) a paketovým filtrem.Překlad adres překládá adresy ze sítě ''147.32.83.0/24'' na adresy sítě ''172.31.83.0/24'' v obou směrech. Paketový filtr propouští vše ze sítě ''172.31.83.0/24'' (směrem do internetu). Směrem ze sítě ''147.32.83.0/24'' (směrem z internetu) propouští pouze icmp echo, tcp 22 a tcp 80 (ping, ssh, www). Přidělené adresy jsou uvedeny v tabulce:
^Vnější adresa^Vnitřní adresa^
|147.32.83.134|172.31.83.134|
Vnitřní adresa tohoto směrovače (tedy default gateway) je ''172.31.83.254''.
===== Přiřazení IP adres =====
IP adresu přiřadíme fyzickému rozhraní příkazem ifconfig, který je třeba
v případě, že maska sítě neodpovídá implicitní masce dané třídy (např. ''255.255.0.0''
pro adresu třídy B) doplnit o explicitní specifikaci masky a broadcast adresy.
Jako příklad si uvedeme vytvoření definice IP adresy z privátního prostoru
třídy C na rozhraní eth0.
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
Pro fyzické rozhraní lze definovat i více IP adres, jako příklad si uvedeme otevření
dvou adres na rozhraní eth0
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
ifconfig eth0:0 192.168.0.3 netmask 255.255.255.0
Tato technika označovaná jako alias však vyžaduje, aby její použití bylo jádrem
systému povoleno.
Příkaz ''ifconfig'' umožňuje rozhraní startovat a zastavovat, jako příklad si uvedeme
ovládání rozhraní eth0:
ifconfig eth0 up
ifconfig eth0 down
Alternativou k přímému použití příkazu ifconfig je použití systémových skriptů
ifup eth0
ifdown eth0
Pohodlnější obsluhu síťového rozhraní umožňují různé programy, které se liší podle použité
distribuce. Pokud chcete rozhraní nastavit trvale, použijte v distribuci Debian soubor: ''/etc/network/interfaces''.
===== Statické směrování =====
Směrování je řízeno směrovací tabulkou, její záznamy mohou být zadány jako statické,
nebo je lze vytvářet podle aktuálního stavu sítě programy routed (protokol RIP) nebo gated
(protokol OSPF). Záznamy pro přímo připojené sítě se vytvářejí automaticky při inicializaci
rozhraní.
Statické záznamy můžeme do směrovací tabulky zadat příkazem ''route'', přidání záznamu
má (pro defaultní cestu, síť a koncový počítač) tvar:
route add default gw g.g.g.g dev device
route add -net n.n.n.n netmask m.m.m.m gw g.g.g.g dev device
route add -host a.a.a.a gw g.g.g.g dev device
kde n.n.n.n je adresa cílové sítě, a.a.a.a adresa cílového počítače,
g.g.g.g adresa směrovače na cestě k cíli a device označení zařízení.
Pro zrušení záznamu ve směrovací tabulce nahradíme volbu add v příkazu ifconfig volbou
del, tedy např. pro adresu sítě
route del -net n.n.n.n netmask m.m.m.m dev device
Aktuální nastavení směrovací tabulky si můžeme ověřit příkazem
route -en
nebo příkazem
netstat -rn
Práce ve funkci směrovače je povolována hodnotou v souboru
''echo 1 > /proc/sys/net/ipv4/ip_forward''
(0 - vypnuto, 1 - zapnuto), o počáteční nastavení se postará spouštěcí skript na základě parametru
''net.ipv4.ip_forward = 1'' v konfiguračním souboru ''/etc/sysctl.conf''.
===== Dynamické směrování =====
Alternativou ke statickému zadávání směrovacích informací, které je náročné na pečlivost
správce a může být zdrojem nepříjemných závad, je využití vhodné metody automatického
vytváření směrovacích tabulek.
Jednodušší z hlediska nastavení je použití distance-vector algoritmu výpočtu směrovacích
tabulek, které podporuje program ''routed''. Pro jeho použití je vhodné zadat metriku pro jednotlivá
rozhraní (implicitní hodnotou je jednička, vyšší hodnotou penalizujeme
pomalejší/dražší/poruchovější propojení).
Spuštění dynamického směrování si vyžádáme příkazem:
routed -q
===== Připojení do veřejné sítě =====
Pro připojení počítače **node-2** použijte adresu **172.31.83.134**, která bude z internetu
viditelná jako **147.32.83.134**. Navíc je třeba na tomto počítači nastavit další překlad adres (NAT,
masquerade). Nejjednodušší je použít příkaz:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
===== Konfigurační soubory =====
**Tip!** Pokud editujete konfiguráky pomocí midnight commanderu, možná Vám pomůže:
* Kombinace CTRL-L překreslí rozbitou obrazovku
* nefungují klávesy F1-F10, místo toho mačkejte Escape-číslo, tzn. např. Escape-5 namísto F5
Příkazy ''ifconfig'' a ''route'' dovolují definovat IP adresy a nastavovat cesty během
činnosti směrovače. Potřebného počátečního nastavení lze dosáhnout uvedením těchto příkazů ve
spouštěcím skriptu (konkrétně ''/etc/init.d/networking'' pro distribuci Debian), tento skript primárně
při zadávání těchto příkazů opírá o konfigurační soubory, z nichž si ty pro nás důležité uvedeme.
==== /etc/network/interfaces ====
V souboru ''/etc/network/interfaces'' můžeme zadat parametry vyžadované příkazy ''ifconfig'' a ''route''.
Jako příklad si uveďme konfigurační soubor zadávající IP adresu pro zařízení eth0 a směrování do
sítě ''10.0.0.0/8''
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2 dev $IFACE
down route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.2 dev $IFACE
==== /etc/network/options ====
Soubor ''/etc/network/options'' zadává parametry potřebné pro směrování
''ip_forward=yes''
==== /etc/networks ====
Soubor dovoluje definovat vztah doménových jmen a IP adres sítí, dovoluje používat jména sítí
namísto IP adres (např. v příkazech route). Tvar příkazů si můžeme uvést na příkladě
default 0.0.0.0
felk 147.32.80.0
==== /etc/hosts ====
Soubor dovoluje definovat vztah doménových jmen a IP adres jednotlivých počítačů,
tvar příkazů si můžeme uvést na příkladě
127.0.0.1 localhost
192.168.0.1 myhost.felk.cvut.cz myhost
První záznam odpovídá vnitřnímu rozhraní lo, u záznamů je třeba dbát na zadávání plně
kvalifikovaného jména jako prvního v seznamu.
==== /etc/resolv.conf ====
Soubor definuje DNS server využívaný pro překlad doménových jmen na IP adresy. První záznam je
úplné jméno domény, do které náš počítač začleňujeme, další záznamy uvádějí IP adresy DNS
serverů (primárního a sekundárního). Například
domain felk
nameserver 147.32.80.9
je záznam dovolující využít služby DNS serveru sítě felk.cvut.cz na Karlově náměstí.
==== /etc/host.conf ====
Pořadí, ve kterém jsou vyhodnocovány soubor /etc/hosts záznamy na DNS serveru (služba bind),
zadává soubor ''/etc/host.conf''. Příkaz ''multi on'' dovoluje mít více adres pro jedno doménové jméno.
order hosts,bind
multi on
===== Užitečné programy =====
Při konfiguraci a ověřování funkce můžeme využít řadu užitečných programů. Patří mezi ně
následující programy, kompletní popis jejich volání najdeme v manuálových stránkách:
==== ping ====
Program testuje funkčnost cesty ke zvolenému cíli (zadán IP adresou nebo doménovým jménem)
paketem ICMP, a poskytuje statistiku zpoždění.
==== traceroute ====
Program testuje funkčnost cesty ke zvolenému cíli (zadán IP adresou nebo doménovým jménem)
paketem ICMP, využívá údaj o době života IP paketu a dovoluje informovat o směrovačích na cestě
k cíli a zpožděních na jednotlivých úsecích.
==== netstat ====
Program podává informace o funkci celého komunikačního systému a jeho jednotlivých komponent.
Popis najdete v manuálových stránkách (a v příloze tohoto textu).
==== tcpdump ====
Program umožňuje sledovat pakety odesílané/přijímané rozhraními.
===== Ověření činnosti =====
Správné nastavení prvků sítě si ověříte příkazem ping.
===== Restart =====
Důležité! Před započetím práce a po zkontrolování funkčnosti nakonfigurované úlohy cvičícím restartujte všechny tři počítače příkazem:
reboot
===== Literatura =====
* [[http://en.tldp.org/HOWTO/IP-Masquerade-HOWTO/|IP masquerade howto]]
* [[http://www.debian.org/doc/manuals/reference/ch-gateway.en.html|Debian manual]]
* Linux - manuálové stránky
~~DISCUSSION~~