37, ciekawostki, Linux - Ksiega Eksperta, Linux - ksiega eksperta, Linux - księga eksperta


Rozdział 37.
Praca w sieci


Tim Parker

W tym rozdziale:

TCP/IP

Linux oferuje użytkownikowi pełną implementację TCP/IP, protokołu używanego powszechnie w Internecie i sieciach lokalnych opartych o systemy UNIX-owe. Wszystko, czego potrzebujesz, by stworzyć własną sieć lub podłączyć się do istniejącej, to karta sieciowa, trochę kabla i kilka zmian w plikach konfiguracyjnych.

Proces konfiguracji sieci przebiega zawsze tak samo, bez względu na to, czy łączysz ze sobą dwa komputery stojące w jednym pokoju, czy też podłączasz się do sieci, w której jest już 5000 innych komputerów.

TCP/IP jest protokołem otwartym, tzn. jego specyfikacja techniczna jest ogólnodostępna i każdy może go zaimplementować w swoim programie czy sprzęcie. Dzięki temu stał się on bardzo popularny - dostępne są wersje tego protokołu dla wszystkich chyba platform. Jego największą zaletą jest fakt, że możliwe jest nawiązanie połączenia bez względu na to, jaki system operacyjny używany jest w komputerze.

Ujmując rzecz precyzyjniej, TCP/IP nie jest pojedynczym protokołem, ale zestawem kilkunastu protokołów, z których każdy jest przeznaczony do innych zadań. Wszystkie te protokoły używają jednak wspólnych komponentów do wysyłania i odbierania pakietów danych.

Dwa główne protokoły wchodzące w skład TCP/IP to Transmission Control Protocol i Internet Protocol (od nich właśnie wzięła się nazwa TCP/IP). Protokoły można podzielić ze względu na funkcje, do jakich są przeznaczone.

Transport. Poniższe protokoły używane są do przenoszenia danych pomiędzy systemami.

Kierowanie przepływem danych (ang. routing). Poniższe protokoły stworzono do adresowania danych tak, by jak najszybciej trafiły na miejsce przeznaczenia. Obsługują one również dzielenie większych porcji informacji na małe bloki.

Adresowanie. Poniższe protokoły obsługują adresowanie maszyn w sieci, zarówno poprzez numery IP, jak i nazwy symboliczne.

Usługi dla użytkowników. Do tych aplikacji użytkownicy mają bezpośredni dostęp.

TELNET. Pozwala na logowanie się do systemu z konsoli zdalnej.

Obsługa bramek sieciowych. Poniższe usługi pozwalają przekazywać informacje o kierowaniu danymi, informacje o statusie i obsługiwać przepływ danych w sieciach lokalnych.

Inne. Ważne usługi nie pasujące do żadnej z powyższych kategorii.

Choć od czasu do czasu zdarzają się uaktualnienia standardu TCP/IP poprawiające działanie dostępnych funkcji lub implementujące nowe usługi, kolejne wersje pozostają kompatybilne z poprzednimi.

Wymagania sprzętowe

W zasadzie można skonfigurować TCP/IP nawet bez karty sieciowej czy podłączenia do sieci, używając tak zwanej pętli zwrotnej (ang. loopback). Metoda ta pozwala na porozumiewanie się protokołu TCP/IP z innym oprogramowaniem bez opuszczania komputera. Tworzona jest po prostu pętla pomiędzy wyjściem i wejściem programu. Jest to metoda stosowana powszechnie do testowania konfiguracji TCP/IP, również niektóre programy wymagają pętli zwrotnej do poprawnej pracy. Sterownik pętli zwrotnej zawsze ma numer sieciowy 127.0.0.1.

Jeśli jednak chcesz podłączyć się do sieci, karta sieciowa jest niezbędna. W systemie Linux używane są karty Ethernet, zaprojektowane właśnie do obsługi protokołów TCP/IP. Często spotkasz się z określeniem pakiet (ang. pocket). Pakiet to pewna ilość danych i instrukcji sterujących, złożona razem przez protokół TCP/IP i przesyłana poprzez sieć. Wszystkie dane przed przesłaniem dzielone są na pakiety, a następnie ponownie łączone w miejscu przeznaczenia.

Większość kart Ethernet dostępnych dziś na rynku jest kompatybilna z systemem Linux, ale przed zakupem nowego sprzętu zawsze warto sprawdzić to w dokumentacji. Wszystkie popularniejsze karty sieciowe (włączając w to modele Plug-and-Play przeznaczone dla systemu Windows 95) współpracują z Linuxem, czasem jednak konieczne jest ręczne ustawienie numeru przerwania IRQ i adresu wejścia / wyjścia.

Jeżeli zamierzasz łączyć się z siecią przez telefon, wówczas nie potrzebujesz karty sieciowej, ale modemu kompatybilnego z usługą, której zamierzasz używać. Przykładowo, aby użyć protokołu SLIP (Serial Line Interface Protocol), potrzebujesz modemu pracującego z prędkością co najmniej 14400 kbps (protokół V.32bis).

Pliki konfiguracyjne

Załóżmy, że posiadasz typowy komputer PC i kartę Ethernet i chcesz skonfigurować je tak, by móc używać sieci opartej na TCP/IP. W większości takich przypadków podana poniżej procedura zadziała. Ze względu jednak na mnogość wersji Linuxa i możliwość potencjalnych konfliktów ze wszystkimi chyba urządzeniami w systemie, a także specyficzne wymagana niektórych kart, poniższy tekst powinien być traktowany tylko jako przewodnik.

Jeśli TCP/IP nie działa prawidłowo po skonfigurowaniu zgodnie z poniższymi wskazówkami, powinieneś uważnie przejrzeć jeszcze raz pliki konfiguracyjne i na podstawie komunikatów o błędach spróbować zlokalizować problem. W razie niepowodzenia pomocy możesz szukać w grupach dyskusyjnych poświęconych Linuxowi i w innych źródłach informacji.

Aby móc skonfigurować TCP/IP, powinieneś najpierw zainstalować oprogramowanie do obsługi sieci. Również jądro systemu musi obsługiwać sieć - jeśli tak nie jest, musisz je przekompilować (obsługa sieci instalowana jest domyślnie, ale jeśli instalacja systemu przebiegała w jakiś niestandardowy sposób, sieć może nie być zainstalowana).

Najpierw zajmiemy się konfigurowaniem karty sieciowej. Następnie przedstawimy modyfikacje tego procesu niezbędne przy konfigurowaniu połączenia modemowego.

Zanim zaczniesz

Zanim przystąpisz do modyfikowania plików systemowych, powinieneś poświęcić parę minut na znalezienie kilku informacji, które będą później potrzebne. Najlepiej zapisz je gdzieś na kartce, aby do różnych plików konfiguracyjnych nie wprowadzić przypadkiem różnych wartości.

Adres IP

Najpierw musisz poznać swój adres IP (nazywany również adresem internetowym). Na jego podstawie identyfikowany jest każdy komputer podłączony do sieci. 32-bitowy adres używany w sieciach opartych na protokole TCP/IP jest podzielony na cztery ośmiobitowe części, rozdzielone kropkami, na przykład 155.25.25.16 czy 147.23.145.2.

Dla wygody, adresy IP dzielą się na dwie części; pierwsza identyfikuje samą sieć, natomiast druga jest numerem komputera w danej sieci.

Jeśli chcesz samodzielnie podłączyć się do Internetu, musisz skontaktować się z Internet Network Information Center, instytucją, która przydziela numery IP tak, by się nie powtarzały (opierając się na wielkości sieci). Jeśli nie planujesz podłączenia do Internetu, możesz wybrać sobie dowolny adres IP.

Dla zapewnienia elastyczności adresy IP przydzielane są w zależności od wielkości sieci. Sieci dzielą się na trzy kategorie: A (jeden bajt jest adresem sieci, pozostałe trzy - adresem maszyny w podsieci, co oznacza, że podsieć może zawierać ponad 16 milionów komputerów), B (dwa bajty adresu sieciowego i dwa bajty adresu maszyny w podsieci - czyli ponad 65000 komputerów) i C (trzy bajty adresu sieciowego i jeden dla identyfikacji w podsieci, co oznacza, że w sieci może pracować do 254 komputerów, ponieważ numery 0 i 255 są zarezerwowane). Większość sieci to sieci klasy B i C.

Istnieją ograniczenia co do wartości pierwszego bajtu adresu: w sieci klasy A musi to być liczba z zakresu od 0 do 127, w sieci klasy B - od 128 do 191, a w sieci klasy C - od 192 do 223. Ograniczenie to spowodowane jest faktem, że starsze bity pierwszego bajtu adresu zawierają informacje o klasie sieci. Nie można również używać numerów 0 i 255, zarezerwowanych dla specjalnych celów.

Wiadomości przesyłane za pomocą protokołu TCP/IP zawierają w nagłówku adres IP zarówno komputera, który wysłał dane, jak i komputera, który ma je odebrać. Jeśli zamierzasz podłączyć się do istniejącej sieci, powinieneś dowiedzieć się, jakiego adresu możesz użyć. Jeśli budujesz własną sieć, którą zamierzasz podłączyć do Internetu, powinieneś skontaktować się z Network Information Center. Jeżeli jednak z Internetem i innymi sieciami zamierzasz łączyć się co najwyżej przez telefon, możesz wybrać sobie dowolny numer IP.

Jeśli konfigurujesz tylko sterownik pętli zwrotnej, w ogóle nie potrzebujesz numeru IP. Domyślną wartością jest wtedy 127.0.0.1.

Maska podsieci

Następnym numerem, który będzie potrzebny, jest maska podsieci. Znając numer IP łatwo go znaleźć samemu. Zamiast adresu sieci należy wpisać 255, a pozostałe bajty ustawić na 0. Przykładowo, jeśli chcesz podłączyć się do sieci klasy C, maska podsieci będzie miała postać 255.255.255.0. Dla sieci klasy B jest to 255.255.0.0, a dla klasy A - 255.0.0.0.

Jeśli konfigurujesz sterownik pętli zwrotnej, prawidłową maską jest 255.0.0.0.

Adres sieci

Adres sieci to - w zależności od klasy sieci - pierwszy bajt, dwa lub trzy pierwsze bajty adresu IP odpowiednio dla klas A, B i C. Na przykład jeśli łączysz się z siecią klasy B, a Twój numer IP to 147.120.43.31, to adresem sieci jest 147.120.0.0. Mówiąc ściśle, jest to wynik wykonania bitowej operacji AND na adresie IP i masce podsieci.

Aby otrzymać adres sieci z adresu IP, należy zastąpić w nim numer komputera zerami. Jeśli podłączasz się do sieci klasy C, a Twój adres IP to 201.12.5.23, adresem sieci będzie 201.12.5.0.

Przy konfigurowaniu pętli zwrotnej adres ten jest niepotrzebny.

Adres rozgłoszenia

Adres rozgłoszenia (ang. broadcast) jest używany wtedy, gdy pakiet danych ma trafić do wszystkich urządzeń podłączonych do sieci. Jest to adres sieci, w którym zera zamienione są na 255 (na przykład jeśli Twoim adresem IP jest 147.120.42.31, adres sieci jest równy 147.120.0.0, a adres rozgłoszenia - 147.120.255.255).

Przy konfigurowaniu pętli zwrotnej adres ten jest niepotrzebny.

Adres bramki sieciowej

Adres bramki to numer IP komputera, który jest skonfigurowany jako bramka łącząca sieć lokalną z inną siecią (np. Internet). Jeśli konfigurujesz własną sieć nie podłączoną do innych sieci, adres ten nie jest potrzebny.

Zwykle bramka ma taki sam numer IP jak Twój komputer, z tym że ostatni bajt ma wartość 1, np. jeśli Twój numer IP to 147.120.43.31, to numerem bramki jest prawdopodobnie 147.120.43.1. Taka konwencja przyjęła się już od pierwszych wersji protokołu TCP/IP.

Przy konfigurowaniu pętli zwrotnej adres ten jest niepotrzebny.

Adres serwera nazw

W wielu większych sieciach funkcjonuje komputer przeznaczony do tłumaczenia nazw symbolicznych na numery IP i odwrotnie. Zamiana taka dokonywana jest za pomocą systemu DNS (Domain Name System). Jeśli do Twojej sieci podłączone jest takie urządzenie, właśnie jego adres jest adresem serwera nazw. Jeśli to Twój komputer ma działać jako serwer nazw (co wymaga dodatkowych kroków konfiguracyjnych, nie opisanych tutaj), powinieneś podać numer sterownika pętli zwrotnej, czyli 127.0.0.1.

Przy konfigurowaniu pętli zwrotnej adres ten jest niepotrzebny, ponieważ komputer łączy się tylko sam ze sobą.

Konfigurowanie interfejsu pozornego

Interfejs pozorny jest sposobem na przydzielenie komputerowi numeru IP w przypadku, gdy korzysta on tylko z interfejsów SLIP i PPP. Interfejs pozorny rozwiązuje problem pojawiający się w systemach nie podłączonych na stałe do sieci, w których jedynym prawidłowym adresem IP, pod który można wysłać dane, jest 127.0.0.1. Chociaż za pomocą protokołów SLIP i PPP możesz połączyć się ze światem, to kiedy interfejs nie jest aktywny, nie posiadasz wewnętrznego adresu IP, którego mogłyby używać aplikacje.

Problem ten jest szczególne dokuczliwy, gdy trzeba używać aplikacji, które do swojego działania wymagają podania prawidłowego adresu IP. Przykładowo niektóre edytory tekstów czy narzędzia zarządzające pulpitem wymagają podania takiego adresu. Interfejs pozorny pozwala na ustawienie adresu IP dla Twojego komputera, który nie jest wykorzystywany do niczego oprócz oszukiwania aplikacji.

Konfigurowanie takiego interfejsu jest bardzo proste. Jeśli w pliku /etc/hosts jest wpisany adres IP komputera, wystarczy wydać polecenia:

ifconfig dummy nazwa_komputera
route add nazwa_komputera

Spowodują one utworzenie połączenia z Twoim własnym adresem IP. Jeśli wcześniej nie wpisałeś adresu IP do pliku /etc/hosts, musisz to najpierw zrobić.

Pliki konfiguracyjne - szczegóły

Konfiguracja systemu TCP/IP dla Linuxa nie jest trudna i polega w zasadzie na wpisaniu za pomocą dowolnego edytora tekstów odpowiednich adresów IP do kilku plików konfiguracyjnych. Przed wprowadzeniem zmian dobrze zrobić kopię zapasową modyfikowanych plików na wypadek problemów.

Pliki konfiguracyjne systemu TCP/IP są bardzo podobne we wszystkich systemach UNIX-owych, więc jeśli kiedykolwiek konfigurowałeś TCP/IP w UNIX-ie, nie znajdziesz w tym rozdziale nic nowego. Jeśli jest to Twój pierwszy raz - po prostu postępuj zgodnie z podanymi niżej wskazówkami.

Pliki rc

Pliki rc (ang. run command) są przetwarzane podczas uruchamiania systemu. Proces ten kontrolowany jest przez program init. Zwykle za ich pośrednictwem uruchamiane są procesy obsługujące pocztę, drukarki itp. Tu również następuje inicjalizacja połączeń TCP/IP. W większości systemów linuxowych pliki rc znajdują się w katalogu /etc/rc.d.

Informacje dotyczące konfiguracji TCP/IP zapisane są w dwóch plikach: rc.inet1 (w nim ustawiane są parametry sieci) i rc.inet2 (tu uruchamiane są programy rezydentne obsługujące TCP/IP). W niektórych systemach pliki te połączone są w jeden większy plik o nazwie rc.inet lub rc.net.

Zanim zaczniesz modyfikować dane zapisane w tych plikach, najpierw upewnij się, że są one faktycznie wczytywane przez program init. Jest tak, jeśli w pliku /etc/inittab lub /etc/rc.d/rc.M znajdują się polecenia nakazujące odczytanie tych plików.

Niektóre wersje Linuxa do uruchamiania programów obsługujących TCP/IP używają tylko pliku /etc/inittab, w innych zaś w pliku tym znajduje się polecenie wywołujące plik /etc/rc.d/rc.M (jeśli uruchamiany jest tryb wielodostępny), w którym zapisane są odpowiednie informacje. W takim przypadku protokół TCP/IP nie jest uruchamiany w trybie administracyjnym.

Jeśli odpowiednie wpisy w którymś z powyższych plików za pomocą symbolu # na początku wiersza zaznaczone są jako komentarz - powinieneś usunąć ten symbol. Przykładowe wpisy w pliku rc.M mogą wyglądać tak:

/bin/hostname `cat /etc/HOSTNAME | cut -f1 -d .`
/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2

Jeśli w pliku /etc/inittab nie znajdziesz odniesienia do pliku rc.inet lub odniesienia do pliku, w którym znajduje się polecenie przetwarzania tego pliku (na przykład /etc/rc.d/rc.M w dystrybucji Slackware), musisz sam dopisać odpowiednie polecenia. Pamiętaj, że modyfikujesz jedne z najważniejszych plików w systemie, więc wykonaj ich kopię zapasową, najlepiej na dyskietce startowej.

Zwykle w plikach inicjalizacyjnych zawarta jest spora liczba komentarzy, znacznie ułatwiających konfigurację, na przykład takich:

#IPADR="127.0.0.1"
#NETMASK=""
#NETWORK="127.0.0"
#BROADCAST=""
#GATEWAY=""

W takim przypadku wystarczy usunąć znaki # i wpisać odpowiednie numery. Jeśli któryś z wpisów nie jest Ci potrzebny (na przykład numer bramki internetowej), po prostu pozostaw w odpowiednim wierszu symbol komentarza.

W pliku rc.inet1 występują też odwołania do programów ifconfig i route. ifconfig jest programem służącym do konfigurowania interfejsów sieciowych, natomiast route jest używany do określania drogi przesyłania danych. Odwołania do tych programów konfigurujące sterownik pętli zwrotnej powinny mieć następującą postać:

/sbi/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0

Żaden z tych wierszy nie może być zaznaczony jako komentarz. Sterownik pętli zwrotnej musi być skonfigurowany, aby system TCP/IP mógł działać prawidłowo.

Poniżej tych wpisów prawdopodobnie znajduje się dość spora liczba wierszy zaznaczonych jako komentarz, służących do konfigurowania interfejsów sieciowych. Na początek spróbuj usunąć symbol komentarza z wiersza wyglądającego mniej więcej tak:

/etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}

Jeśli spowoduje to problemy podczas uruchamiania systemu, spróbuj zamiast niego użyć wpisu

/etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK}

eth0 to etykieta pierwszej karty Ethernet w systemie.

Na koniec, jeśli w sieci działa bramka internetowa, znajdź odpowiednie wiersze i wpisz tam jej adres. Zanim to jednak zrobisz, warto upewnić się, że wszystko inne jest skonfigurowane poprawnie - o wiele łatwiej jest znaleźć błąd w konfiguracji, jeśli bramka sieciowa nie jest używana.

W pliku rc.inet2 znajdują się polecenia uruchamiające programy obsługi TCP/IP. W większości przypadków nie powinieneś go modyfikować. Możesz sprawdzić, czy wiersz wywołujący program inetd nie jest zaznaczony jako komentarz. Odpowiedni fragment będzie prawdopodobnie wyglądał tak:

if [-f ${NET}/inetd
then
echo -n " inetd"
${NET}/inetd
else
echo" no INETD found. INET cancelled."
exit 1
fi

Jeśli przeczytałeś rozdział 14. „Programowanie w języku powłoki” albo wiesz coś o programowaniu w innych językach, łatwo zrozumiesz, o co chodzi w powyższym fragmencie. Powoduje on sprawdzenie, czy w systemie znajduje się program inetd, jeśli tak - program ten zostaje uruchomiony. Jeśli odpowiedniego pliku nie ma, generowany jest komunikat o błędzie i dalsza część pliku nie jest przetwarzana.

Inne programy, takie jak named czy routed, nie są wymagane do poprawnej pracy TCP/IP. Jeśli nie jesteś pewny, czy chcesz korzystać z oferowanych przez nie możliwości, możesz ich nie załączać.

Możesz jeszcze chcieć uruchomić program syslogd, który potrafi zapisać do pliku wszystkie komunikaty generowane przez programy rezydentne (co ułatwia znajdowanie ewentualnych błędów). Ścieżka dostępu do pliku, w którym rejestrowane będą komunikaty, określana jest w pliku /etc/syslog.conf.

Omówiliśmy już wszystkie modyfikacje, które należy wprowadzić do plików rc. Po zainstalowaniu i przetestowaniu systemu TCP/IP możesz kolejno załączać pozostałe programy, takie jak routed, named itd.

/etc/hosts

W pliku /etc/hosts znajduje się lista adresów IP i nazw symbolicznych, które się do nich odnoszą. Jest to dobre miejsce na wpisanie danych o najczęściej odwiedzanych serwerach - dzięki temu zamiast numerami IP można będzie posługiwać się ich nazwami. W małych sieciach można tu wpisać dane o wszystkich maszynach - nie trzeba będzie wówczas używać programu named.

W pliku /etc/hosts musi znajdować się wpis odpowiadający komputerowi lokalnemu - localhost (czasem również ma on nazwę loopback; odpowiada mu adres 127.0.0.1), prawdopodobnie jest tam również wpis z nazwą Twojego komputera (jeśli nadałeś mu nazwę podczas instalacji oprogramowania). Nie trudź się wpisywaniem zbyt wielu nazw dopóki nie jesteś pewny, że TCP/IP pracuje prawidłowo. Oto przykładowa zawartość pliku /etc/hosts:

127.0.0.1 localhost
147.12.2.42 merlin.tpci merlin

Jak widać, format wpisów jest prosty: najpierw numer IP, następnie nazwa, oddzielona od numeru tabulatorem. Można podać więcej niż jedną nazwę komputera. W powyższym przykładzie komputer o nazwie merlin jest częścią sieci o nazwie tpci, przewidziano więc również możliwość zaadresowania go jako merlin.tpci.

Bardziej rozbudowana wersja tego pliku może mieć postać:

127.0.0.1 localhost
147.12.2.42 merlin.tpci merlin
147.12.2.43 wizard.tpci wizard
147.12.2.44 arthur.tpci arthur komp_michala

W powyższym przykładzie zdefiniowanych jest kilka nazw komputerów działających w obrębie jednej sieci (posiadających takie same numery sieci). Jeden z komputerów dostępny jest pod trzema różnymi nazwami.

Jeśli używasz tylko sterownika pętli zwrotnej, jedynym wpisem w pliku /etc/hosts powinien być numer 127.0.0.1 z nazwą localhost i ewentualne nazwą Twojego komputera.

/etc/networks

W pliku /etc/networks znajduje się adres sieci lokalnej i adresy sieci, z którymi często się łączysz. Plik ten jest używany przez program route, uruchamiany w pliku rc.inet1. Dzięki niemu zamiast używać adresu sieci można podać jej nazwę, np. zamiast wpisywać 149.23.24 wpisać po prostu siec_wojtka.

W pliku /etc/networks powinny znaleźć się wpisy dla każdej sieci, dla której będziesz używał polecenia route. W przeciwnym przypadku generowane będą komunikaty o błędach, a sieć nie będzie działała prawidłowo.

Poniżej przedstawiamy przykładową zawartość pliku /etc/networks. Pamiętaj, że adresy sieci zawierają tylko jeden, dwa lub trzy pierwsze bajty (zależnie od wielkości sieci), pozostałe bajty są równe zero. W pliku /etc/networks znajdować się musi przynajmniej wpis loopback i localnet.

loopback 127.0.0.0
localnet 147.13.2.0
siec_wojtka 197.32.1.0
big_net 12.0.0.0

/etc/host.conf

Dane zapisane w pliku /etc/host.conf decydują o sposobie, w jaki nazwy symboliczne tłumaczone są na numery IP. Zwykle zawiera on dwa wiersze:

order hosts, bind
multi on

Mówią one, że przy tłumaczeniu nazw najpierw należy sprawdzić plik /etc/hosts, a następnie szukać pomocy w serwerze nazw (jeśli taki istnieje w sieci). Wpis multi pozwala na użycie więcej niż jednego numeru IP dla danego komputera (ma to zastosowanie w przypadku używania bramki internetowej lub w przypadku komputerów podłączonych jednocześnie do kilku sieci).

Jeśli zawartość pliku /etc/host.conf jest taka, jak pliku przykładowego, nie trzeba go modyfikować.

resolv.conf

Plik resolv.conf jest używany przez program tłumaczący nazwy. Zawiera on adres serwera nazw i nazwę Twojej domeny (jeśli taką posiadasz - a musisz posiadać, jeśli jesteś podłączony do Internetu).

Plik resolv.conf dla systemu merlin.tpci.com (dla którego nazwą domeny jest tpci.com) może na przykład zawierać następujący wiersz:

domain tpci.com

Jeżeli w sieci działa serwer nazw, w pliku tym powinien również znaleźć się wpis zawierający jego numer IP:

domain tpci.com
nameserver 182.23.12.4

Jeśli w sieci działa kilka serwerów nazw (co często zdarza się w większych sieciach), każdy z nich powinien być wpisany w osobnym wierszu.

Jeżeli Twój system nie posiada nazwy domenowej, nie musisz przejmować się tym plikiem.

/etc/protocols

W systemach UNIX-owych plik /etc/protocols używany jest do identyfikacji i znajdowania numerów wszystkich dostępnych w systemie protokołów transmisji danych (każdemu z protokółów przypisany jest inny numer, ale nie jest to w tej chwili istotne). Ten plik zwykle nie wymaga modyfikacji; jest on aktualizowany automatycznie podczas instalacji oprogramowania. Poniżej zamieszczamy przykładową zawartość takiego pliku:

# Internet protocols (IP)
ip 0 IP
icmp 1 ICMP
ggp 3 GGP
tcp 6 TCP
egp 8 EGP
pup 12 PUP
udp 17 UDP
hello 63 HELLO

Jeśli w Twoim systemie plik ten wygląda nieco inaczej, nie jest to powód do zmartwień. Nie trzeba go modyfikować, ale warto wiedzieć, jakie informacje zawiera.

/etc/services

W pliku /etc/services przechowywane są dane o wszystkich dostępnych usługach sieciowych. Jego również nie należy edytować.

Plik ten składa się z wpisów o formacie nazwa_usługi numer_portu/protokół [inne_ nazwy ...], na przykład:

# network services
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail mailx
tftp 69/udp
# specific services
login 513/tcp
who 513/udp whod

Choć nie trzeba modyfikować zawartości tego pliku, powinieneś orientować się, jakiego typu informacje on zawiera - pozwoli Ci to nieco lepiej zrozumieć zasadę działania systemu TCP/IP.

/etc/hostname lub /etc/HOSTNAME

W pliku /etc/hostname lub /etc/HOSTNAME (zależnie od systemu) przechowywana jest nazwa systemu, na przykład:

merlin.tpci

I to wszystko. Nazwa systemu używana jest przez większość protokołów i wiele aplikacji, więc ważne jest jej prawidłowe ustawienie. Można ją zmienić modyfikując zawartość tego pliku i ponownie uruchamiając komputer, ale w większości systemów dostępny jest specjalny program służący do tego celu.

W systemie Linux dostępny jest program hostname, który wyświetla aktualną nazwę systemu, oraz uname, który uruchomiony z opcją -n wyświetla nazwę węzła:

$ hostname
merlin.tpci.com
$ uname -n
merlin

W niektórych wersjach Linuxa polecenie hostname wyświetla tylko nazwę komputera, nie dołączając nazwy domeny. Omówiliśmy już wszystkie pliki, które są istotne z punktu widzenia konfiguracji TCP/IP. Możesz teraz zresetować komputer i sprawdzić, czy wszystko działa jak należy.

Testowanie konfiguracji
i rozwiązywanie problemów

Przyjrzyj się dokładnie informacjom wyświetlanym przy uruchamianiu systemu. Jeśli zauważysz komunikaty o błędach, pomogą Ci one w zlokalizowaniu problemu. Jeśli nie wystąpią żadne problemy, wyświetlone zostaną komunikaty o ładowaniu poszczególnych programów obsługi TCP/IP.

Polecenie netstat

Za pomocą programu netstat łatwo sprawdzić, czy konfiguracja TCP/IP jest poprawna. Program ten wyświetla informacje o statusie połączeń sieciowych. Jest to najczęściej używanym program do diagnozowania problemów z TCP/IP.

Oprócz wymienionych niżej opcji tego programu, dostępnych jest jeszcze wiele innych - jeśli chcesz dowiedzieć się on nich czegoś więcej, zajrzyj na strony man lub do jakiejś dobrej książki na temat pracy w systemach UNIX-owych.

Wyświetlanie danych o połączeniach

Polecenie netstat bez żadnych parametrów wyświetla informacje o wszystkich aktywnych połączeniach (bez względu na to, czy aktualnie odbywa się przez nie transmisja danych). Aby wyświetlić dane również o połączeniach biernych, użyj opcji -a.

Dane wyjściowe programu netstat wyświetlane są w kolumnach o nazwach: Proto (typ protokołu), Recv-Q i Send-Q (ilość danych odebranych i wysłanych), Local Address (adres lokalny), Foreign Address (adres zdalny) oraz state - aktualny stan połączenia. Oto fragment takich danych:

merlin> netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
ip 0 0 *.* *.*
tcp 0 2124 tpci.login oscar.1034 ESTABL.
tcp 0 0 tpci.1034 prudie.login ESTABL.
tcp 11212 0 tpci.1035 trejis.1036 ESTABL.
tcp 0 0 tpci.1021 reboc.1024 TIME_WAIT
tcp 0 0 *.1028 *.* LISTEN
tcp 0 0 *.* *.* CLOSED
udp 0 0 localhost.1036 localhost.syslog
udp 0 0 *.1034 *.*
udp 0 0 *.* *.*
udp 0 0 *.* *.*

W powyższym przykładzie widać trzy aktywne połączenia (ich status jest oznaczony jako ESTABL.), przez jedno z nich wysyłane są dane (wartość większa od zera w kolumnie Send-Q). Gwiazdka oznacza, że dla danego adresu nie odnaleziono jeszcze punktu końcowego.

Statystyki interfejsu sieciowego

Za pomocą polecenia netstat -i można sprawdzić, jak ogólnie zachowuje się interfejs sieciowy (i na przykład sprawdzić działanie karty sieciowej).

Polecenie to wyświetla nazwę interfejsu, maksymalną liczbę znaków, jaką może zawierać pakiet (MTU), liczbę pakietów odebranych bez błędów (RX-OK), liczbę pakietów odebranych z błędami (RX-ERR), liczbę pakietów odrzuconych (RX-DRP) i liczbę pakietów, które nie mogły być odebrane (RX-OVR). Takie same dane są dostępne dla pakietów wysyłanych. Poniżej przedstawiamy przykładowy wynik działania tego polecenia:

merlin> netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP
* TX-OVR Flags
lo 2000 0 0 0 0 0 12 0 0 0
* BLRU
eth0 1500 0 218 0 0 0 144 0 0 0
* BRU

Tablica kierowania przepływem danych (routing table)

Tablice kierowania przepływem danych są uaktualniane w sposób ciągły w oparciu o dane dotyczące połączeń z innymi komputerami. Jeśli chcesz uzyskać informacje o nich (o ile są dostępne w Twoim systemie), powinieneś wydać polecenie netstat -r.

W poszczególnych kolumnach wyświetlone zostaną dane o maszynie docelowej, adres bramki, która zostanie użyta do przesłania danych, znacznik, czy dana droga jest aktywna (U) i czy prowadzi do bramki (G) czy komputera (H), licznik odniesień (Refs) pokazujący, ile aktywnych połączeń może korzystać z danej drogi równocześnie, liczbę pakietów przesłanych do tej pory daną drogą (Use) i nazwę używanego interfejsu.

merlin> netstat -r
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.255.0.0 U 0 0 262 eth0
loopback * 255.0.0.0 U 0 0 12 lo
default * 0.0.0.0 U 0 0 0 eth0

ping

Program ping (ang. Packet Internet Groper) używany jest do wysyłania i odbierania pakietów danych po to, by upewnić się, że połączenie jest aktywne. Jeśli komputer docelowy odbierze pakiet, w którym znajduje się żądanie odpowiedzi, natychmiast wysyła odpowiedź do Twojego komputera.

System, w którym uruchomiony jest program ping nie przestaje wysyłać pakietów aż do przerwania działania programu (na przykład kombinacją klawiszy Control+c). Po przerwaniu jego działania wyświetlane jest krótkie podsumowanie. Oto przykładowy wynik działania polecenia ping:

prudie> ping merlin
PING merlin: 64 data bytes
64 bytes from 142.12.120.12: icmp_seq=0, time=20. ms
64 bytes from 142.12.120.12: icmp_seq=1, time=10. ms
64 bytes from 142.12.120.12: icmp_seq=2, time=10. ms
64 bytes from 142.12.120.12: icmp_seq=3, time=20. ms
64 bytes from 142.12.120.12: icmp_seq=4, time=10. ms
64 bytes from 142.12.120.12: icmp_seq=5, time=10. ms
64 bytes from 142.12.120.12: icmp_seq=6, time=10. ms
--- merlin PING Statistics ---
7 packets transmitted, 7 packets received, 0% packet loss
round-trip - min/avg/max = 10/12/20

Jeśli ping nie był w stanie połączyć się z komputerem docelowym, wyświetlane są komunikaty o błędach. Można również wywołać polecenie ping localhost, które pokaże, czy sterownik pętli zwrotnej jest skonfigurowany prawidłowo.

Program ping jest przydatny, ponieważ podaje cztery ważne informacje: czy oprogramowanie TCP/IP działa prawidłowo, czy urządzenia sieciowe może być prawidłowo zaadresowane, czy można połączyć się z komputerem zdalnym (testując adresowanie i kierowanie danych) oraz weryfikuje działanie odpowiedniego oprogramowania w systemie zdalnym.

Podsumowanie

W tym rozdziale dowiedziałeś się, jak zainstalować, skonfigurować i przetestować połączenie Ethernet z Twoim komputerem. Następny rozdział omawia protokoły SLIP i PPP, używane w wielu systemach do łączenia się z Internetem. Ostatnim protokołem używanym w systemie Linux jest UUCP (UNIX-to-UNIX Copy), który jest omówiony w rozdziale „UUCP”.

Jeśli zamierzasz zbudować sieć łączącą kilka komputerów, na pewno nie będziesz miał z tym większych kłopotów. Jeśli posiadasz dwa komputery, wygodne i wydajne jest połączenie systemu Linux z komputerem pracującym pod kontrolą systemu DOS czy Windows (pod warunkiem, że zainstalujesz w nim oprogramowanie TCP/IP).

Możesz teraz przejść do następnego rozdziału, przedstawiającego interfejsy SLIP i PPP, lub też przejść do innych tematów.

Jeśli chcesz dowiedzieć się, jak powinna być skonfigurowana sieć, abyś mógł czuć się w niej bezpiecznie, przejdź do rozdziału 42. „Bezpieczeństwo w sieci”.

Jak skonfigurować NFS, NIS i YP, dowiesz się z rozdziału 43. „NFS” i 44., „NIS oraz YP”.

O konfigurowaniu węzła internetowego pracującego pod kontrolą systemu Linux możesz przeczytać w rozdziale 47. „Konfigurowanie węzła internetowego”.

602 Część VI Linux dla administratorów

602 E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\37.DOC

E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\37.DOC 601

Rozdział 37. Praca w sieci 601



Wyszukiwarka