Hlavní navigace

Cooperative Linux - Síťování - TAP

20. 12. 2005
Doba čtení: 7 minut

Sdílet

Kdysi dávno, vlastně ještě docela nedávno, se říkávalo, že jenom jedna věc je lepší než Linux. Dnes to už zní prapodivně, vždyť Linux a počítačové sítě patří neoddělitelně k sobě, ale tenkrát se opravdu myslelo na Linux v síti. Co je tedy lepší než Cooperative Linux (coLinux)? No přece Cooperative Linux pořádně zasíťovaný.
Cooperative logo

Připojení Linuxu běžícího pod Cooperative Linuxem do počítačové sítě může být pro začínající uživatele docela tvrdým oříškem. Už se nejedná pouze o spuštění instalačního programu a bezmyšlenkové proklikání se až k tlačítku Finish. Je nutné znát základy počítačových sítí, vhodně nakonfigurovat síťové prostředí poskytované Cooperative Linuxem a odpovídajícím způsobem nastavit TCP/IP jak na straně Linuxu tak na straně Windows. Takové zasíťování a současný běh několika různých linuxových distribucí na jednom počítači, navíc pod operačním systémem Microsoft Windows, může být oříškem i pro zkušené správce.

Vývojová větev Cooperative Linuxu

Jak již bylo zmíněno, vývoj Cooperative Linuxu probíhá ve dvou větvích – stabilní 0.6.x a vývojové 0.7.x. Testovací verze obou větví lze získat ze stránek Henryho Nestlera. Aktuální testovací verze jsou stable-0.6.3-rc3 a devel-2.6.12-hn.

Vývojové verze Cooperative Linuxu je obvykle nutné instalovat ručně, tj. stáhnout několik souborů, rozbalit je do vybraného adresáře, ručně doinstalovat ovladač virtuálního síťového rozhraní atd. Verze devel-2.6.12-hn ale přichází s instalačním programem. Stačí jej jenom stáhnou, spustit a nechat se vést stejně jako u verze stabilní.

Vývojovou verzi devel-2.6.12-hn lze tak doporučit i k prvnímu seznámení se s Cooperative Linuxem. Také proto bude dále i tento seriál věnován více vývojové verzi Cooperative Linuxu.

Samozřejmě lze namítat, že některé z popisovaných vlastností nelze ve stabilní verzi využít. Zcela jistě se ale z dnešní vývojové větve jednou stane větev stabilní a informace zde publikované se tak budou možná hodit také uživatelům současné stabilní verze.

Cooperative 1
Cooperative 2

Jediným problémem při instalaci Cooperative Linuxu může být kliknutí na tlačítko „Ukončit instalaci“ při instalaci ovladače pro virtuální síťové rozhraní TAP-Win32, poněvadž ovladač není digitálně podepsán. Řešení je nasnadě. Opět spustit instalační program a v závěru klikat o něco pomaleji. ;-)

Cooperative 3

Virtuální síťové rozhraní

Po nainstalování Cooperative Linuxu, přesněji řečeno po nainstalování virtuálního síťového ovladače „coLinux Virtual Ethernet Driver (TAP-Win32)“ se ve Windows objeví další síťové rozhraní. Uživatel je na jeho přítomnost upozorněn zobrazením ikonky na „Hlavním panelu“. Ikonka informuje, že „Síťový kabel byl odpojen“.

Cooperative 4

Přítomnost nového rozhraní lze ověřit také proklikáním se do Síťových připojení (Start/Ovládací panely/Síťová připojení) nebo spuštěním příkazu „netsh interface show interface“ v „Příkazovém řádku“.

Cooperative 5
Cooperative 6

Standardní název nového rozhraní je „Připojení k místní síti N“, kde N je pořadové číslo síťového rozhraní. Pokud je v počítači obsažena pouze jediná síťová karta, ponese první virtuální síťové rozhraní název „Připojení k místní sítí 2“. Také to ale může být klidně „Připojení k místní sítí 8“, pokud se uživatel Cooperative Linuxu už nějaký čas věnoval.

Konfigurace síťového prostředí

Jak jsem již psal, prostředí poskytované Cooperative Linuxem je definováno při jeho vytváření, tj. při spouštění programu colinux-daemon.exe. Linux běžící v tomto prostředí má přístup pouze k předem definovaným „hardwarovým“ zařízením. Pokud tedy má být Linuxu běžícímu pod Cooperative Linuxem umožněn přístup k počítačové síti, musí mu být především poskytnuto virtuální síťové rozhraní. Samozřejmě záleží na vlastnostech tohoto rozhraní. Pokud poskytnuté rozhraní není připojeno do počítačové sítě, nepřipojí se do počítačové sítě ani Linux běžící pod Cooperative Linuxem.

Ve vývojové verzi Cooperative Linuxu lze poskytované prostředí definovat obyčejným textovým souborem. K předání jména souboru programu colinux-daemon.exe slouží znak „@“, tj. například „colinux-daemon.exe @debian-01.txt“.

debian-01.txt

kernel=vmlinux
cobd0=debian-01
root=/dev/cobd0
eth0=tuntap 

Řádek cobd0=debian-01 v souboru debian-01.txt definuje soubor obsahující kořenový systém souborů. V dnešním díle se jedná o soubor Debian-3.0r2.ext3-mit-backports.1gb přejmenovaný na debian-01.

Síťové rozhraní lze definovat pomocí eth0=tuntap (první přiblížení). V tomto případě je linuxové rozhraní eth0 připojeno přes TAP-Win32 k Windows rozhraní „Připojení k místní síti 2“.

TAP-Win32

Z výpisů programu colinux-daemon.exe lze ověřit, zda je síťové rozhraní opravdu poskytnuto. Jak lze vidět, čeština v názvech rozhraní může dělat problémy.

Cooperative 7

Konfigurace TCP/IP

Konfiguraci IP lze v Linuxu zjistit příkazem ifconfig. Ve Windows příkazem ipconfig.

Cooperative 8
Cooperative 9

Pokud mají host a hostitel mezi sebou přímo komunikovat, musí být na stejné síti. V ukázkovém příkladu je Linux (Debian) umístěn na síti 192.168.0.0/24 a Windows na síti 169.254.0.0/16. Jedna ze stran se musí přizpůsobit. V případě Linuxu stačí spustit příkaz ifconfig se správnými argumenty nebo sáhnout do souboru /etc/network/interfaces (lze použít editor nano) a následně restartovat síťový podsystém ( /etc/init.d/networking restart). Komunikace (ping) z Linuxu do Windows ale ani po nastavení vhodné IP adresy a IP masky nefunguje.

Cooperative 10

Z Windows do Linuxu ale ping funguje.

Cooperative 11

Čím to může být? Firewallem na straně Windows. Existuje několik možnosti jak ping z Linuxu do Windows povolit. První krajní možnosti je vypnutí firewallu, tj. povolení veškeré komunikace z „Připojení k místní síti 2“. Druhou krajní možností je povolení pouze ping komunikace, tj. úprava nastavení protokolu ICMP.

Cooperative 12
Cooperative 13

Dva kohouti na jednom smetišti

Cooperative Linux umožňuje spouštění i několika různých linuxových distribucí současně. Pro začátek ale stačí rozchodit dva Debiany. První necháme běžet, zkopírujeme konfigurační soubor debian-01.txt na debian-02.txt a zkusíme jej podstrčit další instanci programu colinux-daemon.exe (colinux-daemon @debian-02.txt). Druhý Debian se ale nerozběhne. Problém je s kořenovým souborovým systémem. Soubor debian-01 je již využíván prvním Debianem.

Cooperative 14
Cooperative 15

Po zkopírování souboru debian-01 na debian-02 (pozor jedná se o soubor velikosti 1 GB) a úpravě konfiguračního souboru debian-02.txt (cobd0=debian-02) lze rozběhnout také druhý Debian. Problém je ale se síťovým rozhraním. Řádek eth0=tuntap říká, že se má použít TAP rozhraní. Ve Windows je ale zatím nainstalováno pouze jediné TAP rozhraní a to je už využíváno prvním Debianem.

Cooperative 16

Každý z Debianů potřebuje své vlastní TAP rozhraní, tj. vlastní síťovou kartu. Virtuální síťovou kartu/adaptér lze do Windows přidat stejným způsobem jako kartu fyzickou (Ovládací panely/Přidat hardware). Jenom se nenechte zmást pojmem „adapatéry“.

Cooperative 17

Pokud již byla na počítači nainstalována některá z předchozích verzí Cooperative Linuxu, pravděpodobně po ní na disku zůstala starší verze TAP-Win32 ovladače. S novou vývojovou verzí Cooperative Linuxu přichází také nová verze TAP-Win32 ovladače. Verze 8.3 (8.0.0.3) přináší zvýšení rychlosti z 10 Mbit/s na 100 Mbit/s. K používání TAP rozhraní už navíc nejsou potřebná administrátor­ská práva.

Cooperative 18

Pokud má být zajištěno, že daný Debian bude používat pouze dané TAP rozhraní, je nutné název rozhraní definovat v konfiguračním souboru. Také je možné definovat vlastní hardwarovou adresu.

eth0=tuntap,"Připojení k místní síti 3",11:22:33:44:55:66
Cooperative 19

Název rozhraní je možné samozřejmě změnit (Start/Ovládací panely/Síťová připojení). Místo „Připojení k místní síti 3“ může být vhodnější používat například „debian-02“.

Za hranice hostitele

V ukázkovém příkladu byla IP adresa Linuxu 192.168.0.40 a IP adresa Windows 169.254.161.84. Jak odborníci na TCP/IP jistě vědí, jedná se o speciální IP adresy definované v RFC3330. Adresní rozsah 192.168.0.0/16 slouží pro privátní/neveřejné sítě. Adresní rozsah 169.254.0.0/16 pro autokonfiguraci DHCP klientů v případě, že DHCP server není k dispozici. Adresy tedy zajímavé, ale pro surfování po Internetu nepoužitelné.

Řadě uživatelů Cooperative Linuxu ale přístup z Linuxu do Internetu vůbec nechybí. Právě naopak. Na Linuxu například vyvíjejí webové aplikace. Běží jim tam Apache, PHP, PostgreSQL nebo MySQL. Tím, že funguje pouze lokální komunikace z Windows do Linuxu, je zajištěno, že případný útočník nemůže z vnější sítě žádnou z aplikací běžících na Linuxu nabourat.

Za hranice hostitele se lze dostat několika způsoby. Pokud nechceme sahat na Linux, tj. necháme jej na síti 192.168.0.0/24, tj. nebudeme sahat do souboru /etc/network/in­terfaces ani používat příkaz ifconfig, je nutné upravit nastavení Windows. Windows XP zvládají NAT (Network Address Translation), tj. síťová komunikace vycházející z Linuxu se na Internetu tváří, jakoby pocházela z Windows, tj. privátní IP adresa 192.168.0.40 je nahrazována adresou Windows. Nastavení je jednoduché. V Ovládací panely/Síťová připojení/Připojení k místní síti/Vlastnos­ti/Upřesnit je nutné povolit „Sdílení připojení k Internetu“ (ICS – Internet Connection Sharing) a v „Připojení k domácí síti:“ vybrat virtuální rozhraní spojující Windows s Linuxem (Připojení k místní síti 2 nebo debian-01).

Cooperative 20

Adresa vybraného rozhraní (debian-01) bude následně automaticky přenastavena na 192.168.0.1. Po­něvadž Debian má výchozí bránu (default gateway) nastavenou také na 192.168.0.1, opravdu není nutné na IP konfiguraci Linuxu sahat.

root_podpora

Cooperative 21

Teď síťové spojení ještě ověřit. Například stáhnutím a instalací dalších balíčků. Co takhle Midnight Commander ( apt-get update; apt-get install mc)?

Příště

Opět síťování. Další způsoby připojení Cooperative Linuxu do počítačové sítě. Místo eth0=tuntap bude v konfiguračních souborech použito eth0=pcap-bridgeeth0=slirp.

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