Linux E X P R E S

Facebook

Domácí počítačová síť - 7

sit.png

Dnes se pozvolna pustíme do konfigurace jednotlivých služeb. Začneme nejdříve nastavením sítě, dále si upravíme doménové jméno, nainstalujeme DNS server BIND, pošťáka Postfixe a také si seřídíme čas pomocí programu ntpdate.


Po vydání minulého dílu našeho seriálu došlo k poměrně zlomové situaci, neboť 8. dubna 2007 oficiálně vyšla již čtvrtá verze operačního systému Debian GNU/Linux s označením Etch. V případě, že si nabyté vědomosti ihned zkoušíte na svých systémech, doporučuji provést kompletní upgrade Debianu na tuto novou verzi. Docílíte tak pomocí jednoduchého příkazu apt-get update && apt-get dist-upgrade. Ve svém seriálu budu nadále uvádět programy a konfigurační soubory právě a pouze pro tuto verzi.

Nastavení sítě

Abychom mohli nastavovat a zkoušet jednotlivé služby serveru, je zapotřebí mít nastavené primární připojení k síti internet. Předpokládám, že počítač je připojen přes běžnou síťovou kartu (přes rozhraní eth0). V tomto případě můžou nastat dvě možnosti. První z nich je ta, že IP adresa je přidělována dynamicky z DHCP serveru poskytovatele. Druhou možností je, že máte na svém počítači nastavenou statickou (pevnou) IP adresu. Pro jistotu uvedu příklad konfigurace pro obě možnosti. Veškerá konfigurace síťových rozhraní se v Debianu nachází v adresáři /etc/network – konkrétně pak v souboru interfaces. Pro nastavení sítě přes providerův DHCP server stačí mít v tomto souboru pouze následující tři řádky:

DHCP (Dynamic Host Configuration Protocol) je aplikační protokol z rodiny TCP/IP. Používá se pro automatické přidělování IP adres koncovým stanicím v síti. Zdroj: Wikipedia

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp

První řádek nám označuje, která zařízení budou po startu aktivní. Na druhém řádku je definice speciálního rozhraní loopback. Třetí řádek definuje, že na rozhraní eth0 bude IP adresa přidělena z DHCP serveru. Pokud byste měli od providera statickou IP adresu, vypadal by konfigurační soubor třeba následovně.

auto lo eth0
iface lo inet loopback
iface eth0 inet static
network 192.168.1.0
address 192.168.1.33
gateway 192.168.1.100
broadcast 192.168.1.255
netmask 255.255.255.0

První dva řádky opět definují aktivní interface a loopback rozhraní. Na třetím řádku systému říkáme, že na rozhraní eth0 bude použita statická IP adresa. Další řádky pak přímo označují jednotlivá nastavení sítě (jako je výchozí brána, mask, broadcast atd.).

V případě, že provedeme v tomto souboru jakoukoliv změnu, je nutné síť restartovat. To provedeme příkazem /etc/init.d/networking restart. Bývá vhodné po jakékoliv změně zkontrolovat ostatní systémové soubory, které se sítě nepřímo týkají. V první řadě jde o soubor /etc/hosts. Ten by měl vždy obsahovat adresu pro localhost (a to i ve tvaru IPv6) a dále pak veřejnou IP adresu a hostname daného stroje.

127.0.0.1			localhost
192.168.1.33		gateway.hodza.net	gateway
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Dalším souborem, kterému bychom měli věnovat svoji pozornost, je /etc/hostname. V něm by mělo být uvedeno FQDN stroje. Pokud tomu tak není, učiňte tak například příkazem

echo gateway.hodza.net > /etc/hostname

FQDN: zkratka z anglického Fully Qualified Domain Name nebo-li přesně stanovené doménové jméno. Pokud bychom vzali například doménu hodza.net a v ní počítač tucnak, FQDN by bylo tucnak.hodza.net.

Instalace kešovacího DNS serveru

DNS (Domain Name System) je hierarchický systém doménových jmen, který je realizován servery DNS a protokolem stejného jména, kterým si vyměňují informace. Jeho hlavním úkolem a příčinou vzniku jsou vzájemné převody doménových jmen a IP adres uzlů sítě. Později ale přibral další funkce (např. pro elektronickou poštu či IP telefonii) a slouží dnes de facto jako distribuovaná databáze síťových informací. Zdroj: Wikipedia

Již poměrně dlouho používám jako kešovací DNS server BIND. Jedná se jeden z nejrozšířenějších DNS serverů, který lze velmi snadno konfigurovat. Samotnou instalaci provedeme příkazem apt-get install bind. Na DNS server se dá provést několik typů útoků. Alespoň trochu pak můžeme zvýšit bezpečnost celého systému tím, že budeme provozovat DNS server v chrootovaném prostředí. Začneme nejprve tím, že server zastavíme. Uděláme to příkazem /etc/init.d/bind9 stop. V dalším kroku se koukneme oblíbeným editorem do souboru /etc/default/bind9. Z tohoto souboru čte systém parametry pro start DNS serveru. Původní obsah souboru je tento:

OPTIONS="-u bind"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

Nás zajímá část výpisu začínající slovem OPTIONS. Tu upravíme tak, aby vypadala následovně:

OPTIONS="-u bind -t /var/lib/named"

Parametr -t znamená, že budeme BIND spouštět v chrootovaném prostředí, a to konkrétně z adresáře /var/lib/named. Pozornější z vás si jistě všimli, že takový adresář v systému neexistuje, a proto jej musíme vytvořit. Zároveň také vytvoříme běžnou adresářovou strukturu, kterou BIND vyžaduje ke svému běhu. Učiníme tak příkazy:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Chroot: zkratka z anglického change-root. Jedná se funkci, díky níž můžeme program separovat do uzavřeného prostředí tím, že mu „posuneme“ kořenový adresář. Vytvoří se tím uzavřený a kontrolovatelný prostor; v případě napadení aplikace běžící v chrootu nedojde k bezprostřednímu ohrožení zbytku systému, neboť ten není z chrootu přístupný (aplikace o něm nemá žádné informace).

Co nám v adresářové struktuře chybí, je hlavní konfigurační soubor. Ten přesuneme z původního místa do nového prostředí. Abychom si ulehčili v budoucnu konfiguraci, uděláme si na něj zpět symbolický link.

mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind

Pro správný chod nameserveru je nutné mít vytvořené zařízení /dev/null a /dev/random. Tato zařízení si můžeme vyrobit pomocí příkazu mknod:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8

Protože jsme vše dělali pod superuživatelským účtem, je ještě potřeba nastavit správná práva na patřičné soubory a adresáře.

chmod 666 /var/lib/named/dev/null 
chmod 666 /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

DNS server máme úspěšně nastavený. Zbývá poslední krok – musíme donutit systémový logovací program, aby z něj přijímal chybové hlášení. O "monitoring" systému se stará démon syslogd. Jeho parametry ke spuštění jsou opět v adresáři /etc/default, a to konkrétně v souboru syslogd. Při jeho zkoumání narazíte na řádek SYSLOGD="", který značí, že je syslogd spouštěn bez jakýchkoliv parametrů. To hned napravíme – řetězec zeditujeme tak, aby vypadal následovně:

SYSLOGD="-a /var/lib/named/dev/log"

Parametr -a udává, že má BIND naslouchat na dalším socketu – v našem případě konkrétně na /var/lib/named/dev/log. Aby se změny projevily, musíme oba démony restartovat. Začneme nejdříve syslogem a poté restartujeme bind.

/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

Funkčnost DNS serveru můžeme lehce ověřit. Nejprve zjistíme, zda-li démon naslouchá na lokálních adresách. Použijeme k tomu program netstat. Příkaz k otestování je netstat -ta.

gateway:/etc/default# netstat -ta
Aktivní internetová spojení (servery a navázané spojení)
Protokol Příchozí Odchozí Místní Adresa     Vzdálená  Adresa         Stav
tcp        0      0 192.168.1.33:domain     *:*                     LISTEN
tcp        0      0 localhost:domain        *:*                     LISTEN
tcp        0      0 localhost:953           *:*                     LISTEN
tcp6       0      0 *:domain                *:*                     LISTEN
tcp6       0      0 *:ssh                   *:*                     LISTEN
tcp6       0      0 ip6-localhost:953       *:*                     LISTEN
tcp6       0      0 ::ffff:192.168.1.33:ssh ::ffff:192.168.1.2:2112 SPOJENO

Zjistili jsme, že démon bind naslouchá na IP adresách 192.168.1.33 a 127.0.0.1 v protokolu tcpv4. Nyní zbývá ověřit funkčnost samotného překladu adres. Zeditujeme soubor /etc/resolv.conf tak, aby obsahoval pouze řetězec s IP adresou: nameserver 127.0.0.1.

Výše uvedenou řádkou sdělujeme systému, aby použil jako DNS server sám sebe. Zkusíme příkaz ping kupříkladu na adresu www.google.com. Jestliže uvidíme hlášku ping: unknown host google.com, je BIND špatně nakonfigurovaný (nepovedl se překlad adres), nebo nejsme připojeni k internetu.

Instalace poštovního serveru

Přestože se zatím nebudeme pouštět do konfigurace pošty pro budoucí klienty, je dobré mít na serveru funkčního pošťáka, který nám může zasílat různá chybová hlášení. V Linuxu existuje nespočet poštovních serverů – jmenujme alespoň ty neznámější: sendmail, Qmail, Exim či Postfix. Poslední program ze jmenovaných již poměrně dlouho ke své spokojenosti používám. Postfix je vysoce výkonný a bezpečný mail server. Oproti sendmailu vyniká snadnou konfigurovatelností a nemusí se instalovat ze zdrojových kódů (což je podmínka při používání Qmailu). Základní instalace se provede pomocí apt-get install postfix. Po zadání příkazu, stažení balíčku a jeho konfiguraci budeme dotázáni na Obecný typ nastavení. Z nabízeného menu vybereme položku Internetový server. Systém se taktéž dotáže na naše poštovní jméno. Já použiji stejné, jako je název počítače – v mém případě tedy gateway.hodza.net.

Abychom mohli vyzkoušet, zda-li je pošťák funkční, budeme potřebovat program telnet (apt-get install telnet). Je-li poštovní systém v pořádku, měl by naslouchat na portu 25. Vyzkoušíme tedy příkaz telnet localhost 25. Jako odpověď bychom měli dostat

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 gateway.hodza.net ESMTP Postfix (Debian/GNU)

SMTP (Simple Mail Transfer Protocol) je internetový protokol určený pro přenos zpráv elektronické pošty (e-mailů) mezi stanicemi. Protokol zajišťuje doručení pošty pomocí přímého spojení mezi odesílatelem a adresátem; zpráva je doručena do tzv. poštovní schránky adresáta, ke které potom může uživatel kdykoli (off-line) přistupovat (vybírat zprávy) pomocí protokolů POP3 nebo IMAP. Jedná se o jednu z nejstarších aplikací, původní norma RFC 821 byla vydána v roce 1982 (v roce 2001 ji nahradila novější RFC 2821). SMTP funguje nad protokolem TCP, používá port TCP/25. Zdroj: Wikipedia

Server nyní očekává, že se mu představíme. Učiníme tak napsáním řetězce helo localhost. Protože je náš pošťák slušně vychovaný, měl by odpovědět 250 gateway.hodza.net, čímž zároveň oznámí, že je ochotný s námi komunikovat. Zkusíme přes něj tedy poslat nějaký e-mail. Nejprve mu řekneme, kdo zprávu posílá. Píšu mail from: kozak@fofrnet_cz. Opět bychom měli získat odpověď 250 2.1.0 Ok. Pokračujeme v psaní e-mailu – zadáme, komu chceme email poslat, a to pomocí příkazu rcpt to: kozak@fofrnet_cz. Nepřekvapí nás hlášení 250 2.1.5 Ok, a tak pokračujeme dále příkazem data. Pokud je systém připraven pro psaní samotného obsahu zprávy, vypíše hlášení 354 End data with ..

Jestliže chceme, aby zpráva měla subjekt, napíšeme Subject: předmět subjektu. Dále pak pokračujeme, jako bychom psali v běžném editoru. Já do testovacích zpráv dávám alespoň datum a čas odeslání zprávy, abych pak mohl snadněji hledat chybu. Jakmile nás to přestane bavit, zmáčkneme klávesu [Enter]. Na nový řádek napíšeme tečku a opět odentrujeme. Tím dáváme pošťákovi jasně najevo, že jsme již e-mail dopsali a chceme ho odeslat. Jako odpověď bychom měli dostat hlášení 250 2.0.0 Ok: queued as 451613540B3. Po několika vteřinách nalezneme ve svém mailboxu onu testovací zprávu. V opačném případě nezbývá než zkontrolovat logy – zaměřte se především na chybové hlášení v souborech /var/log/mail.log, /var/log/mail.err a /var/log/daemon.log.

Seřizujeme čas

Velice důležitou věcí je mít v systému seřízený čas. Pokud by tomu tak nebylo, těžko bychom v logu hledali chybová hlášení podle data, neprobíhala by synchronizace DNS serverů a v nejhorším případě by dokonce nešly spustit některé programy. Pro tento účel si můžeme do systému nainstalovat NTP server a klienta ntp-date. V Debianu je to opět otázka okamžiku – stačí na klávesnici vyťukat apt-get install ntp ntpdate.

Po instalaci dojde k automatickému spuštění serveru. Ten je nastaven tak, aby se automaticky seřídil podle jiných NTP s vyšší prioritou. Zkušenost je však taková, že čím větší je odchylka v času na vašem stroji oproti skutečnosti, tím déle mu to trvá. Proto je dobré na chvíli server vypnout (/etc/init.d/ntp stop), následně čas ručně sesynchronizovat příkazem ntpdate ntp.cesnet.cz a nakonec server opět spustit (/etc/init.d/ntp start). Ověřit správnost času si můžete po zadání date do terminálu.

V příštím díle bych se chtěl věnovat instalaci webového serveru Apache, databázi MySQL a programu MRTG. Budeme tak schopni shromažďovat různá data z routeru a jejich výsledky zobrazovat přes webové rozhraní.

Diskuze (6) Nahoru