Tuning internetového připojení - DNS, SMTP

12. 12. 2002
Doba čtení: 4 minuty

Sdílet

Máte pomalou (sdílenou) nebo snad počítanou linku? A chcete ze svého připojení získat maximum? Zde je jedna z cest vedoucích k vytouženému cíli. Čekáte-li snad po přečtení úvodních slov crackerskou příručku, kterak obelstít traffic-shaper, počítadlo přenosů vašeho ISP, nebo snad dokonce algoritmus geniální komprese, budete zřejmě zklamáni. Hodlám popisovat pouze reálné a legální postupy.

Některé z popisovaných postupů pomohou připojení „zrychlit“ jiné navíc výrazně zmenší objem přenášených dat. Zvlášť se budeme zabývat také bezpečností našeho systému proti útokům zvenku. Obecného povídání už bylo dost, věnujme se tedy konkrétnímu receptu.

Budeme potřebovat:

  • Tučnáka (Linux)
  • alespoň základní znalosti konfigurace Linuxu
  • bind – pro „kešování“ DNS dotazů, pro zjištění některých údajů budeme potřebovat i balík bind-utils
  • sendmail – pro „příjemnější“ odesílání pošty
  • privoxy – abychom zabránili tahání některých nepotřebných informací
  • squid – díky článku na root.cz tuto proxy „keš“ nemusím detailněji popisovat
  • iptables – nástroje pro konfiguraci paketového filtru

Uvedené příklady předpokládají jeden počítač připojený přímo do internetu a nastavený takto:

Tabulka č. 356
IP: 123.45.67.89
netmask: 255.255.255.252
brána: 123.45.67.90
jmenný server 1: 123.45.67.1
jmenný server 2: 123.45.1.1
SMTP server: 123.45.1.10

Jména konfiguračních souborů a cesty k nim vycházejí z distribuce RedHat 8.0

DNS

Nastavíme Bind tak, aby ukládal odpovědi na všechny DNS dotazy a při příštím dotazu na stejné jméno využil uložených informací. Pro vyšší bezpečnost necháme bind naslouchat DNS požadavkům pouze na lokálním rozhraní. Necháme jej také přeposílat veškeré naše dotazy jmenným serverům poskytovatele. Současně nařídíme systému, aby využíval výhradně služeb naší DNS keše. Dále zajistíme, aby lokální jména byla nalezena okamžitě bez použití DNS.

Bind

Konfigurace bindu je uložena v /etc/named.conf a je členěna do sekcí. Nás zajímá zejména sekce options.

Volba query-source určuje, z jaké adresy a portu budou odesílány požadavky jmennému serveru poskytovatele, forward only zakazuje zasílání dotazů serverům, které nejsou uvedeny v podsekci forwarders. Podsekce listen-on obsahuje seznam adres, na kterých bude bind naslouchat DNS dotazům. Kvůli bezpečnosti zvolíme pouze lokální adresu.

options {
    directory "/var/named";
    query-source address 123.45.67.89 port 53;

    forward only;
    forwarders {
        123.45.67.1;
        123.45.1.1;
    };

    listen-on {
        127.0.0.1;
    };
};

Systémový resolver

Resolver necháme používat jako jediný jmenný server localhost, konfigurace je uložena v /etc/resolv.conf.

nameserver 127.0.0.1

Jména konfigurovaného stroje a nejdůležitějších strojů poskytovatele uložíme do souboru /etc/hosts, aby byla k dispozici bez použití DNS. Existují služby, které kontrolují, zda zpětný převod z IP adresy na jméno odpovídá původně zadanému jménu. V našem případě je nepravděpodobné, že by tato situace nastala, přesto je vhodné přidělit strojům jejich skutečná jména. Např. jméno stroje 123.45.1.1 můžeme zjistit několika způsoby:

# nslookup 123.45.1.1
# host 123.45.1.1
# dig 1.1.45.123.in-addr.arpa PTR

Program nslookup je označen za zastaralý a v příštích verzích bindu se již nebude vyskytovat, použití programu dig je v tomto případě zbytečně složité, proto doporučuji použít příkaz host.

Teď, když jsme zjistili všechna potřebná jména, můžeme upravit /etc/hosts.

127.0.0.1          localhost.localdomain localhost
123.45.67.89       mujstroj.isp.cz mujstroj
123.45.67.90       brana.isp.cz brana
123.45.67.1        ns1.isp.cz
123.45.1.1         ns2.isp.cz
123.45.1.10        smtp.isp.cz

Výhody

  • zvláště na pomalých či zatížených linkách se může znatelně zkrátit odezva na požadavky
  • na hodně ztrátových linkách navíc zvýšíme pravděpodobnost získání odpovědi
  • DNS dotazem zpravidla začíná vyřízení jakéhokoliv jiného dotazu, takže zrychlení DNS může výrazně „zkvalitnit“ práci s ostatními službami
  • DNS dotazy většinou netvoří velké přenosy dat, přesto však díky přeposílání nějaké ty bajty ušetříme, pokud nám poskytovatel „promíjí“ komunikaci s jeho vlastními stroji

Nevýhody

  • přeposílání požadavků může způsobit mírné zdržení při prvním dotazu na adresu/jméno
  • v případě výpadku jmenných serverů poskytovatele budeme zcela odříznuti od světa, tento problém by vyřešila změna v /etc/named.conf z forward only; na forward first; (nebude fungovat při ochraně portu 53)
  • zavedení lokálního DNS prodlužuje řetěz jmenných serverů, což může způsobit delší šíření změn

Sendmail

Konfigurace sendmailu je uložena v /etc/mail/sen­dmail.mc.

Lokálního sendmailu využijeme pro odesílání pošty. Výhodou je, že odeslání z většiny poštovních klientů tak proběhne téměř okamžitě, přičemž zpráva je uložena v lokální frontě a její odesílání pak probíhá na pozadí. Nevýhodou je, že můžeme vypnout počítač, příp. vypnout vytáčené spojení ještě před jejím odesláním. Ani tak ovšem o zprávu nepřijdeme, sendmail se ji pokusí doručit při jeho příštím spuštění či obnovení připojení.

I sendmail nám umožňuje v případě potřeby nasměrovat veškerou odchozí poštu na server poskytovatele.

define(`SMART_HOST',`smtp.isp.cz')dnl

Při konfiguraci poštovního klienta nesmíme zapomenout nastavit jako odchozí SMTP server localhost nebo 127.0.0.1.

bitcoin_skoleni

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

Aby správně fungovalo doručování lokálním uživatelům, je nutné sendmail informovat o možných jménech našeho stroje. Nejprve povolíme použití souboru se jmény, příp. nastavíme cestu k němu.

FEATURE(use_cw_file)dnl
define(`confCW_FILE', `/etc/mail/local-host-names')dnl

Nyní můžeme do souboru /etc/mail/local-host-names zapsat jména našeho stroje.

localhost
localhost.localdomain
mujstroj
mujstroj.isp.cz

Výhody

  • není nutné při odesílání pošty čekat na odeslání vzdálenému SMTP serveru
  • dojde-li při přenosu na vzdálený server k chybě, sendmail se automaticky znovu pokusí o doručení

Nevýhody

  • může dojít k vypnutí počítače ještě před odesláním pošty

Autor článku