Pokročilé nastavení sítě pomocí nástroje ip

Správa linuxového serveru: Pokročilé nastavení sítě pomocí nástroje ip

Předchozí díl probral základy práce s nástrojem ip. Tento díl osvětlí práci s ARP tabulkou, směrování a nastavení resolveru, tedy zbytek toho, co potřebujete k úspěšnému základnímu nastavení sítě.

Úvod

Na úvod připomenu minulý díl, který se zabýval základy použití nástroje ip a také trochu jeho porovnáním se stále používaným nástrojem ifconfig, který je však dnes již považován za zastaralý a může působit jisté problémy (více viz minulý díl).

Také bych rád předeslal, že celý tento popis konfigurace předpokládá absenci DHCP serveru na síti. Ten vám obvykle jak přiřadí IP adresu, tak sdělí vašemu počítači, kde najde výchozí bránu i DNS servery. V oblasti nastavení serverů není DHCP příliš obvyklé (resp. ještě jsem se s ním nesetkal), a (nejen) proto je vhodné vědět, jak vše potřebné nastavit ručně.

Práce s ARP tabulkou

ARP protokol je určen k překladu síťové (IP) adresy na linkovou (MAC) adresu. Pokaždé, když s někým komunikujete po místní síti, se váš počítač nejprve dotáže pomocí ARP protokolu na to, které linkové adrese přísluší daná IP adresa, a té pak odešle příslušný IP datagram. Řada typů útoků v místní síti (zejména pak MITM:man-in-the-middle) jsou vedeny podvržením ARP záznamů.

Vypsat si ARP tabulku je jednoduché:

ip neigh show

Nebo zkráceně:

ip n

Do ARP tabulky můžete přidávat záznamy:

ip neigh add 192.168.5.50 dev eth0 lladdr 11:22:33:44:55:66

Záznamy můžete samozřejmě odebírat:

ip neigh del 192.168.5.50 dev eth0

Můžete také úplně všechny záznamy vymazat:

ip neigh flush dev eth0

Přidáním statických záznamů do ARP tabulky se můžete bránit místním MITM útokům. Zde lze také doporučit příslušné nástroje typu arpwatch k monitorování ARP provozu na síti a detekování podezřelých aktivit, popřípadě je možné použít nástroj arptables k vytvoření „ARP firewallu“, tedy sady filtrovacích pravidel pro protokol ARP. Přidávání statických záznamů do ARP tabulky narazí na problém tehdy, když se MAC adresa daného počítače změní (např. výměnou síťové karty nebo výměnou počítače).

Nastavení směrování

Základní operací je nepochybně vypsání momentálního obsahu směrovací tabulky:

ip route show

Nebo zkráceně:

ip r

Směrovací tabulka se naplňuje určitými typy záznamů automaticky. Kupříkladu, pokud byste nastavili na nějakém rozhraní IP adresu a masku:

ip addr add 10.0.5.1/24 dev eth1

Pak byste ve směrovací tabulce zjistili záznam odpovídající této nové síti:

10.0.5.0/24 dev eth1  proto kernel  scope link  src 10.0.5.1

Zásadní informací pro práci v síti (zejména pak v internetu) je mít k dispozici nějaký počítač, kterému můžete poslat všechny pakety, které nenáleží žádné vám známé síti. Takový počítač (přesněji směrovač – router) se obvykle označuje jako brána (gateway). Nastavení brány, konkrétně pak výchozí brány (default gateway), můžete provést takto:

ip route add default via 10.0.5.254 dev eth0

Rozhraní je zde nepovinné, takže ho můžete vypustit:

ip route add default via 10.0.5.254

Směrovací tabulku však můžete zaplnit dalšími záznamy. Máte-li bran více (např. pokud jste současně připojeni ke svému ISP a současně ještě k VPN), můžete směrovat určitou komunikaci přes konkrétní bránu. Nebo můžete směrovat určitou komunikaci z jedné sítě do jiné a učinit ze svého linuxového systému směrovač. Ale o tom až za chvíli.

Nastavení resolveru

Pro plně funkční připojení k internetu vám v tuto chvíli chybí ještě jedna věc. Přiřazení IP adres vašim rozhraním bylo probráno v minulém díle, nastavení výchozí brány bylo probráno kousek výše, zbývá tedy už jen nastavení DNS resolveru. Bez toho byste pro kontaktování jiných počítačů museli místo jmen (např. linuxexpres.cz) použít IP adresy. Resolver je DNS klient, vestavěný v operačních systémech, který se dotazuje resolvujících DNS serverů, jež vám obvykle přiřadí ISP. Ty mají tu charakteristiku, že pro vás realizují vyhledávání, pokud příslušné DNS záznamy nenajdou ve své cache nebo místní databázi.

Nastavení resolveru v Linuxu je velmi jednoduché, stačí upravit soubor /etc/resolv.conf a přidat do něj alespoň jeden záznam pro DNS server:

nameserver 1.2.3.4

Obvykle vám ISP nabídne alespoň dva, aby vás případný výpadek jednoho nepřipravil o možnost překládat názvy na IP adresy.

Funkce směrovače

Libovolný linuxový systém může zastat funkci směrovače. To je také jedním z důvodů, proč mnoho „krabiček“, kterým se říká směrovače, v sobě Linux obsahuje. Tato funkčnost je však z celkem rozumných bezpečnostních důvodů ve výchozím stavu vypnutá – je tedy třeba ji zapnout. To lze učinit úpravou patřičného parametru v /proc:

echo "1" > /proc/sys/net/ipv4/ip_forward

Výše uvedená syntaxe se často používá v různých návodech, avšak doporučuje se spíše tato, oficiální varianta:

sysctl -w net.ipv4.ip_forward=1

Pokud byste chtěli, aby měl váš linuxový systém funkci směrovače po každém startu a ne jen do té doby, dokud nerestartujete, přidejte do souboru /etc/sysctl.conf následující řádek:

net.ipv4.ip_forward=1

Průchozí komunikaci můžete filtrovat pomocí linuxového firewallu, a to v dedikovaném řetězu FORWARD. Nastavení firewallu se zde věnovat nebudu, neboť toto téma zde již bylo probráno.

Směrovací tabulka

Nástroj IP umožňuje nejen nastavení výchozí brány, ale i přidávání záznamů do směrovací tabulky, které poslouží k přidání statických cest. To se může hodit, pokud máte takovou konfiguraci sítě, ve které na sebe počítače přímo „nevidí“, např. tři počítače propojené (kříženým) síťovým kabelem:

počítač 1 ---- směrovač ---- počítač 2

Takové nastavení sice není příliš vhodné (je podstatně lepší použít switch nebo bridge), ale ilustruje to úpravu směrovací tabulky. Pro názornost dodám nastavení IP adres:

(10.0.0.1) ---- (10.0.0.2) router (10.0.1.1) ---- (10.0.1.2)

Aby mohl počítač vlevo komunikovat s počítačem vpravo, musí prostřední počítač propouštět pakety (a fungovat jako router). To je nutná, nikoli však postačující podmínka. Počítač 1 totiž netuší, kde má hledat síť 10.0.1.0/24, a počítač 2 zase netuší, kde má hledat síť 10.0.0.0/24. Proto je oběma počítačům třeba říci, kde se nachází druhá síť a jak se k ní dostat:

počítač1 ~# ip route add 10.0.1.0/24 via 10.0.0.2
počítač2 ~# ip route add 10.0.0.0/24 via 10.0.1.1

Poté by spolu počítače 1 a 2 měly být schopny komunikovat. Přirozeně, je také možné dané záznamy ze směrovací tabulky vymazat:

počítač1 ~# ip route del 10.0.1.0/24 via 10.0.0.2
počítač2 ~# ip route del 10.0.0.0/24 via 10.0.1.1

Tolik k jednoduchému statickému routování. Nástroj ip také umožňuje specifikovat pravidla, která mohou provoz směrovat různými způsoby, např. mezi dvě brány (např. ISP a VPN) či do ztracena (ekvivalent akce DROP v linuxovém firewallu). O tom (a nejenom o tom) se dozvíte více v příštím díle.