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:
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/sendmail.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.
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