Download: LinuxUser_sieci
Transkrypt
Download: LinuxUser_sieci
LINUX USER Podstawy sieci Linux i sieci TCP/IP Pracujemy w sieci Linux to o wiele więcej niż tylko znakomity, wielozadaniowy i wielodostępny system operacyjny. System ten jest produktem wspólnoty reprezentującej różne przecież interesy i dążenia. Rozwija się ona w oparciu o wymianę wiedzy i technologii. A komunikacja z wykorzystaniem sieci komputerowych jest najważniejszym elementem tej wymiany. IAN TRAVIS K omunikacja w sieciach, a głównie w Internecie, staje się fundamentalnym elementem życia. Trudno wyobrazić sobie życie bez sieci – powrót do starych, niedobrych lat 80-tych, kiedy ludzie wymieniali dane wyłącznie przy pomocy dyskietek. Każdy kto pamięta tamte czasy uzna, że sieci komputerowe to jeden z cudów świata. Ale czy kiedykolwiek zastanawialiście się jak to wszystko działa? Nie chodzi mi o to, że komputer uruchamia się, pojawia się pulpit KDE czy GNOME, a wy uruchamiacie KMail lub Evolution, żeby wysyłać wiadomości w świat. To co mam na myśli to, czy zastanawialiście się kiedykolwiek nad tymi wszystkimi bitami i bajtami, które sprawiają, że komunikacja na odległości przekraczające tysiące kilometrów jest szybka, skuteczna i bezbolesna? Być może chcielibyście użyć tej technologii do stworzenia sieci w domu lub małym biurze? Ten artykuł dostarcza podstawowej wiedzy na temat sieci TCP/IP, która ułatwi pracę z małymi sieciami – np. w domu i pozwoli uniknąć najprostszych błędów. Od wieży Babel do TCP/IP Kiedy łączymy dwa komputery w sieć, chcemy osiągnąć jedno – wymieniać informacje. Z dzisiejszego punktu widzenia jest to trywialne zadanie. Wybór odpowiednich komponentów jest kwestią gustu lub możliwości finansowych. Ale budowa sieci komputero- 98 Czerwiec 2004 wych nie zawsze była taka prosta. Funkcjonalność, którą teraz mamy do dyspozycji jednym kliknięciem myszy, wywodzi się sprzed wielu lat i pochodzi od pionierów sieci komputerowych. Poszukiwanie sposobów na połączenie komputerów w sieć doprowadziło do połączenia różnych technik składających się na koncepcję tzw. internetwork (dosł. „międzysieci”), otwartego systemu, który umożliwia wzajemną komunikację komputerom o różnych architekturach. Do tego potrzeba standardów, które określają, jak połączone w sieć komputery komunikują się ze sobą oraz jak łączy się ze sobą różne sieci, a także jaką drogę przebywają informacje w sieci. Te definicje określamy mianem TCP/IP Internet Protocol Suite, czyli krótko TCP/IP. TCP/IP z loku ptaka TCP/IP to skrót od: Transmission Control Protocol/Internet Protocol. Protokół ten umożliwia patrzenie na komunikację w oddzieleniu od sprzętu. W tym celu twórcy TCP/IP podzielili indywidualne zadania komunikacyjne na osobne grupy zwane warstwami: ■ Fizyczna – sterowniki urządzeń i karty sieciowe ■ Sieci – IP, ICMP, IGMP ■ Transportu – TCP, UDP ■ Aplikacji – Telnet, FTP, HTTP, e-mail itd. Komponenty w ramach każdej z warstw nie są wymienne. Wypełniają one pewne www.linux-magazine.pl podstawowe zadania, ale w różny sposób. Jedno z zadań komunikacyjnych obejmuje obsługę aspektów fizycznych sieci – karty sieciowej i medium transportowego. Karty Ethernet są najlepiej znanym przykładem. Kiedy zmieniasz swoją kartę sieciową, po prostu instalujesz do niej jedynie sterownik, ale nie potrzebujesz zmieniać warstwy sieci lub aplikacji. Innym zadaniem warstwy fizycznej jest takie formatowanie danych, żeby mogły być przesłane kablem. Zatem sygnały używane do przesyłania danych muszą odzwierciedlać fizyczną strukturę medium. Podczas gdy warstwa fizyczna po prostu przesyła dane z jednego końca kabla do drugiego, warstwa sieci daje pewność, że dane dochodzą do miejsca przeznaczenia. Warstwa transportu wybiera odpowiednią usługę na komputerze wysyłającym i (w przypadku TCP) upewnia się, że dane dochodzą do miejsca przeznaczenia i że dochodzą w prawidłowej kolejności. Jeśli pakiet zaginie, TCP transmituje go ponownie. Kapsułkowanie Kiedy aplikacja używa TCP/IP do przesłania informacji, informacja przechodzi przez różne warstwy sieci, aż na końcu zostanie przesłana kablem jako strumień bitów przez kartę sieciową. Każda warstwa dodaje własne informacje kontrolne. Wyobraźcie sobie swoje dane jako najmniejszą Podstawy sieci figurkę w rosyjskiej wańce-wstańce. Na każdym poziomie do danych jest dołączany tak zwany nagłówek. Aplikacja, która zapisuje dane, kapsułkuje dane w nagłówku aplikacji zanim przekaże je np. do TCP. TCP dodaje własny nagłówek TCP, tworząc segment TCP i przekazuje do IP. Natomiast IP, jak się domyślacie – dodaje kolejny nagłówek, tworząc tak zwany datagram IP. W sieci Ethernet nagłówek i „stopka” są dodawane do datagramu IP, żeby stworzyć ramkę fizyczną. Adres jest wszystkim Kiedy rozmawiamy o adresach w sieciach TCP/IP, musimy najpierw określić, co mamy na myśli. Na najniższym poziomie sprzętowym interfejs sieciowy posiada własny, unikalny adres fizyczny, np. w sieciach Ethernet jest to liczba 48-bitowa w formacie przypominającym 00:E0:29:27:B1:75. Ten adres jest przypisywany przez producenta urządzenia i jest unikalny w skali globalnej. Adres Ethernet jest używany do komunikacji niskopoziomowej. Kabel Ethernet może łączyć wiele komputerów. Dlatego karta sieciowa będzie sprawdzać adres Ethernet i na tej podstawie podejmować decyzję, czy przychodzące pakiety są przeznaczone dla tego komputera. Adres ten jest określany jako Media Access Control lub MAC. Jednak same adresy MAC nie pozwoliłyby nam na stworzenie dużej sieci. Mimo że producenci sprzętu sami przypisują adresy MAC swoim urządzeniom sieciowym, nie wiedzą przecież, gdzie ich urządzenia będą używane, dlatego routing w sieciach opartych na MAC bylby niemożliwy. Wyobraźmy sobie sytuację, w której każdy dom ma przypadkowy numer, ale miasta i ulice nie mają nazw. Jeśli zastosujemy to do adresów MAC, numery domów nie będą nawet sekwencją, lecz przypadkowym zlepkiem. Routing IP. To właśnie jest to, czym zajmuje się protokół Address Resolution Protocol (ARP). Jeśli nadawca nie zna adresu ARP odbiorcy, po prostu przesyła żądanie ARP do wszystkich komputerów, chcąc odnaleźć adresata. Jeśli adresat „usłyszy” to nawoływanie, odpowie swoim własnym adresem, komputery zaangażowane w operację pamiętają mapowanie adresów MAC-IP przez jakiś czas (zazwyczaj około 10 minut). Możesz użyć polecenia ifconfig, żeby poznać adres fizyczny swojej karty sieciowej: Technika polegająca na pytaniu każdego komputera o drogę do komputera docelowego ma sens jedynie w niewielkich sieciach lokalnych. Wyobraźcie sobie, że trzeba byłoby pytać każdy pojedynczy komputer w Internecie o drogę – sieci publiczne szybko zostałyby zapchane przez zapytania i odpowiedzi ARP. Odpowiedzią na ten dylemat jest routing. Routing oznacza wybieranie najlepszej ścieżki w danej sieci dla przesyłanych pakietów z danymi. Specjalizowane komputery, które podejmują decyzje na temat routingu, nazywają się routerami. Z punktu widzenia sieci lokalnej, router jest bramą do świata zewnętrznego. Każdy host musi znać gateway, zwany też domyślną trasą. To oznacza, że w czasie konfiguracji komputera należy mu podać informację o adresie IP gateway-a. Jeśli komputer docelowy nie pracuje w tej samej sieci co komputer wysyłający, nadawca po prostu skontaktuje się z routerem i to router będzie odpowiadać za odnalezienie dalszej ścieżki do komputera docelowego oraz za samo wysłanie do niego pakietów. To właśnie przyczyna, dla której dwie części adresu są użyteczne. Router potrzebuje części adresu opisującej sieć docelową, a część opisująca host wskazuje bezpośrednio sam komputer. Jeśli adres sieci źródła i celu są identyczne, oznacza to, że komputer docelowy znajduje ifconfig eth0 eth0 Link encap:Ethernet U Hwaddr 00:E0:29:27:B1:75 inet addr:192.168.41.207 U Bcast:192.168.41.255 Mask:U 255.255.255.0 lub wpisz arp -a, żeby obejrzeć wpisy w buforze ARP swojego komputera: arp -a samba (192.168.41.3) at 00:40:U 05:36:FD:4E [ether] on eth0 sqlse (192.168.41.4) at 00:04:U 75:C2:7A:54 [ether] on eth0 work1 (192.168.41.24) at 00:04:U 75:93:14:F8 [ether] on eth0 tech-2 (192.168.41.132) at 00:U 00:E8:22:50:F8 [ether] on eth0 Source IP: Computer A Target IP: Computer B Source MAC: Target MAC Computer A Router L LINUX USER Source IP: Computer A Target IP: Computer B Source MAC: Target MAC: Router R Computer B left L right R Switch Router IP na pomoc Adresy IP mają za zadanie zorganizować ten chaos. Każdy komputer otrzymuje adres IP jako unikalny numer stosowany przez warstwę sieci. Adres IP posiada pewną strukturę. Pierwsza część adresu zawiera numer sieci, w której znajduje się komputer, a druga część odnosi się do samego komputera. Jesli jeden komputer chce „rozmawiać” z drugim, oznacza to przesyłanie informacji przez sieć. Ale ponieważ karta sieciowa rozpoznaje jedynie adresy MAC, musi być jakiś sposób na odkrywanie nieznanych adresów MAC przez odwołanie do znanych adresów Source IP: ComputerA Target IP: Computer B Source MAC: Target MAC: Computer A Router L Computer A Computer B Rysunek 1: Komputer A wysyła pakiet do komputera B, użyjemy adresu IP komputera B i adresu MAC lewego portu routera. Router przekazuje pakiet utrzymując adresy IP, ale zmieniając adresy MAC. Switch nie wpływa na zawartość pakietu www.linux-magazine.pl Czerwiec 2004 99 LINUX USER Podstawy sieci się w tej samej sieci co wysyłający. W tym przypadku nadawca używa ARP do określenia adresu MAC odbiorcy i przesyła dane bezpośrednio do niego. Maska podsieci jest używana do sprawdzenia, która część adresu należy do sieci, a która do hosta. Sieci prywatne Nie ma potrzeby przejmować się routingiem lub wyczerpującymi się adresami internetowymi, jeśli wasza sieć lokalna nie jest podłączona do Intrenetu. Możesz po prostu przyznać wszystkim taką samą sieć i użyć stosownej maski. Jednak jeśli połączysz taką sieć lokalną do Interentu Maskowanie sieci powstanie kompletny chaos. Mimo że istnieje kilka sposobów Żeby temu zapobiec, organizacja wyrażenia adresu IP, najpopularIETF (Internet Engineering Task niejsze jest wyrażenie go za pomoForce) przeznaczyła pewne specą liczb dziesiętnych rozdzielocjalne zakresy adresów do użytku nych kropkami. 32 bity adresu IP prywatnego. są podzielone na 4 grupy po 8 biMożesz do woli eksperymentotów. Każda grupa jest oddzielona Rysunek 2: Zmiana ustawień sieci w SuSE przy pomocy YaST2. wać z adresami prywatnymi. Pood kolejnej kropką. Numery w każnieważ adresy prywatne nie są przyznawszechnego użytku, ale istnieją też klasy dym oktecie są zapisane w formie dziesiętwane maszynom internetowym, ani nie są specjalne – klasa D dla transmisji typu mulnej. Typowy adres wygląda np. tak: rutowane w Internecie, nie istnieje proticast i klasa E – eksperymentalna. Ramka 192.168.41.207. Klasy adresów pokazuje sposób przypisania blem konfliktu adresów. Zakresy adresów Maska sieci (lub podsieci) działa według prywatnych znajdują się w Tabeli 1. adresów do klas i wskazuje maski podsieci tego samego wzorca. Bit o wartości (1) oznadla każdej z klas. cza, że ta część maski jest częścią adresu sieci, zero wskazuje, że należy do hosta. Kiedy Dostęp do Internetu wszystkie 8 bitów w oktecie ma wartość (1), Problem ROADS, CIDR z adresów prywatnych wartość dziesiętna wynosi 255. Dzięki temu i adresy prywatne Być może zauważyliście, że w naszym przychyba już rozumiecie następującą maskę kładzie użyliśmy adresu IP (192.16.4.207) Kiedy pionierzy sieci komputerowych zasieci: 255.255.255.0. z klasy prywatnej i pewnie zastanawiacie projektowali schemat adresowy w latach 70Pierwsze trzy bajty mają wartość. Innymi się, jak ten komputer może połączyć się tych, nie zdawali sobie sprawy z drogi rozsłowy, pierwsze trzy bajty adresu IP to adres z Intrenetem. Każdy pakiet danych, który woju, na jaką wkroczy kiedyś Internet. Już sieci. Ostatni bajt to zero, zatem ostatni bajt wysyła komputer, zawiera adres nadawcy, w 1993 roku stało się jasne, że dotychczasoadresu IP zawiera adres hosta. Przyjrzyjmy aczkolwiek ten adres nie jest ważny poza wy schemat oparty na klasach jest niewystarsię innemu przykładowi konfiguracji zwrósiecią lokalną. czająco pojemny, żeby przyznać unikalny conemu przez polecenie ifconfig: Są na to dwa rozwiązania. Oczywiście moadres IP każdemu komputerowi przyłączożesz wykorzystać adresy publiczne dla swojej nemu do Internetu. Ten problem jest znany sieci, ale to oznacza, że musisz wynająć te adpod nazwą ROADS (Running Out of ADifconfig eth0 resy od swojego dostawcy Internetu. Jednak dress Space). Publikacje naukowe od począteth0 Link encap:Ethernet HwaddrU najczęściej spotykane rozwiązanie jest takie, ki lat 90-tych przewidują wyczerpywanie się 00:E0:29:27:B1:75 że do łączenia z Intrenetem używamy modewolnych zasobów adresów IP. Czy zrobiono inet addr:192.168.41.207 Bcast:U mu, karty ISDN, kabla TV lub modemu coś, żeby to zmienić? 192.168.41.255 Mask:U DSL. W tym przypadku zazwyczaj otrzymuJednym z proponowanych rozwiązań jest 255.255.255.0 jesz pojedynczy, czasowy adres IP na czas poClassless Inter-Domain Routing (CIDR) łączenia. Na pierwszy rzut oka wgląda to na zwany też jako „supernetting”. Dzięki temu Tym razem interesuje nas linia rozpoczynaduży problem – cała pula adresów jest zbyt organizacje przydzielające adresy mogły firjąca się od inet addr:192.168.41.207. Poniekosztowna, ale chcemy dać dostęp do Intermom, które wystąpiły o adresy z klasy B waż maska sieci dla tej sieci to netu wszystkim komputerom. Na szczęście przydzielać adresy z klasy C. Z drugiej stro255.255.255.0, możemy zauważyć, że komjest na to prosty i skuteczny sposób. ny administratorzy zaczęli sobie zadawać puter działa w sieci 192.168.41.0 i ma w niej To rozwiązanie zakłada, że router, którego pytanie, czy ma sens przydzielanie unikalidentyfikator hosta 207. adres możesz skonfigurować jako domyślny nych adresów IP wszystkim komputerom Tradycyjny schemat adresowania dzieli router dla wszystkich komputerów w sieci, w ich sieciach. adresy IP na różne klasy. Eksperci przyjęli może obsługiwać NAT – Network Address dawno temu, że niewielka grupa ogromnych Translation. Gateway NAT po prostu zastęfirm/organizacji będzie potrzebować dużej Tabela 1: Adresy prywatne puje informację o adresie źródłowym w każilości adresów; średnie firmy/organizacje Najniższy adres Najwyższy adres dym wychodzącym pakiecie swoim własnym będą potrzebować umiarkowaną liczbę adre10.0.0.0 10.255.255.255 – routowalnym, publicznym adresem. Odsów, natomiast ogromna liczba małych sieci 172.16.0.0 172.31.255.255 wrotny proces odbywa się w przypadku pabędzie potrzebować tylko po kilka adresów. 192.168.0.0 192.168.255.255 kietów przychodzących. Gateway zastępuje To prowadzi nas do definicji trzech klas ad169.254.0.0 169.254.255.255 adres docelowy adresem prywatnym maszyresów IP – klasy A, B i C. Są to klasy po- 100 Czerwiec 2004 www.linux-magazine.pl Podstawy sieci serwera DNS. Do edycji tego pliku użyj swojego ulubionego edytora (np. vi), oto jak może wyglądać taki plik: # cat /etc/hosts #sample hosts file 192.168.41.3 samba 192.168.41.4 sqlse 192.168.41.7 kyocera 192.168.41.8 oki ... W zależności od twojej dystrybucji, konfiguracja sieci TCP/IP może być przechowywana w różnych miejscach. Polecenie hostname natychmiast zwróci ci nazwę lokalnej maszyny: maks. 24 bits Klasa C 192.0.0.0 – 223.255.255.255 – maska podsieci 255.255.255.0, ID hosta, maks. 8 bits Komputer akceptuje ofertę serwera DHCP (tego, który odpowiedział jako pierwszy) i serwer potwierdza przyznanie nowego adresu IP. Konfiguracja Kiedy jakiś program chce się połączyć z innym komputerem, najpierw pyta się systemu operacyjnego, czy w pliku /etc/hosts nie ma stosownego wpisu dla Rysunek 3: Zmiana ustawień sieci w Red Hat przy nazwy komputera, z którym chce się popomocy redhat-config-network łączyć program. Jeśli wpis istnieje, to aplikacja może użyć podanego tutaj adresu ny oczekującej na odpowiedź z Internetu. IP – to coś w rodzaju książki adresowej. Z punktu widzenia maszyny w sieci weTymczasem DNS jest czymś w rodzaju wnętrznej, urządzenie obsługujące NAT jest globalnej książki adresowej. Serwery DNS routerem, przez który można dostać się do działające w Internecie są zorganizowane adresów zewnętrznych. Komputery z Interhierarchicznie. Jeśli serwer nie jest w stanie netu widzą z kolei jedynie urządzenie obsłurozwiązać określonej nazwy, przynajmniej gujące NAT – nikt nie wie, że pakiety są zna adres serwera DNS wyższego rzędu, któprzekazywane innym komputerom, a ich adremu zadaje pytanie dotyczące nazwy. resy są tłumaczone. Jeśli chcesz się dowiedzieć, jak wygląda domyślny routing, możesz po prostu wpisać Czasowe adresy IP – DHCP z linii poleceń route: W dotychczas opisywanych zadaniach komunikacyjnych przyjęliśmy założenie, że twoja lokalna maszyna posiada już adres Droga na skróty IP, maskę sieci, adres routera oraz zazwyPewnie zadajesz sobie pytanie – czy muszę czaj przynajmniej jeden serwer DNS. pamiętać te wszystkie adresy IP? Oczywiście W wielu przypadkach nie ma potrzeby nie – dzięki usłudze DNS! DNS, czyli Dowprowadzać tych szczegółów ręcznie. main Name System, który umożliwia luWiększe sieci używają Dynamic Host Condziom korzystanie z bardziej „ludzkich” figuration Protocol (DHCP) do dystrybunazw komputerów – np. www.linux-magazowania ustawień sieci lokalnej oraz dostępu ine.pl, zamiast trudnej do zapamiętania do Internetu. Ponieważ publiczne adresy kombinacji cyfr adresu IP, takiej jak w Internecie są deficytowym towarem, do192.76.144.15. stawcy Internetu również dążą do przyznaW mniejszych sieciach możesz wybrać dowania adresów czasowych, udostępnianych danie kilku wpisów w pliku /etc/hosts i skotylko na czas połączenia. Oczywiście jest to piowanie go na wszystkie komputery w sieci, kolejne zadanie, któremu płaskie pliki typu zamiast zabawę w konfigurację własnego /etc/hosts nie mogą podołać. W DHCP klient, który potrzebuje adreSŁOWNICZEK su IP, przegląda sieć w poszukiwaniu serKlasy adresów IP: wera DHCP, wysyłając zapytania broadKlasa A 0.0.0.0 – 127.255.255.255 – castem na sieć lokalną. Każdy serwer, któmaska podsieci 255.0.0.0, ID hosta, ry odbierze takie żądanie, odpowie ofertą. Klasa B 128.0.0.0 – 191.255.255.255 – maska podsieci 255.255.0.0, ID hosta, maks. 16 bits LINUX USER #hostname linux Mniejsze sieci nie używające lokalnego serwera DNS będą przechowywać mapowanie nazw hostów i adresów IP w pliku /etc/hosts. Plik musi być ręcznie przeniesiony na wszystkie komputery w sieci. Plik /etc/resolv.conf zawiera określenie nazwy najbliżeszego serwera nazw, z którym maszyna będzie się próbowała połączyć, jeśli będzie trzeba rozwiązać nazwę DNS. Przykładowo SuSE Linux przechowuje ważne ustawienia sieci w katalogu /etc/sysconfig/network (oczywiście wygląda to inaczej w innych dystrybucjach). Katalog ten zawiera z kolei pliki /etc/sysconfig/network/ifcfgxxxx dla każego z interfejsów sieciowych, przy czym xxxx reprezentuje nazwę karty sieciowej, np. eth0. Poniższe polecenie pokazuje ustawienia dla karty sieciowej o nazwie eth0, która w tym przypadku jest skonfigurowana do używania DHCP: #cat /etc/sysconfig/networkU /ifcfg-eth0 BOOTPROTO='dhcp' MTU='' REMOTE_IPADDR='' STARTMODE='onboot' UNIQUE='' WIRELESS='no' Oprócz możliwości ręcznej edycji plików, nowoczesne dystrybucje zawierają również graficzne narzędzia administracyjne. W SuSE Linux jest to YaST2 – należy wybrać sekcję Network Devices/Network Card. Analogiczne narzędzie w Red Hat Linux nosi nazwę redhat-config-network. ■ Tabela 2: Przykład routingu domyślnego Destination Gateway Genmask 192.168.41.0 * 255.255.255.0 default ROUTER_ONE.dd-i 0.0.0.0 Flags Metric Ref Use U 0 0 0 eth0 UG 0 0 0 eth0 www.linux-magazine.pl Czerwiec 2004 Iface 101