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 neadresovatelností 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):
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.