Hlavní navigace

Malá síť (2) - připojení k Internetu, spouštění služeb

5. 8. 2002
Doba čtení: 8 minut

Sdílet

V minulém dílu jsme si počítače propojili, ale zjistili jsme, že připojení sítě k Internetu nefunguje. Dnes tento problém vyřešíme pomocí proxy a maškarády. Pak si zprovozníme některé zajímavé služby jako třeba NFS a rsync. Nakonec vyzkoušíme vzdálené spouštění grafických aplikací.

Jak jsme již naznačili, problém je v tom, že IP paket s adresou 192.168.0.* sice možná dorazí do cíle, ale odpověď nenajde cestu zpět. Musíme tedy zajistit, aby pakety, které odcházejí z připojených počítačů, měly v položce odchozí adresy hodnotu, na kterou se vrátí.

Toho je možné dosáhnout dvěma způsoby: Pakety si udělají „zastávku“ na počítači, který je připojen k Internetu. Tomu se říká proxy. Druhou možností, kterou nabízí jádro Linuxu, je podstrčit procházejícím paketům jinou IP adresu odesílatele. Tomu se říká maškaráda (masquerading) nebo také NAT (Network Address Translation).

Proxy

Proxy je jakýsi zvláštní webový server, od kterého lze žádat nejen adresy místních stránek, ale i stránky z cizích serverů. Stáhne je a poté je přepošle dál. To vyřeší náš problém s neadresovatel­ností počítačů – všechny pakety odcházejí do Internetu s IP adresou počítače, na kterém je proxy umístěno – tedy toho, který připojení má. Proto odpověď na tyto pakety dojde i zpět. Proxy má ještě další výhody – stránky si většinou uchovává v paměti a při další žádosti o tutéž stránku si nejdříve ověří, zda již v proxy není její aktuální verze, a pokud je, znovu ji nestahuje. Pro všechny správně napsané webové stránky by mělo proxy fungovat bez problémů. Proxy může ošetřovat i přístupy přes protokoly

HTTPS a FTP. Správci sítí s restriktivními firewally často píší programy, které lze využít i jako proxy pro další protokoly.

Většina proxy omezuje okruh adres, ze kterých je možné ji využít (množství automatických programů pátrá na Internetu po neomezených proxy – lze je snadno využít k anonymizaci). Činí tak i WWWOFFLE, o které jsme se již zmínili. V souboru wwwoffle.conf musíme v sekci

AllowedConnectHosts přidat jména všech počítačů v síti a správně vyplnit záznamy v sekcích LocalHost a LocalNet.

Pak stačí sdělit všem programům, že mají ke své práci používat proxy. Některým to lze sdělit systémovými proměnnými:

http_proxy=http://athlon:8080/
export http_proxy
ftp_proxy=http://athlon:8080/
export ftp_proxy

Dalším se to dá sdělit v konfiguraci, jiným vůbec (leda přilinkováním nějaké speciální knihovny pomocí LD_PRELOAD). Prohlížeče pak mohou používat proxy autoconfiguration script (PAC), který provede nastavení proxy sám. K WWWOFFLE je přiložen, před použitím je však třeba jej vyeditovat.

Zvláštním typem proxy je transparentní proxy. Ta ve spolupráci s jádrem provádí svou činnost tak, že je pro aplikaci za proxy neviditelná. Do tohoto režimu lze přepnout například oblíbenou proxy SQUID.

Nyní se dostaneme z jakéhokoliv počítače na web, ale třeba se

ssh toho na ostatních počítačich mnoho neuděláme. K tomu potřebujeme ještě něco jiného.

Maškaráda

Pod názvem maškaráda se skrývá zvláštní způsob nakládání se síťovými pakety. Pakety, které přicházejí od počítačů z místní sítě a jsou směrovány ven, jsou po cestě upraveny tak, aby v jejich hlavičce byl uveden jako odesílatel jiný (maskující) počítač. Když přijde odpověď na tyto pakety, je třeba ji rozpoznat, paketům vrátit původní adresu odesílatele a poté je doručit. Pokud vše proběhlo v pořádku, ani jedna ze stran nepozná, že nekomunikuje přímo.

Již ze stručného popisu je vidět, že maškaráda vyžaduje od jádra jistou znalost protokolu, kterým programy komunikují. Jednoduché protokoly, jako HTTP, POP3 a podobné, nevyžadují žádné další zvláštní operace. Naproti tomu složitější protokoly musí mít v jádře speciální podporu (v současnosti je možné v jádře zapnout podporu FTP a IRC, pro Linux 2.2 byly v jádře i filtry pro RealAudio přes UDP, hry

Quake I/II/III / QuakeWorld a videokonference CuSeeme a VDO-live).

Maškarádu musíme zapnout v jádře na počítači připojeném k Internetu („serveru“) pomocí voleb Network packet filtering, IP tables support, Full NAT a

MASQUERADE target support (pro jádra 2.4; jádra 2.2 používala ipchains, jádra 2.0 pak ipfwadm, kde bylo vše jinak; důvodem pro změnu bylo zobecnění definice paketových filtrů). Pokud chceme, aby maškaráda fungovala i na FTP a IRC, zapneme navíc podporu jejich analýzy.

K nastavení maškarády musíme použít program iptables. Ten umožňuje nastavit cokoliv, co se týká filtrování paketů. Na domovské straně najdete několik HOWTO dokumentů vysvětlujících postup při jeho používání (v případě NAT i v češtině).

Takže postup bude následující:

# povolit směrování paketů
# (už bychom měli mít nastaveno z 1. dílu)
echo "1" > /proc/sys/net/ipv4/ip_forward
# načíst moduly pro analýzu FTP a IRC
# (ostatní se nahrají samy)
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
# nastavit maškarádu
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Význam voleb je následující: -t nat – tabulka NAT, -A – připojení nového pravidla,

POSTROUTING – pravidlo se použije po nasměrování paketu, -o ppp0 – pro pakety odcházející přes ppp0, -j MASQUERADE – provést maškarádu.

Chceme-li si zkontrolovat tabulku úprav paketů, použijeme iptables-save.

Na ostatních strojích musíme ještě zařídit, aby požadavky do Internetu směrovaly na náš počítač (podrobně jsme rozepsali v minulém dílu):

route add default gw jméno_počitače

Poslední operací, kterou musíme provést, je správné nasměrování požadavků na jmenný server. Pokud jsme nainstalovali na počítač připojený k Internetu pdnsd (zmíněnou v článku o vytáčeném připojení), máme situaci jednodušší a do souboru /etc/resolv.conf okolních počítačů napíšeme pouze:

# IP počítače athlon v interní síti
nameserver 192.168.0.1

Pokud jsme jej neinstalovali, musíme na tyto počítače nějak dopravit soubor se správnými adresami serverů doménových jmen (nameserverů) našeho providera. Provideři obvykle tyto adresy nemění, takže pokud se nepřipojujeme k různým providerům, můžeme je tam zapsat napevno (zapomeneme-li tam adresy serverů jiného providera, vyhledávání jmen většinou bude fungovat, ale bude pomalejší).

Omezení maškarády

Maškaráda rozhodně není čisté řešení, ale je nejlepší, které lze v dané situaci použít. Jak již bylo řečeno, pokud nenapíšeme do jádra speciální ovladač, tak pro složitější protokoly selhává.

U dalších protokolů, jako třeba NetPhone, mohou vznikat další problémy – každá z protistran má jiné informace o IP adresách. To jde také vyřešit nečistými triky –

všechny počítače se musí domnívat, že mají stejné IP, jako připojený stroj. A to zase přináší problémy při komunikaci na místní síti, které je nutné řešit dalšími úpravami paketů.

Maškaráda selhává též pro protokol ident. Dnes už není příliš používaný, protože se na síti nepovažuje za dobré vydávat o sobě zbytečně mnoho informací (některé FTP servery však stále ještě přiřazují vyšší prioritu identifikovaným uživatelům). Pokud jej potřebujete, budete muset na síti najít upravenou verzi ident démona a nainstalovat ji na všechny počítače v síti.

Služby

Nyní již máme hotovou síť. Dokázali jsme ji připojit k Internetu, i když nemáme oficiálně přidělen dostatek IP adres.

Pokud nám síť nemá sloužit pouze k připojení na Internet, zbývá zprovoznit nějaké služby. Spuštění mnoha služeb je triviální – stačí nainstalovat příslušnou aplikaci a pak ji buď spustit, zapsat do spouštěcí sekvence, nebo do konfiguračního souboru programu inetd nebo xinetd (v návodu bývá napsáno, zda je příslušný démon určen pro samostatné spuštění, pro spuštění přes inetd, nebo zvládá oboje).

Zmíním se proto jen o některých službách.

Telnet

Telnet je na Internetu téměř opuštěný pro svou nezabezpečenost. Pro domácí použití však postačí. Většinou se spouští přes inetd, přesná konfigurace záleží na distribuci.

NFS

NFS je síťový souborový systém. Pokud chceme navzájem přistupovat k diskům, budeme potřebovat jeho podporu v jádře a balík nfs-utils. Nejdříve vyeditujeme soubor /etc/exports, ve kterém nadefinujeme, co, odkud a s jakými právy připojit (formát s lomítkem znamená masku):

/home  pentium(rw,sync)
/tmp   192.168.0.0/255.255.255.0(rw,async)

Spouští se poněkud komplikovaně (i když v mnoha distribucích je již vše potřebné ve startovacích skriptech):

rpc.portmap
rpc.mountd
rpc.nfsd
rpc.statd
rpc.lockd
rpc.rquotad
exportfs -ra

Poté již stačí pouze připojit NFS svazek (pokud je nfs zapsáno mezi /etc/filesystems, nemusíme -t nfs psát):

mount -t nfs athlon:/home /athlon/home

Rsync

Jestliže chceme zrcadlit celé adresáře nebo občas stáhnout nějaký soubor, je pro nás rsync zajímavý protokol – je totiž mnohem úspornější než NFS – přenáší pouze změněné části souborů. Démon lze spouštět jak samostatně, tak z inetd. V /etc/protocols by nemělo chybět:

rsync  873/tcp

Chceme-li jej spouštět přes inetd, do /etc/inetd.conf napíšeme:

rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

Příkaz rsync má obrovské množství voleb. Zde jsou mé oblíbené:

rsync --verbose -rlptgoD --delete --force\
 --exclude="*~" pentium::home/ /pentium/home-backup/

Pokud chcete zachovat i pevné odkazy, lze přidat za cenu zpomalení i -H.

Vzdálené grafické přihlášení a spouštění aplikací

Chceme-li spouštět vzdáleně grafické aplikace, máme dvě možnosti – přímé spouštění aplikací, nebo použití

XDMCP (X Display Manager Control Protocol).

Přímé spouštění grafických aplikací

Protokol X používá ověřování, zda je klient oprávněn se k serveru připojit. Pokud nechceme pracovat s programem xauth a přenášet autentizační soubory, můžeme na vnitřní síti použít méně bezpečnou variantu – xhost. Tento program sdělí, že kdokoliv z daného počítače se na X server může připojit.

Předpokládejme, že na počítači pentium již běží X sezení s hodnotou proměnné DISPLAY=:0 a chceme spustit aplikaci, která se na něm bude zobrazovat, ale poběží na počítači athlon.

Na počítači pentium povolíme vzdálený přístup:

xhost add athlon

Nyní můžeme na počítači athlon spustit aplikaci:

DISPLAY=pentium:0 evolution &

Používáme-li ssh a povolíme přeposílání (forwardování) X11 spojení, ušetříme si práci, neboť pak k tomu dochází automaticky a navíc zabezpečeným kanálem.

Použití XDMCP

XDMCP je speciálně určen pro vzdálené přihlašování. Na obou strojích musí běžet nějaký správce obrazovky (display manager, např. xdm, gdm, kdm), podporující XDMCP (a musí ho mít povolené). Na stroji, odkud se chceme přihlásit, pak stačí pouze zadat (-ac ruší zabezpečení serveru, -query znamená dotaz na uvedený počítač, :1 je nové, doposud nepoužité číslo X-serveru):

CS24_early

X -ac -query pentium :1

Dalšími možnostmi, vhodnými pro rozsáhlejší sítě, jsou -indirect počítač – to znamená dotaz na uvedený počítač a jeho sousedy v síti, a -broadcast – dotaz na všechny okolní počítače, přičemž přihlášeni budete na ten, který se nejdříve ozve.

A to je o naší malé síti vše.

Byl pro vás článek přínosný?

Autor článku