Linux NET-3-HOWTO, Linux w sieci
Terry Dawson, VK2KTJ, terry@perf.no.itg.telstra.com.au v1.0,
22 luty 1997 wersja polska piotr.pogorzelski@ippt.gov.pl
w1.0, kwiecień 1997 wersja polska - korekta Basia Głowacka
jastra@gdansk.sprint.pl w1.1, grudzień 2001
Obsługa sieci w jądrze systemu Linux została napisana niemal od zera.
Osiągi sieci tcp/ip w najnowszych wersjach jądra sprawiają, że Linux
staje się godną uwagi alternatywą dla innych, dominujących w tej
dziedzinie systemów. Naszym celem jest opisanie w jaki sposób zain
stalować i skonfigurować oprogramowanie sieciowe, oraz różne inne
narzędzia pomagające w obsłudze sieci.
______________________________________________________________________
Spis treści
1. Zmiany w stosunku do poprzedniej wersji
2. Wprowadzenie.
2.1 Uwagi na temat tego dokumentu
3. Jak korzystać z tego dokumentu (NET-3-HOWTO-HOWTO ?).
4. Informacje ogólne na temat pracy Linuksa w sieci.
4.1 Krótka historia rozwoju modułów sieciowych jądra Linuksa.
4.2 Skąd zdobyć inne informacje na temat zastosowań sieciowych Linuksa.
4.3 Skąd zdobyć inne, nie związane z Linuksem informacje na temat technik sieciowych.
5. Podstawowe informacje na temat konfigurowania sieci.
5.1 Czego potrzebuję aby rozpocząć?
5.1.1 Aktualne źródła jądra.
5.1.2 Aktualne narzędzia sieciowe.
5.1.3 Programy-aplikacje sieciowe.
5.1.4 Adresy.
5.2 Gdzie umieścić polecenia konfiguracyjne ?
5.3 Tworzenie interfejsów sieciowych.
5.4 Konfiguracja interfejsu sieciowego.
5.5 Konfiguracja resolvera nazw.
5.5.1 Co to jest nazwa?
5.5.2 Jakie informacje będą niezbędne.
5.5.3 /etc/resolv.conf
5.5.4 /etc/host.conf
5.5.5 /etc/hosts
5.6 Konfiguracja interfejsu pętli zwrotnej
5.7 Trasowanie (routing).
5.7.1 Do czego służy program
5.8 Konfiguracja serwerów i usług sieciowych.
5.8.1 (TT
5.8.1.1 Przykład pliku
5.8.2 (TT
5.8.2.1 Przykład pliku
5.9 Inne pliki konfiguracyjne związane z siecią.
5.9.1 (TT
5.9.2 (TT
5.10 Bezpieczeństwo sieciowe i sterowanie dostępem.
5.10.1 /etc/ftpusers
5.10.2 /etc/securetty
5.10.3 Mechanizm sterowania dostępem pakietu
5.10.3.1 /etc/hosts.allow
5.10.3.2 /etc/hosts.deny
5.10.4 /etc/hosts.equiv
5.10.5 Prawidłowa konfiguracja demona
5.10.6 Firewalle.
5.10.7 Inne sugestie.
6. Informacje specyficzne technologii sieciowej
6.1 ARCNet
6.2 Appletalk (
6.2.1 Konfiguracja oprogramowania Appletalk.
6.2.2 Eksportowanie plików Linuksa przez Appletalk.
6.2.3 Udostępnianie twojej drukarki pod Linuksem w sieci Appletalk.
6.2.4 Uruchamianie oprogramowania Appletalk.
6.2.5 Test oprogramowania Appletalk.
6.2.6 Uwagi na temat korzystania z oprogramowania Appletalk.
6.2.7 Więcej informacji
6.3 ATM
6.4 AX25 (
6.5 DECNet
6.6 EQL - multiple line traffic equaliser
6.7 Ethernet
6.8 FDDI
6.9 Frame Relay
6.10 Zliczanie ruchu (IP Accounting)
6.11 IP Aliasing
6.12 Filtrownie pakietów (IP Firewalling)
6.13 IPX (
6.14 IPv6
6.15 ISDN
6.16 IP Masquerade
6.17 IP Transparent Proxy
6.18 Mobile IP
6.19 Multicast
6.20 NetRom (
6.21 PLIP
6.21.1 Schemat kabla do połączenia PLIP.
6.22 PPP
6.22.1 Utrzymywanie za pomocą
6.23 Rose protocol (
6.24 SAMBA - `NetBEUI', `NetBios' support.
6.25 Klient protokołu SLIP
6.25.1 dip
6.25.2 slattach
6.25.3 Kiedy używać każdego z tych programów ?
6.25.4 Statyczny serwer SLIP z linią modemową i programem DIP.
6.25.5 Dynamiczny serwer SLIP z linią modemową i programem DIP.
6.25.6 Korzystanie z programu dip.
6.25.7 Stałe połączenie SLIP przez linię dzierżawioną - slattach.
6.26 Serwer SLIP.
6.26.1 Serwer korzystający z programu
6.26.1.1 Skąd wziąć
6.26.1.2 Konfiguracja pliku
6.26.1.3 Konfiguracja pliku
6.26.1.4 Konfiguracja pliku
6.26.1.5 Konfiguracja pliku
6.26.1.6 Konfiguracja pliku
6.26.2 Serwer SLIP korzystający z programu
6.26.2.1 Konfiguracja pliku
6.26.3 Serwer SLIP korzystający z pakietu
6.27 Obsługa protokołu STRIP (Starmode Radio IP)
6.28 Token Ring
6.29 X.25
6.30 WaveLan Card
7. Kable i okablowanie
7.1 Szeregowy kabek bezmodemowy (Serial NULL Modem cable)
7.2 Kabel portu równoległego (kabel PLIP)
7.3 Okablowanie ethernetowe 10base2 (cienki koncentryk)
7.4 Skrętka (Twisted Pair Ethernet Cable)
8. Spis stosowanych terminów
9. Linux u dostawców Internetu ?
10. Podziękowania
11. Copyright.
12. Od tłumacza
13. Od korektorki
______________________________________________________________________
11.. ZZmmiiaannyy ww ssttoossuunnkkuu ddoo ppoopprrzzeeddnniieejj wweerrssjjii
Dodatki:
mnóstwo.
Poprawki/uaktualnienia:
wszystko.
22.. WWpprroowwaaddzzeenniiee..
Oryginalny dokument NET-FAQ, napisy przez Matta Welsha w celu zebrania
odpowiedzi na najczęściej zadawane pytania na temat pracy Linuksa w
sieci, powstał zanim ktokolwiek myślał o Projekcie Dokumentacji
Linuksa (LDP). Dokument dotyczył bardzo wczesnych wersji rozwojowych
modułów sieciowych jądra. Został zastąpiony przez NET-2-HOWTO, jeden z
oryginalnych doumentów projektu LDP. Opisywał oprogramowanie sieciowe
znane pod nazwą "wersja 2." i "wersja 3.". W tym dokumencie opisujemy
jedynie moduły sieciowe jądra w "wersji 3".
Poprzednie wersje tego dokumentu osiągnęły ogromne rozmiary, ze
względu na wielką ilosć materiału, którego dotyczyły. Była to jedna z
przyczyn powstania kilku innych dokumentów HOWTO opisujących
specyficzne problemy związane z siecią. Wszędzie gdzie będzie to
możliwe, będziemy odwoływać się do tych dokumentów i opisywać
problemy, które jeszcze nie posiadają własnych dokumentów.
22..11.. UUwwaaggii nnaa tteemmaatt tteeggoo ddookkuummeennttuu
Zawsze doceniam wszelkie uwagi, szczególnie wartościowe wnioski.
Proszę kierujcie je bezpośrednio do mnie email
.
33.. JJaakk kkoorrzzyyssttaaćć zz tteeggoo ddookkuummeennttuu ((NNEETT--33--HHOOWWTTOO--HHOOWWTTOO ??))..
Format tego dokumentu różni się od poprzednich wersji. Przegrupowałem
podrozdziały, tak aby materiał opisowy zgromadzony na początku
dokumentu mogł zostać przez czytalnika pominięty. Po nim występuje
ogólny opis zagadnień sieciowych, informacje, które trzeba zrozumieć
zanim przejdzie się do ostatniej części dokumentu - technicznej
dokuemntacji stosowanej technologii.
PPrrzzeecczzyyttaajj rroozzddzziiaałłyy ooggóóllnnee
Informacje tutaj podane odnoszą nię niemal do wszystkich
poźniejszych części dokumentu i są niezbędne do ich zrozumienia.
ZZaassttaannóóww ssiięę nnaadd sswwoojjąą ssiieecciiąą
Powinieneś wiedzieć jak jest (lub będzie) zbudowana twoja sieć,
dokładnie jaki sprzęt i technologie są (będą) wykorzystywane.
PPrrzzeecczzyyttaajj rrooddzziiaałłyy ooppiissuujjąąccee wwyykkoorrzzyyssttyywwaannee pprrzzeezz cciieebbiiee
technologie" Gdy już wiesz co cię konkretnie interesuje,
zapoznaj się z wybranymi rozdziałami. Znajdziesz tam szczegóły
dotyczące opisywanej technologii.
WWyykkoonnaajj kkoonnffiigguurraaccjjee ssiieeccii
Powinieneś spróbować skonfigurować sieć uważnie notując
wszystkie napotkane problemy.
JJeeśśllii ppoottrrzzeebbuujjeesszz ppoosszzuukkaajj ddaallsszzeejj ppoommooccyy
Jeśli napotkasz problemy, w rozwiązaniu których niniejszy
dokument nie będzie pomocny, wtedy zapoznaj się z rozdziałem
poświęconym znajdowaniu dalszej pomocy i zgłaszaniu znalezionych
błędów.
BBaaww ssiięę ddoobbrrzzee!!
Sieć to dobra zabawa, ciesz się nią.
44.. IInnffoorrmmaaccjjee ooggóóllnnee nnaa tteemmaatt pprraaccyy LLiinnuukkssaa ww ssiieeccii..
44..11.. KKrróóttkkaa hhiissttoorriiaa rroozzwwoojjuu mmoodduułłóóww ssiieecciioowwyycchh jjąąddrraa LLiinnuukkssaa..
Opracowanie zupełnie nowej implementacji protokołu tcp/ip, pracująego
równie dobrze jak inne istniejące implementacje nie było łatwym
zadaniem. Decyzja aby napisać wszystko od zera została podjęta w
czasie gdy istniała niepewność, że istniejące implementacje mogą
zostać zaprzepaszczone przez restrykcyjne licencje, z powodu toczącej
się sprawy sądowej rozpoczętej przez U.S.L. i w momencie gdy sieć była
przepełniona świeżym entuzjazmem aby zrobić to inaczej, a być może
nawet lepiej niż zostało do tej pory zrobione.
Pierwszym ochotnikiem przewodzenia w pracach nad rozwojem modułów
jądra do obsługi sieci był Ross Biro . Wykonał
prostą i niepełną, lecz w większości przypadków działającą
implementacje podstawowych procedur, uzupełnionych przez procedury
sterownika karty sieciowej ethernet WD-8003. To wystarczyło, aby
przyciągnąć rzeszę ludzi, umożliwić im testowanie i eksperymentowanie.
Niektórm udało się nawet doprowadzić do włączenia swoich komputerów do
Internetu.
Nacisk społeczności Linuksowej na rozwój obsługi sieci przez jądro
wciąż wzrastał. Gdy korzyści i stysfakcja z wykonywanej pracy
przestały rekompensować w wystarczającym stopni poświecenia i
odpieranie rosnących nacisków, Ross zrezygnował z roli prowadzącego
budowę oprogramowania sieciowego. Jego wysiłki poświęcone na
stworzenie w tak burzliwych czasach czegoś użytecznego stały się
katalizatorem przyszłych prac i należy je zaliczyć do najważniejszych
czynników, które przyczyniły się do osiągnięcia sukcesu.
Orest Zborowski dołączył do jądra oryginalny interfejs
programistyczny gniazd BSD. Był to ogromny krok naprzód, ponieważ
umożliwiał proste przenoszenie na Linuksa wielu istniejących programów
sieciowych, bez konieczności ich nadmiernej modyfikacji.
Mniej więcej w tym samym czasie Laurence Culhane
opracował pierwszy sterownik protokołu SLIP.
Wiele osób, które nie posiadały dostępu do sieci Ethernetowych
otrzymało możliwość eksperymentowania z nowym oprogramowaniem
sieciowym. Ponownie część osób wykorzystała te oprogramowanie do
przyłączania się do Internetu. W ten sposób uzmysłowili reszcie jakie
możliwości otworzyłyby się przed Linuksem, gdyby tylko posiadał pełną
obsługę sieci. Zwiększyło również liczbę osób aktywnie
wykorzystujących i eksperymentujących z istnejącym oprogramowaniem.
Jednym z ludzi, który równie aktywnie pracował nad zbudowaniem modułów
obsługi sieci w jądrze Linuksa był Fred van Kempen
. Po krótkim okresie niepewności wywołanym
rezygnacją Rossa Biro z prowadzenia projektu, Fred zaoferował swój
czas i umiejętności, i przyjął tę rolę w zasadzie bez żadnych
sprzeciwów. Fred miał ambitne plany na temat kierunków rozwoju
oprogramowania obsługi sieci w jądrze Linuksa i aktywnie je
realizował. Stworzył oprogramowanie znane pod nazwą NET-2
(oprogramowanie Rossa nosiło nazwę NET), z którego wielu ludzi
korzystało przez długi czas. Fred wprowadził wiele inowacji do
programu rozwoju oprogramowania, dynamiczny interfejs urządzeń,
obsługę protokołu AX.25 (Amateur Radio) i bardziej modułowe
implementacje obsługi funkcji sieciowych. Oprogramowanie NET-2 było
wykorzystywane przez stale rosnącą grupę ludzi, w miarę jak świat
dowiadywał się, że coś takiego istnieje. Oprogramowanie sieciowe nadal
było rozpowszechniane w postaci łatek do standardowej dystrybucji
jądra i przez długi czas nie było rozpowszechniane razem z jądrem
Linuksa. NET-FAQ i późniejszy NET-2-HOWTO opisywały całkiem
skomplikowana procedurę uruchomienia sieci pod Linuksem. Fred
skoncentrował się na wprowadzaniu nowości do standardowej
implementacji sieci, a to zabierało czas. Społeczność użytkowników
zaczynała się niecierpliwić oczekując na coś co działałoby bezbłędnie
i zadawalałoby 80% z nich. I podobnie jak w przypadku Rossa, naciski
na Freda, jako koordynatora projektu cały czas wzrastały.
Alan Cox zaproponował rozwiązanie
zaistniałej sytuacji. Zaproponował, że weźmie kod napisany przez Freda
i przetestuje go. W ten sposób zapewni jego stabilność
satysfakcjonując grono niecerpliwych użytkowników, uwalniając tym
samym Freda od licznych nacisków i umożliwiając mu dalszą pracę nad
rozwojem oprogramowania. Tak też zrobił, co zakończyło się pełnym
sukcesem. Pierwsza wersja oprogramowania stworzona przez Alana nosiła
nazwę NET-2D (Debugged - odpluskwiony). Oprogramowanie pracowało
stabilnie w większości standardowych konfiguracji i większość
użytkowników była wreszcie szczęśliwa. Alan bez wątpienia posiadał
umiejętności i pomysły, które chciał zrealizować ku pożytkowi całej
społeczności Linuksa. Następstwem było wiele dyskusji na temat
kierunków rozwoju oprogramowania sieciowego NET-2 Linuksa. Rozwinęły
się dwie różne szkoły, jedna, której ideą było "wpierw niech to
działa, później niech będzie to lepsze" i druga z ideą "niech wpierw
to będzie lepsze". Ostatecznie wmieszał się w to Linus, oferując swoje
wsparcie Alanowi w jego wysiłkach włączając jego kod do standardowej
dystrybucji jadra Linuksa. To postawiło Freda w bardzo trudnej
pozycji. Został pozbawiony ogromnej rzeszy użytkowników aktywnie
testujących i eksperymentujących z jego oprogramowaniem sieciowym, co
oznaczało, że jego dalszy rozwój byłby trudny i powolny. Fred
kontynuował przez krótki czas swoje prace, ostatecznie rezygnując i
pozstawiając Alana jako nowego lidera w wysiłkach nad udoskonaleniem
oprogramowania sieciowego Linuksa.
Wktrótce swoje talenty w tematyce ujawnił Donald Becker
i stworzył ogroną liczbę sterowików kart
sieciowych ethernet, niemal wszystkich dostępnych w obecnych wersjach
jądra. Byli również inni, których wkład w tej dziedzinie był znaczący,
lecz praca Donalda była tak płodna, że wymaga osobnej uwagi.
Alan kontynuował pracę nad szlifowaniem oprogramowania NET-2-D,
równocześnie starając się zająć problemami określonymi jako 'do
zrobienia' (TODO). Gdy jądro Linuksa rozwinęło się na tyle by osiągnąć
wersję 1.3.*, jego część dotycząca obsługi sieci składała się niemal z
wersji NET-3, na której bazyją aktualne wersje. Alan pracował nad
wieloma aspektami i funkcjami sieciowymi otrzymując wsparcie od wielu
utalentowanych ludzi należących do internetowej społeczności Linuksa.
Dzięki temu oprogramowanie rozrastało się jednocześnie w wielu
kierunkach. Alan opracował dynamiczne sterowniki urządzeń i pierwsze
implementacje standardów AX.25 i IPX. Kontynuował pracę, powoli
restrukturyzując i wprowadzając ulepszenia, aż uzyskał obecną postać.
Obsługa PPP została zaimplementowana przez Michaela Callahana
i Ala Longyeara .
Miało to ogromne znaczenie i ogromnie zwiększyło libczę osób aktywnie
wykorzystujących Linuksa w zastosowaniach sieciowych.
Jonathon Naylor znacznie usprawnił początkowy kod
Alana obsługi protokołu AX.25. Wprowdził obsługę protokołu NetRom.
Obsługa AX.25/NetRom jest ogromnie ważna, ponieważ żaden inny system
operacyjny nie posiada w standardowej dystrybucji obsługi tych
protokołów.
Były również ogromne rzesze innych ludzi, którzy w zanaczący sposób
przyczynili się do rozwoju oprogramowania sieciowego Linuksa. Wiele z
tych nazwisk znajdziesz później w częściach omawiających poszczególne
technologie. Inni przyczynili się do rozwoju bądź opracowując różne
moduły oprogramowania, bądź przysyłająć poprawki usuwające różne
błędy, bądź oferując sugestie, raporty z testów lub choćby wsparcie
moralne dla aktywnych twórców. Każdy z nich może twierdzić, że brał w
tym udział i oferował tyle ile mógł. Kod jądra Linuksa przeznaczony do
obsługi sieci jest świetnym przykładem rezultatów jakie można osiągnąć
pracując w tak anarchiczny sposób, jaki to miało miejsce w tym
przypadku. Jeśli się to jeszcze nie zadziwiło, to pamiętaj o jednym:
prace rozwojowe nadal trwają.
44..22.. ssiieecciioowwyycchh LLiinnuukkssaa.. SSkkąądd zzddoobbyyćć iinnnnee iinnffoorrmmaaccjjee nnaa tteemmaatt zzaass
ttoossoowwaańń
Istnieje kilka miejsc, gdzie można znaleźć dobre informacje na temat
sieciowych zastosowań Linuksa.
Alan Cox, aktualny opiekun i lider oprogramowania sieciowego Linuksa,
prowadzi stronę internetową zawierającą najciekawsze i najważniejsze
informacje na temat aktualnego rozwoju sieci w Linuksie:
www.uk.linux.org .
Innym znakomitym miejscem jest książka napisana przez Olafa Kircha pod
tytułem Poradnik dla administratorów sieci. Powstała w ramach Projektu
dokumentacji Linuksa i jest dostępna
tutaj: Poradnik dla administratorów sieci - wersja HTML
lub w
innych formatach tutaj archiwum ftp sunsite.unc.edu LDP
.
Książka Olafa jest całkiem wyczerpująca i dostarcza dobrego, stojącego
na wysokim poziomie przeglądowego spojrzenia na konfigurację sieci
pod Linuksem.
Istnieje specjalna grupa dyskusyjna (angielskojęzyczna), poświęcona
sieci i podobnym problemom: comp.os.linux.networking
Istnieje angielskojęzyczna lista dyskusyjna, na którą możesz się
zapisać i gdzie możesz zadawać pytania odnoszące się do funkcji
sieciowych Linuksa. Aby się zapisać musisz wysłać następujący list:
To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:
subscribe linux-net
W większości serwerów IRC istnieją zwykle kanały #linux, na których
obecni tam ludzie będą potrafili odpowiedzieć na pytania dotyczące
sieci pod Linuksem.
Pamiętaj, że zgłaszając jakikolwiek problem należy podawać jak
najwięcej dotyczących go szczegółów. Koniecznie należy podać wersje
używanego oprogramowania, sczególnie wersję jądra (uname -a), wersję
takich narzędzi jak _p_p_p_d lub _d_i_p i dokładną naturę problemu na który
napotkałeś. To znaczy dokładnie zanotowane komunikaty systemowe jakie
otrzymałeś i dokładny opis składni wydawanych poleceń.
44..33.. tteemmaatt tteecchhnniikk ssiieecciioowwyycchh.. SSkkąądd zzddoobbyyćć iinnnnee,, nniiee zzwwiiąązzaannee zz
LLiinnuukksseemm iinnffoorrmmaaccjjee nnaa
Jeśli szukasz podstawowych informacji o tcp/ip, polecam zapoznanie się
z następującymi dokumentami:
wwpprroowwaaddzzeenniiee ddoo ttccpp//iipp
dostępne w wersji tekstowej i postscriptowej
.
ttccpp//zzaarrzząąddzzaanniiee pprroottookkoołłeemm iipp
dostępne w wersji tekstowej i postscriptowej
.
Jeśli poszukujesz dokładniejszych informacji na temat sieci tcp/ip
mocno polecam:
"Internetworking with TCP/IP"
by Douglas E. Comer
ISBN 0-13-474321-0
Prentice Hall publications.
Jeśli chcesz się nauczyć w jaki sposób budować programy sieciowe w
środowiskach zgodnych z systemem UNIX, mocno polecam:
"Unix Network Programming"
by W. Richard Stevens
ISBN 0-13-949876-1
Prentice Hall publications.
Możesz również skorzystać z grupy dyskusyjnej comp.protocols.tcp-ip
.
Istotnym źródłem konkretnych informacji technicznych związanych z
Internetem i protokołem tcp/ip są dokumenty RFC. RFC to skrót od
"Request For Comments", jest to standardowy sposób ogłaszania i
dokumentowania obowiązujących standardów internetowych. Istnieje wiele
miejsc skąd można poprać dokumenty RFC. Większość z nich to archiwa
ftp, część udostępnia dokumenty RFC również przez interfejs WWW
dostarczając jednocześnie możliwość przeszukiwania wszystkich
dokumentów w poszukiwaniu słów kluczowych.
Jednym z archimum dokumntów RFC jest: baza danych Nexor RFC
.
55.. PPooddssttaawwoowwee iinnffoorrmmaaccjjee nnaa tteemmaatt kkoonnffiigguurroowwaanniiaa ssiieeccii..
Aby poprawnie skonfigurować sieć, musisz zapoznać się i zrozumieć
informacje prezentowane w kolejnych podrozdziałach. Są to podstawowe
zasady funkcjonowania sieci, niezależnie od jej wewnętrznej natury.
55..11.. CCzzeeggoo ppoottrrzzeebbuujjęę aabbyy rroozzppoocczząąćć??
Zanim zaczniesz budować lub konfigurować swoją sieć będziesz
potrzebował kilku rzeczy. Najważniejsze z nich to:
55..11..11.. AAkkttuuaallnnee źźrróóddłłaa jjąąddrraa..
Ponieważ jądro którego używasz może nie posiadać obsługi sieci, lub
kart sieciowych, które posiadasz, będziesz prawdopodobnie potrzebował
źródła jądra, abyś mogł skompilować nowe jądro z odpowiednimi opcjami.
Najnowszą wersją jądra mozna uzyskać z: ftp.funet.fi
.
Zwykle pliki źródłowe powinny być rozpakowane do katalogu
/usr/src/linux. Jeśli potrzebujesz informacji jak dodać do jądra
dodatkowe łaty lub jak skompilować jądro powinieneś przeczytać Kernel-
HOWTO .
Jeśli wyraźnie nie zostało to zaznaczone, zalecam pozostanie przy
standardowych wersjach jądra (te z parzystymi numerami wersji po
pierwszej kropce). Wersje testowo-rozwojowe (z nieparzystą drugą
liczbą) mogą mieć zmienioną strukturę wewnętrzną lub wprowadzone inne
zmiany uniemożliwiające poprawną współpracę z innym oprogramowaniem
zainstalowanym na twoim systemie. Jeśli nie jesteś pewien, że
poradzisz sobie z tego rodzaju problemami, w połączeniu z możliwosćią
wystąpienia błędu w innym oprogramowaniu, nie używaj wersji
rozwojowych.
55..11..22.. AAkkttuuaallnnee nnaarrzzęęddzziiaa ssiieecciioowwee..
Narzędzia sieciowe to programy służące do konfigurowania urządzeń
sieciowych Linuksa. Np. pozwalają na przydzielenie urządzeniu numeru
adresu IP lub na skonfigurowanie routingu (marszruty).
Nowe dystrybucje Linuksa zawierają wszelkie niezbędne narzędzia
sieciowe. Jeśli ich jescze nie zainstalowałeś, powinieneś to teraz
zrobić.
Jeśli nie instalowałeś Linuksa z dystrybucji, będziesz musiał pobrać
źródła i skompilować narzędzia samodzielnie. To nie jest trudne.
Narzędziami sieciowymi opiekuje się Bernd Eckenfels i są dostępne pod
adresem: ftp.inka.de
lub kopia
ftp.linux.uk.org
.
Pamiętaj aby wybrac wersję najbardziej odpowiednią dla wersji jądra,
które posiadasz, postępuj zgodnie z uwagami zawartymi w instalowanym
pakiecie.
Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu
musisz wykonać następujące polecenia:
#
# cd /usr/src
# tar xvfz net-tools-1.32-alpha.tar.gz
# cd net-tools-1.32-alpha
# make config
# make
# make install
#
Dodatkowo jeśli zamierzasz skonfigurować firewall lub korzystać z
funkcji IP Masquerade, potrzebujesz programu _i_p_f_w_a_d_m. Najnowszą wersję
można zdobyć tutaj: ftp.xos.nl .
Pamiętaj, że dostępnych jest kilka wersji. Musisz wybrać tę, która
najlepiej współpracuje z jądrem, które posiadasz.
Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu
musisz wykonać następujące polecenia:
#
# cd /usr/src
# tar xvfz ipfwadm-2.3.0.tar.gz
# cd ipfwadm-2.3.0
# make
# make install
#
55..11..33.. PPrrooggrraammyy--aapplliikkaaccjjee ssiieecciioowwee..
Sieciowe programy użytkowe (aplikacje sieciowe) to takie, jak np.
_t_e_l_n_e_t,_f_t_p i ich odpowiedniki po stronie serwera. Dystrybucją
większości z nich zajmuje się David Holland
. Można je zdobyć z ftp.uk.linux.org
.
Aby skonfigurować wersję aktualną w momencie pisania tego dokumentu
musisz wykonać następujące polecenia:
#
# cd /usr/src
# tar xvfz /pub/net/NetKit-B-0.08.tar.gz
# cd NetKit-B-0.08
# more README
# vi MCONFIG
# make
# make install
#
55..11..44.. AAddrreessyy..
Adresy protokołu IP (Internet Protocol) składają się z czterech
bajtów. Zwykle zapisuje się w notacji zwanej 'dziesiętną z kropkami'
(decimal dotted notation). Każdy bajt jest zamieniany na liczbę
dziesiętną (0-255), opuszczając wszelkie zera na początku (chyba, że
liczba jest równa zero) i zapisywany kolejno, rozdzielony jeden od
drugiego kropką `.'. Konwencja wymaga, aby każdy interfejs sieciowy
komputer czy routera posiadał własny numer IP. Można ten sam numer
przydzielać do różnych urządzeń sieciowych jednego komputera, lecz
zwykle każdy interfejs posiada własny numer IP.
Numery IP sieci to nieprzerwane sekwencje adresów IP. Wszystkie adresy
należące do jednej sieci mają wspólną liczbę cyfr w pełnym adresie IP.
Część adresu wspólna dla wszystkich adresów IP należących do sieci
nazywa się numerem sieci (adresu IP).Pozostałe cyfry określają adres
komputera . Liczba bitów które są wszpólne dla wszystkich adresów w
ramach jednej sieci nazywamy maską sieci (netmaską). Rolą netmaski
jest określenie które adresy przynależą do sieci, której ona dotyczy,
a które nie. Rozważmy następujący przykład:
----------------- ---------------
Host Address 192.168.110.23
Adres komputera
Network Mask 255.255.255.0
Netmaska
Network Portion 192.168.110.
Cześć sieciowa adresu
Host portion .23
Cześć komputerowa adresu
----------------- ---------------
Network Address 192.168.110.0
Adres sieci
Broadcast Address 192.168.110.255
Adres ogłoszeniowy (informacja wysłana pod ten adres dotrze do
wszystkich komputerów danej sieci)
----------------- ---------------
Jeśli dowolny adres IP poddamy operacji bitowej koniunkcji z jego
netmaską, otrzymamy w ten sposób adres sieci, do której on należy.
Adres sieci jest zatem najmniejszym adresem w puli adresów danej sieci
z zawsze wypełnioną zerami częscią komputerową adresu.
Adres ogłoszeniowy (broadcast) to specjalny adres IP. Wszystkie
komputery w danej sieci prócz nasłuchiwania pakietów adresowanych pod
ich numer IP, nasłuchują również pakietów kierowanych na ten adres.
Jeśli chemy wysłać pakiet, który ma dotrzeć do wszystkich komputerów w
danej sieci, korzystamy właśnie z adresu ogłoszeniowego. Różnego
rodzaje informacje dotyczące np. trasowania (routingu) lub zawierające
różne ostrzerzenia nadawane są właśnie na ten adres, tak aby wszystkie
komputery otrzymały go jednocześnie. Istnieją dwa standardy jak
powinien wyglądać adres ogłoszeniowy. W powyższym przykładzie był to
192.168.110.255. Z nieznanych przyczyn w niektórych miejscach jako
adresu ogłoszeniowego używa się adresu sieci. W praktyce zasadniczo
nie ma znaczenia, której konwencji uzywamy, pod warunkiem, że
wszystkie komputery mają skonfigurowany adres ogłoszeniowy w ten sam
sposób.
Z przyczyn administracyjnych w początkowym okresie rozwoju protokołu
IP, pewne grupy adresów IP zostału połączone w sieci, które z kolei
zostały połączone w klasy. Te klasy dostarczają określoną liczbę
różnej wielkości sieci, które mogą być przydzielane użytkownikom.
Wygląda to mniej więcej tak:
----------------------------------------------------------
| Klasa | Netmaska | Adresy sieciowe |
| sieci | | |
----------------------------------------------------------
| A | 255.0.0.0 | 0.0.0.0 - 127.255.255.255 |
| B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 |
| C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 |
|Multicast| 240.0.0.0 | 224.0.0.0 - 239.255.255.255 |
----------------------------------------------------------
Z których adresów powinieneś korzystać zależy bezpośrednio od tego co
robisz. Aby uzyskać wszystkie adresy których potrzebujesz możesz być
zmuszony do wykonania kombinacji następujących działań:
IInnssttaallaaccjjaa LLiinnuukkssaa ww iissttnniieejjąącceejj ssiieeccii IIPP
Jeśli chesz zainstalować Linuksa w istniejącej sieci IP
powinieneś skontaktować się z administratorem sieci i poprosić
go o następujące informacje:
Adres IP komputera
Adres IP sieci
Adrs ogłoszeniowy (broadcast)
Netmaska
Adres routera
Adres serwera DNS
Następnie powinieneś skonfigurować urządzenie sieciowe podając
uzyskane informacje. Nie możesz wziąć ich z powietrza i
oczekiwać, że wszystko będzie działać poprawnie.
BBuuddoowwaanniiee nnoowweejj ssiieeccii,, kkttóórraa nniiggddyy nniiee bbęęddzziiee ppooddłłąącczzoonnaa ddoo
internetu" Jeśli budujesz prywatną sieć i nie masz zamiaru
podłączać ją do Internetu to możesz wybrać zupełnie dowolne
numery IP. Jednak dla bezpieczeństwa i porządku powinieneś
skorzystać z grupy adresów IP pozostawionych dokładnie w tym
celu. Są one określone w dokumencie RFC1597:
-----------------------------------------------------------
| Zarezerwowane prywatne adresy IP |
-----------------------------------------------------------
| Klasa | Netmaska | Adres komputera |
| sieci | | |
-----------------------------------------------------------
| A | 255.0.0.0 | 10.0.0.0 - 10.255.255.255 |
| B | 255.255.0.0 | 172.16.0.0 - 172.31.255.255 |
| C | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
-----------------------------------------------------------
Powinieneś się wpierw zdecydować jak wielka będzie twoja sieć, a
następnie wybrać tyle adresów IP ile potrzebujesz.
55..22.. GGddzziiee uummiieeśścciićć ppoolleecceenniiaa kkoonnffiigguurraaccyyjjnnee ??
Istnieje kilka sposobów realizacji procedury uruchamiania systemu
Linux. Po załadowaniu jądra uruchamiany jest program o nazwie `init'.
Program init odczytuje swój plik konfiguracyjny /etc/inittab i
kontynuuje proces uruchamiania systemu. Istnieje kilka odmian programu
init i to jest właśnie przyczyna różnic w konfiguracji między różnymi
dystrybucjami czy komputerami.
Zwykle plik /etc/inittab zawiera pozycję wyglądającą mniej więcej tak:
si::sysinit:/etc/init.d/boot
Ten wiersz określa nazwę skryptu który ostatecznie jest odpowiedzialny
za procedurę startową. Jest to mniej więcej odpowiednik pliku
AUTOEXEC.BAT w DOSie.
Skrypt startowy uruchamia zwykle różne inne skrypty i sieć jest
konfigurowana zwykle jednym z takich skryptów.
Poniższa tabela może posłużyć jako przewodnik po twoim systemie:
-------------------------------------------------------------------------------
Dystryb. |Konfiguracja interfeju(karty)/routingu | Inicjalizacja
-------------------------------------------------------------------------------
Debian |/etc/init.d/network |/etc/init.d/netbase
| |/etc/init.d/netstd_init
| |/etc/init.d/netstd_nfs
| |/etc/init.d/netstd_misc
-------------------------------------------------------------------------------
Slackware|/etc/rc.d/rc.inet1 |/etc/rc.d/rc.inet2
-------------------------------------------------------------------------------
RedHat |/etc/sysconfig/network-scripts/ifup-|/etc/rc.d/init.d/network
-------------------------------------------------------------------------------
Większość nowocześnych dystrybucji zawiera program, który umożliwi
konfigurację wielu podstawowych interfejsów sieciowych. Jeśli masz
taki program powinieneś sprawdzić czy jest on dla ciebie
wystarczający, zanim zdecydujesz się na ręczną modyfikacje.
-----------------------------------------
Dystryb. | Program konfiguracji sieci
-----------------------------------------
RedHat | /sbin/netcfg
Slackware | /sbin/netconfig
-----------------------------------------
55..33.. TTwwoorrzzeenniiee iinntteerrffeejjssóóww ssiieecciioowwyycchh..
W większości systemów Unix urządzenia sieciowe znajdują się w katalogu
_d_e_v. W Linuksie tak nie jest. Linux tworzy urządzenia sieciowe
dynamicznie, dlatego nie wymaga istnienia plików urządzeń sieciowych.
W większości przypadków urządzenia sieciowe są tworzone automatycznie
przez sterowniki tych urządzeń w czasie ich inicjacji i rozpoznawania
sprzętu. Na przykład sterowniki sieciowych kart ethernetowych tworzą
interfejsy o nazwach eth[0..] sekwencyjnie w miarę rozpoznawania
kolejnych urządzeń. Pierwsz znaleziona karta ethernetowa staje się
urządzeniem eth0, druga eth1 itd.
Jednak w niektórych przypadkach, zwykle kiedy korzystamy z protokołów
SLIP lub PPP, urządzenia sieciowe są tworzone na żądanie programów
wykonywanych przez użytkownika. Odbywa się podobny sekwencyjny
przydział nazw urządzeń, lecz nie dzieje się to w sposób automatyczny
w czasie ładowania systemu. Dzieje się tak dlatego, że w
przeciwieństwie do kart ethetnetowych liczba aktywnych interfejsów
slip lub ppp w całym okresie pracy komputera może się zmieniać.
Powiemy o tym dokładniej w dalszej części.
55..44.. KKoonnffiigguurraaccjjaa iinntteerrffeejjssuu ssiieecciioowweeggoo..
Jeśli posiadasz już wszelkie niezbędne oprogramowanie i informacje o
potrzebnych adresach sieciowych możesz rozpocząć konfigurację
interfejsu. Kiedy mówimy o konfiguracji interfejsu sieciowego mamy na
myśli proces przydzielenia mu odpowiedniego adreu IP i nadania
odpowiednich wartości innym jego parametrom. W tym celu najczęściej
posługujemy się programem _i_f_c_o_n_f_i_g (interface configure).
Zwykle używa się go sposób podobny do podanego poniżej:
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
W tym przypadku konfiguruję kartę ethernetową `eth0' nadając jej adres
IP `192.168.0.1' i netmaskę `255.255.255.0'. Parametr `_u_p' na końcu
wiersza oznacza, że intefejs powinien zostać aktywowany (rozpocząć
pracę).
Jądro konfigurując interfejsy sieciowe przyjmuje pewne domyślne
wartośći parametrów. Na przykład mógłbyś podać adres IP i adres
ogłoszeniowy (broadcast) danego interfejsu, lecz jeśli tego nie
zrobisz jądro znajdzie sensowne wartości dla tych parametrów na
podstawie klasy konfigurowanego adresu IP. W moim przykładzie jądro
przyjmie, że jest interfejs jest konfigurowany w sieci klasy C i nada
adresowi sieci wartość `192.168.0.0', a adresowi ogłoszeniowemu
`192.168.0.255'.
Polecenie _i_f_c_o_n_f_i_g posiada znacznie więcej opcji. Najważniejsze z nich
to:
uupp włącznie interfejsu.
ddoowwnn
wyłączenie interfejsu.
[[--]]aarrpp
włączenie lub wyłączenie korzystania z protokołu ARP na tym
interfejsie
[[--]]aallllmmuullttii
włączenie lub wyłączenie korzystania z trybu zmuszone do
odbierania wszelkich pakietów, a nie tylko tych adresowanych
bezpośrednio do niego. Jest bardzo ważna dla programów _t_c_p_d_u_m_p i
innych podglądaczy pakietów.
mmttuu NN
ustawienie wielkości parametru _M_T_U danego urządzenia.
nneettmmaasskk aaddddrr
adres sieci, do której należy (jest podłączony) interfejs.
iirrqq aaddddrr
ten parametr ma zastosowanie tylko dla niektórych modułów
sprzętowych. Pozwala na ustawienie wartości przerwania IRQ z
którego powinno korzystać dane urządzenie.
[[--]]bbrrooaaddccaasstt [[aaddddrr]]
pozwala na włączenie odbierania pakietów skierowanych na podany
adres ogłoszeniowy, lub na zablokowanie odbierania tych
pakietów.
[[--]]ppooiinnttooppooiinntt [[aaddddrr]]
pozwala na podanie adresu komputera na drugim końsu połączenia
point-to-point obsługiwanego przez ten interfejs. Ma to miejsce
w przypadku takich protokołów jak _s_l_i_p czy ppp.
hhww <> <>
pozwala na określenie adresu sprzętowego urządzenia lecz tylko
dla ograniczonego rodzaju urządzeń. Nie jest często używany w
sieciach Ethernet, za to często wykorzystuje się go w sieciach
AX.25.
Polecenie _i_f_c_o_n_f_i_g można stosować dla każdego interfejsu sieciowego.
Niektóre programy użytkownika, jak _p_p_p_d czy _d_i_p korzystają z niego w
celu skonfigurowania interfejsu sieciowego, tuż po jego utworzeniu. W
takim przypadku nie jest potrzebna ręczna konfiguracja tych urządzeń.
55..55.. KKoonnffiigguurraaccjjaa rreessoollvveerraa nnaazzww..
`_R_e_s_o_l_v_e_r _n_a_z_w ' jest częscią standardowej biblioteki Linuksa. Jego
podstawową funkcją jest zamiana wygodnych dla człowieka nazw
komputerów, jak `ftp.funet.fi' na ich adres 128.214.248.6, którym
posługują się komputery.
55..55..11.. CCoo ttoo jjeesstt nnaazzwwaa??
Prawdopodobnie spotkałeś się z nazwami komputerów, lecz być może nie
wiesz w jaki sposób są konstruowane lub rozkładane. Nazwy domen
internetowych są w swojej naturze hierachiczne, to znaczy posiadają
strukturę drzewiastą. _d_o_m_e_n_a jest rodziną, grupą nazw. _D_o_m_e_n_a może być
podzielona na _p_o_d_d_o_m_e_n_y (subdomain). _D_o_m_e_n_a _n_a_j_w_y_ż_s_z_e_g_o _p_o_z_i_o_m_u (top
level domain) jest domeną, która jednocześnie nie jest poddomeną.
Domeny najwyższego poziomu są określone w dokumencie RFC-920. Poniżej
kilka przykładów domen najwyższego poziomu.
CCOOMM
organizacje komercyjne
EEDDUU
organizacje edukacyjne
GGOOVV
organizacje rządzowe
MMIILL
organizacje wojskowe
OORRGG
inne organizacje
oozznnaacczzeenniiee kkrraajjuu
dwuliterowe kody państw, reprezentujące konkretne państwo.
Każda z domen najwyższego poziomu posiada poddomeny. Domey najwyższego
poziomu o nazwach odpowiadających kodom państw, są zwykle podobnie
podzielone, jak domeny najwyższego poziomu tzn. można tzm znaleźć
poddomeny com, edu, gov, mil i org. Na koniec otrzymujemy com.au i
gov.au dla organizacji komercyjnych i rządowych w Australii. Z
przyczyn historycznych większość domen należących do domen najwyższego
poziomu dotyczy organizacji amerykańskich, choć Stany Zjednoczone mają
również własną domenę `.us'.
Następny poziom podziału odzwierciedla zwykle nazwę
instytucji/organizacji. Dalsze poddomeny różnią się w swojej naturze,
często ten poziom domen jest zależny od wewnętrznej struktury
instytucji, lecz może być zależny od dowolnego, rozsądnego kryterium
przyjętego przez osoby zarządzające siecią w danej instytucji.
Ostatni w strukturze człon domeny, lecz pierwszy z lewej w jej nazwie
oznacza _n_a_z_w_ę _k_o_m_p_u_t_e_r_a (hostname) i musi być jednoznaczny w danej
poddomenie. Pozostała część jezt nazywana _d_o_m_e_n_ą danego komputera
(domainname), a całość jest nazywana `_F_u_l_l_y _Q_u_a_l_i_f_i_e_d _D_o_m_a_i_n _N_a_m_e
_F_Q_D_M' - Pełna nazwa domenowa.
Biorąc za przykład mój komputer pocztowy, jego FQDN to
`perf.no.itg.telstra.com.au'. To znaczy, że komputer nazywa się
`perf', a domena `no.itg.telstra.com.au'. Nazwa mojej domeny
rozpoczyna się od członu oznaczającego kraj, Australię. Ponieważ
jesteśmy organizacją komercyjną kolejnym poziomem jest `com'.
`telstra' oznacza nazwę firmy (starą), a dalsze człony są pochodną
wewnętrznej struktury naszej firmy. Moj komputer należy do Information
Technolog Group w sekcji Network Operations.
55..55..22.. JJaakkiiee iinnffoorrmmaaccjjee bbęęddąą nniieezzbbęęddnnee..
Musisz wiedzieć do jakiej domeny należy twój komputer. Oprogramowanie
resolwera nazw wykonuje swoją pracę odwołując się do _s_e_r_w_e_r_a _D_N_S
(Domain Name Server), będziesz potrzebował adres IP najbliższego
serwera DNS.
Musisz poprawić trzy pliki. Omówię każdy z nich.
55..55..33.. //eettcc//rreessoollvv..ccoonnff
/etc/resolv.conf jest głównym plikiem konfiguracyjnym resolwera nazw.
Posiada bardzo prosty format. Jest to plik tekstowy zawierający jedno
polecenie na wiersz. Najczęscieściej stosuje się trzy słowa kluczowe:
ddoommaaiinn
określa nazwę domeny, do której należy dany komputer
sseeaarrcchh
określa listę domen, które mają być przeszukiwane w poszukiwaniu
podanej nazwy komputera (w przypadku gdy nazwa komputera nie
została podana w postaci FQDN)
nnaammeesseerrvveerr
może być powtórzone wielokrotnie, określa adres serwera DNS
przykładowy plik /etc/resolv.conf mógłby wyglądać nastepująco:
domain maths.wu.edu.au
search maths.wu.edu.au wu.edu.au
nameserver 192.168.10.1
nameserver 192.168.12.1
W przykładzie podaliśmy, że podstawową domeną, do której należy
komputer i która będzie dodawana do nazwy komputera, jeśli nie została
podana w formacie FQDN jest maths.wu.edu.au. Jeśli komputer nie
zostanie znaleziony w tej domenie resolwer przeszuka jeszcze domenę
wu.edu.au. Podano również adresy IP dwóch serwerów DNS.
55..55..44.. //eettcc//hhoosstt..ccoonnff
Plik /etc/host.conf to plik, które określa niektóre zachowania
resolvera. Jego format jest dokładnie opisany na stronie podręcznika
(man resolv+). W większości przypadków wystarczy taki plik:
order hosts,bind
multi on
Ta konfiguracja informuje resolver, że poszukując nazwy komputera
należy wpierw sprawdzać zawartość pliku /etc/hosts, zanim zacznie się
zadawać pytania serwerowi DNS. Oznacza również, że należy przekazywać
wszystkie znalezione w tym pliku adresy IP odpowiadające nazwie
poszukiwanego komputera, a nie tylko pierwszy z nich.
55..55..55.. //eettcc//hhoossttss
Plik /etc/hosts jest to miejsce, gdzie umieszcza się nazwy i adresy
lokalnych komputerów. Jeśli umieścisz w tym pliku nazwę i adres
komputera, nie musisz pytać się o jego adres serwera DNS. Wadą tego
rozwiązania jest to, że musisz pamiętać aby informacje zawarte w tym
pliku były aktualne. W dobrze zarządzanym sytemie w niniejszym pliku
można zwykle znaleźć nazwę interfejsu pętli zwrotnej i nazwy lokalnych
komputerów.
# /etc/hosts
127.0.0.1 localhost loopback
192.168.0.1 nazwa.tego.komputera
Możesz podać więcej niż jedną nazwę odpowiadającą danemu numerowi IP,
jak to zrobiliśmy w powyższym przykładzie w przypadku lokalnej pętli
zwrotnej.
55..66.. KKoonnffiigguurraaccjjaa iinntteerrffeejjssuu ppęęttllii zzwwrroottnneejj
Interfejs pętli zwrotnej (`loopback' interface) jest interfejsem
specjalnego rodzaju, umożliwiającym nawiązywanie połączeń z samym
sobą. Istnieje wiele przyczyn, dla których mogłbyś chcieć to robić.
Na przykład w celu przetestowania oprogramowania sieciowego, bez
konieczności zawracania głowy komukolwiek innemu. Adres `127.0.0.1'
został przypisany specjalnie dla tego interfejsu. Dlatego niezależnie
na którym komputerze bedziesz pracował, jeśli połączysz się z
komputerem o adresie 127.0.0.1 zawsze to będzie ten komputer, z
którego próbujesz nawiązać połączenie.
Skonfigurowanie interfejsu pętli zwrotnej jest proste, musisz się
upewnić, że przy starcie sytemu wykonuje się następujące polecenie:
# ifconfig lo 127.0.0.1
# route add -host 127.0.0.1 lo
Więcej na temat polecenia _r_o_u_t_e powiemy w następnym rozdziale.
55..77.. TTrraassoowwaanniiee ((rroouuttiinngg))..
Trasowanie ruchu (routing) to ogromny temat. Można na ten temat
napisać bardzo dużo. Większość z was spotka się z całkiem prostymi
konfiguracjami trasowania, a część nie. Opowiem o podstawowych prawach
trasowania ruchu. Jeśli potrzebujesz bardziej szczegółowych informacji
radzę zapoznać się z dokumentami wspomnianymi na początku.
Rozpocznijmy od definicji. Co to jest trasowanie pakietów IP. Oto
jedna z definicji, którą ja używam:
Trasowanie pakietów IP to proces, w którym komputer z
przyłączeniami do wielu sieci decyduje, gdzie wysłać otrzy
mane pakiety.
Zilustrujmy to przykładem. Wyobraźmy sobie typowy biurowy router.
Mógłby mieć połączenie PPP z internetem, kilka segmentów ethernetowych
obsługujących stacje robocze i jeszcze jedno połączenie PPP do innego
biura. Kiedy router otrzymuje datagram z jednego ze swoich przyłączeń
sieciowych, trasowanie jest mechanizmem stosowanym przez niego do
wyboru portu przyłączeniowego, do którego trzeba przesłać ten
datagram. Zwykłe komputery też muszą wykonywać trasowanie, wszystkie
komputery w Internecie posiadają dwa urządzenia sieciowe, jedno z nich
to urządzenie pętli zwrotnej (loopback interface) opisane powyżej, a
drugie to te, którego używa do porozumiewania się z resztą sieci. Może
to być karta ethernetowa lub port PPP, czy SLIP.
OK, w jaki sposób działa trasowanie? Każdy z komputerów przechowuje
listę zasad trasowania, zwaną tabelą trasowania (routing table). Każdy
wiersz tej tabeli zawiera co najmniej trzy pola, pierwsze oznaczające
adres docelowy, drugie zawiera nazwę interfejsu przez który należy
wysłać datagram, a trzecie, opcjonalne, to adres IP innego komputera
(tzw. gateway), który przeniesie datagram dalej w jego drodze przez
sieć. Pod Linuksem tabelę trasowania można zobaczyć wydając polecenie:
# cat /proc/net/route
Proces trasowania jest całkiem prosty: otrzymujemy przychodzący
datagram, adres docelowy (do kogo jest adresowany ten datagram)
zostaje porównany z pozycjami tabeli routingu. Wybiera się pozycje,
kóra najbardziej pasuje do tego adresu i datagram zostaje przesłany
przez określony w tej pozycji interfejs. Jeśli pole gatewaya nie jest
puste, wtedy datagram zostaje przesłany do tego komputera przez
określony w tej pozycji interfejs seciowy, w przeciwnym wyopadku
zakłada się, że adres docelowy leży na sieci obsługiwanej przez podany
interfejs.
Do manipulacji pozycjami tabeli trasowania służy specjalne polecenie.
Wymaga podania w wierszu poleceń dodatkowych parametrów i zamienia je
na wywołania funkcji systemowych, które proszą jądro o dodanie,
zmodyfikowanie lub usunięcie pozycji w tabeli trasowania (która
znajduje się w gestii jądra Linuksa). Polecenie to nazywa się `_r_o_u_t_e'.
Prosty przykład. Wyobraźmy sobie, że mamy sieć ehernetową. Powiedziano
nam, że jest to sieć klasy C o adresie 192.168.1.0. Nasz komputer
otrzymał adres 192.168.1.10 i powiedziano nam, że router przyłączony
do internetu ma adres 192.168.1.1.
Pierwszym krokiem jest poprawne skonfigurowanie interfejsu, w sposób
opisany wcześniej:
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
Teraz musimy dodać pozycję do tabeli trasowania, aby powiedzieć jądru,
że datagramy do komputerów, których adresy pasujądo wzorca 192.168.1.*
powinny być wysyłane przez interfejs ethernetowy. Stosuje się w tym
celu polecenie zbliżone do tego:
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
Zwróć uwagę na argument `-net', który mówi programowi route, że ta
pozycja oznacza trasę do całej podsieci (network route). Inną
możliwością jest pozycja określająca trasę do konkretnego adresu IP
tzw. 'host route'.
Powyższa pozycja tabeli trasowania umożliwi nam komunikację ze
wszystkimi komputerami znajdującymi się w naszym segmencie
ethernetowym. A co z wszystkimi innymi adresami IP spoza naszego
segmentu?
Dodanie trasy do każdej sieci.komputera z którym chcielibyśmy się
kiedykolwiek komunikować byłoby ogromnym zadaniem. Dlatego wprowadzono
tzw _t_r_a_s_ę _d_o_m_y_ś_l_n_ą (default route). Trasa _d_o_m_y_ś_l_n_a pasuje do każdego
adresu docelowego, lecz najgorzej jak tylko jest to możliwe. Dlatego,
jeśli istnieje inna pozycja pasująca do tego adresu, to ona zostanie
wykorzystana zamiast pozycji _d_o_m_y_ś_l_n_e_j. Ideą trasy domyślnej jest
umożliwienie zrealizowania polecenia 'wszystko inne wysłać tędy'. W
naszym przykładzie oznacza to następujące polecenie:
# route add default gw 192.168.1.1 eth0
Argument `gw' informuje program route, że następny argument oznacza
adres IP. lub nazwę gatewaya lub routera, do którego należy przesyłać
wszystkie datagramy pasującego do tej pozycji. Dalszym przesłaniem
tych datagramów zajmie się właśnie ten komputer.
Tak więc nasza pełna konfiguracja wyglądała by następująco:
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
# route add default gw 192.168.1.1 eth0
Jeśli dobrze się przyjrzysz plikom `rc' zajmującymi się siecią,
zobaczysz, że przynajmniej jeden z nich wygląda bardzo podobnie. Jest
to bardzo populana konfiguracja.
Zajmijmy się troszkę bardziej skomplikowanym przypadkiem. Załóżmy, że
zajmujemy się konfiguracją routera o którym mówiliśmy wcześniej, tym
który posiada połączenie PPP z Internetem, kilka segmentów sieci
lokalnej. Niech konkretnie będą to trzy segmenty eternetowe i jedno
łącze PPP. Konfiguracja trasowania w tym przypadku wyglądała by
następująco:
# route add 192.168.1.0 netmask 255.255.255.0 eth0
# route add 192.168.2.0 netmask 255.255.255.0 eth1
# route add 192.168.3.0 netmask 255.255.255.0 eth2
# route add default ppp0
Każda ze stacji roboczych używałaby prostszej formy prezentowanej
wcześniej. Tylko router musi określić oddzielnie trasę do każdej z
sieci, ponieważ w przypadku stacji roboczej pozycja _d_o_m_y_ś_l_n_a obsłuży
wszystkie połączenia pozostawiając routerowi zmartwienie odpowiedniego
podziału ruchu. Możesz się zastanawiać, dlaczego trasa domyślna na
routerze nie posiada argumentu gw. Przyczyna jest prosta. Protokoły
urządzeń szeregowych, takich jak PPP czy SLIP, zawsze mają w swojej
sieci tylko dwa komputery, po jednym na każdym końcu. Wskazywanie
komputera po drugiej stronie połączenia jako gatewaya jest
niepotrzebne i nadmiarowe, ponieważ nie ma innej możliwości niż
przesłać pakiety na drugi koniec połączenia PPP. Dlatego nie jest
potrzebne okreśanie w tego rodzaju połączeniach gatewaya. Podania
gatewaya wyagają w takiej sytuacji inne rodzaje sieci, np. ethernet,
arcnet, token ring, które obsługują wiele komputerów na jednym
segmencie.
55..77..11.. DDoo cczzeeggoo ssłłuużżyy pprrooggrraamm rroouutteedd ??
Konfiguracja trasowania opisana powyżej nadaje się dla prostych
konfiguracji sieci, gdzie zawsze istnieje tylko jedna droga do celu. W
przypadku bardziej skomplikowanych konfiguracji sieci, sprawy nieco
się komplikują. Na szczęście większości was to nie dotyczy.
Najwieksze kłopoty jakie sprawia 'trasowanie ręczne' lub inaczej
mówiąc 'statyczne', polegają na tym, że w przypadku przerwania łącza
do komputera docelowego, jedyną metodą nawiązania komunikacji inną
drogą (jeśli taka istnieje) jest ręczna interwencja w tabelę
trasowania (ręczne uruchomienie odpowiednich poleceń). Naturalnie jest
to bardzo powolne, niepraktyczne i ryzykowne. Zostały rozwinięte
techniki w celu automatycznej modyfikacji tabeli trasowania w
przypadku awarii połączeń w celu przełączenia ruchu na drogi
obejściowe, wszystkie te metody nazywane są ogólnie 'trasowaniem
dynamicznym'.
Być może słyszałeś o najbardziej popularnych protokołach dynamicznego
trasowania. Najczęsciej występującym jes RIP (Routing Information
Protocol) i OSPF (Open Shortest Path First Protocol). RIP jest bardzo
populany w małych sieciach takich jak małego rozmiaru sieci
korporacyjne lub sieci między budynkami. OSPF jest nowocześniejszym i
bardziej sprawnym protokołem, lepiej nadającym się do obsługi dużych
konfigracji sieci i lepiej nadaje się do zastosowania w środowiskach,
gdzie istnieje duża liczba możliwych tras przesyłania pakietu.
Powszechnymi implementacjami tych protokołów są programy _r_o_u_t_e_d -RIP
i _g_a_t_e_d -RIP,OSPF i inne. _r_o_u_t_e_d jest zwykle w każdej dystrybucji
Linuksa, lub można go znaleźć w pakiecie `NetKit' opisanym wcześniej.
Przykład, który mogłby wymagać zastosowania dynamicznego trasowania
mógłby wyglądać następująco:
192.168.1.0 / 192.168.2.0 /
255.255.255.0 255.255.255.0
- -
| |
| /-----\ /-----\ |
| | |ppp0 // ppp0| | |
eth0 |---| A |------//---------| B |---| eth0
| | | // | | |
| \-----/ \-----/ |
| \ ppp1 ppp1 / |
- \ / -
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
ppp0\ /ppp1
/-----\
| |
| C |
| |
\-----/
|eth0
|
|---------|
192.168.3.0 /
255.255.255.0
Mamy tutaj trzy routery A,B i C. Każdy obsługuje segment sieci klasy C
(netmaska 255.255.255.0). Każdy router posiada również łącze PPP do
każdego z pozostałych routerów. Sieć tworzy trójkąt.
Powinno być już oczywiste, że tabela trasowania na routerza A wygląda
następująco:
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1
Taka konfiguracja będzie działała poprawnie, dopóki połączenie
pomiędzy routerami A i B będzie pracować poprawnie. Jeśli nastąpi
awaria tego połączenia komputery na segmencie A nie będą w stanie
osiągnąć komputerów segmentu B i na odwrót ponieważ ich datagramy będą
kierowane do interfejsu ppp0 routera A, który uległ właśnie awarii.
Jednak komputery z segmentu B będą mogły nadal komunikować się z
segmentem D i na odwrót ponieważ połączenie PPP pomiędzy komputerami
pozostało nietknięte.
Zaczekaj! Skoro A może komunikować się z C i C może komunikować się z
B dlaczego nie przesyłać datagramów adresowanych do B przez C
zrzucając na niego dostarczenie ich do B? To jest właśnie rodzaj
problemu, do rozwiązania którego powstały protokoły trasowania
dynamicznego, jak np. RIP. Gdyby na każdym z routerów był uruchominy
program _r_o_u_t_e_d wtedy tablice trasowania zostałyby automatycznie
poprawione, tak aby odzwierciedlały nowy stan sieci w przypadku awarii
któregokolwiek połączenia. Utworzenie takiej konfiuracji jest proste.
Na każdym z routerów należy zrobić dwie rzeczy. W przypadku routera A:
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# /usr/sbin/routed
Demon `_r_o_u_t_e_d' tuż po uruchomieniu automatycznie znajdzie aktywne
porty przyłączeń sieciowych, następnie będzie do nich rozsyłał i
nasłuchiwał przychodzących z nich komunikatów pozwalając w ten sposób
określenie poprawnej tabeli trasowania.
To był bardzo krótki opis trasowania dynamicznego i jego zastosowań.
Jeśli potrzebujesz więcej informacji powinieneś zapoznać się
dokumentami, do których referencje znajdziesz na początku tego
dokumentu.
Istotne sprawy dotyczące dynamicznego trasowania:
1. Potrzeba uruchomienia demona protokołu dynamicznego trasowania
zachodzi jedynie wtedy, gdy twój Linux ma możliwość wyboru trasy do
komputera docelowego.
2. Demon trasowania dynamicznego będzie automatycznie modyfikował
tabelę trasowania dopasowując ją do zmian w strukturze sieci.
3. RIP nadaje się do sieci małych i średnich.
55..88.. KKoonnffiigguurraaccjjaa sseerrwweerróóww ii uussłłuugg ssiieecciioowwyycchh..
Serwery i usługi sieciowe są to te programy, które pozwalają zdalnemu
użytkownikowi stać się użytkownikiem twojego komputera. Zdalny
użytkownik ustanawia połączenie sieciowe z twoim komputerem i
programem oferującym usługę, lub demonem sieciowym, nasłuchującym na
danym porcie, akceptuje połączenie i wykonuje program. Istnieją dwa
tryby pracy demonów sieciowych. Oba są równie często stosowane. Oto
one:
nniieezzaalleeżżnnyy
program-demon sieciowy nasłuchuje na określonych portach
sieciowych i w momencie zestawienia przychodzącego połączenia,
sam zarządza tym połączeniem w celu udostępnienia danej usługi.
ppooddppoorrzząąddkkoowwaannyy sseerrwweerroowwii _i_n_e_t_d
serwer _i_n_e_t_d jest specjalnym programem-demonem sieciowym
specjalizującym się w obsłudze zestawiania połączeń sieciowych.
Posiada własny plik konfiguracyjny, który mówi mu, który program
obsługi usługi powinien zostać uruchomiony dla zaistniałej
kombinacji typu połączenia (tcp lub udp) i numeru portu. Porty
są opisane w innym pliku, o którym opowiemy już niedługo.
Istnieją dwa ważne pliki konfiguracyjne. Są to /etc/services: plik,
który kojarzy nazwy z numerami portów i /etc/inetd.conf: plik
konfiguracyjny demona _i_n_e_t_d.
55..88..11.. //eettcc//sseerrvviicceess
Plik /etc/services jest prostą bazą, która kojarzy łatwe dla człowieka
nazwy portów z wykorzystywanymi przez komputery numerami. Posiada
bardzo prosty format. Jest to plik tekstowy, którego każdy wiersz jest
jednym rekordem informacji. Każdy rekord składa się z trzech pól,
rozdzielonych dowolną ilością białych znaków (tabulator lub odstęp):
nazwa port/protokół aliasy # komentarz
nnaazzwwaa
jedno słowo reprezentujące opisywaną usługę.
ppoorrtt//pprroottookkóółł
to pole jest podzielone na dwie części
ppoorrtt
numer określający numer portu pod którym będzie dostępna dana
usługa. Wiekszość popularnych usług ma już przydzielone
numery portów. Są opisane w RFC-1340.
pprroottookkóółł
może to być albo tcp albo udp.
Należy zapamiętać, że pozycja 18/tcp jest zupełnie inna niż
pozycja 18/udp i nie ma żadnych technicznych uwarunkowań,
dlaczego dana usługa miałaby istnieć w obu przypadkach. Należy
zachować zdrowy rozsądek. Jeśli któraś z usług jest rzeczywiście
dostępna zarówno przez tcp, jak i przez udp, wtedy rzeczywiście
w /etc/services znajdą się obie te pozycje.
aalliiaassyy
inne nazwy, pod którymi będzie znana ta usługa.
Dowolny tekst w wierszu po znaku `#' jest traktowany jako komentarz i
ignorowany.
55..88..11..11.. PPrrzzyykkłłaadd pplliikkuu //eettcc//sseerrvviicceess ..
Wszystkie nowe dystrybucje Linuksa dostarczają dobry plik
/etc/services. Na wszelki wypadek, gdybyś chciał zbudować swój
komputer od zera oto kopia pliku /etc/services jaki jest dostarczany
razem z dystrybucją Debian .
# /etc/services:
# $Id: NET-3-HOWTO.pl.sgml,v 1.4 2001/12/15 09:56:17 bart Exp $
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1340, ``Assigned Numbers'' (July 1992). Not all ports
# are included, only the more common ones.
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
# 24 - private
smtp 25/tcp mail
# 26 - unassigned
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
re-mail-ck 50/tcp # Remote Mail Checking Protocol
re-mail-ck 50/udp # Remote Mail Checking Protocol
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
mtp 57/tcp # deprecated
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp
tftp 69/udp
gopher 70/tcp # Internet Gopher
gopher 70/udp
rje 77/tcp netrjs
finger 79/tcp
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
link 87/tcp ttylink
kerberos 88/tcp kerberos5 krb5 # Kerberos v5
kerberos 88/udp kerberos5 krb5 # Kerberos v5
supdup 95/tcp
# 100 - reserved
hostnames 101/tcp hostname # usually from sri-nic
iso-tsap 102/tcp tsap # part of ISODE.
csnet-ns 105/tcp cso-ns # also used by CSO name server
csnet-ns 105/udp cso-ns
rtelnet 107/tcp # Remote Telnet
rtelnet 107/udp
pop-2 109/tcp postoffice # POP version 2
pop-2 109/udp
pop-3 110/tcp # POP version 3
pop-3 110/udp
sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP
sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP
auth 113/tcp authentication tap ident
sftp 115/tcp
uucp-path 117/tcp
nntp 119/tcp readnews untp # USENET News Transfer Protocol
ntp 123/tcp
ntp 123/udp # Network Time Protocol
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
netbios-ssn 139/udp
imap2 143/tcp # Interim Mail Access Proto v2
imap2 143/udp
snmp 161/udp # Simple Net Mgmt Proto
snmp-trap 162/udp snmptrap # Traps for SNMP
cmip-man 163/tcp # ISO mgmt over IP (CMOT)
cmip-man 163/udp
cmip-agent 164/tcp
cmip-agent 164/udp
xdmcp 177/tcp # X Display Mgr. Control Proto
xdmcp 177/udp
nextstep 178/tcp NeXTStep NextStep # NeXTStep window
nextstep 178/udp NeXTStep NextStep # server
bgp 179/tcp # Border Gateway Proto.
bgp 179/udp
prospero 191/tcp # Cliff Neuman's Prospero
prospero 191/udp
irc 194/tcp # Internet Relay Chat
irc 194/udp
smux 199/tcp # SNMP Unix Multiplexer
smux 199/udp
at-rtmp 201/tcp # AppleTalk routing
at-rtmp 201/udp
at-nbp 202/tcp # AppleTalk name binding
at-nbp 202/udp
at-echo 204/tcp # AppleTalk echo
at-echo 204/udp
at-zis 206/tcp # AppleTalk zone information
at-zis 206/udp
z3950 210/tcp wais # NISO Z39.50 database
z3950 210/udp wais
ipx 213/tcp # IPX
ipx 213/udp
imap3 220/tcp # Interactive Mail Access
imap3 220/udp # Protocol v3
ulistserv 372/tcp # UNIX Listserv
ulistserv 372/udp
#
# UNIX specific services
#
exec 512/tcp
biff 512/udp comsat
login 513/tcp
who 513/udp whod
shell 514/tcp cmd # no passwords used
syslog 514/udp
printer 515/tcp spooler # line printer spooler
talk 517/udp
ntalk 518/udp
route 520/udp router routed # RIP
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp # -for emergency broadcasts
uucp 540/tcp uucpd # uucp daemon
remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem
klogin 543/tcp # Kerberized `rlogin' (v5)
kshell 544/tcp krcmd # Kerberized `rsh' (v5)
kerberos-adm 749/tcp # Kerberos `kadmin' (v5)
#
webster 765/tcp # Network dictionary
webster 765/udp
#
# From ``Assigned Numbers'':
#
#> The Registered Ports are not controlled by the IANA and on most systems
#> can be used by ordinary user processes or programs executed by ordinary
#> users.
#
#> Ports are used in the TCP [45,106] to name the ends of logical
#> connections which carry long term conversations. For the purpose of
#> providing services to unknown callers, a service contact port is
#> defined. This list specifies the port used by the server process as its
#> contact port. While the IANA can not control uses of these ports it
#> does register or list uses of these ports as a convienence to the
#> community.
#
ingreslock 1524/tcp
ingreslock 1524/udp
prospero-np 1525/tcp # Prospero non-privileged
prospero-np 1525/udp
rfe 5002/tcp # Radio Free Ethernet
rfe 5002/udp # Actually uses UDP only
bbs 7000/tcp # BBS service
#
#
# Kerberos (Project Athena/MIT) services
# Note that these are for Kerberos v4, and are unofficial. Sites running
# v4 should uncomment these and comment out the v5 entries above.
#
kerberos4 750/udp kdc # Kerberos (server) udp
kerberos4 750/tcp kdc # Kerberos (server) tcp
kerberos_master 751/udp # Kerberos authentication
kerberos_master 751/tcp # Kerberos authentication
passwd_server 752/udp # Kerberos passwd server
krb_prop 754/tcp # Kerberos slave propagation
krbupdate 760/tcp kreg # Kerberos registration
kpasswd 761/tcp kpwd # Kerberos "passwd"
kpop 1109/tcp # Pop with Kerberos
knetd 2053/tcp # Kerberos de-multiplexor
zephyr-srv 2102/udp # Zephyr server
zephyr-clt 2103/udp # Zephyr serv-hm connection
zephyr-hm 2104/udp # Zephyr hostmanager
eklogin 2105/tcp # Kerberos encrypted rlogin
#
# Unofficial but necessary (for NetBSD) services
#
supfilesrv 871/tcp # SUP server
supfiledbg 1127/tcp # SUP debugging
#
# Datagram Delivery Protocol services
#
rtmp 1/ddp # Routing Table Maintenance Protocol
nbp 2/ddp # Name Binding Protocol
echo 4/ddp # AppleTalk Echo Protocol
zip 6/ddp # Zone Information Protocol
#
# Debian GNU/Linux services
rmtcfg 1236/tcp # Gracilis Packeten remote config server
xtel 1313/tcp # french minitel
cfinger 2003/tcp # GNU Finger
postgres 4321/tcp # POSTGRES
mandelspawn 9359/udp mandelbrot # network mandelbrot
# Local services
55..88..22.. //eettcc//iinneettdd..ccoonnff
Plik /etc/inetd.conf jest plikiem konfiguracyjnym programu _i_n_e_t_d.
Jego rolą jest poinformowanie _i_n_e_t_d co powinien zrobić w momencie
otrzymania połączenia z konkretną usługą. Musisz powiedzieć programowi
_i_n_e_t_d, który program obsługi uruchomić i jak to zrobić. Musisz to
zrobić dla każdej usługi, której połączenia mają być obsługiwane przez
program _i_n_e_t_d.
Format tego pliku jest całkiem prosty. Jest to plik tekstowy, którego
kązy wiersz jest niezależny rekordem danych opisujących jedną z usług
jaką chcesz obsługiwać. Dowolny tekst w wierszu po znaku `#' jest
traktowany jako komentarz i pomijany. Każdy wiersz składa się z
siedmiu pól rodzielonych białymi znakami (tabulator lub odstęp) w
formacie:
service socket_type proto flags user server_path server_args
usługa rodzaj_gniazda protokół flagi użytkownik ścieżka_dostępu arguemnty
uussłłuuggaa
nazwa usługi pobrana przez inetd z /etc/services
rrooddzzaajj ggnniiaazzddaa
to pole określa rodzaj gniazda jakie zostanie utworzone,
dozwolone wartości to : stream, dgram, raw, rdm, or seqpacket.
Dokładny opis jest dość skomplikowany ale jako pierwsze
przybliżenie można potraktować zasadę, że niemal wszystkie
usługi korzystające z tcp używają stream i niemal wszystkie
usługi korzystające z udp używają dgram. Inne kombinacje
parametrów występują w bardzo rzadkich przypadkach
specjalizowanych serwerów usług.
pprroottookkóóll
nazwa protokołu danej pozycji. Powinien pasować do odpowiedniej
pozycji pliku /etc/serwer i zwykle jest to tcp lub udp. Usługi
oparte na Sun RPC (Remote Procedure Call) będą korzystały z
rpc/tcp lub rpc/udp.
ffllaaggii
istnieją tylko dwie wartości jakie może przyjmować to pole.
Informują one program inetd czy uruchomiony program obsługi
zwalnia gniazdo co pozwala na uruchomienie kolejnego przy
następnym połączeniu do tej usługi, czy _i_n_e_t_d powinien zaczekać
na zakończenie działania programu obsługi, który sam będzie
obsługiwał żądania zestawienia połączenia. Ponownie dokładny
opis jest dosyć skomplikowany, lecz w przybliżeniu mozna
powiedzieć, że wszystkie usługi typu tcp powinny w tym polu mieć
wartość nowait i większość usług typu udp powinny przyjmować
wartość wait. Pamiętaj, że istnieją znaczące wyjątki od tej
reguły.
uużżyyttkkoowwnniikk
określa, który użytkownik zdefiniowany w pliku /etc/passwd
statnie się właścicielem uruchomionego demona sieciowego. Jest
to pożyteczne, gdy chcesz zwiększyć bezpieczeństwo swojego
systemu. Możesz temu polu nadać wartość nobidy aby w przypadku
złamania zabezpieczeń programów obsługi wyrządzone straty były
jak najmniejsze. Zwykle to pole przyjmuje wartość root, ponieważ
większość programów obsługi do wykonania poprawnie swych zadań
wymaga uprawnień administatora.
śścciieeżżkkaa__ddoossttęęppuu
to pole oznacza pełną scieżkę dostępu do programu obsługi, który
należy uruchomić.
aarrgguummeennttyy
zawiera pozostałą część wiersza poleceń uruchamianego programu
obsługi. Jest to parametr opcjonalny. To właśnie tutaj możesz
umieścić dowolne parametry, które zostaną przekazane programowi
obsługi w momencie jego uruchomienia przez program inetd.
55..88..22..11.. PPrrzzyykkłłaadd pplliikkuu //eettcc//iinneettdd..ccoonnff
Podobnie jak w przypadku pliku /etc/services wszystkie nowoczesne
dystrybucje zawierają poprawny plik /etc/inetd.conf. Na wszelki
wypadek poniżej można znaleźć plik /etc/inetd.conf dostarczany z
dystrybucją Debian .
# /etc/inetd.conf: see inetd(8) for further informations.
#
# Internet server configuration database
#
#
# Modified for Debian by Peter Tobias
#
#
#
# Internal services
#
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
discard stream tcp nowait root internal
discard dgram udp wait root internal
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal
#
# These are standard services.
#
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd
#fsp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.fspd
#
# Shell, login, exec and talk are BSD protocols.
#
shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd
login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd
talk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.talkd
ntalk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd
#
# Mail, news and uucp services.
#
smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd
#nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/in.nntpd
#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico
#comsat dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.comsat
#
# Pop et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d
#
# `cfinger' is for the GNU finger server available for Debian. (NOTE: The
# current implementation of the `finger' daemon allows it to be run as `root'.)
#
#cfinger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.cfingerd
#finger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.fingerd
#netstat stream tcp nowait nobody /usr/sbin/tcpd /bin/netstat
#systat stream tcp nowait nobody /usr/sbin/tcpd /bin/ps -auwwx
#
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot
#bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
#
# Kerberos authenticated services (these probably need to be corrected)
#
#klogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind -k
#eklogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind -k -x
#kshell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd -k
#
# Services run ONLY on the Kerberos server (these probably need to be corrected)
#
#krbupdate stream tcp nowait root /usr/sbin/tcpd /usr/sbin/registerd
#kpasswd stream tcp nowait root /usr/sbin/tcpd /usr/sbin/kpasswdd
#
# RPC based services
#
#mountd/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.mountd
#rstatd/1-3 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rstatd
#rusersd/2-3 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rusersd
#walld/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rwalld
#
# End of inetd.conf.
ident stream tcp nowait nobody /usr/sbin/identd identd -i
55..99.. IInnnnee pplliikkii kkoonnffiigguurraaccyyjjnnee zzwwiiąązzaannee zz ssiieecciiąą..
Linux posiada jeszcze kilka plików konfiguracyjnych, które mają wpływ
na pracę sieci, z którymi powinno się zapoznać. Być może nigdy nie
wystąpi potrzeba ich modyfikacji, lecz warto wiedzieć jakie informacje
zawierają i czego dotyczą.
55..99..11.. //eettcc//pprroottooccoollss
Plik /etc/protocols zawiera informacje przyporządkowujące nazwom
protokołów odpowiednie numery. Jest wykorzystywany przez różne
programy pozwalając na podawanie nazw protokołów zamiast numerów oraz
inne programy, jak np tcpdump, które mogą wyświetlać nazwy protokołów
zamiast ich liczbowej reprezentacji. Składnia pliku jest następująca:
protocolname number aliases
nazwa_protokołu numer aliasy
Plik /etc/protocols dostarczany w dystrybucji Debian
wygląda następująco:
# /etc/protocols:
# $Id: NET-3-HOWTO.pl.sgml,v 1.4 2001/12/15 09:56:17 bart Exp $
#
# Internet (IP) protocols
#
# from: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "reliable datagram" protocol
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4
xtp 36 XTP # Xpress Tranfer Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
rspf 73 RSPF # Radio Shortest Path First.
vmtp 81 VMTP # Versatile Message Transport
ospf 89 OSPFIGP # Open Shortest Path First IGP
ipip 94 IPIP # Yet Another IP encapsulation
encap 98 ENCAP # Yet Another IP encapsulation
55..99..22.. //eettcc//nneettwwoorrkkss
Plik /etc/networks ma funkcję zbliżoną do funkcji pliku /etc/hosts.
Jest prostą bazą danych nazw i adresów sieci. Jego format różni się
tylko tym, że może zawierać jedynie dwa pola w wierszu w następujacym
formacie:
# networkname networkaddress
# nazwa_sieci adres_sieci
Przykładowy plik mógłby wyglądać tak:
loopnet 127.0.0.0
localnet 192.168.0.0
amprnet 44.0.0.0
W przypadku używania programu _r_o_u_t_e jeśli punkt docelowy jest siecią,
a sieć ta znajduje się w pliku /etc/networks, wtedy polecenie route
zamiast adresu IP sieci wyświetli jej nazwę.
55..1100.. BBeezzppiieecczzeeńńssttwwoo ssiieecciioowwee ii sstteerroowwaanniiee ddoossttęęppeemm..
Pozwól, że rozpocznę ten rozdział stwierdzeniem, że zabezbieczanie
komputera i sieci przed złośliwymi atakami jest trudną i skomplikowaną
sztuką. Nie uważam się za aksperta w tej dziedzinie i choć opisywane
przeze mnie mechanizmy pomogą być bardziej bezpiecznym to jeśli bardzo
ci zależy na bezpieczeństwie twojego systemu radziłbym ci rozejrzeć
się dokładniej w tym temacie. W internecie można znaleźć wiele dobrych
referencji na ten temat.
Podstawowa zasada brzmi: `NNiiee uurruucchhaammiiaajj sseerrwweerróóww ((pprrooggrraammóóww oobbssłłuuggii)),,
kkttóórryycchh nniiee zzaammiieerrzzaasszz uużżyywwaaćć..'. Wiele dystrybucji posiada mnóstwo
różnego rodzaju oprogramowania, automatycznie konfigurowanego i
uruchamianego. Aby zapewnić sobie minimalny poziom bezpieczeństwa
powinno się przyjrzeć się plikowi /etc/inetd.conf i skomentować te
usługi, których nie zamierzasz używać. Dobrymi kandydatami są: shell,
login, exec, uucp, ftp i serwisy informacyjne, jak: finger, netstat i
systat.
Istnieje wiele mechanizmów sterowania dostępem do oferowanych usług
sieciowych, wymienię podstawowe.
55..1100..11.. //eettcc//ffttppuusseerrss
Plik /etc/ftpusers jest prostym mechanizmem pozwalającym na
zabronienie wejścia do systemu przez usługę ftp niektórym użytkownikom
twojego komputera. /etc/ftpusers jest odczytywany przez program
obsługujący usługę ftp (_f_t_p_d) w momencie nawiązania przychodzącego
połączenia. Plik zawiera listę tych użytkowników, którzy nie mają
pozwolenia wchodzenie do systemu przez usługę ftp. Mógłby wygladać
mniej więcej tak:
# /etc/ftpusers - użytkownicy, którzy nie mogą dostac się do systemu
# przez ftp
root
uucp
bin
mail
55..1100..22.. //eettcc//sseeccuurreettttyy
Pli /etc/securetty pozwala na określenie listy urządzeń tty, przez
które może logować się administrator. Plik /etc/securetty jest
wczytywany przez program weryfikujący użytkownika (zwykle _/_b_i_n_/_l_o_g_i_n).
Jest to lista nazw urządzeń, które mogą być wykorzystywane przez
administratora na wejście do systemu. Wejście do systemu przez
administratora przez inne urządzenia jest niemożliwe.
# /etc/securetty - terminale tty przez które administrator może
# zalogować się do systemu
tty1
tty2
tty3
tty4
55..1100..33.. MMeecchhaanniizzmm sstteerroowwaanniiaa ddoossttęęppeemm ppaakkiieettuu ttccppdd ..
Program _t_c_p_d jaki prawdopodobnie widziałeś w pliku /etc/inetd.conf
dostarcza mechanizmów rejestracji i sterowania dostępem do usług, do
ochrony których został skonfigurowany.
W momencie uruchamiania przez program _i_n_e_t_d odczytuje swoje dwa pliki
konfiguracyjne, zawierające zasady dostępu i albo zezwala, albo
odmawia dostępu do usługi, którą ochrania.
Przeszukuje zasady znajdujące się plikach konfiguracyjnych, aż do
napotkania pierwszej, która pasuje do zaistniałej sytuacji. Jeśli
takiej nie znalazł zakłada, że należy pozwolić na dostęp. Pliki które
przeszukuje to w kolejności: /etc/hosts.allow i /etc/hosts.deny.
Pokrótce opiszę zawartość każdego z nich. Pełny opis możliwości
programu _t_c_p_d znajdziesz na stronach podręcznika (man hosts_allow).
55..1100..33..11.. //eettcc//hhoossttss..aallllooww
Plik /etc/hosts.allow jest plikiem konfiguracyjnym programu
_/_u_s_r_/_s_b_i_n_/_t_c_p_d. Plik hosts.allow zawiera informacje określające,
które komputery _m_o_g_ą uzyskać dostęp do chronionej usługi w twoim
systemie.
Format pliku jest bardzo prosty:
# /etc/hosts.allow
#
# : [: polecenie]
lista usług
jest odzielona przecinkami listą nazw programów obsługi
chronionej usługi do której ma zastosowanie dana reguła. Na
przykład: ftpd, telnetd i fingerd.
lista komputerów
jest rozdzieloną przecinkami listą nazw komputerów lub adresów
IP. Można również określać wzroce adresów lub naz komputerów
stsując znaki specjalne, umożliwiajć tworzenie wzorców
reprezentujacych grupy komputerów. Np. gw.v2ktj.ampr.org oznacz
konkretny komputer, .uts.edu.au oznacza dowolny komputer,
którego pełna nazwa kończy się podanym ciągiem znaków, 44.
oznacza dowolny adres IP zawierający te cyfry. W celu
uproszczenia konfiguracji wprowadzono kilka specjalnych
oznaczeń: ALL określające wszystkie komputery, LOCAL
reprezentujący wszystkei komputery, których nazwa nie zawiera
znaku `.' tzn. należą do tej samej domeny co twój komputer,
PARANOID oznaczający wszystkie komputery, których nazwa nie
odpowiada ich adresowi (name spoofing). I ostatni element bardzo
użyteczny, to EXCEPT pozwalający na podanie listy z wyjątkami.
Omówimy to dokładnie później na przykładzie.
polecenie
jest opcjonalnym parametrem. Jest to pełna ścieżka dostępu do
polecenia (programu), który należy uruchomić za każdym razem,
kiedy dana reguła zostanie dopasowana. Może to być polecenie,
które będzie próbowało zidentyfikować, kto znajduje się w tej
chwili na komputerze próbującym nawiązać połączenia, lub wyśle
wiadomość lub inny komunikat adresowany do administratora
systemu informując o próbie połączenia. Isnieje kilka wzorców,
które zostaną podmienione, najczęściej wykorzystywane to: %h
jest zamieniane na nazwę komputera nawiązującego połączenie lub
jego adres jeśli nie posiada nazwy, %d na nazwę programu
obsługi, który został wywołany.
Przykład:
# /etc/hosts.allow
#
# dostęp do poczty dla wszystkich
in.smtpd: ALL
# połączenie telnet i ftp tylko z komputerów z lokalnej domeny i
# mojego komputera domowego
telnetd, ftpd: LOCAL, myhost.athome.org.au
# Pozwól na finger z dowolnego komputera, lecz rejestruj kto się z
# nami łączył
fingerd: ALL: (finger @%h | mail -s "finger from %h" root)
55..1100..33..22.. //eettcc//hhoossttss..ddeennyy
Plik /etc/hosts.deny jest plikiem konfiguracyjnym programu
_/_u_s_r_/_s_b_i_n_/_t_c_p_d. hosts.deny zawiera listę komputerów, które nie mogą
uzyskać dostępu do chronionej usługi w twoim systemie.
Prosty przyklad wyglądał by mniej więcej tak:
# /etc/hosts.deny
#
# Zabroń dostępu wszystkim komputerom o podejrzanych nazwach
ALL: PARANOID
#
# Zabroń dostępu wszystkim do wszystkiego
ALL: ALL
PARANOID jest w tym przypadku niepotrzebne, ponieważ następna pozycja
przechwytuje wszystkie przypadki. Jedna z tych pozycji jest dobrym
punktem wyjściowym do budowy pliku konfiguracyjnego, zależnym od
twoich oczekiwań i wymagań.
Posiadanie opcji ALL: ALL w /etc/hosts.deny i zezwalanie na dostęp do
konkretnych usług konkretnym komputerom (grupom komputerów) w pliku
/etc/hosts.allow jest najbezpieczniejszym podejściem.
55..1100..44.. //eettcc//hhoossttss..eeqquuiivv
Plik hosts.equiv jest wykorzystywany nadawania innym komputerom i
zdalnym użytkownikom niektórych uprawnień dostępu do naszych zasobów,
bez konieczności podawania przez nich hasła. Jest to użyteczne w
bezpiecznym środowisku sieciowym, gdzie posiadamy kontrolę nad
wszystkimi komputerami lecz w innym przypadku jest to bardzo ryzykowne
ze względu na bezpieczeństwo naszego komputera. W takim przypadku twój
komputer jest tak bezpieczny, jak najmniej bezpieczny z zaufanych
komputerów. Aby zwiększyć bezpieczeństwo swojego systemu nie używaj
tego mechanizmu i zachęcaj swoich użytkowników do nie korzystania z
pliku .rhosta.
55..1100..55.. PPrraawwiiddłłoowwaa kkoonnffiigguurraaccjjaa ddeemmoonnaa ffttpp ..
Wiele miejsc będzie zainteresowynych działającym serwerem anonimowego
_f_t_p, aby umożliwić innym pobieranie i wstawianie plików, bez
konieczności podawania konkretnego identyfikatora użytkownika. Jeśli
zdecydujesz się udostępnić tę usługę, pamiętaj aby prawidlowo
skonfigurować demon _f_t_p_d. Wiekszość stron podręcznika dotyczących
_f_t_p_d_(_8_) opisuje jak to powino być zrobione. Powinieneś się upewnić, że
zawsze stosujesz się do tych instrukcji. Bardzo ważne jest, abyś nie
używał w tym celu kopii swego pliku /etc/passwd w katalogu etc serwera
ftpd. Musisz pamiętać aby usunąć wszelkie niepotrzebne informacje
dotyczące kont, za wyjątkiem tych niezbędnych, w przeciwnym wypadku
będziesz narażony na ataki wynikłe ze złamania haseł prezentowanych w
pliku passwd.
55..1100..66.. FFiirreewwaallllee..
Bardzo dobrym środkiem na zapewnienie bezpieczeństwa swojemu systemowi
jest zabronienie dostępu do twojego komputera wszystkim niepożądanym
pakietom. Jest to dokladnie opisane w Firewall-HOWTO .
55..1100..77.. IInnnnee ssuuggeessttiiee..
Oto inne, potencjalnie religijne sugestie, które powinieneś rozważyć.
sseennddmmaaiill
niezależnie od swojej popularności demon z przerażającą
regularnością pojawiają się ostrzeżenia o błędach w programie
_s_e_n_d_m_a_i_l. Wszystko zależy od ciebie, lecz ja bym go nie
uruchamiał.
NNFFSS ii iinnnnee uussłłuuggii SSuunn RRPPCC
powinieneś się ich bać. Istnieje wiele sposobów wykorzystania
błędów w tych usługach. Bardzo trudno jest zastąpić NFS czymś
innym, dokładnie upewnij się komu pozwalasz na montowanie swoich
dysków.
66.. IInnffoorrmmaaccjjee ssppeeccyyffiicczznnee tteecchhnnoollooggiiii ssiieecciioowweejj
Kolejne podrozdziały są specyficzne dla konkretnych technologi
sieciowych. Informacje tam zawarte nie muszą mieć zastosowania do
innego rodzaju technologii sieciowych.
66..11.. AARRCCNNeett
Urządzenia ARCNET posiadają nazwy `arc0s', `arc1e', `arc2e' itd.
Pierwsza karta wykryta przez jądro otrzymuje nazwę `eth0', a dalsze
otrzymują nazwy z kolejnymi numerami. Litera na końcu nazwy oznacza że
wybrałeś 'ethernet encapsulation' lub standard pakietu zgodny z
RFC1051.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Network device support --->
[*] Network device support
<*> ARCnet support
[ ] Enable arc0e (ARCnet "Ether-Encap" packet format)
[ ] Enable arc0s (ARCnet RFC1051 packet format)
Jeśli posiadasz już prawidłowo skompilowane jądro potrafiące
obsługiwać kartę, jej konfiguracja jest bardzo prosta.
Zwykle będziesz musiał wydać następujące polecenia:
# ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 arc0e
Proszę zapoznaj się z zawartością pliku
/usr/src/linux/Documentation/networking/arcnet-hardware.txt.
Obsługa sieci ARCNet została wykonana przez Averyego Pennaruna,
apenwarr@foxnet.net.
66..22.. AApppplleettaallkk (( AAFF__AAPPPPLLEETTAALLKK ))
Obsługa sieci Appletalk nie wprowadza żądnych dodatkowych nazw
urządzeń sieciowych.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
<*> Appletalk DDP
Obsługa Appletalk pozwala twojemu Linuksowi komunikować się z sieciami
Apple. Bardzo ważnym wykorzystywaniem tej możliwości jest
współdzielenie między twoim Linuksem i komputerami Apple zasobów
takich jak drukarki, czy dyski. Wymagane jest do tego dodatkowe
oprogramowanie o nazwie _n_e_t_a_t_a_l_k. Pakiet _n_e_t_a_t_a_l_k udostępniający
oprogramowanie implementujące protokół Appletalk oraz kilka
pożytecznych programów narzędziowych stworzył wraz z grupą `Research
Systems UnixGroup' na uniwersytecie Michigan reprezentujący ten zespół
Wesley Craig netatalk@umich.edu . Pakiet _n_e_t_a_t_a_l_k powinieneś otrzymać
w swojej dystrybucji Linuksa, lub możesz go pobrać przez ftp ze źródła
:University of Michigan
Aby zbudować i zainstalować pakiet, musisz wydać następujące
polecenia:
# cd /usr/src
# tar xvfz .../netatalk-1.4b2.tar.Z
- W tym momencie możesz zmienić plik `Makefile', np. w celu zmiany
katalogu docelowego DESTDIR. Domyślnie zostanie zainstalowany w
/usr/local/atalk co jest dosyć bezpiecznym wyborem.
# make
- jako administrator:
# make install
66..22..11.. KKoonnffiigguurraaccjjaa oopprrooggrraammoowwaanniiaa AApppplleettaallkk..
Pierwszą rzeczą jaką musisz zrobić aby zaczęło działać to dodanie
nowych pozycji do pliku /etc/services. A mianowicie:
rtmp 1/ddp # Routing Table Maintenance Protocol
nbp 2/ddp # Name Binding Protocol
echo 4/ddp # AppleTalk Echo Protocol
zip 6/ddp # Zone Information Protocol
Kolejnym krokiem będzie utworzenie plików konfiguracyjnych pakietu w
katalogu usr/local/atalk/etc (lub tam gdzie go zainstalowałeś).
Pierwszym plikiem, który należy utworzyć jest
/usr/local/atalk/etc/atalkd.conf. Początkowo potrzebuje od jedynie
dodania wiersza określającego nazwę urządzenia sieciowego, które
obsługuje sieć, na której znajdują się komputery Apple.
eth0
Demon Appletalk po jego uruchomieniu dołoży kilka szczegółow.
66..22..22.. EEkkssppoorrttoowwaanniiee pplliikkóóww LLiinnuukkssaa pprrzzeezz AApppplleettaallkk..
Możesz eksportować swoje pliki, tak aby inne komputery sieci Appletalk
miały do nich dostęp.
W tym celu należy odpowiednio zmienić plik konfiguracyjny
/usr/local/atalk/etc/AppleVolumes.system. Istnieje również inny plik
konfiguracyjny o nazwie /usr/local/atalk/etc/AppleVolumes.default w
takim samym formacie opisujący który system plików zostanie
udostępniony podłączającym się do nas użytkownikom posiadającym
przywileje gościa (guest).
Szczegółowe informacje na temat konfiguracji tych plików, oraz opis
znaczenia wszystkich opcji można znaleźć na stronie podręcznika
poświęconej _a_f_p_d (man afpd).
Krótki plik przykładowy, mógłby wyglądać następująco:
/tmp Scratch
/home/ftp/pub "Obszar ogólnie dostępny"
W tym przykładzie eksportujemy katalog /tmp jako system plików
AppleShare o nazwie `Scratch' oraz katalog anonimowego ftp jako
AppleShare Volume o nazwie "Obszar ogólnie dostępny". Nazwy wolumenów
nie są obowiązkowe, demon wybierzą jakąś za ciebie, lecz przecież nic
cię nie kosztuje podanie nazwy.
66..22..33.. UUddoossttęęppnniiaanniiee ttwwoojjeejj ddrruukkaarrkkii ppoodd LLiinnuukksseemm ww ssiieeccii AApppplleettaallkk..
Współdzielenie drukarki Linuksa z innymi komputerami sieci Appletalk
jest całkiem proste. Musisz uruchomić program _p_a_p_d, Printer Access
Protocol Daemon. Po uruchomieniu będzie akceptował żądania
wydrukowania dokumentu, gromadził go a następnie drukował korzystając
z programów obsługi drukarki pod Linuksem.
Konfiguracja tego programu polega na edycji pliku
/usr/local/atalk/etc/papd.conf. Składnia jest taka sama, jak pliku
/etc/printcap. Nazwa jaką nadasz drukarce zostanie zarejestrowana za
pomocą NBP, protokołu nazw sieci Appletalk.
Prosta konfiguracja mogłaby wyglądać następująco:
TricWriter:\
:pr=lp:op=cg:
Utworzona została drukarka o nazwie `TricWriter' udostępniona sieci
Appletalk. Zadania wysłane na tę drukarkę, będą drukowane na drukarce
`lp' (zdefiniowanej w pliku /etc/printcap) przy pomocy programu _l_p_d.
Pozycja `op=cg' mówi, że operatorem tej drukarki jest użytkownik
Linuksa o nazwie `_c_g'.
66..22..44.. UUrruucchhaammiiaanniiee oopprrooggrraammoowwaanniiaa AApppplleettaallkk..
Ok, w tej chwili powinieneś być już gotowy do sprawdzenia podstawowej
konfiguracji. Pakiet _n_e_t_a_t_a_l_k dostarcza pliku _r_c_._a_t_a_l_k, który powinień
nadawać się dla ciebie. Powinieneś jedynie go uruchomić:
# /usr/local/atalk/etc/rc.atalk
Wszystko powinno się uruchomić i działać poprawnie. Nie powinieneś
zobaczyć, żadnych komunikatów o błędach, lecz jedynie komunikaty
wysłane na konsole informujące o zakończeniu kolejnych etapów
uruchamiania oprogogramowania.
66..22..55.. TTeesstt oopprrooggrraammoowwaanniiaa AApppplleettaallkk..
Aby sprawdzić, czy oprogramowanie pracuje poprawnie, połącz sieć z
jednym z twoich komputerów Apple, rozwiń menu główne, wybierz Chooser,
kliknij na AppleShare i powinieneś zobaczyć tam swojego Linuksa.
66..22..66.. UUwwaaggii nnaa tteemmaatt kkoorrzzyyssttaanniiaa zz oopprrooggrraammoowwaanniiaa AApppplleettaallkk..
Być może bedziesz musiał uruchamiać obsługę sieci Appletalk przed
skonfigurowaniem sieci IP. Jeśli napotkasz na kłopot uruchamiając
oprogramowania Appletalk, lub po jego uruchomieniu masz kłopoty ze
swoją siecią IP, wtedy spróbuj uruchomić oprogramowanie Appletalk
przed uruchomieniem skryptu rc.inet1.
_a_f_p_d (Apple Filing Protocol Daemon) robi pożądny bałagan na twardym
dysku. Poniżej punktów montowań tworzy szereg podkatalogów:
.AppleDesktop i Network Trash Folder. Następnie dla każdego
katalogu, do którego sięgniesz utworzy w nim .AppleDouble aby mieć
gdzie przechowywać /, później spędzisz wiele miłych chwil
sprzątając po nim.
program _a_f_p_d oczekuje przesyłania z Maców haseł czystym tekstem. To
bardzo osłabia bezpieczeństwo twojego systemu. Musisz być bardzo
ostrożny uruchamiając ten program na komputerze podłączonym do
internetu. Jeśli ktoś zrobi coś złego będziesz winił samego siebie.
Istniejące oprogramowanie diagnostyczne np. _n_e_t_s_t_a_t i _i_f_c_o_n_f_i_g nie
obsługuje Appletalk. Surowa informacja na ten temat *jeśli jej
potrzebujesz) jest dostępna przez katalog /proc/net.
66..22..77.. WWiięęcceejj iinnffoorrmmaaccjjii
Więcej szczegółowej informacji w jaki sposób skonfigurować Appletalk
dla Linuksa znajdziesz w _L_i_n_u_x _N_e_t_a_t_a_k_-_H_O_W_T_O : thehamptons.com
.
66..33.. AATTMM
Projekt obsługi Asynchronous Transfer Mode pod Linuksem jest
prowadzony przez Wernera Almesbergera
. Aktualne informacje na ten temat
można znaleźć tutaj: lrcwww.epfl.ch .
66..44.. AAXX2255 (( AAFF__AAXX2255 ))
Urządzenia AX.25 w jądrze wersji 2.0.* to `sl0', `sl1', itd. w 2.1.*
są to `ax0', `ax1', itd.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
[*] Amateur Radio AX.25 Level 2
Protokoły AX25, Netrom i Rose są opisane w AX25-HOWTO
. Stosowane są przez krótkofalowców w eksperymentach
z przesyłaniem pakietów drogą radiową.
Większość pracy związanej z udostępnieniem tej funkcji pod Linuksem
wykonał Jonathon Naylor, jsn@cs.not.ac.uk.
66..55.. DDEECCNNeett
W chwili obecnej prowadzone są prace nad obsługą sieci DECNet. Powinna
się pojawić w późnych wersjach jądra serii 2.1.x.
66..66.. EEQQLL -- mmuullttiippllee lliinnee ttrraaffffiicc eeqquuaalliisseerr
Urządzenie EQL nosi nazwę `eql'. W standtardowej wersji jądra możesz
mieć w komputerze tylko jedno urządzenie EQL. EQL umożliwia
wykorzystanie kilku połączeń point-to-point (np. PPP, SLIP, plip) jako
pojedynczego łącza logicznego przenoszącego ruch tcp/ip. Często taniej
jest skorzystać z kilku linii o niższej prędkości niż z jednej linii o
wysokiej prędkości.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Network device support --->
[*] Network device support
<*> EQL (serial line load balancing) support
Obsługa tego mechanizmu wymaga, aby drugi koniec połączenia również
obsługiwał EQL. Linux, Livingstone Portmasters i nowsze serwery
dostępowe udostępniają tę usługę.
Aby skonfigurować EQL będziesz potrzebować odpowiednich narzędzi,
dostępnych z: sunsite.unc.edu
.
Sama konfiguracja jest całkiem prosta. Rozpoczyna się od
skonfigurowania interfejsu eql. Jest to taki samo urządzenie, jak
każde inne urządzenie sieciowe. Konfiguracja adresu IP i wielkości mtu
odbywa się tak samo za pomocą programu _i_f_c_o_n_f_i_g:
ifconfig eql 192.168.10.1 mtu 1006
route add default eql
Następnie musisz ręcznie zainicjować każdą w linii, którą będziesz
używał. Sposób inicjacji połączenia będzie zależał od rodzaju tej
linii, więcej informacji na ten temat znajdziesz w odpowiednim
podrozdziale.
Na koniec potrzebujesz skojarzyć połączenie przez port szeregowy z
urządzenie EQL, nazywa się to `enslaving' i dokonuje się za pomocą
polecenia _e_q_l___e_n_s_l_a_v_e:
eql_enslave eql sl0 28800
eql_enslave eql ppp0 14400
Parametr `_s_z_a_c_o_w_a_n_a _p_r_ę_d_k_o_ś_ć' (estimated speed), który podajesz w
poleceniu _e_q_l___s_l_a_v_e nie ma bezpośredniego wpływu na działanie systemu.
Jest wykorzystywany przez sterownik EQL do określenia stopnia podziału
datagramów które powinny być otrzymywane przez urządzenie, możesz w
ten sposób dokładnie dopasować równomierne obciążenie wszystlich
linii.
W celu odłączenia linii od urządzenia EQL stosuje się polecnie
_e_q_l___a_m_a_n_c_i_p_a_t_e:
eql_emancipate eql sl0
Budowa tablicy trasowania odbywa się w taki sam sposób, jak w
przypadku zwykłego połączenia point-to-point, za wyjątkiem tego, że
wszystkie trasy zamiast do urządzeń ppp*, sl* powinny się odnosić do
urządzenia eql. Zwykle polecenia wyglądają mniej więcej tak:
route add default eql0
Sterownik EQL został opracowany przez Simona Janesa, simon@ncm.com.
66..77.. EEtthheerrnneett
Urządzenia kart ethernetowych noszą nazwy `eth0', `eth1', `eth2' itd.
Pierwsza karta wykryta przez jądro otrzymuje nazwę `eth0', a reszta
kolejne nazwy w miarę rozpoznawania kart przez system.
Jeśli chcesz się nauczyć, jak pracują karty ethernetowe pod Linuksem,
przeczytaj Ethernet-HOWTO .
Kiedy jądro poprawnie rozpoznaje posiadane przez ciebie karty
ethernetowe, ich dalsza konfiguracja jest prosta.
Zwykle wystarczą takie polecenia:
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 eth0
Większość sterowników kart ethernetowych została opracowana przez
Donalda Beckera becker@CESDIS.gsfc.nasa.gov.
66..88.. FFDDDDII
Urządzenia standardu FDDI noszą nazwy `fddi0', `fddi1', `fddi2' itd.
Pierwsze urządzenie rozpoznane przez jądro otrzymuje nazwę `fddi0', a
pozostałe kolejne nazwy w miarę ich rozpoznawania przez system.
Sterownik kart Digital Equipment Corporation FDDI EISA o PCI został
opracowany przez Lawrencea V. Stefaniego, stefani@lkg.dec.com.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Network device support --->
[*] FDDI driver support
[*] Digital DEFEA and DEFPA adapter support
Kiedy jądro poprawnie rozpoznaje posiadane przez ciebie karty,
konfiguracja interfejsu FDDI jest niemal identyczna, jak inicjalizacja
kart ethernetowych. Po prostu jako argument programów _i_f_c_o_n_f_i_g i _r_o_u_t_e
podajesz jedynie nazwę odpowiedniego urządzenia FDDI.
66..99.. FFrraammee RReellaayy
Istnieją dwa rodzaje urządzeń standardu Frame Relay w jądrze Linuksa,
DLCI o nazwach `dlci00', `dlci01' itd. oraz FRAD o nazwach `sdla0',
`sdla1' itd.
Frame Relay jest nową technologią sieciową, przeznaczoną przede
wszystkim dla ruchu ruchu o nieciągłej, przerywanej naturze. Do sieci
Frame Relay podłącza się za pomocą urządzenia Frame Relay Access
Device (FRAD). Frame Realy pod Linuksem obsługuje przesyłanie pakietów
IP zgodnie z opisem przedstawionym w RFC-1490.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Network device support --->
<*> Frame relay DLCI support (EXPERIMENTAL)
(24) Max open DLCI
(8) Max DLCI per device
<*> SDLA (Sangoma S502/S508) support
Obsługa protokołu Frame Relay, oraz niezbędne do tego narzędzia
zostały napisane przez Mikea McLagana, mike.mclagan@linux.org.
W chwili obecnej, jedynym obsługiwanym urządzeniem FRAD jest Sangoma
Technologies S502A, S502E and S508.
Po prawidłowym skompilowaniu jądra, do skonfigurowania urządzeń FRAD i
DLCI są niezbędne narzędzia konfiguracyjne: ftp.invlogic.com
. Komplilacja i
instalacja narzędzi jest prosta, niestety brak głównego pliku
Makefile, powoduje, że trzeba to zrobić ręcznie.
# cd /usr/src
# tar xvfz .../frad-0.15.tgz
# cd frad-0.15
# for i in common dlci frad; do cd $i; make clean; make; cd ..; done
# mkdir /etc/frad
# install -m 644 -o root -g root bin/*.sfm /etc/frad
# install -m 700 -o root -g root frad/fradcfg /sbin
# install -m 700 -o root -g root dlci/dlcicfg /sbin
Po zainstalowaniu narzędzi, trzeba utworzyć plik
/etc/frad/router.conf. Możesz skorzystać z poniższego wzoru, który
jest zmodyfikowanym plikiem przykładowym:
# /etc/frad/router.conf
# Jest to wzorzec pliku konfiguracyjnego urządzeń Frame Relay
# Zawiera wszystkie możliwe opcje. Wartości domyślne są ustawione
# na podstawie kodu sterowników karty Sangoma S502A dla MSDOSu.
#
# Znak '#' w dowolnym miejscu wiersza rozpoczyna komentarz
# Puste miejsca są ignorowane (możesz tabulatorem ładnie sformatować
# cały plik
# Nieznane pozycje [] i słowa kluczowe są ignorowane
#
[Devices]
Count=1 # Liczba urządzeń do skonfigurowania
Dev_1=sdla0 # nazwa urządzenia
#Dev_2=sdla1 # nazwa urządzenia
# Podane tutaj parametry mają zastosowanie do wszystkich urządzeń,
# lecz dla każdego urządzenia indywidualnie może być podana inna wartość
#
Access=CPE
Clock=Internal
KBaud=64
Flags=TX
#
# MTU=1500 # Maksymalna długość ramki IFrame, domyślnie 4096
# T391=10 # T391 value 5 - 30, domyślnie 10
# T392=15 # T392 value 5 - 30, domyślnie 15
# N391=6 # N391 value 1 - 255, domyślnie 6
# N392=3 # N392 value 1 - 10, domyślnie 3
# N393=4 # N393 value 1 - 10, domyślnie 4
# Podane tutaj parametry mają zastosowanie do wszystkich urządzeń
# CIRfwd=16 # CIR forward 1 - 64
# Bc_fwd=16 # Bc forward 1 - 512
# Be_fwd=0 # Be forward 0 - 511
# CIRbak=16 # CIR backward 1 - 64
# Bc_bak=16 # Bc backward 1 - 512
# Be_bak=0 # Be backward 0 - 511
#
#
# Konfiguracja poszczególnych urządzeń
#
#
#
# Pierwsze urządzenie - Sangoma S502E
#
[sdla0]
Type=Sangoma # Rodzaj urządzenia do skonfigurowania,
# rozpoznawana jest tylko SANGOMA
#
# Poniższe parametry są specyficzne dla typu Sangoma
#
# Rodzaj karty śangoma - S502A, S502E, S508
Board=S502E
#
# Nazwa firmowego oprogramowania testowego dla karty Sangoma
# Testware=/usr/src/frad-0.10/bin/sdla_tst.502
#
# Nazwa firmowego oprogramowania FR
# Firmware=/usr/src/frad-0.10/bin/frm_rel.502
#
Port=360 # Port uzywany przez tę kartę
Mem=C8 # Adres okna pamięci, A0-EE, zależny od karty
IRQ=5 # Numer przerwania IRQ , nie potrebny w przypadku S502A
DLCIs=1 # Liczba urządzeń DLCI przyłączonych do tego urządzenia
DLCI_1=16 # numer pierwszego urządzenia DLCI, 16 - 991
# DLCI_2=17
# DLCI_3=18
# DLCI_4=19
# DLCI_5=20
#
# Podane poniżej opcje mają zastosowanie tylko do tego urządzenia
# i zastępują wartościdomyślne podane wcześniej
#
# Access=CPE # CPE lub NODE, domyślnie CPE
# Flags=TXIgnore,RXIgnore,BufferFrames,DropAborted,Stats,MCI,AutoDLCI
# Clock=Internal # External lub Internal, domyślnie Internal
# Baud=128 # Określona prędkość (bodów) przyłączonych CSU/DSU
# MTU=2048 # Maksymalna długość ramki IFrame, domyślnie 4096
# T391=10 # T391 value 5 - 30, domyślnie 10
# T392=15 # T392 value 5 - 30, domyślnie 15
# N391=6 # N391 value 1 - 255, domyślnie 6
# N392=3 # N392 value 1 - 10, domyślnie 3
# N393=4 # N393 value 1 - 10, domyślnie 4
#
# Drugim urządzeniem jest zupełnie inna karta
#
# [sdla1]
# Type=ŚmiesznaKarta # Rodzaj konfigurowanego urządzenia
# Board= # Rodzaj karty Sangoma
# Key=Value # Parametry specyficzne dla tego urządzenia
#
# Domyślne parametry konfiguracyjne urządzeń DLCI
# Mogą zostać zastępione w konkretnych sekcjach konfiguracyjnych DCI
#
CIRfwd=64 # CIR forward 1 - 64
# Bc_fwd=16 # Bc forward 1 - 512
# Be_fwd=0 # Be forward 0 - 511
# CIRbak=16 # CIR backward 1 - 64
# Bc_bak=16 # Bc backward 1 - 512
# Be_bak=0 # Be backward 0 - 511
#
# Konfiguracja DLCI
# Wszystkie parametry są opcjonalne. Nazewnictwo:
# [DLCI_D_]
#
[DLCI_D1_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=64
# Bc_fwd=512
# Be_fwd=0
# CIRbak=64
# Bc_bak=512
# Be_bak=0
[DLCI_D2_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=16
# Bc_fwd=16
# Be_fwd=0
# CIRbak=16
# Bc_bak=16
# Be_bak=0
Po stworzeniu pliku /etc/frad/router.conf pozostało jedynie
skonfigurować rzeczywiste urządzenia. Jest to tylko troszkę
sprytniejsze niż konfigurowanie zwykłych urządzeń sieciowych. Musisz
pamiętać aby przed uruchomieniem urządzeń DLCI uruchomić wpierw
urządzenie FRAD.
# Konfiguracja karty FRAD i parametrów DLCI
/sbin/fradcfg /etc/frad/router.conf || exit 1
/sbin/dlcicfg file /etc/frad/router.conf
#
# Podnoszenie urządzenia FRAD
ifconfig sdla0 up
#
# Konfiguracja interfejsów DLCI i trasowania
ifconfig dlci00 192.168.10.1 pointopoint 192.168.10.2 up
route add 192.168.10.0 netmask 255.255.255.0 dlci00
#
ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up
route add 192.168.11.0 netmask 255.255.255.0 dlci00
#
route add default dev dlci00
#
66..1100.. ZZlliicczzaanniiee rruucchhuu ((IIPP AAccccoouunnttiinngg))
Cechy jądra Linuksa dotyczące zliczania ruchu umożliwiają gromadzenie
i analizę informacji na temat wykorzystania sieci. Gromadzone dane
zawierają liczbę pakietów, liczbę odpowiadających im bajtów
przesłanych od ostatniego zerowania liczników. Możesz zliczać ruch na
wiele różnych sposobów, odpowiednio grupując ruch tak aby gromadzone
informacje zawierały odpowiednie, interesujące cię statystyki.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
[*] IP: accounting
Po skompilowaniu i zainstalowaniu nowego jądra, musisz skorzystać z
narzędzia o nazwie _i_p_f_w_a_d_m, służącego do wprowadzania i zmiany reguł
zliczania ruchu. Istnieje wiele reguł zliczania ruchu, które mógłbyś
zastosować. Wybrałem kilka prostych, które mogą być użyteczne,
zapoznaj się ze stroną podręcznika dotyczącą programu _i_p_f_w_a_d_m.
Scenariusz: Posiadasz sieć ethernetową przyłączoną do Internetu za
pomocą połączenia PPP. Na segmencie ethernetowym znajduje się komputer
oferujący szereg usług. Jesteś zainteresowany jaki ruch jest
generowany przez telnet, rlogin, ftp i www.
Możesz skorzystać z poniższego zestawu poleceń:
#
# Usuń istniejące reguły zliczania ruchu
ipfwadm -A -f
#
# dodaj reguły dotyczące lokalnego segmentu ethernetowego
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 20
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 20
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 23
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 23
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 80
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 80
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 513
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 513
ipfwadm -A in -a -P tcp -D 44.136.8.96/29
ipfwadm -A out -a -P tcp -D 44.136.8.96/29
ipfwadm -A in -a -P udp -D 44.136.8.96/29
ipfwadm -A out -a -P udp -D 44.136.8.96/29
ipfwadm -A in -a -P icmp -D 44.136.8.96/29
ipfwadm -A out -a -P icmp -D 44.136.8.96/29
#
# Reguły domyślne
ipfwadm -A in -a -P tcp -D 0/0 20
ipfwadm -A out -a -P tcp -S 0/0 20
ipfwadm -A in -a -P tcp -D 0/0 23
ipfwadm -A out -a -P tcp -S 0/0 23
ipfwadm -A in -a -P tcp -D 0/0 80
ipfwadm -A out -a -P tcp -S 0/0 80
ipfwadm -A in -a -P tcp -D 0/0 513
ipfwadm -A out -a -P tcp -S 0/0 513
ipfwadm -A in -a -P tcp -D 0/0
ipfwadm -A out -a -P tcp -D 0/0
ipfwadm -A in -a -P udp -D 0/0
ipfwadm -A out -a -P udp -D 0/0
ipfwadm -A in -a -P icmp -D 0/0
ipfwadm -A out -a -P icmp -D 0/0
#
# Wyświetl listę obowiązujących reguł
ipfwadm -A -l -n
#
Ostatnie polecenie wyświetla listę reguł zliczania ruchu wraz ze
zgromadzonymi informacjami.
Analizując wielkość ruchu IP należy pamiętać, że bbęęddzziiee zzwwiięękksszzaannyy
lliicczznniikk kkaażżddeejj rreegguułłyy,, kkttóórraa ppaassuujjee ddoo aannaalliizzoowwaanneeggoo ppaakkiieettuu, aby
uzyskać wyniki różnicowe, trzeba wykonać proste działania
matematyczne. Gdybym chciał znać liczbę przesłanych bajtów poza
usługami telnet, rlogin, ftp i www musiałbym od wielkości ruchu dla
wszystkich portów odjąć zmierzone wielkości dla poszczególnych reguł.
# ipfwadm -A -l -n
IP accounting rules
pkts bytes dir prot source destination ports
0 0 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 20
0 0 out tcp 44.136.8.96/29 0.0.0.0/0 20 -> *
0 0 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 23
0 0 out tcp 44.136.8.96/29 0.0.0.0/0 23 -> *
10 1166 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 80
10 572 out tcp 44.136.8.96/29 0.0.0.0/0 80 -> *
242 9777 in tcp 0.0.0.0/0 44.136.8.96/29 * -> 513
220 18198 out tcp 44.136.8.96/29 0.0.0.0/0 513 -> *
252 10943 in tcp 0.0.0.0/0 44.136.8.96/29 * -> *
231 18831 out tcp 0.0.0.0/0 44.136.8.96/29 * -> *
0 0 in udp 0.0.0.0/0 44.136.8.96/29 * -> *
0 0 out udp 0.0.0.0/0 44.136.8.96/29 * -> *
0 0 in icmp 0.0.0.0/0 44.136.8.96/29 *
0 0 out icmp 0.0.0.0/0 44.136.8.96/29 *
0 0 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 20
0 0 out tcp 0.0.0.0/0 0.0.0.0/0 20 -> *
0 0 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 23
0 0 out tcp 0.0.0.0/0 0.0.0.0/0 23 -> *
10 1166 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 80
10 572 out tcp 0.0.0.0/0 0.0.0.0/0 80 -> *
243 9817 in tcp 0.0.0.0/0 0.0.0.0/0 * -> 513
221 18259 out tcp 0.0.0.0/0 0.0.0.0/0 513 -> *
253 10983 in tcp 0.0.0.0/0 0.0.0.0/0 * -> *
231 18831 out tcp 0.0.0.0/0 0.0.0.0/0 * -> *
0 0 in udp 0.0.0.0/0 0.0.0.0/0 * -> *
0 0 out udp 0.0.0.0/0 0.0.0.0/0 * -> *
0 0 in icmp 0.0.0.0/0 0.0.0.0/0 *
0 0 out icmp 0.0.0.0/0 0.0.0.0/0 *
#
66..1111.. IIPP AAlliiaassiinngg
Istnieją programy sieciowe, które wymagają aby jedno urządzenie
sieciowe posiadało wiele numerów IP. Dostawcy internetu często
korzystają z tej cechy do tworzenia wirtualnych serwerów WWW i ftp
oferując klientowi utworzenie serwera o innym adresie niż ich własny.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
....
[*] Network aliasing
....
<*> IP: aliasing support
Po skompilowaniu i zainstalowaniu jądra z obsługą IP_Alias,
konfiguracja jest bardzo prosta. Aliasy są dodawane do wirtualnych
urządzeń sieciowych stowarzyszonych z istniejącymu urządzeniami
sieciowymi. Stosuje się prostą konwencję nazywania tych urządzeń, a
mianowicie :, np. eth0:0,
ppp0:10 etc.
Załóżmy, że posiadasz sieć ethernetową, która obsługuje jednocześnie
dwie różne podsieci IP. Chciałbyś aby twój komputer miał bezpośredni
dostęp do obu tych podsieci:
#
# ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 up
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0:0
#
# ifconfig eth0:1 192.168.10.1 netmask 255.255.255.0 up
# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
#
Aby usunąć alias należy do jego nazwy dołączyć znak `-' podczas
następnego odwołania się do niego, np. tak:
# ifconfig eth0:0- 0
Wraz z usunięciem tego aliasu z tabeli trasowań zostaną usunięte
wrzystkie trasy korzystające z tego aliasu.
66..1122.. FFiillttrroowwnniiee ppaakkiieettóóww ((IIPP FFiirreewwaalllliinngg))
Filtrowanie pakiet i zasady przy tym obowiązujące są dokładniej
omówione w Firewall-HOWTO . IP Firewalling
pozwala na zabezpieczenia twojego komputera przed nieuprawnionym
dostępem przez sieć, wykorzystując w tym celu filtrowanie pakietów.
Istnieją trzy różne klasy reguł: filtrowanie pakietów przychodzących,
filtrowanie pakietów wychodzących i filtrowanie pakietów
przekazywanych dalej (forwarding). Reguły filtrowania pakietów
przychodzących dotyczą pakietów otrzymanych przez urządzenie sieciowe.
Reguły filtrowania pakietów wychodzących, dotyczą pakietów tuż przed
wysłaniem przez urządzenie sieciowe. Reguły fitrowania pakietów
przesyłanych dotyczą pakietów, które zostały przez nasz komputer
odebrane, lecz nie jest on ich ostatecznym adresatem, tzn. pakiety,
które będą poddane trasowaniu.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
[*] Network firewalls
....
[*] IP: forwarding/gatewaying
....
[*] IP: firewalling
[ ] IP: firewall packet logging
Wprowadzanie reguł filtrowania pakietów IP wykonuje się za pomocą
programu _i_p_f_w_a_d_m. Jak wspominałem wcześniej nie jestem ekspertem od
zabezpieczeń sieci komputerowych, więc choć prezentuję przykład, z
którego możesz skorzystać, powinieneś samodzielnie zapoznać się z tym
tematem i opracować własne reguły filtrowania pakietów, oczywiście
tylko wtedy, gdy jest dla ciebie ważne bezpieczeństwo twojego systemu.
Prawdopodobnie najczęstszym wykorzystaniem filtrowania pakietów jest
sytuacja, gdy twój Linux pracuje jako router i filtr pakietów
chroniący lokalną sieć przed nieuprawnionym dostępem z sieci
zewnętrznej.
Przedstawiona poniżej konfiguracja jest oparta na sugestiach
przesłanych przez Arnta Gulbrandsena, .
Przykład opisuje konfigurację reguł filtra pakietów praującego na
Linuksie, wykorzystywanym w sposób przedstawiony na poniższym
schemacie:
- -
\ | 172.16.37.0
\ | /255.255.255.0
\ --------- |
| 172.16.174.30 | Linux | |
NET =================| f/w |------| ..37.19
| PPP | router| | --------
/ --------- |--| Mail |
/ | | /DNS |
/ | --------
- -
Poniższe polecenia zwykle są umieszczane w jednym z plików rc, aby
były automatycznie wykonywane przy każdym uruchomieniu systemu. Aby
maksymalnie zwiększyć bezpieczeństwo systemu, powinny być wykonywane
tuż po skonfigurowaniu urządzeń sieciowych, lecz tuż przed ich
włączeniem. W ten sposób niwelujemy chwilę słąbości związaną z
restartem komputera.
#!/bin/sh
# Oczyść tabelę reguł przesyłania pakietów (forwarding)
# Zmień domyślną polityką na 'accept' (akceptuj):
#
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
#
# .. i dla ruchu przychodzącego (Incoming)
#
/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept
# Po pierwsze zabezpiecz interfejs PPP
# Chętnie zamiast '-a deny' wstawiłbym '-a reject -y', lecz wtedy nie
# byłoby możliwe rozpoczynanie połączeń wychodzących przez ten
# interfejs. Parametr -o pozwala rejestrować odrzucane datagramy.
# Kosztem przestrzeni dyskowej zajętej przez informacje sysloga
# uzyskujemy informacje na temat niechcianego ruchu IP.
#
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30
# Odrzuć pewnego rodzaju pakiety:
# Nic nie powinno przychodzić z adresów multicast/anycast/broadcast
#
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
#
# nic nie powinno przychodzić z adresu pętli zwrotnej
#
/sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24
# Zezwól na połączenia SMTP i DNS, lecz jedynie do serwera Mail/DNS
#
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
#
# DNS korzysta z UDP i TCP, musisz pozwolić na oba rodzaje połączeń
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
#
# Nie pozwalamy na "odpowiedzi" przychodzące do tak niebezpiecznych
# portów jak NFS czy rozszerzenie NFSu Larryego McVoya. Jeśli
# korzystasz ze squida dopisz tutaj jego port
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
-D 172.16.37.0/24 2049 2050
# odpowiedzi do innych portów są OK
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
-D 172.16.37.0/24 53 1024:65535
# Odrzuć połączenia przychodzące do identd
# korzystamy tutaj z 'reject', aby łączący się komputer wiedział, że
# nie ma co próbować nawiązać połączenia. W przeciwnym wypadku narazimy
# się na opóźnienia wywołane działaniem programu ident po drugiej
# stronie nawiązywanego przez nas połączenia
#
/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113
# Pozwól na popularne usługi pochodzące z sieci 192.168.64 i 192.168.65
#
/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
-D 172.16.37.0/24 20:23
# akceptuj i przesyłaj wszystko co wzięło się z sieci lokalnej
#
/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0
# zabroń większości innych połączeń TCP i rejestruj je
# (jeśli masz kłopot z działaniem ftp dodaj 1:1023)
#
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24
# ... for UDP too
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24
Dobra konfiguracja filtra jest niemal sztuką. Powyższy przykład
powinien być rozsądnym punktem startowym. Strona podręcznika dotycząca
_i_p_f_w_a_d_m oferuje dodatkowe informacje na ten temat. Jeśli planujesz
założenie filtra upewnij się, że zebrałeś wokół maksymalnie wiele
porad ze źródeł, którym możesz ufać i poproś kogoś aby sprawdził
działanie twojego filtra z zewnątrz.
66..1133.. IIPPXX (( AAFF__IIPPXX ))
Protokół IPX jest powszechnie wykorzystywany w lokalnych sieciach
Novell Netware(tm). Linux potrafi obsługiwać ten protokół i może
zostać skonfigurowany do pracy jako końcówka sieci Novell Netware(tm)
lub jako router pakietów IPX.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
[*] The IPX protocol
[ ] Full internal IPX network
Protokół IPX i standard NCPFS są dokładniej omówione w IPX-HOWTO .
66..1144.. IIPPvv66
Właśnie gdy zaczęło ci się wydawać, że zaczynasz rozumieć sieci IP,
zasady się zmieniły! IPv6 jest skrótem oznaczającym wersję 6 protokołu
IP. IPv6 został opracowany w celu rozwiania obaw społeczności
internetowej związanych z wyczerpywaniem się wolnych adresów IP.
Adresy protokołu IPv6 są budowane na 32 bajtach (128 bitów), pozwoli
to na lepsze zarządzanie sieciami, niż ma to obecnie.
Jądra Linuksa serii 2.1.* już posiadają działającą, choć niepełną
implementacje protokołu IPv6.
Jeśli chcesz poeksperymentować z tą nową generacją technologii
internetowych, lub jest ci to do czegoś potrzebne, powinieneś
przeczytać IPv6-FAQ dostępny pod adresem: www.terra.net
.
66..1155.. IISSDDNN
Sieć cyfrowa zintegrowanych usług (Integrated Services Digital Network
- ISDN) składa się z serii standardów definujących cyfrową sieć
pakietową ogólnego przeznaczenia. ISND jest zwykle dostarczana łączami
o wysokiej prędkości, podzielonymi na wiele kanałów. Istnieją dwa
różne rodzaje kanałów, kanały typu 'B' rzeczywiście przenoszące dane
użytkownika, oraz kanał typu 'D' wykorzystywany do przesyłania
informacji sterującej do centrali ISDN w celu zestawiania połączeń i
innych funkcji. Dla przykładu w Australii ISDN może być dostarczony
łączem 2Mbps podzielonym na 30 kanałów B po 64kbps każdy i jeden kanał
D. W tej samej chwili może być wykorzystywana dowolna liczba kabałów w
dowolnej kombinacji. Jest możliwe np, zestawienie 30 różnych połączeń
z 30toma różnymi punktami docelowymi, każde po 64kbps lub 15 połączeń
z 15toma różnymi punktami docelowymi, każde po 128 kbps (jedno
połączenie wykorzystuje dwa kanały), lub zestawienie małej liczby
połączeń pozostawiając pozostałą część pasma niewykorzytaną. Pierwotną
przyczyną powstania ISDN, było umożliwienie firmom telekomunikacyjnym
udostępniania jednej usługi przesyłania danych, która mogłaby być
wykorzystywana dla telefonii (wykorzystują cyfrowe przetworniki
głosu) lub do przesyłania danych bez konieczności wykonywania przez
klienta jakichkolwiek zmian.
Istnieje kilka różnych metod podłączenia komputera do sieci ISDN.
Jedną z nich jest wykorzystanie urządzenia o nazwie `Terminal
Adaptor', które włącza się do końcówki sieciowej (Network Terminating
Unit), zainstalowanej przez twojego dostawcę usługi ISDN,
udostępniającego z drugiej strony kilka portów szeregowych. Jeden z
tych portów służy do wprowadzania poleceń w celu skonfigurowania i
nawiązania połączeń, pozostałe są podłączone do urządzeń sieciowych,
które będą bezpośrednio korzystały z zestawionych kanałów transmisji
danych. W takiej konfiguracji Linux będzie pracował poprawnie bez
konieczności wykonywania jakichkolwiek modyfikacji. Korzystamy z portu
szeregowego urządzenia 'Terminal Adaptor' w taki sam sposób, jak ze
zwykłego portu szeregowego. Innym sposobem przyłączenia Linuksa do
sieci ISDN, w czym wspomagać nas będzie kod obsługi ISDN zawarty w
jądrze Linuksa jest zainstalowanie karty ISDN bezpośrednio w Linuksie.
Wtedy moduł obsługi ISDN w jądrze Linuksa jest odpowiedzialny za
obsługę urządzenia, protokołów i zestawianie połączeń.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
ISDN subsystem --->
<*> ISDN support
[ ] Support synchronous PPP
[ ] Support audio via ISDN
< > ICN 2B and 4B support
< > PCBIT-D support
< > Teles/NICCY1016PC/Creatix support
Implementacja ISDN w jądrze Linuksa rozpoznaje szereg różnych typów
wewnętrznych kart ISDN. Ich lista jest przedstawiona podczas
konfiguracji jądra:
ICN 2B and 4B
Octal PCBIT-D
Teles ISDN-cards and compatibles
Część z tych kart wymaga załadowania do ich wewnętrznej pamięci
odpowiedniego oprogramowania. Służy do tego oddzielne narzędzie.
Szczegółowy opis jak skonfigurować obsługę ISDN pod Linuksem jest
dostępny w katalogu /usr/src/linux/Documentation/isdn/. Istnieje
również FAQ poświęcony tej tematyce: _i_s_d_n_4_l_i_n_u_x jest dostępny pod
adresem www.lrz-muenchen.de . (po połączeniu, aby otrzymać wersję
angielską, musisz kliknąć na angielskiej fladze)
UUwwaaggaa nnaa tteemmaatt PPPPPP. Rodzina protokołów PPP pracuje na łączach
szeregowych synchronicznych lub asynchronicznych. Rozpowszechniany
powszechnie program `_p_p_p_d' obsługuje jedynie tryb asynchroniczny.
Jeśli zamierzasz uruchamiać połączenie PPP wykorzystująć jako nośnik
usługę ISDN, potrzebujesz specjalną, zmodyfikowaną wersję tego
programu. Wskazówki, gdzie ją można znaleźć znajdziesz w dokumentacji,
o której wspomnieliśmy wcześniej.
66..1166.. IIPP MMaassqquueerraaddee
Wielu ludzi do połączenia z Internetem ma zwykłe konto u dostawcy
Internetu. Niemal każdy korzystający z takiej konfiguracji otrzymuje
od swojego dostawcy Internetu jeden adres IP. Zwykle jest to
wystarczające na podłączenie do Internetu tylko jednego komputera.
Maskarada adresu IP jest sprytną sztuczką umożliwiającą jednoczesne
korzystanie z tego jednego adresu IP przez wiele komputerów,
sprawiając, że dla świata zewnętrzengo komputery te wyglądają tak, jak
gdyby były komputerem obsługujący połączenie modemowe z Internetem.
Istnieje mała niedogodność, a mianowicie w większości przypadków
maskarada adresów IP działa tylko w jedną stronę, to znaczy komputery,
które z niej korzystają mogą nawiązywać połączenia z komputerami w
sieci Internet, lecz same nie mogą otrzymywać połączeń z zewnątrz. To
oznacza, że niektóre usługi sieciowe np. _t_a_l_k nie działąją, a inne np.
_f_t_p muszą być skonfigurowane do pracy w trybie pasywnym (PASV). Na
szczęscie większość usług internetowych takich, jak _t_e_l_n_e_t, _W_W_W i _i_r_c
działa bardzo dobrze.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Networking options --->
[*] Network firewalls
....
[*] TCP/IP networking
[*] IP: forwarding/gatewaying
....
[*] IP: masquerading (EXPERIMENTAL)
Wpierw twój Linux musi obsługiwać połączenie z internetem (zwykle
przez SLIP lub PPP) w taki sam sposób, jak gdyby byłjedynym
komputerme, który będzie z tego połączenia korzystał. Następnie należy
skonfigurować dodatkowe urządzenie sieciowe, zwykle kartę sieci
ethernet, zwykle korzystając z puli numerów IP zarezerwowanych dla
sieci prywatnych, których nie wykorzystuje się w sieci Internet.
Komputery korzystające z maskarady adresów IP bedą właśnie na tej
sieci. Każdy z nich otrzyma adres IP i zostanie skonfigurowany w ten
sposób, że jego gatewayem (routerem) stanie się interfejs karty
ethernetowej naszego Linuksa.
Typowa konfiguracja wygląda mnie więcej tak:
- -
\ | 192.168.1.0
\ | /255.255.255.0
\ --------- |
| | Linux | .1.1 |
NET =================| masq |------|
| PPP/slip | router| | --------
/ --------- |--| host |
/ | | |
/ | --------
- -
Najważniejsze polecenia konfiguracyjne dla tego przykładu:
# Trasa do sieci na segmencie ethernetowym
route add 192.168.1.0 netmask 255.255.255.0 eth0
#
# Domyślna trasa do Internetu
route add default ppp0
#
# Wszystkie komputery w sieci 192.168.1/24 korzystają z maskarady
# adresów IP
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
Więcej informacji na temat maskarady adresów IP pod Linuksem
znajdziesz tutaj:IP Masquerade Resource Page
, lub w dokumencie IP-Masquerade-
HOWTO .
66..1177.. IIPP TTrraannssppaarreenntt PPrrooxxyy
Przezroczyste proxy IP jest udogodnieniem, które umożliwia
przekierowanie połączeń do usług lub serwerów na innym komputerze do
usług lub serwerów znajdujących się na tym komputerze. Zwykle jest to
użyteczne w sytuacji gdy twój Linux pracuje jako router i jednocześnie
pracuje jako serwer proxy. W takim przypadku możesz przekierować do
lokalnego serwera proxy wszystkie połączenia do serwerów proxy
znajdujących się za routerem.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Networking options --->
[*] Network firewalls
....
[*] TCP/IP networking
....
[*] IP: firewalling
....
[*] IP: transparent proxy support (EXPERIMENTAL)
Konfigurację przezroczystego proxy wykonuje się programem _i_p_f_w_a_d_m.
Prosty przykład, który może być użyteczny:
ipfwadm -I -a accept -D 0/0 80 -r 8080
W powyższym przykładzie przekierowujemy wszystkie połączenia
skierowane na port 80 (www) dowolnego komputera, na połączenia do
portu 8080 naszego Linuksa. Ten sposób mógłby być użyty (gdyby był
poprawny - bo nie jest ...pp) do przekierowania całego ruchu www do
lokalnego serwera proxy.
66..1188.. MMoobbiillee IIPP
Termin 'IP mobility' opisuje zdolność komputera do przemieszczania
swojego punktu styku z internetem z jednej sieci do innej sieci bez
konieczności zmiany własnego adresu IP i bez utraty nawiązanych
połączeń. Zwykle gdy komputer zmienia swój punkt przyłączenia do
sieci, musi również zmienić adres IP. Udogodnienie IP Mobility
przezwycięża tę niedogodność przydzielając komputerowi jeden, ustalony
adres IP i wykorzystuje tunelowanie (IP tunneling) i automatyczne
trasowanie zapewniając, że datagramy skierowane do tego komputera są
kierowane do adresu IP, z którego korzysta.
Istnieje projekt mający zapewnić powstanie kompletu narzędzi dla
udogodnienia 'IP mobility' pd Linuksem. Aktualny stan prac można
poznać zaglądając na stronę: Linux Mobile IP Home Page
.
66..1199.. MMuullttiiccaasstt
IP Multicast pozwala na jednoczesne trasowanie datagramów do wielu
różnych komputerów znajdujących się w zupełnie innych podsieciach.
Korzysta się z tego mechanizmu rozpowszechniania w internecie audio i
video lub innych nowoczesnych usług.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
[*] TCP/IP networking
....
[*] IP: multicasting
Wymagany jest minimalny zestaw narzędzi i mała rekonfiguracja sieci.
Dobrym źródłem informacji na temat istalacji i konfiguracji tego
udogodnienia pod Linuksem jest strona www.teksouth.com
.
66..2200.. NNeettRRoomm (( AAFF__NNEETTRROOMM ))
Urządzenia NetRom noszą nazwy `nr0', `nr1', itd.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
[*] Amateur Radio AX.25 Level 2
[*] Amateur Radio NET/ROM
Protokoły AX25, NetRom i Rose są opisane w AX25-HOWTO
. Są wykorzystywane głównie przez krótkofalowców
(packet radio).
Wiekszość pracy w implementacji tych protokołów pod Linuksem wykonał
Jonathon Naylor, jsn@cs.not.ac.uk.
66..2211.. PPLLIIPP
Urządzenia PLIP noszą nazwy `plip0', `plip1, itd. Pierwsze
konfigurowane urządzenie otrzymuje numer `0', a następne otrzymują
kolejne numery.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
<*> PLIP (parallel port) support
_p_l_i_p (Parallel Line IP), jest podobny do SLIP, to znaczy zapewnia
połączenie _p_u_n_k_t_-_d_o_-_p_u_n_k_t_u (point-to-point) między dwoma komputerami,
lecz wykorzystuje w tym celu porty równoległe komputera (zamiast
portów szeregowych, jak to ma miejsce w przypadku protokołu SLIP).
Ponieważ port równoległy umożliwia w jednej chwili transmisję więcej
niż jednego bitu, wykorzystując interfejs _p_l_i_p możemy osiągnąć
znacznie większe prędkośći transmisji, niż ma to miejsce w przypadku
portu szeregowego. Co więcej, do plip może być wykorzystany nawet
najprostszy rodzaj portu szeregowego, port drukarkowy, gdy do pełnego
wykorzystania portów szeregowych konieczne jest zakupienie dosyć
drogich układów UART 15550AFN.
Należy zwrócić uwagę, że niektóre laptopy używają układów, które nie
będą poprawnie współpracować z PLIP, ponieważ nie zezwalają na
przesyłanie pewnego rodzaju sygnałów, na których polega PLIP, a z
których nie korzystają drukarki.
Interfejs _p_l_i_p pod Linuksem jest zgodny z _C_r_y_n_w_y_r _P_a_c_k_e_t _D_r_i_v_e_r _P_L_I_P,
a to oznacza, że możesz przyłączyć do swojego Linuksa, komputer
pracujący pod MSDOS, na którym działa oprogramowanie TCP/IP
korzystające ze standardu 'packet drivera', korzystająe z sterownika
plip.
Podczas kompilacji jądra jedyny plik, któremu warto się bliżej
przyjrzeć to /usr/src/linux/driver/net/CONFIG. Zawiera parametry
czasowe sterownika _p_l_i_p podane w milisekundach. Wartości domyślne są
prawdopodobnie poprawne w większości przypadków. Jeśli twój komputer
jest wyjątkowo wolny, możesz się zastanowić nad zwiększeniem tych
paramterów, ale na komputerze po drugiej stronie połączenia.
Sterownik przyjmuje następujące wartości domyślne parametrów:
urządzenie adres IRQ
we/wy
------ -------- -----
plip0 0x3BC 5
plip1 0x378 7
plip2 0x278 2 (9)
Jeśli parametry portów równoległych twojego komputera nie pasują do
żadnej z przedstawionych powyżej kombinacji, jesteś w stanie zmienić
przerwanie IRQ wykorzystywane przez port (za pomocą programu
_i_f_c_o_n_f_i_g). Pamiętaj aby włączyć w BIOSie korzystanie przez porty
równoległe z przerwań IRQ, oczywiście o ile BIOS posiada taką opcję.
W celu skonfigurowania interfejsu _p_l_i_p musisz do plików rc
konfigurujących sieć _d_o_d_a_ć następujące polecenia:
#
# Przyłącz interfejs PLIP
#
# skonfiguruj pierwszy port równoległy jako urządzenie plip
/sbin/ifconfig plip0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End plip
Gdzie:
IIPPAA..IIPPAA..IIPPAA..IIPPAA
oznacza twój adres IP.
IIPPRR..IIPPRR..IIPPRR..IIPPRR
oznacza adres IP komputera zdalnego.
Parametr _p_o_i_n_t_o_p_o_i_n_t ma tutaj takie samo znaczenie, co w przypadku
protokołu SLIP, a mianowicie określa adres IP komputera po drugiej
stronie połączenia.
Urządzenie _p_l_i_p niemal pod każdym względem możesz traktować tak samo
jak urządenie _s_l_i_p, poza tym, że ani _d_i_p ani _s_l_a_t_t_a_c_h nie muszą i nie
mogą być wykorzystywane.
66..2211..11.. SScchheemmaatt kkaabbllaa ddoo ppoołłąącczzeenniiaa PPLLIIPP..
_p_l_i_p został opracowany w taki sposób, aby wykorzystywał kable o takim
samym układzie, co kable, z których korzystają inne popularne programy
do transferu danych przez port równoległy pracujące w środowisku
MSDOS.
Schemat połączeń (wzięty z /usr/src/linux/drivers/net/plip.c) znajduje
się poniżej:
Nazwa Połączenie
--------- -----------------
GROUND 25 - 25
D0->ERROR 2 - 15
ERROR->D0 15 - 2
D1->SLCT 3 - 13
SLCT->D1 13 - 3
D2->PAPOUT 4 - 12
PAPOUT->D2 12 - 4
D3->ACK 5 - 10
ACK->D3 10 - 5
D4->BUSY 6 - 11
BUSY->D4 11 - 6
D5 7*
D6 8*
D7 9*
STROBE 1*
FEED 14*
INIT 16*
SLCTIN 17*
Uwagi: Nie należy łączyć końcówek oznaczonych `*'. Dodatkowe
uziemienia to 18,19,20,21,22,23 i 24.
Jeśli kabel z którego korzystasz jest ekranowany, ekran powinien być
podłączony do obudowy wtyczki DB-25 ttyyllkkoo nnaa jjeeddnnyymm kkoońńccuu.
OOssttrrzzeeżżeenniiee:: kkaabbeell zzee źźllee wwyykkoonnaannyymmii ppoołłąącczzeenniiaammii mmoożżee ffiizzyycczznniiee
zznniisszzcczzyyćć kkaarrttęę kkoonnttrroolloorraa ttwwoojjeeggoo kkoommppuutteerraa.. Bądź bardzo ostrożny i
dwukrotnie sprawdzaj każde połączenie, aby nie narazić się na
niepotrzebny ból głowy lub atak serca.
Choć może się udać, że połączenie PLIP będzie pracować na duże
odległości, należy jednak tego unikać. Specyfikacja kabla pozwala na
wykonania kabla o długości ok 1m. Bądź ostrożny używając dłuższych
kabli, ponieważ źródła silnych pół elekromagnetycznych (pioruny, linie
wysokiego napięcia, nadajniki radiowe) mogą zakłócić pracę a czasami
doprowadzić do uszkodzenia sterownika. Jeśli zależy ci na połączeniu
dwóch komputerów na naprawdę dużą odległość, powinieneś zopatrzyć się
w parę tanich kart ethernetowych pracujących na cienkim kablu
koncentrycznym.
66..2222.. PPPPPP
Urządzenia PPP noszą nazwy `ppp0', `ppp1, itd. Urządzenia otrzymują
kolejne numery poczynając od `0'.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
<*> PPP (point-to-point) support
Szczegółowy opis konfiguracji PPP można znaleźć w PPP-HOWTO .
66..2222..11.. UUttrrzzyymmyywwaanniiee zzaa ppoommooccąą pppppp ssttaałłeeggoo ppoołłąącczzeenniiaa zz IInntteerrnneetteemm..
Jeśli masz na tyle szczęścia, aby posiadać półstałe połączenie z
siecią i chciałbyś, aby twój komputer automatycznie zestawiał
połączenie PPP, gdy z jakiegoś powodu zostanie przerwane, pomoże ci w
tym prosta sztuczka.
Skonfiguruj PPP w taki sposób, aby było uruchamiane przez
administratora systemu za pomocą polecenia:
# pppd
UUppeewwnniijj ssiięę, że w pliku /etc/ppp/options znajduje się opcja `-detach'.
Następnie dodaj do pliku /etc/inittab, poniżej definicji _g_e_t_t_y
następujący wiersz:
pd:23:respawn:/usr/sbin/pppd
W ten sposób program _i_n_i_t będzie uruchamiał i monitorował program _p_p_p_d
i za każdym razem, gdy pppd skończy pracę, będzie uruchamiał go
ponownie.
66..2233.. RRoossee pprroottooccooll (( AAFF__RROOSSEE ))
Urządzenia protokołu Rose noszą nazwy `rs0', `rs1', itd. Dostępne są
w jądrach w wersji 2.1.*.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Networking options --->
[*] Amateur Radio AX.25 Level 2
<*> Amateur Radio X.25 PLP (Rose)
Protokoły AX25, NetRom i Rose są dokładnie omówione w AX25-HOWTO
. Są wykorzystywane przez krótkofalowców (packet
radio).
Większość pracy związanej z implementacją tych protokołów pod Linuksem
wykonał Jonathon Naylor, jsn@cs.not.ac.uk.
66..2244.. SSAAMMBBAA -- ``NNeettBBEEUUII'',, ``NNeettBBiiooss'' ssuuppppoorrtt..
SAMBA jest implemnetacją protokołu SMB (Session Management Block).
Pozwala na korzystanie z dysków i drukarek komputera pracującego pod
Linuksem, komputerom pracującym pod systemami firmy Microsoft lub pod
systemem OS2
SAMBA i jej konfigiracja jest szczegółowo omówiona w SMB-HOWTO .
66..2255.. KKlliieenntt pprroottookkoołłuu SSLLIIPP
Urządzenia protokołu SLIP są nazywane `sl0', `sl1' itd. Pierwsze
skonfigurowane urządzenie otrzymuje numer `0', pozostałe otrzymują
kolejne numery, w momencie ich konfiguracji.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Network device support --->
[*] Network device support
<*> SLIP (serial line) support
[ ] CSLIP compressed headers
[ ] Keepalive and linefill
[ ] Six bit SLIP encapsulation
Protokół SLIP (Serial Line Internet Protocol) pozwala na zestawienie
połączenia TCP/IP przez linię szeregową, np. połączenie modemowe przez
linię telefoniczną lub dzierżawioną. Oczywiście aby móc korzystać z
protokołu SLIP należy mieć wpierw dostęp do _s_e_r_w_e_r_a _S_L_I_P. Wiele
uniwersytetów i firm komercyjnych udostępniają usługę SLIP.
SLIP wykorzystuje porty szeregowe komputera do przesyłania datagramów
IP. W tym celu musi przejąć sterowanie portu szeregowego. Urządzenia
SLIP noszą nazwy _s_l_0, _s_l_1 itd. Jak to się ma do urządzeń portów
szeregowych? Oprogramowanie sieciowe korzysta z funkcji _i_o_c_t_l (i/o
control) za pomocą których może zażądać zamiany urządzenia portu
szeregowego w urządzenie SLIP. Dwa popularne programy potrafią to
zrobić. Jeden z nich to _d_i_p, drugi _s_l_a_t_t_a_c_h.
66..2255..11.. ddiipp
_d_i_p (Dialup IP) to zmyślny program umożliwiający ustawienie prędkości
portów szeregowych, sterowanie modemem w celu wybrania odpowiedniego
numeru, zautomatyzowane wejście do zdalnego systemu, przesukiwanie i
wybieranie informacji przesyłanych przez zdalny serwer (np.
przydzielonego nam na czas sesji adresu IP), korzystanie z funkcji
_i_o_c_t_l w celu przestawienia portu szeregowego w urządzenie SLIP.
Program _d_i_p posiada rozbudowany język przeznaczony do pisania
skryptów, dzięki czemu można bardzo łatwo zautomatyzować procedurę
zestawiania połączenia SLIP.
Jest dostępny pod adresem: sunsite.unc.edu
.
Aby go zainstalować spróbuj wydać następujące polecenia:
#
# cd /usr/src
# gzip -dc dip337o-uri.tgz | tar xvf -
# cd dip-3.3.7o
# make install
#
Plik Makefile zakłada istnienie w twoim systemie grupy o nazwie _u_u_c_p,
lecz możesz to zmienić np na _d_i_p, lub _s_l_i_p zależnie od twojej
konfiguracji.
66..2255..22.. ssllaattttaacchh
_s_l_a_t_t_a_c_h w przeciwieństwie do _d_i_p jest bardzo prostym programem,
bardzo łatwym w użytkowaniu, nie posiadającym bogatych opcji programu
_d_i_p. Nie posiada możliwości tworzenia skryptów, jedyne co robi to
konfiguracja urządzenia portu szeregowego, jako urządzenia SLIP.
Zakłada, że posiadasz wszystkie informacje niezbędne do zestawienia
połączenia oraz, że połączenie fizyczne między portami jest już
zestawione. _s_l_a_t_t_c_h jest idealne do wykorzystania w stałych
połączeniach z serwerem, np. przez kabel łączący bezpośrednio dwa
porty szeregowe lub przez linie dzierżawioną.
66..2255..33.. KKiieeddyy uużżyywwaaćć kkaażżddeeggoo zz ttyycchh pprrooggrraammóóww ??
Skorzystałbym z programu _d_i_p zawsze wtedy, gdy łączyłbyn komputer z
serwerem SLIP przez modem i linię telefoniczną. Skorzystałbym z
programu _s_l_a_t_t_a_c_h wtedy, gdy zestawiałbym połączenie przez linię
dzierżawioną lub kabel bezpośrednio między serwerem i moim komputerem
i gdy nie muszę wykonywać żadnych czynności do fizycznego zestawienia
połączenia między moim komputerem a serwerem. Patrz rozdział 'Stałe
połączenie SLIP'.
Konfiguracja urządzenia SLIP jest zbliżona do konfiguracji urządzenia
karty ethernetowej. (przeczytaj rozdział 'Konfiguracja karty
ethernetowej). Jednakże istnieją dwie zasadnicze różnice:
Po pierwsze SLIP w przeciwieństwie do sieci ethernetowych łączy
bezpośrednio ze sobą tylko dwa komputery, po jednym na każdym końcu
połączenia. O ile podłączenie kabla sieci ethernet do komputera
oznacza jej natychmiastową gotowość do pracy, o tyle w przypadku
protokołu SLIP może być wymagana wcześniejsza inicjacja fizycznego
połączenia między komputerami.
Jeśli korzystasz z programu _d_i_p, to zwykle inicjacja łącza odbywa się
nie tuż po uruchomieniu systemu, lecz później, gdy jesteś gotowy do
korzystania z połączenia. Można całą tę procedurę zautomatyzować.
Jeśli korzystasz z programu slattch wtedy prawdopodobnie zechcesz
zmodyfikować plik startowy rc.inet1. Jak to zrobić powiemy za chwilę.
Istnieją dwa podstawowe serwery udostępniające SLIP. Różnią się
sposobem przydziału adresu IP, mogą to robić statycznie (za każdym
razem otrzymujesz ten sam adres IP) i dynamicznie (po nawiązaniu
połączenia serwer podaje, jakiego adresu powinieneś używać). Niemal
każdy serwer SLIP bedzie wymagał przedstawienia się i podania hasła.
_d_i_p potrafi zautomatyzować wszystkie te procedury.
66..2255..44.. SSttaattyycczznnyy sseerrwweerr SSLLIIPP zz lliinniiąą mmooddeemmoowwąą ii pprrooggrraammeemm DDIIPP..
Statyczny serwer SLIP to skrót oznaczający serwer SLIP przydzielający
adresy IP w sposób statyczny. Otrzymany adres IP jest wyłącznie twój.
Za każdym razem, gdy przyłączysz się do serwera będziesz konfigurował
port SLIP swojego komputera tym samym adresem IP. Serwer odpowie na
połączenie rozpoczęte przez twój modem, prawdopodobnie poprosi o
podanie identyfikatora i hasła, a następnie po przejściu w tryb SLIP
będzie przesyłał wszystkie datagramy adresowane na twój adres IP przez
nazwiązane przez ciebie połączenie. Jeśli korzystasz ze statycznego
serwera SLIP, możesz chcieć dodać do pliku /etc/hosts pozycję z nazwą
i adresem IP twojego komputera. Powinieneś również skonfigurować kilka
innych plików, między innymi rc.inet2, host.conf, resolv.conf,
/etc/HOSTNAME i rc.local. Pamiętaj, że modyfikując rc.inet1 nie
musisz podawać żadnych poleceń specyficznych dla połączenia SLIP,
ponieważ to dopiero _d_i_p wykona całą ciężką robotę konfigurując
interfejs SLIP, po tym jak nawiąże połączenie modemowe i zaloguje się
na serwer.
Jeśli tak właśnie pracuje serwer SLIP z którego korzystasz możesz
przejść do rozdziału 'Korzystanie z programu dip', tam dowiesz się jak
poprawnie skonfigurować ten program.
66..2255..55.. DDyynnaammiicczznnyy sseerrwweerr SSLLIIPP zz lliinniiąą mmooddeemmoowwąą ii pprrooggrraammeemm DDIIPP..
_D_y_n_a_m_i_c_z_n_y serwer SLIP to skrót oznaczający serwer SLIP, który z
pewnej puli przydziela adresy IP w sposób dynamiczny (za każdym razem,
gdy się z nim połączysz możesz otrzymać inny adres IP). To znaczy, że
nie masz gwarancji, że łącząc się otrzymasz konkretny adres IP, może
on być wykorzystywany przez kogoś innego, wtedy gdy nie korzystasz z
połączenia. Administrator sieci, który skonfigurował serwer
przydzielił mu pewną pulę adresów IP z której może korzystać.
Obsługując kolejne przychodzące połączenie znajduje pierwszy
niewykorzystany w danym momencie adres IP, przeprowadza użytkownika
przez procedurę weryfikacyjną wyświetlając na koniec informacje
zawierającą adres IP, który został przydzielony temu użytkownikowi na
czas trwania nawiązanego właśnie połączenia.
Konfiguracja do korzystania z tego rodzaju serwera jest podobna do tej
dla serwera statycznego. Trzeba jedynie dodać fragment pobrania adresu
IP przydzielonego nam przez serwer na czas trwania połączenia, a
następnie kontynuować konfigurowanie SLIPa z tym właśnie adresem.
Ponownie, _d_i_p wykonuje tę ciężką pracę, a jego nowsze wersje są na
tyle sprytne, że potrafią nie tylko zalogować cię do systemu, ale
również potrafią odczytać automatycznie adres IP wyświetlany przez
serwer, zachowując go do późniejszego wykorzystania przy
konfigurowaniu interfejsu SLIP.
Jeśli tak właśnie pracuje serwer SLIP z którego korzystasz możesz
przejść do rozdziału 'Korzystanie z programu dip', tam dowiesz się jak
poprawnie skonfigurować ten program.
66..2255..66.. KKoorrzzyyssttaanniiee zz pprrooggrraammuu ddiipp..
Jak wyjaśniliśmy wcześniej _d_i_p jest potężnym programem, który potrafi
uprościć i zautomatyzować proces łączenia się z serwerem SLIP,
logowania się na ten serwer, uruchamiania tam odpowiedniego
oprogramowania i konfigurowania lokalnych urządzeń SLIP za pomocą
odpowiednich poleceń korzystających z programów _i_f_c_o_n_f_i_g i _r_o_u_t_e.
Podstawowym sposobem korzystania z programu _d_i_p jest pisanie i
uruchamianie specjalnych skryptów, składających się z listy poleceń
rozumianych przez program _d_i_p. Przyjrzyj się plikowi sample.dip
znajdującemu się w dystrybucji programu _d_i_p. Dip jest potężnym
programem posiadającym wiele opcji, nie bedziemy ich tu wszystkich
przedstawiać, jeśli cię to interesuje, przyjrzyj się stronom
podręcznika poświęconym programowi dip, plikom README i innym plikom
przykładowym znajdującym się w pakiecie dystrybucyjnym programu.
Prawdopodobnie zauważyłeś, że plik sample.dip zakłada, że korzystasz
ze statycznego serwera SLIP, tzn. że wiesz jaki jest twój adres IP,
zanim połączysz się z serwerem. W przypadku korzystania z dynamicznego
serwera SLIP nowsze wersje programu dip zostały zaopatrzone w
dodatkowe polecenie, które potrafi automatycznie odczytać i
skonfigurowć lokalne urządzenie SLIP z adresem IP przydzielonym przez
serwer. Poniższa próbka jest zmodyfikowanym plikiem sample.dip
dostarczanym w pakiecie _d_i_p_3_3_7_j_-_u_r_i_._t_g_z i w twoim przypadku
prawdopodobnie jest dobrym punktem startowym.
Możesz go zachować jako np. /etc/dipscript i dostosować go do swoich
warunków.
#
# sample.dip Dialup IP connection support program.
#
# This file (should show) shows how to use the DIP
# This file should work for Annex type dynamic servers, if you
# use a static address server then use the sample.dip file that
# comes as part of the dip337-uri.tgz package.
#
#
# Version: @(#)sample.dip 1.40 07/20/93
#
# Author: Fred N. van Kempen,
#
main:
# Next, set up the other side's name and address.
# My dialin machine is called 'xs4all.hacktic.nl' (== 193.78.33.42)
get $remote xs4all.hacktic.nl
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.255.0
# Set the desired serial port and speed.
port cua02
speed 38400
# Reset the modem and terminal line.
# This seems to cause trouble for some people!
reset
# Note! "Standard" pre-defined "errlevel" values:
# 0 - OK
# 1 - CONNECT
# 2 - ERROR
#
# You can change those grep'ping for "addchat()" in *.c...
# Prepare for dialing.
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial 555-1234567
if $errlvl != 1 goto modem_trouble
# We are connected. Login to the system.
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto login_trouble
send MYLOGIN\n
wait ord: 20
if $errlvl != 0 goto password_error
send MYPASSWD\n
loggedin:
# We are now logged in.
wait SOMEPROMPT 30
if $errlvl != 0 goto prompt_error
# Command the server into SLIP mode
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto prompt_error
# Get and Set your IP address from the server.
# Here we assume that after commanding the SLIP server into SLIP
# mode that it prints your IP address
get $locip remote 30
if $errlvl != 0 goto prompt_error
# Set up the SLIP operating parameters.
get $mtu 296
# Ensure "route add -net default xs4all.hacktic.nl" will be done
default
# Say hello and fire up!
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit
prompt_error:
print TIME-OUT waiting for sliplogin to fire up...
goto error
login_trouble:
print Trouble waiting for the Login: prompt...
goto error
password:error:
print Trouble waiting for the Password: prompt...
goto error
modem_trouble:
print Trouble occurred with the modem...
error:
print CONNECT FAILED to $remote
quit
exit:
exit
Powyższy przykład zakłada, że łączysz się z _d_y_n_a_m_i_c_z_n_y_m serwerem SLIP.
Jeśli łączysz się z serwerem _s_t_a_t_y_c_z_n_y_m powinieneś skorzystać z pliku
sample.dip dostarczanego razem z _d_i_p_3_3_7_j_-_u_r_i_._t_g_z.
Gdy _d_i_p otrzyma polecenie _g_e_t _$_l_o_c_a_l przeszukuje tekst przesyłany
przez serwer SLIP w poszukiwaniu ciągu znaków wyglądającego jako adres
IP, tzn. ciągi cyfr rozdzielone kropką '.'. Została ona wprowadzone
dla osób korzystających z _d_y_n_a_m_i_c_z_n_y_c_h serwerów SLIP, aby dip mógł
sam, automatycznie odczytać adres IP przydzielony przez serwer.
W powyższym przykładzie po zestawieniu połączenia SLIP zostanie
automatycznie dodana domyślna trasa skierowana właśnie przez to
połączenie. Jeśli nie tego oczekujesz, możesz np. posiadać inne
połączenie przez sieć ethernetową, przez które ma być skierowana
domyślna trasa, usuń z powyższego pliku wiersz z poleceniem _d_e_f_a_u_l_t.
Jeśli po zakończeniu działania tego skryptu wydasz polecenie _i_f_c_o_n_f_i_g
zobaczysz, że pojawiło się nowe urządzenie _s_l_0. To jest właśnie
urządzenie SLIP. W miarę potrzeb możesz zmienić konfigurację sieci
ręcznie, po zakończeniu działania programu _d_i_p, za pomocą pogramów
_i_f_c_o_n_f_i_g i _r_o_u_t_e.
Należy pamietać, że _d_i_p pozwala na wybranie jednego z wielu różnych
protokołów wykorzystywanych w poleceniu mode. Najczęściej jest to
_c_S_L_I_P oznaczający SLIP z kompresją nagłówków. Pamiętaj, że oba końce
połączenia muszą pracować w identycznym trybie. Jeśli zmienisz jakieś
ustawienia, musisz się upewnić, że serwer sobie z nimi poradzi.
Powyższy przykład jest uniwersalny i powinien poradzić sobie z
większością błędów jakie mogą wystąpić. Więcej informacji znajdziesz
na stronie podręcznika poświęconej programowi _d_i_p (man dip).
Oczywiście możesz w taki sposób zmodyfikować ten skrypt, aby w
przypadku wystapienia błędu próbował powtórnie nawiązać połączenie
telefoniczne, lub próbował połączyć się z innymi serwerami, które
udostępniają ci wejscie do Internetu.
66..2255..77.. ssllaattttaacchh.. SSttaałłee ppoołłąącczzeenniiee SSLLIIPP pprrzzeezz lliinniięę ddzziieerrżżaawwiioonnąą --
Jeśli jesteś posiadaczem kabla łączącego dwa komputery, lub
szczęśliwcem posiadającym linie dzierżawioną lub inne stałe połączenie
szeregowe dwóch komputerów, wtedy nie musisz się kłopotać zestawiając
łącze szeregowe za pomocą programu _d_i_p. _s_l_a_t_t_a_c_h jest bardzo łatwym w
uzywaniu narzędziem umożliwiającym skonfigurować zestawiane
połaczenie.
Ponieważ będzie to połączenie stałe, prawdopodobnie zechcesz dodać
kilka poleceń do pliku rc.inet1. Podsumowując, wszystko co
potrzebujesz w przypadku zestawiania połączenia przez linię stałą,
jest poprawne ustawienie prędkości portów szeregowych i przełączenie
ich w tryb SLIP. _s_l_a_t_t_a_c_h pozwala wykonać to wszystko wydając jedno
polecenie. Dodaj do pliku rc.inet1 następujące polecenie:
#
# Zestaw połączenie SLIP ze statycznym adresem IP
#
# configure /dev/cua0 for 19.2kbps and cslip
/sbin/slattach -p cslip -s 19200 /dev/cua0 &
/sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# Koniec
Gdzie:
IIPPAA..IIPPAA..IIPPAA..IIPPAA
twój adres IP
IIPPRR..IIPPRR..IIPPRR..IIPPRR
adres IP po drugim końcu połączenia SLIP
_s_l_a_t_t_a_c_h przyporządkowuje do urządzenia portu szeregowego pierwsze
wolne urządzenie slip. Rozpoczyna od _s_l_0. To znaczy pierwsze wywołanie
polecenia slattach przyporządkowuje portowi szeregowemu urządzenie
_s_l_0, przy następnym wywołaniu będzie to _s_l_1 itd.
_s_l_a_t_t_a_c_h umożliwia skonfigurowanie wielu różnych protokołów (argument
opcji -p). W twoim przypadku w zależności od tego czy będziesz chciał
korzystać z kompresji nagłówków czy nie będziesz korzystał albo z
protokołu _c_S_L_I_P albo _S_L_I_P. Uwaga: oba końce połączenia muszą używać
tego samego protokołu.
66..2266.. SSeerrwweerr SSLLIIPP..
Jeśli posiadasz komputer, być może przyłączony do sieci, i chcesz, aby
udostępniał innym przez modem serwisy internetowe, to musisz
skonfigurować go jako serwer. Jeśli protokołem, który chcesz używać
jest SLIP, to istnieją trzy możliwości konfiguracji twojego komputera
jako serwer. Osobiście preferuję pierwszą z prezentowanych, _s_l_i_p_l_o_g_i_n.
Wydaje się być najprostszą i najłatwiejszą do skonfigurowania i
zrozumienia. Przedstawię opis wszystkich trzech metod, abyś mógł
samemu podjąć decyzję.
66..2266..11.. SSeerrwweerr kkoorrzzyyssttaajjąąccyy zz pprrooggrraammuu sslliippllooggiinn ..
_s_l_i_p_l_o_g_i_n to program zastępujący zwykłą powłokę (interpreter poleceń)
użytkownika, dla tych, którzy chcą korzystać z linii szeregowej w
trybie SLIP. Pozwala na skonfigurowanie twojego komputera zarówno
jako _s_t_a_t_y_c_z_n_e_g_o _s_e_r_w_e_r_a _S_L_I_P (użytkownicy za każdym razem otrzymują
ten sam adres IP), lub _d_y_n_a_m_i_c_z_n_e_g_o _s_e_r_w_e_r_a _S_L_I_P (adres IP jest
przydzielony raczej do linii szeregowej, a nie użytkownika, więc
użytkownik nie ma pewności, że za każdym razem otrzyma ten sam adres
IP).
Użytkownik musi wpierw przejść przez standardową procedurę wchodzenia
do systemu (logowanie się) podając swój identyfikator i hasło, lecz po
wejściu do systemu, zmiast zwykłego interpretera poleceń uruchamiany
jest program _s_l_i_p_l_o_g_i_n, który przeszukuje swój plik konfiguracyjny
(/etc/slip.hosts) w poszukiwaniu pozycji odpowiadającej
identyfikatorowi użytkownika. Po jej znalezieniu, przestawia linię w
tryb 8mio bitowy, a następnie korzystając z odpowiednich funkcji _i_o_c_t_l
przełącza linię w tryb SLIP. Po zakończeniu tego etapu następuje
ostatnia faza, _s_l_i_p_l_o_g_i_n uruchamia skrypt, którego zadaniem jest
skonfigurowanie interfejsu SLIP (ustawienie adresu IP, netmaski)
dodanie odpowiedniej trasy do tabeli trasowania (routingu) jądra.
Skrypt ten nosi zwykle nazwę /etc/slip.login lecz podobnie jak w
przypadku _g_e_t_t_y, jeśli niektórzy użytkownicy wymagają specjalnego
traktowania możesz utworzyć skrypt
/etc/slip.login.identyfikator_uzytkownika, który w takim przypadku
zostanie uruchomiony w miejsce standardowego skryptu.
Aby _s_l_i_p_l_o_g_i_n działał poprawnie należy zmodyfikować trzy lub cztery
pliki. Omówię szczegółowo skąd i jak zdobyć odpowiednie oprogramowanie
i jak je poprawnie skonfigurować. Wspomniane pliki to:
/etc/passwd, definiujacy użytkownikłów twojego systemu,
/etc/slip.hosts, zawierający informacje o każdym użytkowniku
korzystającym ze SLIPa,
/etc/slip.login, odpowiedzialny z odpowiednią konfigurację systemu,
po zalogowaniu się użytkownika,
/etc/slip.tty wymagany tylko wtedy, gdy konfigurujesz _d_y_n_a_m_i_c_z_n_y
_s_e_r_w_e_r _S_L_I_P, a który zawiera tabelę przydzielanych adresów IP,
/etc/slip.logout zawierający polecenia jakie należy wykonać po
zakończeniu pracy przez użytkownika, lub po zerwaniu połączenia.
66..2266..11..11.. SSkkąądd wwzziiąąćć sslliippllooggiinn
Być może pakiet _s_l_i_p_l_o_g_i_n jest już zainstalowany na twoim komputerze,
jako część dystrybucji, jeśli nie, _s_l_i_p_l_o_g_i_n jest dostępny pod adresem
sunsite.unc.edu
.
Plik tar zawiera pliki źródłowe, skompilowane pliki binarne i
dokumentację.
Aby zapewnić, że _s_l_i_p_l_o_g_i_n może być uruchamiany przez upoważnionych do
tego użytkowników, powinieneś do pliku /etc/group dodać pozycję
podobną do poniższej:
..
slip::13:radio,fred
..
Podczas instalacji pakietu _s_l_i_p_l_o_g_i_n, Makefile zmieni grupę do której
należy program _s_l_i_p_l_o_g_i_n na slip. W ten sposób, prócz właściciela będą
go mogli uruchamiać tylko użytkownicy należący do grupy SLIP. W
powyższym przykładzie mogą to robić tylko użytkownicy radio i fred.
Aby zainstalować pliki binarne do katalogu /sbin/, a strony
podręcznika do /man/ należy wykonoać następujące polecenia:
# cd /usr/src
# gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
# cd sliplogin-2.1.1
# <..Jeśli nie korzystasz z shadow pasword popraw Makefile..>
# make install
Jeśli przed instalacją chcesz samemu skompilować pliki binarne przed
make install wykonaj polecenie make clean. Jeśli chcesz zainstalować
pliki binarne w innym miejscu, musisz wcześniej zmienić plik Makefile.
Więcej informacji znajdziesz w plikach README wewnątrz pakietu.
66..2266..11..22.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//ppaasssswwdd ..
Zwykle dla osób korzystających ze SLIPa tworzy się oddzielne konta.
Powszechnie przyjęta konwencja mówi, że jako pseudonim użytkownika
należy przyjąć nazwę łączącego się z nami komputera, poprzedzoną
wielką literą 'S'. Jeśli łączący się z nami komputer nosi nazwę radio,
mogłbyś utworzyć dla niego pozycję w pliku /etc/passwd wyglądajacą
mniej więcej tak:
Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin
Tak na prawdę nie ma znaczenia jaki jest identyfikator konta.
Uwaga: użytkownik SLIPa nie potrzebuje własnego katalogu
macierzystego, ponieważ nie będzie korzystał z powłoki interpretera
poleceń na naszym komputerze. Dlatego dobrym wyborem w takim
przypadku jest katalog /tmp. Pamiętaj, że zamiast zwykłej powłoki
uruchamiany jest program _s_l_i_p_l_o_g_i_n.
66..2266..11..33.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..hhoossttss
Plik /etc/slip.hosts jest przeszukiwany przez _s_l_i_p_l_o_g_i_n w poszukiwaniu
szczegółów konfiguracyjnych dla użytkownika, przez którego został
uruchomiony. W tym właśnie pliku podaje się adres IP i netmaskę które
będą przydzielone temu użytkownikowi i wykorzystywane do konfiguracji.
Przykładowe dwie pozycje, jedną dla statycznej konfiguracji dla
komputera radio i drugą, dynamiczna konfiguracja dla komputera albert
mogły by wyglądać następująco:
#
Sradio 44.136.8.99 44.136.8.100 255.255.255.0 normal -1
Salbert 44.136.8.99 DYNAMIC 255.255.255.0 compressed 60
#
Poszczególne pola w wierszu pliku /etc/slip.hosts oznaczają:
1. identyfikator użytkownika;
2. adres IP serwera, tzn adres IP tego komputera;
3. adres IP przydzielony komputerowi po drugiej stronie połączenia.
Jeśli w tym polu występuje słowo DYNAMIC wtedy adres IP, zostanie
przydzielony na podstawie informacji zawartych w pliku
/etc/slip.tty. UUwwaaggaa:: to udogodnienie pojawiło się dopiero w
wersji 1.3 programu sliplogin.
4. netmaska przydzielona łączącemu się komputerowi, w notacji
dziesiętnej z kropkami np. 255.255.255.0 netmaska klasy C;
5. tryb pracy SLIP pozwalający na włączenie/wyłączenie kompresji lub
innych udogodnień;
6. parametr czasowy określajacy jak długo linia może pozostać w stanie
oczekiwania na przesłanie informacji (brak otrzymanych datagramów),
zanim nastąpi automatyczne rozłączenie. Wielkość ujemna wyłącza to
udogodnienie.
7. parametry opcjonalne.
Uwaga: W polach 2 i 3 można podawać zarówna nazwy komputerów, jak i
adresy IP. Jeśli podasz nazwę komputera, sprawdź, czy system potrafi
znaleźć jego adres IP, w przeciwnym razie wykonanie skryptu zakończy
się niepowodzeniem. Możesz to sprawdzić próbując połączyć się z nim za
pomocą programu telnet. Jeśli zobaczysz komunikat `_T_r_y_i_n_g
_n_n_n_._n_n_n_._n_n_n_._._.' to znaczy, że twój komputer potrafi znaleźć adres IP
komputera o podanej przez ciebie nazwie. Jeśli zobaczysz komunikat
_U_n_k_n_o_w_n _h_o_s_t', to znaczy, że jednak nie potrafi. Jeśli nie potrafi
musisz podawać adres IP tego komputera lub sprwadź konfigurację DNS
swojego komputera.
Najczęściej wykorzysytwane tryby pracy SLIP to:
nnoorrmmaall
zwykły, nieskompresowny SLIP.
ccoommpprreesssseedd
kompresja nagłówków van Jacobsena (cSLIP)
Oczywiście są to dwie wzajemnie wykluczające się opcje. Więcej
informacji na temat dostępnych opcji znajdziesz na stronie podręcznika
poświęconej programowi sliplogin.
66..2266..11..44.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..llooggiinn ..
Po przeszukaniu przez _s_l_i_p_l_o_g_i_n pliku /etc/slip.hosts i znalezieniu
opowiednich pozycji, zostanie uruchomiony skrypt /etc/sli.login, który
w rzeczywistości wykonuje cała pracę związaną z konfiguracja
interfejsów sieciowych, korzystając z przekazanych mu informacji o
adresie IP i netmasce sieci.
Przykładowy plik /etc/slip.login dostarczany w pakiecie _s_l_i_p_l_o_g_i_n
wygląda następująco:
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a SLIP line. sliplogin invokes this with
# the parameters:
# $1 $2 $3 $4, $5, $6 ...
# SLIPunit ttyspeed pid the arguments from the slip.host entry
#
/sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up
/sbin/route add $6
arp -s $6 pub
exit 0
#
Jak widać, powyższy skrypt po prostu korzysta z programu _i_f_c_o_n_f_i_g i
_r_o_u_t_e. Konfiguruje urządzenie SLIP zgodnie z podanymi mu adresem IP i
netmaską, następnie modyfikuje tabele trasowania w jądrze. Wykonuje
te same polecenia, które należy wykonać ręcznie korzystając ze
_s_l_a_t_t_a_c_h.
Zwróć uwagę na użycie _P_r_o_x_y _A_R_P w celu zapewnienia komunikacji między
komputerami znajdującymi się na tym samym segmencie sieci co nasz
serwer, a komputerem łączącym się przez linię szeregową. Pole
powinno zawierać adres sprzętowy karty ethernetowej serwera.
Jeśli serwer nie jest przyłączony do sieci ethernetowej możesz pominąć
ten wiersz całkowicie.
66..2266..11..55.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..llooggoouutt ..
Kiedy następuje przerwanie połączenie chcesz być pewny, że port
szeregowy jest przywracany do swego normalnego stanu i jest gotowy do
obsługi kolejnego połączenia. Do tego celu służy skrypt
/etc/slip.logout. Jest bardzo prosty i jest wywoływany z tymi samymi
argumentami co /etc/slip.login.
#!/bin/sh -
#
# slip.logout
#
/sbin/ifconfig $1 down
arp -d $6
exit 0
#
Wykonywane przez niego czynności to: wyłączenie interfejsu slip,
spowoduje automatyczne usunięcie z tabeli trasowania wprowadzonej tam
podczas zestawiania połączenie pozycji; usunięcie z tabeli arp
wprowadzonej tam ręcznie pozycji. Nie potrzebujesz tego polecenia,
jeśli twój serwer nie jest przyłączony do sieci ethernetowej.
66..2266..11..66.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//sslliipp..ttttyy ..
Jeśli korzystasz z dynamicznego przydziału adresów IP (choć jeden
komputer w pliku /etc/slip.hosts jest skonfigurowany z opcją DYNAMIC)
to musisz również skonfigurować plik /etc/slip.tty informując system
jakie adresy IP są przydzielone do każdego z wykorzystywanych portów
szeregowych. Plik ten jest potrzebny tylko wtedy, gdy twój serwer
będzie przydzielał adresy IP użytkownikom w sposób dynamiczny.
Plik zawiera tabelę, która każdemu wykorzystywanemu urządzeniu _t_t_y
przyporządkowuje adres IP jaki ma zostać przydzielony komputerowi
łączącemu się przez to urządzenie _t_t_y.
Format niniejszego pliku jest następujący:
# slip.tty tty -> adres IP
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0 192.168.0.100
/dev/ttyS1 192.168.0.101
#
Pozycje w powyższym przykładzie oznaczają, że wszyscy, którzy połączą
się przez port /dev/ttuS0 i jako swoj adres mają w pliku
/etc/slip.hosts słowo DYNAMIC otrzymają adres 192.168.0.100.
W ten sposób potrzebujesz jedynie jednego adresu IP na każdy
wykorzystywany port dla wszystkich użytkowników, którzy nie potrzebują
dedykowanego, stałego adresu IP. Dzięki temu liczba adresów potrzebna
do obsługi wielu użytkowników jest bardzo mała.
66..2266..22.. SSeerrwweerr SSLLIIPP kkoorrzzyyssttaajjąąccyy zz pprrooggrraammuu ddiipp ..
Część z prezentowanej poniżej informacji pochodzi ze stron podręcznika
dotyczących programu _d_i_p. Jest tam pokrótce opisane jak wykorzystać
_d_i_p jako serwer SLIP. Proszę również zwrócić uwagę, że podane
informacje dotyczą wersji _d_i_p_3_3_7_o_-_u_r_i_._t_g_z i prawdopodobnie nie mają
zastosowania do innych wersji programu.
_d_i_p posiada tryb pracy, w którym automatycznie wyszukuje pozycję
dotyczącą użytkownika, który go wywołał i konfiguruje linię szeregową
jako połączenie SLIP według parametrów jakie znalazł w pliku
/etc/diphosts. Ten tryb pracy jest włączany wtedy, gdy _d_i_p zostanie
uruchominy jako program o nazwie _d_i_p_l_o_g_i_n. To jest właśnie sposób
wykrzystania _d_i_pa do stworzenia serwera SLIP. Należy utworzyć
specjalne konta, z programem _d_i_p_l_o_g_i_n jako powłoką użytkownika.
Pierwsze co musisz zrobić, to następujące dowiązanie symboliczne:
# ln -sf /usr/sbin/dip /usr/sbin/diplogin
Następnie należy dodać odpowiednie pozycje do pliku /etc/passwd i
/etc/diphosts.
Aby skonfigurować Linuksa jako serwer SLIP wykorzystując do tego
program _d_i_p wymaga utworzenia specjalnych kont do obsługi SLIPa z
powłoką użytkownika w postaci programu _d_i_p jako _d_i_p_l_o_g_i_n. Sugerowana
konwencja nadawania nazw tym kontom zaleca, aby pseudonim użytkownika
rozpoczynał się wielką literą 'S', np. `Sfredm'.
Przykładowa pozycja pliku /etc/passwd konta SLIP może wyglądać
następująco:
Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^ ^^ ^^ ^^ ^^ ^^ ^^
| | | | | | \__ diplogin jako powłoka użytkownika
| | | | | \_______ katalog domowy
| | | | \____________ pełna nazwa użytkownika
| | | \_________________ numer grupy (GID)
| | \_____________________ numer użytkownika (UID)
| \_______________________________ zakodowane haslo
\__________________________________________ pseudonim użytkownika
Po zalogowaniu się użytkownika (jeśli zostanie poprawnie
zweryfikowany) program login uruchomi polecenie _d_i_p_l_o_g_i_n. _d_i_p wywołany
jako _d_i_p_l_o_g_i_n zakłada, że został uruchomiony jako powłoka użytkownika.
Piersze co robi, to korzysta z funkcji _g_e_t_u_i_d_(_) pobierając pseudonim
wywołującego go użytkownika. Następnie przeszukuje /etc/diphosts w
poszukiwaniu pierwszej pozycji, która pasuje do zdobytego
identyfikatora lub wykorzystywanego urządzenia _t_t_y, a następnie
odpowiednio się konfiguruje. Decydując czy użytkownik powinien mieć
własną pozycję w pliku /etc/diphosts, czy powinien korzystać z
konfiguracji domyślnej, możesz budować serwer, który korzysta zarówno
z dynamicznego i statycznego przydziału adresów IP.
_d_i_p automatycznie doda pozycję _P_r_o_x_y_-_A_R_P jeśli zostanie wywołany jako
_d_i_p_l_o_g_i_n. Nie musisz się martwić ręcznym dodawaniem tych pozycji.
66..2266..22..11.. KKoonnffiigguurraaccjjaa pplliikkuu //eettcc//ddiipphhoossttss
/etc/diphosts jest wykorzystywany przez _d_i_p do wyszukiwania
konfiguracji dla łączących się komputerów. Mogą to być pozycje
dotyczące zarówno komputerów łączących się z twoim Linuksem, lecz
równie dobrze mogą to być pozycje dotyczące komputerów, z którymi
łączy się twój Linux.
Ogólny format pliku /etc/diphosts wygląda następująco:
..
Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
..
Poszczególne pola oznaczają:
1. pseudonim użytkownika: identyfikator zwracany przez
getpwuid(getuid()) lub nazwa terminala
2. niewykorzystane: zgodność z formatem passwd
3. adres zdalny: nazwa (adres IP) łaczącego się z nami komputera
4. adres lokalny: nazwa (adres IP) naszego serwera
5. netmaska: netmaska w notacji dziesiętnej
6. komentarz: możesz tu wstawić co chcesz
7. protokół: Slip, CSlip itp.
8. MTU: liczba
Przykłady pozycji pliku /etc/net/diphosts dla komputerów łączących się
z nami:
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296
definującej połączenie SLIP między naszym serwerem, a komputerem,
który otrzyma adres 145.71.34.1, parametr MTU połączenia będzie
wynosił 296, lub
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
definiującej połączenie cSLIP z komputerem, który otrzyma adres
145.71.34.1. parametr MRU połączenia wynosił 1008.
Dlatego wszyscy użytkownicy którym zezwolisz na przydzielany
statycznie adres IP powinni być wymienieni w pliku /etc/diphosts. Jeli
chcesz aby uzytkownicy łączący się na pewien port mieli przydzielane
numery w sposób dynamiczny musisz umieścić wpis dla wspomnianego portu
i usunąć wszystkie wpisy indywidualnych użytkowników. Upewnij się aby
skonfigurować co najmniej jeden wpis dla każdego z urządzeń tty
wykorzystywanego przez twoich użytkowników w celu zapewnienia im
poprawnej konfiguracji niezależnie od modemu z którym się połączą.
Kiedy użytkownik się loguje, widzi standardową zachętę do podania
swojego identyfikatora SLIP i hasła. Jeli po wprowadzeniu żądanych
informacji zostanie zweryfikowany poprawnie, nie zobaczy żadnych
specjalnych komunikatów. Powinien wtedy przełączyć się po swojej
stronie w tryb SLIP i mieć poprawne połączenie według konfiguracji
zapisanej w pliku diphosts.
66..2266..33.. SSeerrwweerr SSLLIIPP kkoorrzzyyssttaajjąąccyy zz ppaakkiieettuu ddSSLLIIPP ..
Matt Dillon stworzył pakiet, który służy
nie tylko do inicjowania połączenia z serwerem, ale równie dobrze może
obsługiwać połączenia przychodzące. Jest to kombinacja małych
programów i skryptów zarządzających dla ciebie połączeniem. Musisz
mieć zainstalowaną powłokę _t_c_s_h ponieważ przynajmniej jeden ze
skryptów jej wymaga. Matt dostarcza binarną kopię programu _e_x_p_e_c_t,
ponieważ wykorzystuje go inny ze skryptów. Prawdopodobnie zmuszenie
pakietu do pracy będzie od ciebie wymagało trochę doświadczenia w
obchodzeniu się z programem _e_x_p_e_c_t, lecz niech cię to nie odstręcza.
Matt napisał dobry zestaw instrukcji instalacyjnych zgromadzonych w
pliku README. Nie będę ich tutaj powtarzał.
Pakiet _d_S_L_I_P możesz pobrać bezpośrednio ze źródła: aappoolllloo..wweesstt..ooiicc..ccoomm
/pub/linux/dillon_src/dSLIP203.tgz
lub z:
ssuunnssiittee..uunncc..eedduu
/pub/Linux/system/Network/serial/dSLIP203.tgz
Przeczytaj plik README i dodaj odpowiednie pozycje do pliku
/etc/passwd i /etc/group zzaanniimm wydasz polecenie make install.
66..2277.. OObbssłłuuggaa pprroottookkoołłuu SSTTRRIIPP ((SSttaarrmmooddee RRaaddiioo IIPP))
Urządzenia STRIP noszą nazwy `st0', `st1', itd.
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Network device support --->
[*] Network device support
....
[*] Radio network interfaces
< > STRIP (Metricom starmode radio IP)
STRIP to protokół zaprojektowany specjalnie dla radiowych modemów
Metricom na uniwersystecie w Stanford w ramach projektu badawczego
noszącego nazwę MosquitoNet Project
. Zajdziesz tam
mnóstwo ciekawych informacji, nawet jeśli nie jesteś bezpośrednio
zainteresowany projektem.
Modemy Metricom przyłącza się przez port szeregowy komputera,
posiadają szerokie spektrum technologiczne i są zdolne do pracy z
prędkością zbliżoną do 100kbps. Informacje na temat samych modemów
Metricom jest dostępna tutaj: Metricom Web Server
.
W chwili obecnej standardowe narządzia sieciowe nie obsługują
sterownika STRIP. Musisz zdobyć specjalistyczne narzędzia dostępne na
serwerze www projektu MosquitoNet. Szczegóły na temat niezbędnego
oprogramowania znajdziesz tutaj: MosquitoNet STRIP Page
.
Konfiguracja sieci pracujących ze sterownikiem STRIP polega na
wykorzystaniu zmodyfikowanego programu _s_l_a_t_t_a_c_h, które ustawia tryb
pracy linii szeregowej na STRIP, a następnie na konfiguracji
powstałego urządzenia `st[0-9]' w taki sam sposób, jak gdyby była to
zwykła karta ethernetowa. Z jednym wyjątkiem, z przyczyn technicznych
STRIP nie obsługuje protokołu ARP, dlatego musisz ręcznie
skonfigurować tabelę ARP dla wszystkich komputerów w twojej podsieci.
Co nie powinno sprawić większego kłopotu.
66..2288.. TTookkeenn RRiinngg
Urządzenia Token Ring noszą nazwy `tr0', `tr1' itd. Token Ring jest
standardem sieci LAN opracowanym przez IBM, który unika kolizji
wprowadzając mechanizm pozwalający na transmisję danych w jednej
chwili tylko jednej stacji przyłączonej do sieci. "Token" w danej
chwili może należeć tylko do jednej stacji i to właśnie ta stacja,
która go posiada jest uprawniona do nadawania informacji. Po
zakończonej transmisji przekazuje "Token" następnej stacji. Przechodzi
kolejno pomiędzy wszystkimi aktywnymi końcówkami sieci. Stąd nazwa
"Token Ring".
OOppccjjee kkoonnffiigguurraaccjjii jjąąddrraa:
Network device support --->
[*] Network device support
....
[*] Token Ring driver support
< > IBM Tropic chipset based adaptor support
Konfiguracja urządzeń token ring jest identyczna, jak konfiguracja
urządzeń ethernetowych, z dokładnością do nazwy urządzenia
podlegającego konfiguracji.
66..2299.. XX..2255
X.25 to obwodowy protokół komutacji pakietów zdefiniwany w C.C.I.T.T.
(organizacji standaryzacyjnej uznawanej przez firmy telekomunikacyjne
większości krajów świata. Cały czas trwają pracę nad implementacją X25
u LAPB i najnowsze wersje jądra 2.1.* zawierają kod odzwierciedlający
aktualny stan prac.
Jonathon Naylor jsn@cs.nott.ac.uk przewodzi grupie rozwijającej to
oprogramowanie i opiekuje się listą utworzoną do dyskusji na tematy
dotyczące X25 i Linuksa. Aby się na nią zapisać należy na adres
majordomo@vger.rutgers.edu napisać list o treści "subscribe linux-
x25".
Wczesne wersje narzędzi konfiguracyjnych można uzyskac z archiwum ftp
ftp.cs.nott.ac.uk .
66..3300.. WWaavveeLLaann CCaarrdd
Urządzenia Wavelan noszą nazwy `eth0', `eth1', itd.
OOppccjjee kkoommppiillaaccjjii jjąąddrraa:
Network device support --->
[*] Network device support
....
[*] Radio network interfaces
....
<*> WaveLAN support
Karty WaveLan to szerokopasmowe sieciowe karty bezprzewodowe. Są
bardzo podobne do kart ethernetowych i praktycznie w większości są
konfigurowane w taki sam sposób.
Więcej informacji na temat kart WaveLan znajdziesz na stronie
Wavelan.com .
77.. KKaabbllee ii ookkaabblloowwaanniiee
Ci z was, którzy posiadają odpowiednie narzędzia mogą chcieć zrobić
własne kable do połączenia ze sobą dwóch Linuxów. Poniższe schematy
powinny wam w tym pomóc.
77..11.. SSzzeerreeggoowwyy kkaabbeekk bbeezzmmooddeemmoowwyy ((SSeerriiaall NNUULLLL MMooddeemm ccaabbllee))
Nie wszystkie kable bezmodemowe są takie same. Dużo kabli
bezmodemowych oszukuje twój komputer, tak aby myślał, że wszystkie
potrzebne sygnały są obecne i zamienia ze sobą kanały nadawania i
odbioru danych. Taki kabel będzie działał poprawnie, ale musisz
stosować programowe sterowanie przepływem danych (XON/XOFF), które
jest znacznie mniej wydajne od sterowania sprzętowego. Poniższy
schemat przedstawia kabel umożliwiajacy transmisję ze sprzętowym
sterowaniem przepływem danych (RTC/CTS).
Pin Name Pin Pin
Tx Data 2 ----------------------------- 3
Rx Data 3 ----------------------------- 2
RTS 4 ----------------------------- 5
CTS 5 ----------------------------- 4
Ground 7 ----------------------------- 7
DTR 20 -\--------------------------- 8
DSR 6 -/
RLSD/DCD 8 ---------------------------/- 20
\- 6
77..22.. KKaabbeell ppoorrttuu rróówwnnoolleeggłłeeggoo ((kkaabbeell PPLLIIPP))
Jeśli zamierzasz korzystać z protokołu PLIP, to kabel wykonany wg.
poniższego schematu będzie działał niezależnie od rodzaju posiadanego
portu równoległego.
Pin Name pin pin
STROBE 1*
D0->ERROR 2 ----------- 15
D1->SLCT 3 ----------- 13
D2->PAPOUT 4 ----------- 12
D3->ACK 5 ----------- 10
D4->BUSY 6 ----------- 11
D5 7*
D6 8*
D7 9*
ACK->D3 10 ----------- 5
BUSY->D4 11 ----------- 6
PAPOUT->D2 12 ----------- 4
SLCT->D1 13 ----------- 3
FEED 14*
ERROR->D0 15 ----------- 2
INIT 16*
SLCTIN 17*
GROUND 25 ----------- 25
Uwagi:
Nie przyłączaj nigdzie igieł oznaczonych gwiazdką `*'.
Dodatkowe uziemienie znajduje się na igłach 18,19,20,21,22,23 i 24.
Jeśli używany przez ciebie kabel posiada metalowy ekran, to
powinien on być połączony do metalowej wtyczki DB-25, ale ttyyllkkoo zz
jjeeddnneejj ssttrroonnyy.
OOssttrrzzeeżżeenniiee:: kkaabbeell zzee źźllee wwyykkoonnaannyymmii ppoołłąącczzeenniiaammii mmoożżee ffiizzyycczznniiee
zznniisszzcczzyyćć kkaarrttęę kkoonnttrroolloorraa ttwwoojjeeggoo kkoommppuutteerraa... Bądź bardzo ostrożny i
dwukrotnie sprawdzaj każde połączenie, aby nie narazić się na
niepotrzebny ból głowy lub atak serca.
77..33.. OOkkaabblloowwaanniiee eetthheerrnneettoowwee 1100bbaassee22 ((cciieennkkii kkoonncceennttrryykk))
10base2 jest standardem okablowania ethernetowego wykorzystującego
52omowy kabel koncentryczny o średnicy ok 5mm. Łącząc ze sobą
komputery za pomocą okablowania 10base2 należy pamiętać o kilku
zasadach. Po pierwsze musisz mieć terminatory na oobbuu kkoońńccaacchh kabla.
Terminator to opornik o oporniści 52 omy, zapewniający absorbję
sygnału i zapobiegający jego odbiciom w momencie osiągnięcia końca
kabla. Bez założonych terminatorów, może się okazać, że sieć nie jest
pewna lub w ogóle nie nadaje się do pracy. Zwykle poszczególne
komputery podłącza się do kabla z pomocą 'trójników'. Dlatego tak
zbudowana sieć wygląda mniej więcej tak:
|==========T=============T=============T==========T==========|
| | | |
| | | |
----- ----- ----- -----
| | | | | | | |
----- ----- ----- -----
gdzie `|' oznacza terminator na każdym zakończeniu kabla, `======'
oznacza kabel koncentryczny, a `T' oznaczają trójniki. Kabel łączący
trójnik z komputerem powinien być jak najkrótszy, najlepiej, gdy
trójnik jest wpięty bezpośrednio na kartę ethernetową komputera.
77..44.. SSkkrręęttkkaa ((TTwwiisstteedd PPaaiirr EEtthheerrnneett CCaabbllee))
Jeśli chcesz połączyć ze sobą tylko dwie karty ethernetowe przez
skrętkę, to nie potrzebujesz żadnego koncentratora (hub'a). Schemat
wykonania potrzebnego kabla znajdziesz w Ethernet-HOWTO
88.. SSppiiss ssttoossoowwaannyycchh tteerrmmiinnóóww
Poniższa lista zawiera najważniejsze z terminów wykorzystywanych w tym
dokumencie.
AARRPP
Skrót pochodzący od nazwy _A_d_d_r_e_s_s _R_e_s_o_l_u_t_i_o_n _P_r_o_t_o_c_o_l, określa
sposób przyporządkowywania adresów IP adresom sprzętowym kart
ethernetowych.
AATTMM
Skrót pochodzący od nazwy _A_s_y_n_c_h_r_o_n_o_u_s _T_r_a_n_s_f_e_r _M_o_d_e. Sieci ATM
przesyłąją dane w pakietach o ustalonej długości. ATM jest
technologią sieci pakietowych z komutacją kanałów.
kklliieenntt
Jest to zwykle oprogramowanie znajdujące się po tej samej
stronie połączenia co użytkownik. Są oczywiście wyjątki od tej
reguły, np. w przypadku X11 to właśnie serwer jest po stronie
użytkownika, a klient jest to aplikacja wykonująca się na
zdalnej maszynie. Klient to oprogramowanie lub końcówka systemu
korzystająca z usług oferowanych przez serwer. W przypadku
połączeń _p_e_e_r _t_o _p_e_e_r (każdy z każdym) jakimi są _s_l_i_p lub _p_p_p,
za klienta przyjmuje się ten koniec połączenia, który je
zainicjował, a drugi koniec nosi nazwę serwera.
ddaattaaggrraamm
Datagram jest pakietem informacji, który prócz danych posiada
również nagłówki zawierające adresy nadawcy i adresata. Jest
podstawową jednostką przesyłania informacji w sieci IP. Często
jest zastępowany słowem 'pakiet'.
DDLLCCII
DLCI oznacza skrót Data Link Connection Identifier, jest
stosowany do jednoznacznej identyfikacji wirtualnego połączenia
punkt-punkt przez Frame Relay. DLCI są zwykle przydzielane przez
dostawcę usługi Frame Relay.
FFrraammee RReellaayy
Frame Relay oznacza technologię sieciową przeznaczoną przede
wszystkim do przenoszenia ruchu charaktyryzującego się
nieregularnym natężeniem lub o sporadycznej charakterysyce.
Koszty sieci są redukowane przez współdzielenie nośności sieci
przez wielu użytkowników, przy założeniu, że każdy z nich
generuje największy ruch o innej porze.
AAddrreess sspprrzzęęttoowwyy
Numer który jednoznacznie identyfikuje komputer na poziomie
wartstwy fizycznej sieci (na poziomie warstwy nośnika).
Przykładem takich adresów jest _a_d_r_e_s _k_a_r_t_y _e_t_h_e_r_n_e_t_o_w_e_j lub
_a_d_r_e_s _A_X_._2_5.
IISSDDNN
ISDN oznacza skrót _I_n_t_e_g_r_a_t_e_d _S_e_r_v_i_c_e_s _D_e_d_i_c_a_t_e_d _N_e_t_w_o_r_k. ISDN
umożliwia ujednolicony sposób dostarczania użytkownikom
informacji głosowej lub cyfrowej. Technicznie ISDN jest siecią
danych z komutacją kanałów.
IISSPP
Jest to skrót Internet Service Provider (dostawca internetu). Są
to organizacje lub firmy, które umożliwiają ludziom dostęp do
Internetu,
aaddrreess IIPP
Jest to numer jednoznacznie identyfikujący komputer w sieci
TCP/IP. Adres składa się z 4rech bajtów i zwykle jest
przedstawiany w tzw notacji dziesiętnej, czyli takiej, w której
każdy bajt jest reprezentowany przez liczbę w systemie
dziesiętnym, przy czym poszczególne bajty są rozdzielone znakiem
'.'.
MMSSSS
Maximum Segment Size (_M_S_S) oznacza maksymalny rozmiar porcji
danych, która może zostać przesłana za jednym razem. Aby
zapobiec lokalnej fragmentacji pakietów MSS powinno się równać
MTU-nagłówek IP. [od korektorki: oryginalny tekst jest skrótem
myślowym: 'equal MTU - IP header' według mnie powinno być:
'powinno się równać różnicy: wielkość MTU-wielkość nagłówka IP'
(nagłówek IP to zwykle 40 bajtów)].
MMTTUU
Maximum Transmission Unit (_M_T_U) to parametr, który określa
maksymalny rozmiar datagramu, jaki może zostać przesłany przez
interfejs, bez konieczności podziału go na mniejsze kawałki. MTU
powinno być większe niż największy datagram jaki ma być
przesyłany w jednym kawałku. Pamietaj, że ten parametr steruje
jedynie lokalną fragmentacją pakietów. Może się zdarzyć, że
któreś z połączeń leżących na trasie do celu będzie miało
mniejsze MTU, a wtedy pakiet zostanie podzielony na kawałki w
tym wąskim garde. Standartowymi wielkościami są 1500 dla kart
ethernetowych, 576 dla interfejsu SLIP.
ttrraassaa
_t_r_a_s_a osnacza ścieżkę jaką przebywają datagramy wędrując od
nadawcy do odbiorcy.
sseerrwweerr
Oprogramowanie lub system po przeciwnej stronie połączenia w
stosunku do pozycji użytkownika. Serwer udostępnia pewne usługi
jednemu lub więcej klientom. Mogą to być usługi typu _f_t_p, _n_f_s
lub _d_n_s. W przypaku połączeń typu _p_e_e_r_-_t_o_-_p_e_e_r (każdy z każdym)
za serwer przyjmuje się ten koniec połączenia, który odpowiada
na wezwanie, koniec rozpoczynający sesję nosi nazwę klienta.
wwiinnddooww
_O_k_i_e_n_k_o to największa liczba bajtów jaką w danej chwili odbiorca
jest w stanie przyjąc.
99.. LLiinnuuxx uu ddoossttaawwccóóww IInntteerrnneettuu ??
Jeśli jesteś zainteresowany wykorzystaniem Linuksa jako dostawca
Internetu polecam stronę Linux ISP homepage
. Zawiera listę odnośników do
informacji, które mogą cię zainteresować.
1100.. PPooddzziięękkoowwaanniiaa
Chciałbym podziekować następującym ludziom, za ich wkład w powstanie
tego dokumentu (kolejność nie ma żadnego znaczenia): Axel Boldt, Arnt
Gulbrandsen, Gary Allpike, Cees de Groot, Alan Cox, Jonathon Naylor.
1111.. CCooppyyrriigghhtt..
NET-3-HOWTO, informacja na temat instalacji i konfiguracji
oprogramowania sieciowego pod Linuksem. Copyright (c) 1997 Terry
Dawson.
To jest darmowe oprogramowanie, możesz je rozpowszechniać i
modyfikować na zasadach zgodnych z licencją GNU General Public License
wydaną przez Freee Software Foundation w wersji 2 (lub jak wolisz)
późniejszej.
Ten program jest rozpowszechniany w nadziei, że bedzie użyteczny, lecz
BEZ ŻADNYCH GWARANCJI; nawet bez gwarancji zdatności HANDLOWEJ lub
UŻYTECZNOŚCI W KONKRETNYM ZASTOSOWANIU. Wiecej szczegółów w tekście
GNU General Public License.
Wraz z tym programem powinieneś otrzymać kopię Licencji GNU General
Public License, jeśli nie napisz do:
Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
USA.
1122.. OOdd ttłłuummaacczzaa
To tłumaczenie zawiera mnóstwo różnego rodzaju błędów. Postanowiłem
je udostępnić w takim stanie, ponieważ nie mam czasu na dokładne
sprawdzenie tego dokumentu (a jest tego trochę), a szkoda mi trzymać
to na dysku, czekając na Wolną Chwile (TM), która być może nigdy nie
nadejdzie. Dlatego bedę wdzięczny za każdą, nawet najdrobniejszą
uwagę.
Najnowszą wersję tego tłumaczenia znajdziesz tutaj:
http://www.ippt.gov.pl/pub/Linux/JTZ/html/NET-3-HOWTO.pl.html
.
piotr.pogorzelski@ippt.gov.pl
1133.. OOdd kkoorreekkttoorrkkii
Korekta, to było wyłapanie części literówek i złośliwości klawiatury
oraz kilku niedotłumaczonych linijek tekstu. Pewnie jest tego jeszcze
trochę dla następnej siwiejącej blondynki, która poczuje chęć się
douczyć ;-)
30.11.2001 Basia Głowacka jastra@gdansk.sprint.pl
Wyszukiwarka
Podobne podstrony:
net 3 howto pl 8
net 3 howto pl 2
NET 3 HOWTO pl 9 (2)
NET 3 HOWTO pl 4 (2)
net 3 howto pl 7
NET 3 HOWTO pl 8 (2)
NET 3 HOWTO pl 3 (2)
net 3 howto pl
net 3 howto pl 3
net 3 howto pl 13
NET 3 HOWTO pl 11 (2)
net 3 howto pl 4
net 3 howto pl 6
net 3 howto pl 9
net 3 howto pl 10
net 3 howto pl 1
net 3 howto pl 5
net 3 howto pl 12
NET 3 HOWTO pl 10 (2)
więcej podobnych podstron