Distribuované systémy – praktikum
směrování Linux
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 RedHat 7.2), a propojených spoji Ethernet podle obrázku:
Obrázek 1: Zapojení pracoviště
– – – – – –
navrhněte přidělení adres sítím a jednotlivým síťovým rozhraním, pro vnitřní rozhranní 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).
1
Distribuované systémy – praktikum
směrování Linux
Pokyny: Počítače router-1, router-2 a host-1 jsou ovladatelné z počítače ser, který pro ně emuluje terminál. K zařízením se připojujte programem minicom s parametrem označení terminálu (viz obr.1). minicom S2 Počítač ser je dostupný z libovolného pracoviště v laboratoři protokolem ssh pod adresou 147.32.83.129, uživatelský účet máte k dispozici pod jménem dsy a heslem ysd. Superuživatelský účet root na počítačích router-1, router-2 a host-1 má heslo 123456. Instalace programového ovladače: Komunikační rozhraní musí být vybaveno programovým ovladačem – driverem. Takový ovladač může být zakompilován v jádře a propojen s komunikačním rozhraním automaticky (o detekci zařízení se v distribuci RedHat Linuxu stará program kudzu). Vzhledem k variabilitě rozhraní a možnostem jejich začlenění do adresního prostoru a připojení na vstupy přerušení je často výhodnější (nebo i nutné) se postarat o začlěnění ovladače a jeho navázání na komunikační rozhraní při startu systému. Toho lze dosáhnout uvedením příslušných příkazů v souboru /etc/modules.conf. Jako příklad si uvedeme začlenění ovladače pro Ethernet 10/100 Mb/s s obvodem Realtek RTL8139 (ioaddr=300h,irq=10) pro rozhraní eth0 alias eth0 rtl8139 option eth0 -o rtl8139 io=0x300 irq=10
pozn.: všechny počítače mají připravený soubor /etc/modules.conf , takže můžete rovnou použít příkaz ifconfig 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. Příkaz je vhodné doplnit o lokální zpřístupnění adresy příkazem route. 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 broadcast 192.168.0.255
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 broadcast 192.168.0.255 ifconfig eth0:0 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255
2
Distribuované systémy – praktikum
směrování Linux
Tato technika označovaná jako alias však vyžaduje, aby její použití bylo jádrem systému povoleno (což je implicitní volba při překladu jádra v RedHatu). 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í skriptů ifup eth0 ifdown eth0
Pohodlnější obsluhu síťového rozhraní umožňuje program /usr/sbin/netconfig
nebo, pokud máme k dispozici grafické rozhraní, jeho obdoba /usr/bin/netcfg
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). 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í. pozn.: jméno zařízení (dev) není většinou nutné zadávat (je automaticky odvozeno od IP adresy brány). 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
3
Distribuované systémy – praktikum
směrování Linux
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 proměnné /proc/sys/net/ipv4/ip_forward (0 - vypnuto, 1 - zapnuto), o počáteční nastavení se postará spouštěcí skript na základě záznamu v konfiguračním souboru /etc/sysctl.conf parametrem net.ipv4.ip_forward = 1. 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 router-1 použijte veřejnou adresu 147.32.83.141. Navíc je třeba na tomto počítači nastavit překlad adres (NAT, masquerade). Nejjednodušší je použít příkaz: iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
Konfigurační soubory: 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ě rc.network pro distribuci RedHat Linuxu), 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/modules.conf Soubor /etc/modules.conf dovoluje zadat programové ovladače pro síťová rozhraní, jako příklad si uveďme požadavek na použití ovladače eth0 pro síťovou kartu s obvodem Realtek RTL8139 na pozici (ioaddr=300h,irq=10) alias eth0 rtl8139 option eth0 -o rtl8139 io=0x300 irq=10
4
Distribuované systémy – praktikum
směrování Linux
/etc/sysconfig/network-scripts/ifcfg-device (debian: /etc/network/interfaces) V souboru /etc/sysconfig/network-scripts/ifcfg-device můžeme zadat parametry vyžadované příkazem ifconfig. Jako příklad si uveďme konfigurační soubor zadávající IP adresu pro zařízení eth0 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.0.1 NETMASK=255.255.255.0 BROADCAST=192.168.0.255
Hodnoty parametrů NETMASK a BROADCAST je nutné uvádět pouze, neopovídají-li implicitní hodnotě pro třídu IP adresy (A, B, nebo C). (debian: auto eth0 iface eth0 address netmask gateway
inet static 192.168.1.1 255.255.255.0 192.168.1.254
) /etc/sysconfig/network (debian: /etc/network/options) Soubor /etc/sysconfig/network zadává parametry potřebné pro směrování NETWORKING=yes HOSTNAME=host FORWARD_IP4=true GATEWAY=192.168.0.2
Parametr FORWARD spouští směrování, parametr GATEWAY definuje směrovač na cestě do zbytku sítě/Internetu. (debian: ip_forward=yes
) /etc/sysconfig/static-routes Do souboru /etc/sysconfig/static-routes lze vložit požadavky na zavedení statických cest do směrovací tabulky při spouštění systému. Jako příklad záznamu v souboru si uvedeme cestu k cílové síti ve tvaru eth0 net 192.168.4.0 netmask 255.255.255.0 gw 192.168.0.3
5
Distribuované systémy – praktikum
směrování Linux
Defaultní cestu lze zadat (jak jsme viděli v předchozím příkladě) v souboru /etc/sysconfig/network. /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 felk
0.0.0.0 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 192.168.0.1
localhost 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í. 6
Distribuované systémy – praktikum
směrování Linux
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). Ověření činnosti: Správné nastavení prvků sítě si ověříte příkazem ping. Literatura: http://en.tldp.org/HOWTO/IP-Masquerade-HOWTO/, Linux - manuálové stránky
7