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

Podobne dokumenty