You are on page 1of 460

Spis treci

Spis treci

Wstp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIII
Rozdzia: 1

Wprowadzenie do sieci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Sieci TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Sieci UUCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Sie w Linuksie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Utrzymywanie systemu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Rozdzia: 2

Wybrane problemy sieci TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Interfejsy sieciowe . . . . . . . . . . . . . . . . . . . . . . .
Adresy IP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozwizywanie adresw . . . . . . . . . . . . . . . . . . .
Ruting IP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Internetowy protok komunikatw kontrolnych (ICMP) .
Rozwizywanie nazwy hosta. . . . . . . . . . . . . . . . .

Rozdzia: 3

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

19
20
22
23
28
29

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

34
40
41
44
46
46

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

47
48
49
52
53
57

Konfigurowanie sieci TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Montowanie systemu plikw /proc


Instalowanie plikw binarnych. . .
Ustalanie nazwy hosta . . . . . . .
Przypisywanie adresu IP . . . . . .
Tworzenie podsieci . . . . . . . . .
Tworzenie plikw hosts i networks
Konfigurowanie interfejsu dla IP . .
Wszystko o ifconfig . . . . . . . . .
Polecenie netstat . . . . . . . . . . .
Sprawdzanie tablic ARP . . . . . .

Rozdzia 6:

.
.
.
.
.
.

Konfigurowanie urzdze szeregowych. . . . . . . . . . . . . . . . . . . . . . 47

Oprogramowanie komunikacyjne do pocze modemowych


Wprowadzenie do urzdze szeregowych . . . . . . . . . .
Dostp do urzdze szeregowych . . . . . . . . . . . . . . .
Urzdzenia szeregowe . . . . . . . . . . . . . . . . . . . . .
Uywanie narzdzi konfiguracyjnych . . . . . . . . . . . . .
Urzdzenia szeregowe i monit login: . . . . . . . . . . . . .

Rozdzia 5:

.
.
.
.
.
.

Konfigurowanie sprztu sieciowego. . . . . . . . . . . . . . . . . . . . . . . . 31

Konfigurowanie jdra . . . . . . . . . . . . . . . .
Wycieczka po urzdzeniach sieciowych Linuksa .
Instalowanie Ethernetu . . . . . . . . . . . . . . .
Sterownik PLIP . . . . . . . . . . . . . . . . . . .
Sterowniki PPP i SLIP . . . . . . . . . . . . . . . .
Inne typy sieci . . . . . . . . . . . . . . . . . . . .

Rozdzia 4:

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

62
62
63
63
64
65
66
74
77
80

Usugi nazewnicze i konfigurowanie resolvera . . . . . . . . . . . . . . . . . . 83

Biblioteka resolvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Jak dziaa DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Eksploatacja named . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

VI

Rozdzia 7:

Spis treci

IP cza szeregowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Wymagania oglne. . . . . . . .
Dziaanie SLIP-a . . . . . . . . .
Korzystanie z sieci prywatnych .
Korzystanie z polecenia dip . . .
Dziaanie w trybie serwera . . .

Rozdzia 8:

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

113
114
116
117
122

Protok punkt-punkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

PPP w Linuksie . . . . . . . . . . . . . . . . . . . .
Eksploatacja pppd . . . . . . . . . . . . . . . . . .
Uywanie plikw opcji. . . . . . . . . . . . . . . .
Stosowanie chat do automatycznego dzwonienia .
Opcje konfiguracyjne IP . . . . . . . . . . . . . . .
Opcje sterowania czem. . . . . . . . . . . . . . .
Uwagi na temat bezpieczestwa . . . . . . . . . .
Uwierzytelnianie w PPP . . . . . . . . . . . . . . .
Debugowanie twojej konfiguracji PPP . . . . . . .
Bardziej zaawansowana konfiguracja PPP. . . . .

Rozdzia 9 :

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

126
127
128
129
132
135
137
137
141
142

Firewall TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

Metody ataku . . . . . . . . . . . . . . . . .
Co to jest firewall . . . . . . . . . . . . . . .
Co to jest filtrowanie IP. . . . . . . . . . . .
Skonfigurowanie Linuksa w roli firewalla .
Trzy sposoby realizacji filtrowania . . . . .
Oryginalny firewall IP (jdra 2.0) . . . . . .
acuchy firewalla IP (jdra 2.2) . . . . . .
Netfilter i tabele IP (jdra 2.4) . . . . . . . .
Operowanie bitem TOS . . . . . . . . . . .
Testowanie konfiguracji firewalla . . . . .
Przykadowa konfiguracja firewalla . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

148
149
151
152
154
155
162
173
182
184
186

Rozdzia 10: Liczenie ruchu IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195


Konfigurowanie jdra do liczenia ruchu IP . . .
Konfigurowanie liczenia ruchu IP . . . . . . . .
Wykorzystywanie wynikw zliczania ruchu IP .
Zerowanie licznikw. . . . . . . . . . . . . . . .
Usuwanie zestaww regu. . . . . . . . . . . . .
Bierne zbieranie danych o ruchu . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

195
196
202
203
204
204

Rozdzia 11: Maskowanie IP i translacja adresw sieciowych . . . . . . . . . . . . . . . . 205


Skutki uboczne i dodatkowe korzyci . . . . . .
Konfigurowanie jdra do maskowania IP . . . .
Konfigurowanie maskowania IP . . . . . . . . .
Obsugiwanie przeszukiwania serwerw nazw.
Wicej na temat translacji adresw sieciowych .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

207
208
209
211
211

Rozdzia 12: Wane funkcje sieciowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213


Superserwer inetd . . . . . . . . . . . . . . . . . . . .
Funkcja kontroli dostpu tcpd. . . . . . . . . . . . . .
Pliki services i protocols . . . . . . . . . . . . . . . . .
Zdalne wywoanie procedur . . . . . . . . . . . . . .
Konfigurowanie zdalnego logowania i uruchamiania

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

213
216
218
219
220

Spis treci

VII

Rozdzia 13: System informacji sieciowej . . . . . . . . . . . . . . . . . . . . . . . . . . . 229


Poznawanie NIS-a . . . . . . . . . . . . .
NIS kontra NIS+ . . . . . . . . . . . . . .
NIS strona klienta. . . . . . . . . . . . .
Eksploatowanie serwera NIS . . . . . . .
Bezpieczestwo serwera NIS . . . . . . .
Konfigurowanie klienta NIS z GNU libc .
Wybr odpowiednich map . . . . . . . .
Korzystanie z map passwd i group . . . .
Uywanie NIS-a z obsug hase shadow

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

230
233
233
234
235
236
238
240
242

Rozdzia 14: Sieciowy system plikw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243


Przygotowanie NFS-a . . . . .
Montowanie wolumenu NFS .
Demony NFS . . . . . . . . . .
Plik exports . . . . . . . . . . .
Serwer NFSv2 oparty na jdrze
Server NFSv3 oparty na jdrze

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

244
245
247
248
250
251

Rozdzia 15: IPX i system plikw NCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253


Xerox, Novell i historia. . . . . . . . . . . . . . .
IPX i Linux . . . . . . . . . . . . . . . . . . . . .
Konfigurowanie jdra do obsugi IPX-a i NCPFS
Konfigurowanie interfejsw IPX . . . . . . . . .
Konfigurowanie rutera IPX . . . . . . . . . . . .
Montowanie zdalnych wolumenw NetWare . .
Kilka innych narzdzi IPX . . . . . . . . . . . . .
Drukowanie do kolejki NetWare . . . . . . . . .
Emulacja serwera NetWare . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

253
254
256
256
259
263
266
267
270

Rozdzia 16: Zarzdzanie UUCP Taylora . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271


Przesyanie i zdalne wykonywanie w UUCP . . . . . . . . . . . . . . .
Pliki konfiguracyjne UUCP . . . . . . . . . . . . . . . . . . . . . . . . .
Kontrola dostpu do funkcji UUCP . . . . . . . . . . . . . . . . . . . . .
Konfigurowanie systemu do przyjmowania pocze komutowanych .
Protokoy niskiego poziomu w UUCP . . . . . . . . . . . . . . . . . . .
Rozwizywanie problemw. . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

273
275
289
292
295
297

Rozdzia 17: Poczta elektroniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301


Co to jest wiadomo pocztowa .
Jak jest dostarczana poczta. . . .
Adresy e-mail . . . . . . . . . . .
Jak dziaa ruting poczty . . . . .
Konfigurowanie elma . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

302
305
306
308
313

Rozdzia 18: Sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317


Wprowadzenie do sendmaila . . . . . . .
Instalacja sendmaila . . . . . . . . . . . .
Przegld plikw konfiguracyjnych . . . .
Pliki sendmail.cf i sendmail.mc . . . . . .
Generowanie pliku sendmail.cf . . . . . .
Interpretacja i pisanie regu podstawiania
Konfigurowanie opcji sendmaila . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

317
317
318
319
324
324
330

VIII

Spis treci

Uyteczne konfiguracje sendmaila


Testowanie konfiguracji . . . . . .
Eksploatowanie sendmaila . . . .
Sztuczki i kruczki . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

331
339
342
343

Rozdzia 19: Exim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347


Eksploatowanie Exima. . . . . .
Jeeli twoja poczta nie dochodzi
Kompilowanie Exima . . . . . .
Tryby dostarczania poczty. . . .
Rne opcje konfiguracyjne . . .
Ruting i dostarczanie poczty . .
Ochrona przed spamem . . . . .
Konfigurowanie UUCP . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

348
349
350
351
352
353
357
358

Rozdzia 20: Grupy dyskusyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361


Historia Usenetu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Czym jest Usenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Jak Usenet obsuguje grupy dyskusyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

Rozdzia: 21 C News . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367


Dostarczanie grup dyskusyjnych . . .
Instalacja . . . . . . . . . . . . . . . .
Plik sys. . . . . . . . . . . . . . . . . .
Plik active . . . . . . . . . . . . . . . .
Przetwarzanie wsadowe artykuw .
Wygasanie grup dyskusyjnych . . . .
Rne dodatkowe pliki . . . . . . . .
Wiadomoci kontrolne . . . . . . . . .
C News w rodowisku NFS . . . . . .
Narzdzia i zadania administracyjne .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

367
369
371
374
375
378
380
382
384
385

Rozdzia 22: NNTP i demon nntpd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387


Protok NNTP . . . . . . . .
Instalowanie serwera NNTP
Ograniczanie dostpu NNTP
Autoryzacja NNTP . . . . . .
Wsppraca nntpd z C News

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

389
395
395
396
397

Rozdzia 23: Internet News . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399


Pewne tajniki wewntrzne INN-a. . . .
Przegldarki grup dyskusyjnych i INN
Instalowanie INN-a . . . . . . . . . . .
Podstawowe konfigurowanie INN-a . .
Pliki konfiguracyjne INN-a . . . . . . .
Eksploatowanie INN-a. . . . . . . . . .
Zarzdzanie INN-em: polecenie ctlinnd

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

399
402
402
403
403
418
419

Rozdzia 24: Konfigurowanie przegldarki grup dyskusyjnych. . . . . . . . . . . . . . . . 425


Konfigurowanie tina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Konfigurowanie trn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Konfigurowanie nn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

Spis treci

IX

Dodatek A:

Przykadowa sie: browar wirtualny . . . . . . . . . . . . . . . . . . . . . . . 429

Dodatek B:

Przydatne konfiguracje kabli . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Dodatek C:

Linux Podrcznik administratora. Wydanie drugie*.


Informacje o prawach autorskich . . . . . . . . . . . . . . . . . . . . . . . . 4330

Dodatek D:

SAGE: cech administratorw systemu. . . . . . . . . . . . . . . . . . . . . . 441

Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Wstp
Wstp

Termin Internet zadomowi si ju na dobre w wielu jzykach, a mnstwo,


skdind powanych ludzi, z radoci podruje po infostradzie. Dlatego mona
powiedzie, e sieci komputerowe staj si ju czym tak zwykym jak telewizory
i kuchenki mikrofalowe. Internet cieszy si niezwykym zainteresowaniem mediw,
a studenci socjologii zaczynaj si specjalizowa w grupach dyskusyjnych Usenetu,
rodowiskach elektronicznej rzeczywistoci wirtualnej i WWW, badajc w ten
sposb now kultur internetow .
Oczywicie sie istnieje z dawien dawna. czenie komputerw tak, aby tworzyy
sieci lokalne, byo powszechne w przypadku maych instalacji, a gdy maszyny byy
od siebie oddalone wykorzystywano cza telekomunikacyjne. Jednake szybki
rozwj sieci oglnowiatowych da szans przyczenia si do globalnej wioski wielu zwykym uytkownikom komputerw oraz maym, niedochodowym organizacjom prywatnym. Wyranie spadaj ceny hostw internetowych z obsug poczty
i grup dyskusyjnych przez dostp komutowany oraz ISDN, a pojawienie si DSL
(Digital Subscriber Line) oraz technologii modemw kablowych niewtpliwie podtrzyma t tendencj.
Jeeli mwimy o sieciach komputerowych, nie sposb nie wspomnie o Uniksie.
Oczywicie Unix nie jest jedynym systemem operacyjnym, ktry moe pracowa
w sieci, ani te nawet nie jest najpopularniejszym z nich, ale w biznesie sieciowym
istnieje od dawna i z ca pewnoci bdzie istnia jeszcze przez jaki czas.
Unix jest szczeglnie ciekawy dla zwykych uytkownikw dziki temu, e woono
wiele wysiku w stworzenie dla PC darmowych uniksowych systemw operacyjnych, takich jak 386BSD, FreeBSD czy Linux.
Linux jest, dystrybuowan bezpatnie odmian Uniksa, przeznaczon dla komputerw osobistych. Aktualnie dziaa na rnych maszynach, i na tych z procesami firmy
Intel, z procesorami Motorola 680x0, (np. Commodore Amiga i Apple Macintosh);
na maszynach Sun SPARC i Ultra-SPARC; na Alphach firmy Compaq; MIPS-ach;
na PowerPC, czyli na nowej generacji komputerw Apple Macintosh, i na Strong-

XII

Wstp

ARM-ach, takich jak Netwinder firmy rebel.com czy palmtopy firmy 3Com. Linux
zosta zaadaptowany take na pewne stosunkowo mao znane platformy, takie jak
Fujitsu AP-1000 i IBM System 3/90. Aktualnie realizowane s adaptacje na inne interesujce architektury, a zadanie przeniesienia Linuksa do postaci zamknitego kontrolera take wyglda obiecujco.
Linux rozwija si dziki zaangaowaniu duej grupy ochotnikw z Internetu. Projekt zosta zapocztkowany w 1990 roku przez Linusa Torvaldsa wwczas studenta fiskiego college'u w ramach zaj z systemw operacyjnych. Od tego czasu Linux urs do rangi penego klonu Uniksa, na ktrym mona uruchamia aplikacje
tak rnorodne, jak programy do symulacji i modelowania, procesory tekstu, systemy rozpoznawania mowy, przegldarki WWW i mnstwo innego oprogramowania, wczajc w to rne doskonae gry. Wsppracuje z rnorodnym sprztem,
a zawiera pen implementacj sieci TCP/IP, (cznie z protokoami SLIP i PPP oraz
firewallami), pen implementacj protokou IPX, a take implementacje wielu funkcji oraz protokow, ktrych nie znajdziemy w adnym innym systemie operacyjnym. Linux jest wydajny, szybki i darmowy, a jego popularno na wiecie poza Internetem ronie w szybkim tempie.
Sam system operacyjny Linux zosta objty licencj publiczn GNU, t sam, ktra
jest uywana przez oprogramowanie tworzone przez Free Software (Foundation
Fundacj Wolnego Oprogramowania). Licencja pozwala kademu na dystrybuowanie i modyfikowanie oprogramowania (bezpatnie lub dla zysku) dopty, dopki
wszystkie modyfikacje i dystrybucje s rwnie bezpatnie udostpniane. Okrelenie wolne oprogramowanie oznacza wolno aplikacji, a nie wolno kosztw.

Po co i dla kogo jest ta ksika


Niniejsza ksika zostaa napisana po to, aby w jednym miejscu zebra informacje
potrzebne administratorom sieci rodowiska Linux. Zarwno pocztkujcy, jak i zaawansowani uytkownicy powinni tu znale informacje potrzebne do wykonania
wikszoci najwaniejszych zada administracyjnych, wymaganych do konfiguracji sieci w Linuksie. Temat tej ksiki sieci jest prawie nieograniczony, a wic
oczywicie niemoliwoci jest opisanie wszystkiego i w kadym aspekcie. Podjlimy prb prezentacji wikszoci wanych i powszechnie spotykanych zada. Naszym zamierzeniem byo, aby ta ksika suya pomoc nawet pocztkujcym
adeptom sieci linuksowych (take tym, ktrzy nie mieli jeszcze do czynienia z uniksopodobnym systemem operacyjnym), aby po jej lekturze mogli poprawnie skonfigurowa swoj sie w Linuksie.
Istnieje wiele ksiek i innych rde informacji, ktre poruszaj tematy opisane
w tej ksice (z maymi wyjtkami prawdziwie linuksowych funkcji, takich jak nowy interfejs firewala, ktry nie jest nigdzie indziej dobrze udokumentowany). Gdyby chcia si dowiedzie wicej, w poniszym podrozdziale zamieszczamy bibliografi.

rda informacji

XIII

Frda informacji
Jeeli jeste nowicjuszem w wiecie Linuksa, masz wiele do przejrzenia i przeczytania. Pomocne, aczkolwiek niekonieczne, jest posiadanie dostpu do Internetu.
Przewodniki zespou Linux Documentation Project (Projekt Dokumentacji Linuksa LDP)
Projekt Dokumentacji Linuksa to grupa ochotnikw, ktry opracowuj ksiki
(przewodniki), dokumenty HOWTO, strony podrcznika elektronicznego na
rne tematy: od instalacji po programowanie jdra. Publikacje LDP to midzy
innymi:
Linux Installation and Getting Started
Ta ksika, napisana pod kierunkiem Matta Welsha; opisuje, jak zdoby, zainstalowa i uywa Linuksa. Zawiera wprowadzenie do Uniksa i informacje o administracji systemu, systemie X Window oraz sieci.
Linux System Administration Guide
Ta ksika, napisana przez Larsa Wirzeniusa i Joann Oja, jest oglnym przewodnikiem po administracji Linuksa i porusza takie tematy, jak tworzenie i konfigurowanie uytkownikw, wykonywanie kopii zapasowych systemu, konfigurowanie
podstawowych pakietw i instalowanie oraz uaktualnianie oprogramowania.
Linux System Administration Made Easy
Ta ksika, napisana przez Steve'a Framptona, opisuje codzienne zadania administracyjne i zagadnienia zwizane z utrzymaniem Linuksa w odniesieniu do
jego uytkownikw.
Linux Programmers Guide
Ta ksika, napisana przez B. Scotta Burketta, Svena Goldta, Johna D. Harpera,
Svena van der Meera i Matta Welsha, bdzie interesujca dla tych, ktrzy chc
tworzy aplikacje dla Linuksa.
The Linux Kernel
Ta ksika, napisana przez Davida A. Ruslinga, zawiera wprowadzenie do jdra
Linuksa: opisuje jego budow oraz dziaanie.
The Linux Kernel Module Programming Guide
Ta ksika, napisana przez Ori Pomerantza, stanowi przewodnik wyjaniajcy,
jak pisa moduy jdra Linuksa.
W fazie tworzenia s kolejne podrczniki. Wicej informacji na temat LDP znajdziesz na stronach WWW pod adresem http://www.linuxdoc.org/ lub jednym z jego
serwerw lustrzanych.
Dokumenty HOWTO
Dokumenty HOWTO powicone Linuksowi to szereg szczegowych opracowa omawiajcych bardzo rne aspekty systemu, takie jak instalacja i konfiguracja oprogramowania systemu X Window lub pisanie w asemblerze pod Linuksem. Generalnie znajduj si one w podkatalogu HOWTO orodkw FTP lub s
dostpne na stronach WWW zawierajcych dokumenty Projektu Dokumentacji
Linuksa. W pliku HOWTO-INDEX znajdziesz list tego, co jest dostpne.

XIV

Wstp

Mog ci si przyda: Installation HOWTO, opisujcy jak zainstalowa Linuksa na


twoim komputerze, Hardware Compatibility HOWTO, zawierajcy list urzdze,
o ktrych wiadomo, e dziaaj w Linuksie, oraz Distribution HOWTO, zawierajcy list sprzedawcw oprogramowania oferujcych Linuksa na dyskietkach
lub na pytach CD-ROM.
Czsto zadawane pytania na temat Linuxa (Linux Frequently Asked Questions), FAQ
FAQ (The Linux Frequently Asked Questions with Answers) gromadzi rnorodne
pytania i odpowiedzi na temat systemu. Jest to obowizkowa lektura dla kadego nowicjusza.

Dokumentacja dostpna przez FTP


Jeeli masz dostp do anonimowych serwerw FTP, moesz z nich pobra ca wspomnian tutaj dokumentacj Linuksa. Wyprbuj takie adresy jak metalab.unc.edu:/pub/Linux/docs i tsx-11.mit.edu/pub/linux/docs.

Dokumentacja dostpna przez WWW


Dostpnych jest wiele orodkw WWW zwizanych z Linuksem. Macierzysta strona
Projektu Dokumentacji Linuksa znajduje si pod adresem http://www.linuxdoc.org/.
OSWG (Open Source Writers Guild) jest projektem wykraczajcym poza Linuksa.
OSWG, podobnie jak ta ksika, opowiada si za tworzeniem dokumentacji OpenSource. Witryna macierzysta OSWG znajduje si pod adresem http://www.oswg.
org:8080/oswg.
Obie powysze witryny zawieraj wersje hipertekstowe (i inne) wielu dokumentw
zwizanych z Linuksem.

Dokumentacja dostpna odpatnie


Liczne wydawnictwa i sprzedawcy oprogramowania publikuj prace stworzone w
ramach Projektu Dokumentacji Linuksa. Dwaj przykadowi sprzedawcy to:
Specialized Systems Consultants, Inc. (SSC)
http://www.ssc.com/
P.O. Box 55549 Seattle, WA 98155-0549
1-206-782-7733
1-206-782-7191 (faks)
sales@ssc.com
oraz
Linux Systems Labs
http://www.lsl.com/
18300 Tara Drive
Clinton Township, MI 48036
1-810-987-8807
1-810-987-3562 (faks)
sales@lsl.com

rda informacji

XV

Obie firmy sprzedaj kompendia dokumentw HOWTO i innej dokumentacji dotyczcej Linuksa w formie drukowanej.
O'Reilly & Associates wydaje seri ksiek o Linuksie. Niniejsza ksika powstaa
w ramach Projektu Dokumentacji Linuksa, ale wikszo zostaa napisana niezalenie. Nale do nich:
Running Linux (wyd. pol.: Linux, Wydawnictwo RM, Warszawa 2000)
Przewodnik po instalacji i uytkowaniu systemu, opisujcy, jak najlepiej wykorzysta komputer osobisty, pracujc w Linuksie.
Learning Debian GNU/Linux
Learning Red Hat Linux (wyd. pol.: Red Hat Linux, Wydawnictwo RM, Warszawa 2000)
Ksiki bardziej podstawowe ni Running Linux. Zawieraj one popularne dystrybucje na pycie CD-ROM i informuj dokadnie, jak je skonfigurowa i jak z
nich korzysta.
Linux in Nutshell (wyd. pol.: Linux podrcznik uytkownika, Wydawnictwo RM,
Warszawa 1999)
Kolejna ksika z doskonaej serii podrcznik uytkownika. Daje wyczerpujcy opis poszczeglnych polece Linuksa.

Linux Journal and Linux Magazine


Linux Journal i Linux Magazine to miesiczniki dla spoecznoci linuksowej, pisane i wydawane przez licznych linuksowych aktywistw. Poziom artykuw jest
bardzo rny: od pyta nowicjuszy, po odpowiedzi dotyczce programowania
jdra. Nawet jeeli masz dostp do grup dyskusyjnych Usenetu, te czasopisma s
doskonaym sposobem, aby by na bieco ze sprawami spoecznoci Linuksa.
Linux Journal jest najstarszym czasopismem i jest wydawany przez wspomniane
wczeniej SSC, Incorporated. Czasopismo to moesz take znale w sieci WWW
pod adresem http://www.linuxjournal.com/.
Linux Magazine jest nowsz, niezalen publikacj. Macierzysty adres WWW tego czasopisma to http://www.linuxmagazine.com/.

Linuksowe grupy dyskusyjne Usenetu


Oto grupy dyskusyjne Usenetu powicone Linuksowi:
comp.os.linux.announce
Moderowana grupa dyskusyjna zawierajca zapowiedzi nowego oprogramowania, dystrybucji, raporty o bdach i nowinki z ycia spoecznoci Linuksa.
Wszyscy uytkownicy Linuksa powinni czyta t grup. Propozycje mog by
wysyane na adres linux-announce@news.ornl.gov.
comp.os.linux.help
Oglne pytania i odpowiedzi na temat instalacji i uytkowania Linuksa.
comp.os.linux.admin
Dyskusje zwizane z administrowaniem systemu Linux.

XVI

Wstp

comp.os.linux.networking
Dyskusje zwizane z sieci w Linuksie.
comp.os.linux.development
Dyskusje na temat tworzenia jdra Linuksa i samego systemu.
comp.os.linux.misc
Inne dyskusje, ktre nie pasuj do adnej z poprzednich kategorii.
Istnieje rwnie kilka innych grup powiconych Linuksowi i prowadzonych w jzykach innych ni angielski, a nale do nich na przykad fr.comp.os.linux po francusku czy de.comp.os.linux po niemiecku.

Pocztowe listy dyskusyjne zwizane z Linuksem


Istnieje szereg specjalistycznych pocztowych list dyskusyjnych na temat Linuksa, na
ktrych spotkasz wiele osb, ktre chtnie odpowiedz na twoje pytania.
Najbardziej znane z nich to listy obsugiwane przez uniwersytet Rutgers. Moesz si
do nich zapisa, wysyajc wiadomo e-mail sformatowan w nastpujcy sposb:
To: majordomo@vger.rutgers.edu
Subject: anything at all
Body:
subscribe nazwa-listy
Niektre listy zwizane z sieci w Linuksie to:
linux-net
Dyskusje zwizane z sieci w Linuksie.
linux-ppp
Dyskusje zwizane z implementacj PPP w Linuksie.
linux-kernel
Dyskusje zwizane z tworzeniem jdra Linuksa.

Elektroniczne wsparcie Linuksa


W wielu miejscach w sieci mona uzyska pomoc elektroniczn. Ochotnicy z caego
wiata oferuj tam swoj specjalistyczn wiedz i usugi tym uytkownikom, ktrzy
maj pytania i problemy.
Sie OpenProjects IRC to sie IRC powicona w caoci projektom otwartym zarwno Open Source, jak i Open Hardware. Niektre kanay s przeznaczone do udostpniania elektronicznego wsparcia dla Linuksa. IRC to skrt od Internet Relay Chat.
Jest to usuga sieciowa pozwalajca interaktywnie rozmawia przez Internet z innymi uytkownikami. Sieci IRC obsuguj wiele kanaw, na ktrych grupy prowadz pisane rozmowy. Cokolwiek napiszesz na kanale, bdzie to widoczne dla
wszystkich pozostaych uczestnikw rozmowy.
W sieci OpenProjects IRC istnieje szereg aktywnych kanaw, na ktrych spotkasz
uytkownikw przez 24 godziny na dob, 7 dni w tygodniu. S to uytkownicy, kt-

rda informacji

XVII

rzy chc i potrafi pomc w rozwizaniu twoich problemw z Linuksem albo mog
po prostu z tob pogada. Z usugi tej moesz korzysta po zainstalowaniu klienta
IRC, na przykad irc-II, podczeniu si do serwera o zadanej nazwie, np. irc.openprojects.org:6667, i przyczeniu si do kanau #linpeople.

Grupy uytkownikw Linuksa


Bezporedni pomoc oferuje te wiele grup uytkownikw Linuksa z caego wiata.
Ich uczestnicy angauj si w tak dziaalno, jak organizowanie dni instalacji, seminaria i dyskusje panelowe, prezentacje i inne imprezy towarzyskie. Grupy uytkownikw Linuksa s doskonaym sposobem na spotkanie si z innymi linuksowcami z twojego rejonu. Istnieje szereg list grup uytkownikw Linuksa. Do lepiej znanych nale:
Group of Linux Users Everywhere http://www.ssc.com/glue/groups
LUG list project http://www.nllgg.nl/lugww/
LUG registry http://www.linux.org/users/

Skd wzi Linuksa


Nie ma jednej jedynej dystrybucji oprogramowania dla Linuksa. Takich dystrybucji
jest wiele, m.in. Debian, RedHat, Caldera, Corel, SuSE i Slackware. Kada dystrybucja zawiera wszystko, czego potrzebujesz do uruchomienia penego systemu Linux:
jdro, podstawowe programy uytkowe, biblioteki, pliki pomocnicze i aplikacje.
Dystrybucje Linuksa mona zdoby z szeregu rde elektronicznych, jak Internet.
Kada powana dystrybucja posiada wasny orodek FTP i WWW. Oto niektre
orodki:
Caldera
http://www.caldera.com/ftp://ftp.caldera.com/
Corel
http://www.corel.com/ftp://ftp.corel.com/
Debian
http://www.debian.org/ftp://ftp.debian.org/
RedHat
http://www.redhat.com/ftp://ftp.redhat.com/
Slackware
http://www.slackware.com/ftp://ftp.slackware.com/
SuSE
http://www.suse.com/ftp://ftp.suse.com/
Popularne archiwa FTP rwnie zawieraj rne dystrybucje Linuksa. Najbardziej
znane z nich to:
metalab.unc.edu:/pub/Linux/distributions/
ftp.funet.fi:/pub/Linux/mirrors/
tsx-11.mit.edu:/pub/linux/distributions/
mirror.aarnet.edu.au:/pub/linux/distributions/

XVIII

Wstp

Wiele z nowoczesnych dystrybucji mona zainstalowa bezporednio z Internetu.


Jednak w przypadku typowej instalacji naley cign spor liczb oprogramowania, a wic prawdopodobnie zdecydujesz si na to, tylko jeeli masz szybkie stae
poczenie sieciowe lub jeeli musisz uaktualni swoj instalacj*.
Linuksa mona kupi na pycie CD-ROM u coraz wikszej liczby sprzedawcw. Jeeli w twoim sklepie komputerowym go nie ma, moesz poprosi o sprowadzenie.
Wikszo popularnych dystrybucji mona zdoby na pycie CD-ROM. Niektrzy
sprzedawcy tworz produkty skadajce si z wielu pyt CD-ROM zawierajcych
poszczeglne dystrybucje Linuksa. Jest to idealny sposb na wyprbowanie
rnych dystrybucji, aby mc stwierdzi, ktra jest nasz ulubion.

Standardy systemw plikw


Niegdy jednym z problemw, ktry dotyka dystrybucji Linuksa oraz pakietw
oprogramowania, by brak jednolitego systemu plikw. Wynikay z tego niezgodnoci pomidzy rnymi pakietami, co wymagao od uytkownikw i administratorw
lokalizowania rnych plikw i programw.
Aby zaradzi tej kopotliwej sytuacji w sierpniu 1993 roku powoano zesp do
spraw standaryzacji systemu plikw Linuksa (Linux File System Standard Group
FSSTND). W cigu szeciu miesicy opracowano szkic spjnej struktury systemu
plikw i zdefiniowano rozkad wikszoci istotnych programw i plikw konfiguracyjnych.
Oczekiwano, e standard ten zostanie zaimplementowany w wikszoci gwnych
dystrybucji Linuksa i pakietach. Niezupenie tak si stao. Cho w wikszoci dystrybutcji starano si speni wymogi FSSTND, udao si to tylko w niewielu.
W ksice tej zakadamy, e wszelkie omawiane pliki znajduj si w miejscach okrelonych przez standard. Alternatywne niestandardowe lokalizacje bd przywoywane tylko wtedy, gdy s utrwalane dug tradycj.
Linux FSSTND obowizywa do 1997 roku, kiedy zosta zastpiony przez FHS (Linux File Hierarchy Standard). FHS rozwizuje zagadnienia midzyarchitekturowe,
nie uwzgldnione przez FSSTND. FHS mona zdoby z katalogu z dokumentacj
wikszoci orodkw FTP Linuksa i ich serwerw lustrzanych lub ze strony macierzystej pod adresem http://www.pathname.com/fhs/. Z Danielem Quinlanem koordynatorem grupy FHS mona skontaktowa si pod adresem quinlan@transmeta.com.

Standardowa podstawa Linuksa


Wielo dystrybucji Linuksa, cho umoliwia wybr jego uytkownikom, przysparza problemw twrcom oprogramowania szczeglnie tego, ktre nie jest darmowe.

...lub jeeli jeste strasznie niecierpliwy, nie chcesz czeka 3 dni na dostarczenie ci pyty z oprogramowaniem do domu i wolisz przez 24 godziny ( bo tyle moe to trwa) ciga je z Internetu.

O tej ksice

XIX

Kada dystrybucja zawiera pewne podstawowe biblioteki, narzdzia konfiguracyjne, aplikacje systemowe i pliki konfiguracyjne. Niestety, rnice pomidzy wersjami, nazwami i lokalizacjami powoduj, e bardzo trudno jest zgadn, co bdzie
w danej dystrybucji. A bez tej wiedzy nie da si stworzy binarnych wersji aplikacji,
ktre dziaayby niezawodnie we wszystkich dystrybucjach Linuksa.
Aby rozwiza ten problem, powoano nowy projekt o nazwie Linux Standard Base (standardowa podstawa Linuksa). Jego celem jest opisanie standardowej podstawy dystrybucji, do ktrej dostosuj si poszczeglne dystrybucje. Jeeli programista
stworzy aplikacj w oparciu o standardow podstaw, to bdzie ona dziaaa we
wszelkich dystrybucjach zgodnych ze standardem.
Informacje na temat stanu projektu standardowej podstawy Linuksa moesz znale
na jego stronie macierzystej pod adresem http://www.linuxbase.org/.
Jeeli martwisz si o zgodno, szczeglnie oprogramowania komercyjnego, powiniene upewni si, czy w przypadku twojej dystrybucji zostay podjte kroki prowadzce do zgodnoci z projektem standaryzacyjnym.

O tej ksice
Gdy Olaf doczy do Projektu Dokumentacji Linuksa w 1992 roku, napisa dwa
mae rozdziay na temat UUCP i smaila, ktre zamierza umieci w Przewodniku administratora systemu (System Administrator's Guide). Sieci TCP/IP zaczy dopiero powstawa. W miar ich rozwoju te dwa mae rozdziay zaczy si rozrasta. Wtedy
Olaf pomyla, e byoby dobrze mie przewodnik po sieci. Kady mwi: wietny
pomys, zrb to!. A wic wzi si do pracy i napisa pierwsz wersj przewodnika po sieci, ktra zostaa wydana we wrzeniu 1993 roku.
Olaf kontynuowa prace nad przewodnikiem po sieci i ostatecznie stworzy znacznie rozszerzon jego wersj. Rozdzia na temat sendmaila napisa Vince Skahan
W tym wydaniu rozdzia ten zosta cakowicie zmieniony, ze wzgldu na nowy interfejs konfiguracyjny sendmaila.
Wersja przewodnika, ktr czytasz, zostaa skorygowana i uaktualniona przez
Terry'ego Dawsona* na yczenie wydawnictwa O'Reilly & Associates. Terry przez
20 lat by operatorem radia amatorskiego, z czego 15 lat przepracowa w przemyle
telekomunikacyjnym. By wspautorem dokumentu NET-FAQ i napisa oraz utrzymywa rne dokumenty HOWTO zwizane z sieci. Terry zawsze z entuzjazmem
wspiera projekt przewodnika administratora sieci i doda w niniejszej edycji kilka
rozdziaw na najnowsze tematy, ktre ze zrozumiaych wzgldw nie trafiy do
pierwszego wydania. Dokona te mnstwa zmian w celu uaktualnienia caej
ksiki.
Rozdzia omawiajcy exim napisa Philip Hazel**, ktry jest gwnym twrc pakietu.
* Z Terrym Dawsonem mona si skontaktowa pod adresem teddy@linux.org.au.
** Z Philipem Hazelem mona skontaktowa si pod adresem ph10@cus.cam.ac.uk.

XX

Wstp

Ksika ta ma form sekwencji krokw, jakie naley podj, by skonfigurowa system do pracy w sieci. Rozpoczyna si omwieniem podstawowych poj sieciowych, a w szczeglnoci sieci opartych na TCP/IP. Nastpnie kolejno wprowadza
w konfigurowanie TCP/IP na poziomie urzdzenia konfigurowanie firewalli, liczenie ruchu IP (accounting) i maskowanie IP, wreszcie w konfigurowanie popularnych aplikacji, takich jak rlogin i tym podobne, sieciowego systemu plikw (NFS
Network File System) oraz systemu informacji sieciowej (NIS Network Information
System). Dalej znajduje si rozdzia o tym, jak skonfigurowa maszyn jako wze
UUCP. Wikszo pozostaych podrozdziaw jest powicona dwm podstawowym aplikacjom, ktre dziaaj na TCP/IP i UUCP: poczcie elektronicznej i grupom
dyskusyjnym. Specjalny rozdzia zosta powicony protokoowi IPX i systemowi
plikw NCP, poniewa s one uywane w rodowiskach korporacyjnych, w ktrych
spotyka si Linuksa.
W czci omawiajcej poczt znajduje si bardziej gruntowne wprowadzenie do
transportu i rutingu poczty oraz miriady schematw adresowania, ktre moesz napotka. Opisuje ona konfiguracj exima i zarzdzanie nim. Exim to agent transportowy poczty, idealny tam, gdzie nie s wymagane UUCP ani tym bardziej sendmail,
ktry jest dla realizujcych ruting bardziej skomplikowany, ni te obsugiwane
przez UUCP.
Cz powicona grupom dyskusyjnym daje pojcie o tym, jak dziaa Usenet. Omawia INN i C News dwa powszechnie uywane pakiety oprogramowania transportowego grup dyskusyjnych oraz zastosowanie NNTP do zapewnienia dostpu do
czytania grup w sieci lokalnej. Ksik zamyka rozdzia na temat stosowania najpopularniejszych programw do czytania grup dyskusyjnych w Linuksie.
Oczywicie ksika ta na pewno nie jest w stanie wyczerpujco odpowiedzie na
wszystkie potencjalne pytania. Tak wic, jeeli bdziesz postpowa zgodnie z instrukcjami w niej zawartymi, a co wci nie bdzie dziaao, bd cierpliwy. Niektre z twoich problemw mog wynika z naszych bdw (zobacz podrozdzia
Zgaszanie uwag w dalszej czci wstpu), ale mog take by spowodowane zmianami w oprogramowaniu sieciowym. Dlatego powiniene sprawdzi najpierw informacje zawarte w zasobach. Istnieje due prawdopodobiestwo, e nie tylko ty masz
takie problemy, a wic poprawka lub przynajmniej proponowane rozwizanie jest
ju by moe znane. Jeeli masz okazj, powiniene take sprbowa zdoby najnowsz wersje jdra i sieci z jednego z linuksowych orodkw FTP lub z pobliskiego
BBS-u. Wiele problemw wynika z nierwnomiernego rozwoju rnego oprogramowania, ktre nie wsppracuje poprawnie ze sob. W kocu Linux to praca w toku.

Oficjalna wersja drukowana


Na jesieni 1993 roku Andy Oram, ktry prawie od pocztku by zwizany z list dyskusyjn LDP, zaproponowa Olafowi opublikowanie tej ksiki w wydawnictwie
O'Reilly & Associates. By ni zachwycony, ale nigdy nie przypuszcza, e odniesie
ona taki sukces. Postanowiono, e O'Reilly stworzy rozszerzon oficjaln wersj

Oficjalna wersja drukowana

XXI

drukowan przewodnika po sieci, natomiast Olaf zatrzyma prawa autorskie i rda


ksiki bd mogy by rozpowszechniane za darmo. Oznacza to, e masz wolny
wybr: moesz wzi rne darmowe wersje dokumentu z najbliszego orodka lustrzanego Projektu Dokumentacji Linuksa i wydrukowa je sobie albo zakupi oficjaln wersj drukowan wydan przez O'Reilly'ego.
Nasuwa si pytanie: dlaczego masz paci za co, co moesz mie za darmo? Czy
Tim O'Reilly postrada zmysy i wydaje co, co kady moe sobie sam wydrukowa,
a nawet sam sprzedawa?*. Czy istniej jakie rnice pomidzy tymi wersjami?
Odpowiedzi brzmi to zaley, nie, zdecydowanie nie i tak i nie. O'Reilly &
Associates podejmuje ryzyko, wydajc przewodnik po sieci w formie tradycyjnej,
ale jako si im to opaca (poprosili nas, bymy przygotowali nastpne wydanie).
Wierzymy, e to przedsiwzicie jest doskonaym przykadem tego, jak wiat darmowego oprogramowania i firmy komercyjne mog ze sob wsppracowa, by
stworzy co, z czego obie strony czerpi korzyci. Z naszego punktu widzenia wydawnictwo O'Reilly przysuyo si spoecznoci Linuksa (nie tylko t ksik, ktra
jest dostpna w twojej ksigarni). Dziki niemu Linux zacz by rozpoznawany jako co powanego: jako rentowna i uyteczna alternatywa dla innych, komercyjnych systemw operacyjnych. Jeeli jaka ksigarnia techniczna nie ma u siebie
przynajmniej jednej pki z ksikami wydawnictwa O'Reilly, to jest to kiepska ksigarnia.
Dlaczego to wydaj? Uznaj to za swoj specjalno. Oto, czego oczekuj, podpisujc
z autorami kontrakt na napisanie ksiki o Linuksie: tempo, poziom szczegowoci
i styl maj dokadnie odpowiada innym wydanym przez nich ksikom.
Celem licencji LDP jest zapewnienie, wszystkim dostpu do ksiki. Niektrzy
mog wydrukowa sobie t ksik sami i nikt nie bdzie ci wini, jeeli z niej skorzystasz. Jednak, jeeli nie miae okazji zobaczy wersji wydawnictwa O'Reilly,
sprbuj przej si do ksigarni albo obejrzyj ksik u kolegi. Wydaje nam si, e
spodoba ci si to, co zobaczysz, i bdziesz chcia ksik kupi.
Jakie s wic rnice pomidzy wersj drukowan a wersj elektroniczn? Andy
Oram woy wiele pracy w to, aby przetworzy nasze chaotyczne myli w potoczysty wykad wart wydrukowania. (Dokona take korekty kilku innych ksiek stworzonych w ramach Projektu Dokumentacji Linuksa, suc spoecznoci Linuksa
ca swoj fachow wiedz).
Na redakcji Andy'ego ksika znacznie zyskaa w stosunku do wersji oryginalnej.
Nie mona byo marnowa okazji skorzystania z usug i umiejtnoci profesjonalnego redaktora. Pod wieloma wzgldami praca Andy'ego jest rwnie wana jak autorw. To samo dotyczy rwnie redaktorw technicznych, ktrzy nadali ksice
obecny ksztat. Wszystkie te poprawki zostay rwnie wprowadzone w wersji elektronicznej, a wic w zawartoci nie ma rnic.

Zwr uwag, e cho moesz wydrukowa wersj elektroniczn, nie moesz kserowa ksiki O'Reilly'ego
ani sprzedawa adnych jej kopii.

XXII

Wstp

Jednak wci wersja wydana przez O'Reilly'ego bdzie inna. Jest porzdnie oprawiona. Moesz mie problemy z adnym wydrukowaniem wersji domowej. Jest te
mao prawdopodobne, aby uzyska zblion jako, a jeli ju to zapewne za duo
wiksze pienidze. Ponadto nasze amatorskie ilustracje zostay w wersji drukowanej zastpione innymi grafikami, piknie przygotowanymi przez profesjonalnych
artystw z wydawnictwa O'Reilly. Dla wersji drukowanej przygotowano te nowe,
dokadniejsze indeksy, dziki czemu duo atwiej wyszukuje si informacje. Jeeli ta
ksika jest czym, co zamierzasz przeczyta od pocztku do koca, powiniene zastanowi si nad przeczytaniem oficjalnej wersji drukowanej.

Przegld treci
Rozdzia 1, Wprowadzenie do sieci, omawia histori Linuksa i podaje podstawowe informacje o UUCP, TCP/IP, rnych protokoach, sprzcie i bezpieczestwie. Kolejne
kilka rozdziaw omawia konfigurowanie Linuksa w sieci TCP/IP i uruchamianie
podstawowych aplikacji. Nieco dokadniej przygldamy si IP w rozdziale 2, Wybrane problemy sieci TCP/IP, zanim przejdziemy do edycji plikw i tym podobnych tematw. Jeeli wiesz ju, jak dziaa ruting IP i na czym polega rozwizywanie adresw,
moesz pomin ten rozdzia.
Rozdzia 3, Konfigurowanie sprztu sieciowego, omawia podstawowe zagadnienia konfiguracyjne, takie jak tworzenie jdra i konfigurowanie karty Ethernet. Konfiguracja
portw szeregowych jest przedstawiona oddzielnie w rozdziale 4, Konfigurowanie
urzdze szeregowych, poniewa ten temat nie dotyczy jedynie sieci TCP/IP, ale ma
take zwizek z UUCP.
Rozdzia 5, Konfigurowanie sieci TCP/IP, pomaga skonfigurowa maszyn w sieci
TCP/IP. Zawiera wskazwki instalacyjne dla samodzielnych hostw z wczonym
jedynie interfejsem ptli zwrotnej i hostw podczonych do sieci Ethernet. Pokazuje
take kilka przydatnych narzdzi, ktrych moesz uywa do testowania i debugowania swojej konfiguracji. Rozdzia 6, Usugi nazewnicze i konfigurowanie resolvera,
wyjania, jak skonfigurowa rozwizywanie nazw i uruchomi serwer nazw.
Rozdzia 7, IP cza szeregowego, pokazuje, jak zestawi poczenie SLIP i szczegowo omawia dip narzdzie pozwalajce na automatyzacj wikszoci niezbdnych
krokw. Rozdzia 8, Protok punkt-punkt, jest powicony PPP i pppd demonowi
PPP.
Rozdzia 9, Firewall TCP/IP, rozwija zagadnienia bezpieczestwa sieciowego i opisuje firewall TCP/IP dla Linuksa oraz narzdzia do jego konfiguracji: ipfwadm, ipchains
i iptables. Firewall IP zapewnia dokadn kontrol nadal tym, kto dostaje si do sieci
i z jakiego hosta.
Rozdzia 10, Liczenie ruchu IP, wyjania, jak skonfigurowa funkcj liczenia ruchu IP
w Linuksie, tak aby ledzi, jak duy jest ruch wychodzcy i kto go generuje.
Rozdzia 11, Maskowanie IP i translacja adresw sieciowych, omawia wasnoci specjalnego typu oprogramowania sieciowego Linuksa zwanego maskowaniem IP, ktre

Konwencje zastosowane w tej ksice

XXIII

pozwala czy ze sob cae sieci IP i korzysta z Internetu tylko przy uyciu jednego
adresu IP, tak e wewntrzna struktura sieci staje si niewidoczna.
Rozdzia 12, Wane funkcje sieciowe, stanowi krtkie wprowadzenie do konfigurowania pewnych waniejszych aplikacji sieciowych, takich jak rlogin, ssh i tym podobne.
Rozdzia ten omawia rwnie zarzdzanie usugami przez inetd i podpowiada, w jaki sposb mona zwikszy bezpieczestwo pewnych usug skierowanych do zaufanych hostw.
Rozdzia 13, System informacji sieciowej, i rozdzia 14, Sieciowy system plikw, omawiaj NIS i NFS. NIS to narzdzie uywane do dystrybuowania informacji administracyjnych, takich jak hasa uytkownika w sieci lokalnej. NFS pozwala na
wspdzielenie systemw plikw pomidzy hostami w sieci.
W rozdziale 15, IPX i system plikw NCP, omawiamy protok IPX i system plikw
NCP. Pozwalaj one zintegrowa Linuksa ze rodowiskiem Novell Netware przez
wspdzielenie plikw oraz drukarek z maszynami nielinuksowymi.
Rozdzia 16, Zarzdzanie UUCP Taylora, stanowi wyczerpujce wprowadzenie do
administrowania UUCP Taylora darmow implementacj UUCP.
Pozostae rozdziay ksiki szczegowo przedstawiaj poczt elektroniczn i grupy
dyskusyjne Usenetu. Rozdzia 17, Poczta elektroniczna, wprowadza w gwne zagadnienia poczty elektronicznej, takie jak wygld adresw pocztowych i sposb, w jaki
system obsuguje poczt, by dotara do adresata.
Rozdzia 18, Sendmail, i rozdzia 19, Exim, omawiaj konfiguracj programw sendmail i exim dwch maych agentw transportowych, ktre moesz wykorzysta
w Linuksie. Przedstawiamy oba, poniewa exim jest atwiejszy do zainstalowania
dla pocztkujcego, a sendmail obsuguje UUCP.
Od rozdziau 20, Grupy dyskusyjne, do rozdziau 23, Internet News, wyjaniamy
obsug wiadomoci Usenetu i sposb instalacji i uywania C News, nntpd i INN
trzech popularnych pakietw oprogramowania do zarzdzania wiadomociami
Usenetu. Po krtkim wprowadzeniu w rozdziale 20, moesz przeczyta rozdzia 21,
C News, jeeli chcesz przesya wiadomoci za pomoc C News tradycyjnej usugi
uywanej wraz z UUCP. Kolejne rozdziay omawiaj nowoczeniejsze metody wykorzystujce protok internetowy NNTP (Network News Transport Protocol). Rozdzia 22, NNTP i demon nntpd, przedstawia sposb konfiguracji prostego demona
NNTP o nazwie nntp, ktry zapewnia dostp do czytania wiadomoci w sieci lokalnej. Natomiast rozdzia 23 opisuje silniejszy serwer do bardziej intensywnych transferw NetNews'w: INN (InterNet News). I na koniec rozdzia 24, Konfigurowanie
przegldarki grup, pokazuje ci, jak skonfigurowa rne programy do czytania grup.

Konwencje zastosowane w tej ksice


We wszystkich przykadach przedstawionych w tej ksice zakadamy, e uywasz
powoki, ktra jest kompatybilna z sh. Standardow powok wszystkich dystrybucji Linuksa jest bash kompatybilna z sh. Jeeli korzystasz z csh, bdziesz musia odpowiednio zmodyfikowa przykady.

XXIV

Wstp

Poniej przedstawiamy list konwencji typograficznych uytych w ksice:


Czcionka pochya
Uywana do oznaczenia nazw plikw i katalogw, programw i polece, opcji
wiersza polece, adresw e-mail i cieki, URL i do podkrelenia nowych poj.
Czcionka pogrubiona
Uywana do nazw maszyn, hostw, orodkw, uytkownikw i ID oraz, okazjonalnie, do podkrelania poj.
Czcionka o staej szerokoci
Uywana w przykadach do pokazania zawartoci kodu plikw lub wyniku
dziaania polece oraz wskazywania zmiennych rodowiskowych i sw kluczowych, ktre pojawiaj si w kodzie.
Czcionka pochya o staej szerokoci
Uywana do wskazania opcji zmiennych, sw kluczowych albo tekstu, ktry
uytkownik ma zastpi konkretn wartoci.
Czcionka pogrubiona o staej szerokoci
Uywana w przykadach do pokazania polece lub innego tekstu, ktry powinien
by wpisywany przez uytkownika dosownie.
Ramka z t ikon zawiera ostrzeenie. atwo tu o bd, ktry moe le si skoczy dla
twojego systemu lub jest trudny od naprawienia.

Ramka z t ikon zawiera komentarz do pobliskiego tekstu.

Zgaszanie uwag
Informacje zawarte w tej ksice sprawdzalimy i weryfikowalimy na tyle, na ile
bylimy w stanie, ale pewne rzeczy mogy si zmieni (lub my moglimy popeni
bd!). Bdziemy wdziczni za powiadomienie nas o wszelkich dostrzeonych bdach oraz podzielenie si swoimi sugestiami co do przyszych wyda. Prosimy pisa
na adres:
O'Reilly & Associates, Inc.
101 Morris Street
Sebastopol, CA 95472
1-800-998-9938 (w USA lub Kanadzie)
1-707-829-0515 (midzynarodowy lub lokalny)
1-707-829-0104 (faks)

Podzikowania

XXV

Moesz nam take wysya wiadomoci elektronicznie. Aby zapisa si na list dyskusyjn lub poprosi o katalog, wylij e-mail na adres:
info@oreilly.com
Aby poprosi o pomoc techniczn lub komentarz na temat ksiki, wylij e-mail na
adres:
bookquestions@oreilly.com
Prowadzimy witryn WWW dla niniejszej ksiki. Znajduj si na niej przykady,
errata i plany przyszych wyda. Strona ta znajduje si pod adresem:
http://www.oreilly.com/catalog/linag2
Wicej informacji na temat tej i innych ksiek znajdziesz w witrynie WWW wydawnictwa O'Reilly:
http://www.oreilly.com/

Podzikowania
To wydanie Przewodnika po sieci jest niemal wyczn zasug Olafa i Vince'a. Trudno
doceni wysiek woony w badania i napisanie tego typu ksiki, jeeli nie zrobi si
tego samemu. Uaktualnianie ksiki byo wyzwaniem powanym, ale dziki dobrej podstawie take przyjemnym.
Ksika wiele zawdzicza tym, ktrzy powicili czas na jej korekt i pomogli
usun wiele bdw, zarwno technicznych, jak i jzykowych. W tym dziaaniu
znakomicie si uzupeniali Phil Hughes, John Macdonald i Erik Ratcliffe.
Serdeczne podzikowania kierujemy do czonkw zespou redakcyjnego wydawnictwa O'Reilly, z ktrymi mielimy przyjemno pracowa. Dzikujemy Sarah Jane
Shangraw, ktra nadaa ksice obecny ksztat; Maurren Dempsey, ktra redagowaa tekst; Robowi Romano, Rhonowi Porterowi i Chrisowi Reileyowi, ktrzy wykonali rysunki, Hannie Dyer, ktra zaprojektowaa okadk, Alicii Cech, Davidowi Futato i Jennifer Niedhers za ukad wewntrzny, Larsowi Kaufowi, ktry
wpad na pomys zamieszczenia drzeworytw; Judy Hoer za indeks i na koniec Timowi O'Reilly'emu za odwag podjcia takiego projektu.
Na nasz wdziczno zasuyli te Andres Seplveda, Wolfgang Michael, Michael
K. Johnson i wszyscy programici, ktrzy powicili wolny czas na sprawdzenie informacji zawartych w Przewodniku po sieci. Phil Hughes, John MacDonald i Eric Ratcliffe zgosili nieocenione komentarze do drugiego wydania. Chcemy rwnie podzikowa wszystkim, ktrzy przeczytali pierwsze wydanie Przewodnika po sieci
i przysali poprawki i sugestie. Pen, miejmy nadziej, list tych osb moesz znale w pliku Thanks w wersji elektronicznej. Ostatecznie ta ksika nie powstaaby
bez wsparcia Holgera Grothego, ktry udostpni Olafowi podczenie do Internetu,
niezbdne do powstania oryginalnej wersji.
Olaf chciaby rwnie podzikowa nastpujcym grupom i firmom, ktre wydrukoway pierwsze wydanie Przewodnika po sieci i wspary finansowo zarwno jego
osob, jak i cay Projekt Dokumentacji Linuksa: Linux Support Team, Erlangen,

XXVI

Wstp

Niemcy; S.u.S.E. GmbH, Fuerth, Niemcy; oraz Linux System Labs, Inc., Clinton
Twp., USA; RedHat Software, Poudniowa Karolina, USA.
Terry dzikuje swojej onie Maggie, ktra niestrudzenie wspieraa go w pracy na
rzecz Projektu mimo wyzwania jakie stawiao przed ni urodzenie ich pierwszego
dziecka, Jacka. Ponadto dzikuje wielu osobom ze spoecznoci Linuksa, dziki ktrym
osign poziom pozwalajcy mu na wzicie udziau w tym przedsiwziciu. Pomog ci, jeeli obiecasz pomc za to komu innemu.

Lista zasuonych
Jest jeszcze wiele osb, poza ju wspomnianymi, ktre przyczyniy si do powstania
Przewodnika po sieci. Zapoznali si z nim i przesyali nam poprawki i sugestie. Jestemy im bardzo wdziczni.
Oto lista tych, ktrych dziaalno pozostawia lad w naszych folderach pocztowych.
Al Longyear, Alan Cox, Andres Seplveda, Ben Cooper, Cameron Spitzer, Colin
McCormack, D.J. Roberts, Emilio Lopes, Fred N. van Kempen, Gert Doering, Greg
Hankins, Heiko Eissfeldt, J.P. Szikora, Johannes Stille, Karl Eichwalder, Les Johnson,
Ludger Kunz, Marc van Diest, Michael K. Johnson, Michael Nebel, Michael Wing,
Mitch D'Souza, Paul Gortmaker, Peter Brouwer, Peter Eriksson, Phil Hughes, Raul
Deluth Miller, Rich Braun, Rick Sladkey, Ronald Aarts, Swen Themmler, Terry
Dawson, Thomas Quinot i Yury Shevchuk.

Wprowadzenie do sieci
Rozdzia 1: Wprowadzenie do sieci

Historia
Idea sieci jest prawdopodobnie tak stara jak sama komunikacja. Signijmy do epoki
kamiennej, kiedy to ludzie uywali bbnw do przesyania wiadomoci. Zamy,
e jaskiniowiec A chce zaprosi jaskiniowca B do gry w rzucanie kamieniami, ale
mieszkaj oni zbyt daleko od siebie, by B usysza uderzenia A w bben. Co moe
zrobi jaskiniowiec A? Moe on 1) i do miejsca zamieszkania B, 2) uy wikszego
bbna lub 3) poprosi C, ktry mieszka w poowie drogi pomidzy nimi, aby przekaza komunikat. Ostatni moliwo mona nazwa sieci.
Oczywicie od czasw naszych przodkw zmieniy si metody i urzdzenia suce
komunikacji. Obecnie mamy komputery poczone ze sob zwojami drutw, wiatowodami, mikrofalami i tym podobnymi; za ich pomoc umawiamy si na sobotni
mecz piki nonej*. Poniej opiszemy, jakimi rodkami i metodami mona nakoni
komputery do porozumiewania si, cho pominiemy i druty, i pik non.
W tym przewodniku opiszemy trzy typy sieci. Gwnie skupimy si na sieciach
opartych na TCP/IP, ktry jest najpopularniejszym zestawem protokow stosowanym zarwno w sieciach lokalnych (Local Area Networks LAN), jak i w sieciach rozlegych (Wide Area Networks WAN), takich jak Internet. Przyjrzymy si rwnie
protokoom UUCP i IPX. Swego czasu UUCP by powszechnie uywany do przesyania wiadomoci Usenet i poczty przez komutowane poczenia telefoniczne.
Obecnie jest mniej popularny, ale wci bywa przydatny w pewnych sytuacjach. Protok IPX jest uywany przewanie w rodowisku Novell NetWare. Opiszemy, jak
wykorzysta go do podczenia maszyny linuksowej do sieci Novell. Kady z wymienionych protokow jest protokoem sieciowym sucym do przesyania da*

Co si jeszcze czasem zdarza w Europie.

Rozdzia 1: Wprowadzenie do sieci

nych pomidzy komputerami. Omwimy, jak s one uywane, i pokaemy rzdzce


nimi zasady.
Sie definiujemy jako zbir hostw, ktre s w stanie komunikowa si ze sob, czsto za porednictwem pewnych wybranych spord nich hostw, ktre rozsyaj
dane pomidzy uczestnikw. Hosty to czsto komputery, ale nie zawsze za hosty
mona uzna take X terminale czy inteligentne drukarki. Niewielkie zbiorowiska
hostw s nazywane rwnie orodkami (ang. sites).
Komunikacja nie jest moliwa bez pewnego rodzaju jzyka czy kodu. W sieciach
komputerowych te jzyki s nazywane protokoami. Jednak protokou sieciowego nie
powiniene kojarzy z pisemnym sprawozdaniem z zebrania. Trafniejsza jest analogia do sformalizowanych regu zachowania obowizujcych, gdy na przykad spotykaj si gowy pastw, czyli do protokou dyplomatycznego. Podobne protokoy
uywane w sieciach komputerowych to po prostu sztywne zasady wymiany komunikatw pomidzy dwoma lub wicej hostami.

Sieci TCP/IP
Nowoczesne aplikacje sieciowe wymagaj wyrafinowanego podejcia do przesyania danych z jednej maszyny do drugiej. Jeeli zarzdzasz maszyn z Linuksem, z ktrej korzysta wielu uytkownikw, to moe si zdarzy, e wszyscy jednoczenie
bd chcieli poczy si ze zdalnymi hostami w sieci. Potrzebujesz wic sposobu,
ktry pozwoli im wspdzieli poczenie sieciowe bez przeszkadzania sobie wzajemnie. Rozwizanie, ktre wykorzystuje wiele wspczesnych protokow sieciowych, nazywane jest przeczaniem pakietw. Pakiet to maa porcja danych, przesyana
przez sie z jednej maszyny do drugiej. Przeczanie wystpuje w momencie, gdy
datagram jest przenoszony przez dowolne cze w sieci. W sieci z przeczaniem
pakietw jedno cze jest wspdzielone przez wielu uytkownikw w ten sposb,
e przez to cze pakiety s wysyane kolejno od jednego uytkownika do drugiego.
Rozwizanie, ktre przyjo si w wielu systemach Unix, a nastpnie take w systemach nieuniksowych, nosi nazw TCP/IP. Przy omawianiu sieci TCP/IP spotkasz
si z okreleniem datagram, ktre jest czsto uywane wymiennie z okreleniem pakiet, cho ma te inne, techniczne znaczenie. W tym podrozdziale przyjrzymy si
podstawowym pojciom zwizanym z TCP/IP.

Wprowadzenie do sieci TCP/IP


Pocztki TCP/IP sigaj programu badawczego finansowanego przez amerykask
agencj rzdow DARPA (Defense Advanced Research Projects Agency) w 1969 roku.
ARPANET bya sieci eksperymentaln, ktra w 1975 roku, po latach zakoczonych
sukcesem bada, staa si sieci operacyjn.
W 1983 roku jako standard przyjto nowy zestaw protokow o nazwie TCP/IP,
ktrego miay uywa wszystkie hosty w sieci. Ostatecznie ARPANET przeksztaci
si w Internet (sam ARPANET przesta istnie w 1990 roku), a zestaw TCP/IP jest
stosowany take poza nim. Wiele firm stworzyo korporacyjne sieci TCP/IP, a Inter-

Sieci TCP/IP

net osign poziom, w ktrym mona go uzna za wszechobecn technologi. Trudno jest, czytajc gazet lub czasopismo, nie zauway odnonikw do Internetu
prawie kady ma dzi do niego dostp.
Aby nasze rozwaania o TCP/IP oprze na czym konkretnym, wemy jako przykad sie uniwersytetu Groucho Marx (GMU), znajdujcego si gdzie w Fredland.
Wikszo wydziaw tej uczelni posiada wasne sieci lokalne, jednak niektre
wspdziel jedn sie, a inne maj ich po kilka. Wszystkie one s poczone ze sob i
podczone do Internetu poprzez jedno szybkie cze.
Zamy, e twj linuksowy komputer jest podczony do sieci LAN zbudowanej
z hostw uniksowych na wydziale matematyki i nazywa si erdos. Aby dosta si do
hosta, powiedzmy quark, na wydziale fizyki, wprowadzasz nastpujce polecenie:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:

Po monicie wpisujesz nazw uytkownika, powiedzmy andres, i swoje haso. Nastpnie uzyskujesz dostp do powoki* komputera quark, w ktrej moesz pisa tak,
jakby siedzia przy jego konsoli. Gdy wyjdziesz z powoki, powracasz do monitu
wasnej maszyny. Wanie uye jednej z natychmiastowych, interaktywnych aplikacji, udostpnianych przez TCP/IP: zdalnego logowania.
Gdy jeste zalogowany do maszyny quark, moesz rwnie uruchomi aplikacj
graficzn, np. program procesora tekstw, program do rysowania czy przegldark
WWW. System X Window jest w peni sieciowym rodowiskiem graficznym, dostpnym dla wielu rnych systemw komputerowych. Aby powiedzie aplikacji,
e chcesz, aby na ekranie twojego hosta ukazyway si jej okna, musisz ustawi
zmienn rodowiskow DISPLAY:
$ DISPLAY=erdos.maths:0.0
$ export DISPLAY

Jeeli teraz uruchomisz swoj aplikacj, skontaktuje si ona z twoim X serwerem,


a nie z tym dziaajcym na quarku, i wywietli wszystkie okna na twoim ekranie.
Oczywicie na erdosie musi dziaa X11. Istota sprawy polega na tym, e TCP/IP
pozwala quarkowi i erdosowi na wysyanie pakietw X11 w t i z powrotem, std
masz wraenie, e znajdujesz si w jednym systemie. Sie jest tu niemal przezroczysta.
Kolejn bardzo wan aplikacj TCP/IP jest NFS. Jej nazwa to skrt od sw Network
File System (sieciowy system plikw). Jest to inny sposb na spowodowanie, by sie
bya przezroczysta. NFS pozwala na traktowanie hierarchii katalogw z innych hostw tak, jakby byy one lokalnymi systemami plikw, i sprawia, e wygldaj one
jak inne katalogi na twoim hocie. Na przykad katalogi domowe wszystkich uytkownikw mog by przechowywane na serwerze centralnym, z ktrego mog je
montowa wszystkie hosty w sieci LAN. W efekcie uytkownicy mog logowa si
do dowolnej maszyny i znale si w tym samym katalogu. Podobnie moliwe jest
wspdzielenie duej liczby danych (takich jak bazy danych, dokumentacje czy apli*

Powoka to interfejs wiersza polece systemu operacyjnego Unix. Jest ona podobna do monitu DOS-a
w rodowisku Microsoft Windows, cho ma duo wiksze moliwoci.

Rozdzia 1: Wprowadzenie do sieci

kacje) przez wiele hostw w ten sposb, e na serwerze jest utrzymywana jedna baza
danych, do ktrej maj dostp inne hosty. Do NFS-u powrcimy w rozdziale 14, Sieciowy system plikw.
Oczywicie s to tylko przykady tego, co moesz zrobi w sieciach TCP/IP. Moliwoci s prawie nieograniczone i podczas lektury tej ksiki poznasz ich wicej.
Teraz przyjrzymy si bliej sposobowi dziaania TCP/IP. Wiedza ta pomoe ci zrozumie, jak musisz skonfigurowa swj komputer i dlaczego. Rozpoczniemy od
analizy sprztu.

Ethernet
Najpopularniejszym rodzajem sprztu w sieci lokalnej jest Ethernet. W najprostszej
postaci skada si z jednego kabla i hostw podczonych do niego przez wtyczki lub
transceivery. Prosta instalacja ethernetowa jest stosunkowo niedroga, co wraz
z przepustowoci sieci rzdu 10, 100 czy nawet 1000 megabitw na sekund przyczynio si do duej popularnoci tego standardu sprztowego.
Ethernet wystpuje w trzech odmianach: cienki, grupy i skrtkowy. Cienki Ethernet
i gruby Ethernet wykorzystuj kable wsposiowe, ktre rni si rednic i sposobem podczania kabla do hosta. Cienki Ethernet wykorzystuje zcza BNC
w ksztacie litery T, ktre wkadasz w kabel i wkrcasz do gniazda z tyu komputera.
Gruby Ethernet wymaga wywiercenia niewielkiej dziurki w kablu i podczenia
transceivera za pomoc zaczepu wampirowego (ang. vampire tap). Nastpnie do
transceivera mona podczy hosty (jeden lub wicej). Cienki kabel ethernetowy
moe mie maksymalnie 200 metrw dugoci, za kabel gruby 500; ich nazwy to,
odpowiednio, 10base-2 i 10base-5. Base odnosi si do modulacji pasma podstawowego (ang. baseband modulation) i po prostu oznacza, e dane s wysyane do kabla
bezporednio, bez adnego modemu. Liczba na pocztku oznacza prdko w megabitach na sekund, a liczba na kocu maksymaln dugo kabla w setkach metrw. Sie skrtkowa wykorzystuje kabel zbudowany z dwch par drutw miedzianych i zwykle wymaga dodatkowego urzdzenia zwanego hubem aktywnym. Sie
skrtkowa jest take znana pod nazw 10base-T, gdzie T oznacza skrtk. Wersja
sieci dziaajca z prdkoci 100 megabitw nosi nazw 100base-T.
Aby doda host do sieci zbudowanej w oparciu o cienki Ethernet, musisz przerwa
jej dziaanie na co najmniej kilka minut, poniewa trzeba rozczy kabel i dooy
wtyczki. Chocia dodanie hosta do instalacji zbudowanej w oparciu o gruby Ethernet jest nieco bardziej skomplikowane, zwykle nie wymaga wyczenia sieci. Ethernet oparty na skrtce jest jeszcze mniej kopotliwy. Wykorzystuje urzdzenie zwane
hubem. Peni ono rol punktu podczeniowego. Moesz docza hosty do huba lub
odcza je bez przerywania pracy caej sieci.
Wiele osb woli cienki Ethernet w maych sieciach, poniewa jest on niedrogi. Karty
PC kosztuj okoo 30 USD (obecnie wiele firm dosownie je wyrzuca), a kabel kilka
centw za metr. Jednak w duych instalacjach lepszy jest gruby Ethernet lub skrtka.
Na przykad na wydziale matematyki GMU pierwotnie wybrano gruby Ethernet,
poniewa kabel musia by dugi, a wic ruch nie moe by zakcany za kadym ra-

Sieci TCP/IP

zem, gdy do sieci jest dodawany nowy host. Instalacje skrtkowe s obecnie bardzo
popularne. Huby taniej, a mniejsze jednostki mona dosta za cen, ktra jest atrakcyjna nawet dla maych sieci domowych. Okablowanie skrtkowe moe by znacznie tasze w przypadku duych instalacji, a sam kabel jest duo bardziej elastyczny
ni kable wsposiowe uywane w innych rodzajach sieci Ethernet. Administratorzy sieci na wydziale matematyki GMU planuj w przyszym roku finansowym wymieni istniejce okablowanie i urzdzenia na skrtkowe, by unowoczeni sie i zaoszczdzi czas przy instalowaniu nowych hostw i przenoszeniu istniejcych
z miejsca na miejsce.
Jedn z wad technologii Ethernet jest ograniczenie dugoci kabla, co uniemoliwia
jej zastosowanie w sieciach innych ni LAN. Jednak za pomoc wzmacniakw (ang.
repeater), brydy i ruterw moliwe jest czenie ze sob segmentw sieci Ethernet.
Wzmacniaki po prostu kopiuj sygnay pomidzy dwoma lub wicej segmentami
tak, e wszystkie segmenty dziaaj jakby to bya jedna sie Ethernet. Ze wzgldu na
wymagania czasowe, mona umieci co najwyej cztery wzmacniaki pomidzy
dwoma hostami w sieci. Bryde i rutery s bardziej inteligentne. Analizuj nadchodzce dane i przekazuj je tylko wtedy, jeeli docelowy host nie znajduje si
w sieci lokalnej.
Ethernet dziaa na zasadzie systemu magistralowego, gdzie host moe wysya
pakiety (lub ramki) o wielkoci do 1500 bajtw do innego hosta w tej samej sieci Ethernet. Host jest identyfikowany za pomoc szeciobajtowego adresu trwale zapisanego w oprogramowaniu firmowym interfejsu karty sieciowej Ethernet (Network Interface Card, NIC). Adresy te s zwykle sekwencj dwucyfrowych liczb szesnastkowych
oddzielonych dwukropkami, czyli na przykad aa:bb:cc:dd:ee:ff.
Ramk wysyan przez jedn stacj widz wszystkie podczone stacje, ale tylko
host, dla ktrego jest przeznaczona, odczytuje j i przetwarza. Jeeli dwie stacje prbuj wysa ramk w tym samym czasie, dochodzi do kolizji. Kolizje w sieci Ethernet
s wykrywane bardzo szybko przez elektronik kart interfejsu i s rozwizywane
przez przerwanie wysyania z obu stacji, odczekanie przez kad z nich losowego
przedziau czasu i ponown prb transmisji. Nieraz spotkasz si z opini, e kolizje
w Ethernecie s problemem i e przez nie wykorzystanie Ethernetu wynosi zaledwie
okoo 30 procent dostpnego pasma. Kolizje s zjawiskiem typowym dla sieci Ethernet i nie powiniene by zaskoczony, zwaszcza jeli sie jest przeciona. Moe ich
by maksymalnie 30 procent. Wykorzystanie sieci Ethernet jest w rzeczywistoci
ograniczone do okoo 60 procent dopiero jeeli nie osigniesz tej wartoci, to
moesz zacz si martwi*.

Inne typy urzdze


W wikszych instalacjach, takich jak na uniwersytecie Groucho Marx, Ethernet zwykle nie jest jedynym typem uywanego sprztu. Istnieje wiele innych protokow
*

Lista pyta FAQ dotyczca Ethernetu, ktra znajduje si pod adresem http://www.faqs.org/faqs/LANs/
ethernet-faq/, omawia to zagadnienie, a spory zasb szczegowych informacji historycznych i technicznych
jest dostpny na stronie powiconej Ethernetowi prowadzonej przez Charlesa Spurgeona pod adresem
http://wwwhost.ots.utexas.edu/ethernet/.

Rozdzia 1: Wprowadzenie do sieci

przesyania danych, ktre mona wykorzystywa. Wszystkie wymienione poniej


protokoy s obsugiwane przez Linuksa, ale ze wzgldu na ograniczon ilo miejsca przedstawimy je skrtowo. Szczegowy opis wielu innych protokow znajduje
si w odpowiednich dokumentach HOWTO, moesz tam zajrze, jeeli jeste zainteresowany poznaniem tych, ktrych nie opisujemy w naszej ksice.
Na uniwersytecie Groucho Marx sie LAN kadego wydziau jest podczona do
szybkiej sieci szkieletowej, w ktrej wykorzystano wiatowd i technologi sieciow FDDI (Fiber Distributed Data Interface). FDDI prezentuje cakiem inne podejcie
do przesyania danych, zasadniczo polegajce na wysyaniu etonw (ang. tokens).
Stacja ma prawo wysa ramk tylko wtedy, jeeli wczeniej odbierze eton. Gwn
zalet protokou przekazywania etonw jest zmniejszenie liczby kolizji. Protok
moe duo prociej osign pen prdko przesyania, w przypadku FDDI do 100
Mb/s. FDDI oparte na wiatowodzie ma wiele zalet, poniewa dopuszczalna
dugo kabla jest duo wiksza ni w technologiach wykorzystujcych zwyky kabel miedziany. Limit wynosi tutaj okoo 200 km, co sprawia, e FDDI znakomicie nadaje si do czenia wielu budynkw w miecie lub, tak jak w naszym przykadzie,
wielu budynkw campusu.
Podobnie jeeli w okolicy znajduj si urzdzenia sieciowe firmy IBM, prawdopodobnie zainstalowano sie IBM Token Ring. Token Ring jest stosowana jako alternatywa dla Ethernetu w niektrych sieciach LAN i ma te same zalety co FDDI, jeli chodzi o prdko, ale mniejsz przepustowo (4 lub 16 Mb/s). Jest te tasza, poniewa wykorzystuje kabel miedziany, a nie wiatowodowy. W Linuksie sie Token
Ring jest konfigurowana prawie tak samo jak Ethernet, a wic nie musimy jej tutaj
powica wicej uwagi.
W sieciach lokalnych LAN mog by te stosowane inne technologie, takie jak ArcNet czy DECNet, cho obecnie ju raczej sporadycznie. Linux rwnie je obsuguje,
ale nie bdziemy ich tu opisywa.
Wiele sieci pastwowych obsugiwanych przez firmy telekomunikacyjne wykorzystuje protokoy przeczania pakietw. Chyba najwiksz popularnoci cieszy si
standard o nazwie X.25. Wiele sieci publicznych, takich jak Tymnet w USA, Austpac
w Australii i Datex-P w Niemczech, oferuje t usug. X.25 definiuje zestaw protokow sieciowych, ktre opisuj, jak urzdzenie bdce terminalem danych, takie
jak host, czy si ze urzdzeniem do przesyania danych (przecznikiem X.25).
X.25 wymaga synchronicznego cza danych, a zatem specjalnego synchronicznego
portu szeregowego. Mona stosowa X.25 z normalnymi portami szeregowymi pod
warunkiem, e ma si specjalne urzdzenie o nazwie PAD (Packet Assembler Disassembler). PAD jest samodzielnym urzdzeniem udostpniajcym synchroniczne
i asynchroniczne porty szeregowe. Obsuguje protok X.25, tak wic proste
urzdzenia terminalowe mog nawizywa i przyjmowa poczenia realizowane
za pomoc tego protokou. X.25 jest czsto uywany do przesyania innych protokow sieciowych, takich jak TCP/IP. Poniewa datagramy IP nie mog by w prosty sposb przetumaczone na X.25 (lub odwrotnie), s one enkapsulowane w pakietach X.25 i wysyane przez sie. W Linuksie dostpna jest eksperymentalna implementacja protokou X.25.

Sieci TCP/IP

Nowszym protokoem, powszechnie oferowanym przez firmy telekomunikacyjne,


jest Frame Relay. Pod wzgldem technicznym ma on wiele wsplnego z protokoem
X.25, ale w dziaaniu bardziej przypomina protok IP. Podobnie jak X.25, tak Frame
Relay wymaga specjalnego synchronicznego portu szeregowego. Std wiele kart
obsuguje oba te protokoy. Alternatyw jest urzdzenie nazywane Frame Relay Access Device (FRAD) obsugujce enkapsulacj pakietw Ethernet w pakietach Frame
Relay na czas transmisji w sieci. Frame Relay znakomicie nadaje si do przesyania
pakietw TCP/IP pomidzy orodkami. Linux jest wyposaony w sterowniki, ktre
obsuguj pewne typy wewntrznych urzdze Frame Relay.
Jeeli potrzebujesz szybszej sieci, ktra bdzie przesya wiele rnych i nietypowych rodzajw danych, takich jak cyfrowo zapisany gos i wideo, to zapewne zainteresuje ci ATM (Asynchronous Transfer Mode). ATM jest now technologi sieciow,
ktra zostaa zaprojektowana tak, by zapewni atwe zarzdzanie, du prdko,
mae opnienia przy przesyaniu danych i kontrol nad jakoci usug (Quality of
Service QS). Wiele firm telekomunikacyjnych, ktre licz na usprawnienie
zarzdzania sieci i jej obsugi, siga po infrastruktur sieci ATM, poniewa pozwala ona czy wiele rnych usug sieciowych na jednej platformie. ATM jest czsto
uywana do przesyania protokou TCP/IP. W Networking-HOWTO znajdziesz informacje na temat obsugi ATM-u przez Linuksa.
Czsto radioamatorzy wykorzystuj swj sprzt do czenia komputerw w sie
powszechnie nosi to nazw radia pakietowego (ang. packet radio). Jednym z protokow wykorzystywanych przez nich jest AX.25, w pewnym stopniu oparty na X.25.
Radioamatorzy uywaj protokou AX.25 do przesyania TCP/IP, a take innych
protokow. AX.25, podobnie jak X.25, wymaga urzdzenia szeregowego, ktre
moe dziaa w trybie synchronicznym lub urzdzenia zewntrznego o nazwie Terminal Node Controller, ktre konwertuje pakiety przesyane przez cze asynchroniczne na pakiety przesyane synchronicznie. Istnieje szereg rnych kart
interfejsw obsugujcych radio pakietowe mwi si, e s to karty oparte na Z8530
SCC. Nazwa ta odnosi si do najpopularniejszego kontrolera komunikacyjnego uywanego do ich budowy. Dwa inne protokoy, czsto przesyane przez AX.25, to NetRom i Rose s to protokoy warstwy sieciowej. Poniewa protokoy te dziaaj
w oparciu o AX.25, maj te same wymagania sprztowe. Linux w peni implementuje protokoy AX.25, NetRom i Rose. AX25-HOWTO jest dobrym rdem informacji
na temat implementacji tych protokow w Linuksie.
Dostp do Internetu mona rwnie uzyska poprzez poczenia komutowane do
systemu centralnego korzystajce z wolnych, ale tanich czy szeregowych (telefon,
ISDN i tym podobne). Wymagaj one jeszcze innych protokow przesyania
pakietw, takich jak SLIP czy PPP. Opiszemy je pniej.

Protok internetowy (IP)


Zapewne szczytem twoich marze nie jest sie oparta na jednym poczeniu ethernetowym lub typu punkt-punkt. Idealnie byoby, gdyby mg czy si z hostem
bez wzgldu na to, jakiego typu czem fizycznym jest podczony do sieci. Na
przykad w duych instalacjach, takich jak na przykadowym uniwersytecie Gro-

Rozdzia 1: Wprowadzenie do sieci

ucho Marx, zwykle masz kilka oddzielnych sieci, ktre s w pewien sposb ze sob
poczone. Wydzia matematyki ma dwie sieci Ethernet, jedn z szybkimi maszynami dla profesorw i absolwentw, a drug z wolnymi komputerami dla studentw.
Obie s podczone do szkieletowej sieci FDDI w campusie.
Poczenie to jest obsugiwane przez dedykowany host zwany gatewayem, ktry
obsuguje nadchodzce i wychodzce pakiety, kopiujc je midzy dwoma Ethernetami i kablem optycznym w sieci FDDI. Na przykad gdyby by na wydziale matematyki i chciaby dosta si ze swojego Linuksa do komputera quark na wydziale
fizyki, oprogramowanie sieciowe nie wysaoby pakietw bezporednio do komputera quark, poniewa nie znajduje si on w tym samym segmencie Ethernet. W tym
wypadku jako przekanik zostanie wykorzystany gateway. Gateway (o nazwie
sophus) przekazuje te pakiety poprzez sie szkieletow do gatewaya niels na wydziale fizyki. Dopiero niels dostarcza je do docelowej maszyny. Przepyw danych
pomidzy komputerami erdos i quark pokazano na rysunku 1-1.

FDDI Campus Backbone


2

sophus

niels

Mathematics Ethernet
1

Physics Ethernet
3

erdos

quark

Rysunek 1-1. Trzy etapy wysania datagramu z erdosa do quarka

Taki sposb przekazywania danych do zdalnego hosta nazywa si rutowaniem,


a w tym kontekcie pakiety czsto s nazywane datagramami. Aby uproci opisan
procedur, wymian datagramw niezalenie od stosowanych urzdze, powierza
si zawsze temu samemu protokoowi, ktry nosi nazw protokou internetowego (Internet Protocol IP). W rozdziale 2, Wybrane problemy sieci TCP/IP, opiszemy bardziej
szczegowo zarwno IP, jak i ruting.

Sieci TCP/IP

Gwn zalet IP jest to, e przeksztaca on fizycznie rne od siebie sieci w jedn,
stuprocentowo homogeniczn sie. Nazywa si to wspdziaaniem midzysieciowym (ang. internetworking), a uzyskana metasie to internet. Zwr tutaj uwag na
subteln rnic pomidzy nazwami internet a Internet. Ta ostatnia to nazwa
wasna konkretnego internetu o globalnym zasigu.
Oczywicie IP wymaga take niezalenego od sprztu schematu adresowania. Taki
schemat to unikalny 32-bitowy numer przypisywany kademu hostowi, zwany adresem IP. Adres IP ma zwykle posta czterech liczb dziesitnych, oddzielonych kropkami, po jednej liczbie na kady 8-bitowy segment. Na przykad quark mgby mie
adres IP o postaci 0x954C0C04, ktry byby zapisany jako 149.76.12.4. Format ten jest
rwnie nazywany kropkow notacj dziesitn (ang. dotted decimal notation), a czasem
kropkow notacj czwrkow (ang. dotted quad notation). Dla adresw IP coraz czciej
spotyka si nazw IPv4 (od Internet Protocol Version 4), poniewa nowy standard
o nazwie IPv6 oferuje duo bardziej elastyczny sposb adresowania oraz inne, nowoczesne wasnoci. Ale minie co najmniej rok od wydania tej ksiki, zanim
wejdzie on w ycie.
Zapewne ju zauwaye, e mamy teraz trzy rne typy adresw: pierwszy to nazwa hosta, jak quark, nastpnie adres IP i jeszcze adresy sprztowe, takie jak 6-bajtowy adres ethernetowy. Wszystkie te adresy w pewien sposb musz do siebie pasowa, tak eby po napisaniu rlogin quark, oprogramowanie sieciowe mogo poda
adres IP komputera quark, a nastpnie znale adres ethernetowy odpowiadajcy
adresowi IP, wtedy gdy IP dostarczy ju dane do sieci Ethernet na wydziale fizyki.
Sytuacj t omwimy w rozdziale 2. Teraz wystarczy zapamita, e wyszukiwanie
adresw jest nazywane albo rozwizywaniem nazwy hosta, jeli dotyczy zamiany
nazw hostw na adresy IP, albo rozwizywaniem adresw, jeli ma nastpi zamiana
tych drugich na adresy sprztowe.

IP w czach szeregowych
W czach szeregowych obowizuje standard znany jako SLIP (Serial Line IP
protok internetowy cza szeregowego). Zmodyfikowana wersja SLIP, znana pod
nazw CSLIP (Compressed SLIP - SLIP z kompresj), kompresuje nagwki IP, co pozwala lepiej wykorzysta relatywnie ma przepustowo cechujc wikszo czy
szeregowych. Innym protokoem szeregowym jest PPP (Point-to-Point Protocol protok punkt-punkt). PPP jest bardziej nowoczesny, ni SLIP i posiada rne waciwoci, ktre stanowi o jego wikszej atrakcyjnoci. Jego gwn zalet w stosunku
do SLIP jest to, e nie ogranicza si do przesyania datagramw IP, ale jest zaprojektowany tak, by mona byo przez niego przesya dowolny protok.

Protok kontroli transmisji (TCP)


Wysyanie datagramw z jednego hosta do innego to nie wszystko. Jeeli zalogujesz
si do quarka, bdziesz chcia mie niezawodne poczenie pomidzy twoim procesem rlogin na erdosie a procesem powoki na quarku. Tak wic informacja wysana
tam i z powrotem musi by podzielona na pakiety przez nadawc i ponownie

10

Rozdzia 1: Wprowadzenie do sieci

poczona w cig znakw przez odbiorc. Cho wydaje si to trywialne, jest jednak
czynnoci do zoon.
Naley pamita, e IP jest z zaoenia protokoem zawodnym. Zamy, e dziesi
osb w twojej sieci Ethernet rozpoczo pobieranie najnowszej wersji kodu rdowego przegldarki Netscape z serwera FTP nalecego do przykadowego uniwersytetu. Wygenerowany w ten sposb ruch moe by za duy dla gatewaya, ktry
jest za wolny, i ma za mao pamici. Jeeli teraz zdarzy si, e wylesz pakiet do quarka, sophusowi moe zabrakn przez chwil miejsca na buforowanie i nie bdzie
w stanie przekaza twojego pakietu. W tej sytuacji IP po prostu gubi pakiet, ktry
znika bezpowrotnie. Dlatego to komunikujce si hosty s odpowiedzialne za
sprawdzenie integralnoci i kompletnoci danych oraz ich ponown transmisj
w przypadku bdu.
To zadanie jest realizowane przez inny protok TCP (Transmission Control Protocol), ktry jest niezawodn usug ponad IP. Istotn wasnoci TCP jest to, e uywa
on IP, by da ci wraenie prostego poczenia pomidzy dwoma procesami, odpowiednio na twoim hocie i zdalnej maszynie, a wic nie musisz martwi si o to, jak
i ktrdy s w rzeczywistoci przesyane twoje dane. Poczenie TCP dziaa w rzeczywistoci jak dwukierunkowy potok, do ktrego oba procesy mog zapisywa
i odczytywa. Dobra jest tu analogia do rozmowy telefonicznej.
TCP identyfikuje punkty kocowe kadego poczenia po adresach IP dwch komunikujcych si hostw i numerach portw na kadym z nich. Porty mog by postrzegane jako punkty zaczepienia pocze sieciowych. Gdybymy wrcili do przykadu z rozmow telefoniczn, to mona sobie wyobrazi, e hosty to miasta, za adresy IP to numery kierunkowe (gdzie numery odwzorowuj miasta), a numery portw to konkretne numery lokalne (gdzie numery odwzorowuj indywidualne
numery telefonw). Pojedynczy host moe realizowa wiele rnych usug, rozpoznawanych po numerze portu.
W przykadzie rlogin, aplikacja klienta (rlogin) otwiera port na hocie erdos i czy si
z portem 513 hosta quark, na ktrym nasuchuje serwer rlogind. W ten sposb zostaje
nawizane poczenie TCP. Za pomoc tego poczenia rlogind przeprowadza procedur autoryzacji, a nastpnie uruchamia powok. Standardowe wejcie i wyjcie
powoki s przekierowywane na poczenie TCP, a wic wszystko, co napiszesz
w aplikacji rlogin na swojej maszynie, zostanie przekazane przez strumie TCP
i podane powoce jako standardowe wejcie.

Protok datagramw uytkownika (UDP)


Oczywicie TCP nie jest jedynym protokoem uytkownika w sieci TCP/IP. Cho
jest odpowiedni dla aplikacji takich jak rlogin, jego zoono uniemoliwia wykorzystanie go w aplikacjach, takich jak NFS, ktre z kolei uywaj bratniego protokou UDP (User Datagram Protocol protok datagramw uytkownika). Podobnie
jak TCP, UDP pozwala aplikacji na czenie si z usug na pewnym porcie zdalnej
maszyny, ale bez zestawiania poczenia. Mona go wykorzysta do wysyania pojedynczych pakietw do docelowej usugi std nazwa.

Sieci TCP/IP

11

Zamy, e chcesz poprosi o niewielk porcj danych z serwera baz danych. Zestawienie poczenia TCP wymaga co najmniej trzech datagramw, kolejne trzy s
potrzebne do wysania i potwierdzenia niewielkiej porcji danych w kad stron,
a nastpne trzy do zamknicia poczenia. UDP obsuy takie poczenie za pomoc
tylko dwch datagramw, a efekt kocowy bdzie taki sam. UDP jest protokoem
bezpoczeniowym i nie wymaga zestawiania i zamykania sesji. Po prostu umieszczamy dane w datagramie i wysyamy go do serwera serwer przygotowuje odpowied, umieszcza dane w datagramie zaadresowanym zwrotnie (do nas) i przesya
go z powrotem. Cho w przypadku prostych transakcji UDP dziaa szybciej i bardziej efektywnie ni TCP, nie reaguje na gubienie datagramw. Dbao o kompletno danych pozostawia si aplikacji, na przykad aplikacji serwera nazw.

Wicej na temat portw


Porty mona traktowa jako punkty zaczepienia pocze sieciowych. Jeeli aplikacja
chce udostpni jak usug, podcza si sama do portu i czeka na klientw (czsto
nazywa si to nasuchiwaniem na porcie). Klient, ktry chce skorzysta z tej usugi,
alokuje port na swoim hocie lokalnym i podcza si do portu serwera na hocie
zdalnym. Ten sam port moe by otwarty na wielu rnych maszynach, ale na kadej
maszynie tylko jeden proces moe otworzy port w danej chwili.
Istotn wasnoci portw jest to, e gdy zostanie ustanowione poczenie pomidzy
klientem a serwerem, inna kopia serwera moe podczy si do portu serwera
i oczekiwa kolejnych klientw. Ta waciwo pozwala na przykad na kilka jednoczesnych zdalnych logowa do tego samego hosta wykorzystujcych port 513. TCP
jest w stanie rozrni te poczenia, poniewa przychodz one z rnych portw
lub hostw. Jeeli zalogujesz si dwukrotnie z erdosa do quarka, pierwszy klient rlogin wykorzysta port lokalny 1023, a drugi port 1022. Jednak oba podcz si do tego
samego portu 513 hosta quark. Te dwa poczenia bd rozrniane poprzez numery portw na erdosie.
W powyszym przykadzie uyto portw jako miejsca spotkania klient kontaktuje
si z okrelonym portem, by uzyska dan usug. Aby klient wiedzia, z jakim numerem portu ma si kontaktowa, administratorzy obu systemw musz uzgodni
przypisanie numerw portw. W przypadku popularnych usug, takich jak rlogin,
numerami tymi administruje centralnie organizacja IETF (Internet Engineering Task
Force), ktra regularnie publikuje RFC o nazwie Assigned Numbers (RFC-1700). Dokument ten zawiera midzy innymi numery portw przypisane dobrze znanym
usugom. Linux wykorzystuje plik o nazwie /etc/services, ktry kojarzy nazwy usug
z numerami portw.
Warto zauway, e cho zarwno poczenia TCP, jak i UDP opieraj si na portach, to ich numery nie kc si ze sob. Oznacza to, e na przykad port 513 TCP
rni si od portu 513 UDP. W rzeczywistoci porty te dziaaj jako punkty dostpu
dla dwch rnych usug: rlogin (TCP) i rwho (UDP).

12

Rozdzia 1: Wprowadzenie do sieci

Biblioteka socket
W uniksowych systemach operacyjnych oprogramowanie realizujce wszystkie zadania i obsugujce opisane powyej protokoy jest zwykle czci jdra. Podobnie
jest w Linuksie. Najpopularniejszym interfejsem programowania w wiecie Uniksa
jest biblioteka Berkeley Socket. Jej nazwa wywodzi si z popularnej analogii, w ktrej
port jest postrzegany jako gniazdo, a podczanie si do portu jako wczanie do
gniazda. Biblioteka udostpnia wywoanie bind, w ktrym podaje si zdalny host,
protok transportowy i usug, do ktrej program moe si podczy lub ktrej ma
nasuchiwa (za pomoc connect, listen i accept). Biblioteka socket jest nieco bardziej
oglna, poniewa udostpnia nie tylko klas gniazd opartych na TCP/IP (gniazda
AF_INET), ale take klas, ktra obsuguje poczenia lokalne do maszyny (klasa
AF_UNIX). Niektre implementacje mog take obsugiwa inne klasy, takie jak
protok XNS (Xerox Networking System) lub X.25.
W Linuksie biblioteka socket jest czci standardowej biblioteki lib C. Obsuguje
gniazda AF_INET i AF_INET6 dla TCP/IP oraz AF_UNIX dla gniazd domeny
Uniksa. Obsuguje rwnie gniazda AF_IPX dla protokow sieci Novell, AF_X25
dla protokou sieci X.25, AF_ATMPVC i AF_ATMSVC dla protokow sieci ATM
i AF_AX25, AF_NETROM i AF_ROSE dla protokow radia amatorskiego. Inne rodziny protokow s w trakcie tworzenia i bd stopniowo dodawane.

Sieci UUCP
UUCP (Unix-to-Unix Copy Program program kopiujcy midzy systemami uniksowymi) by pakietem programw, ktre przesyay pliki po czach szeregowych,
rozplanowyway te przesania w czasie i inicjoway wykonywanie programw
w zdalnych orodkach. Od czasu pierwszej implementacji, pod koniec lat siedemdziesitych, UUCP znacznie si zmienio, chocia zakres oferowanych usug pozosta niewielki. UUCP stosuje si gwnie w sieciach rozlegych (WAN), opartych
o okresowo uruchamiane cza komutowane.
UUCP stworzono w Bell Laboratories w 1977 roku w celu zapewnienia komunikacji
pomidzy orodkami programistycznymi pracujcymi pod Uniksem. W poowie
1978 roku sie czya ju ponad 80 orodkw. Dziaaa w niej poczta elektroniczna
oraz zdalne drukowanie. Jednak podstawowym zastosowaniem systemu bya dystrybucja nowego oprogramowania i poprawianie bdw. Obecnie UUCP nie jest
ograniczone wycznie do rodowiska Unix. Istniej darmowe i komercyjne wersje
dla wielu innych platform, takich jak AmigaOS, DOS i Atari TOS.
Jedn z gwnych wad sieci UUCP jest to, e dziaaj one wsadowo. Zamiast staego
poczenia pomidzy hostami, wykorzystuj poczenia tymczasowe. Host UUCP
moe poczy si z innym hostem UUCP tylko raz dziennie i to na krtko. W czasie
trwania poczenia przesya wszystkie grupy dyskusyjne, poczt i pliki, ktre znajduj si w kolejce, a nastpnie si rozcza. To wanie konieczno kolejkowania
ogranicza rnorodno zastosowa UUCP. W przypadku poczty elektronicznej,
uytkownik moe przygotowa wiadomo e-mail i wysa j. Bdzie ona oczekiwa
w kolejce na hocie UUCP, a zadzwoni on do innego hosta, by przesa wiadomo.

Sie w Linuksie

13

Jest to do przyjcia w przypadku usug sieciowych takich jak poczta elektroniczna,


ale nie nadaje si dla innych usug, na przykad rlogin.
Pomimo tych ogranicze, wci na wiecie istnieje wiele sieci UUCP utrzymywanych gwnie przez hobbystw, ktrzy oferuj prywatnym uytkownikom dostp
do Internetu za rozsdn cen. Gwnym powodem dugotrwaej popularnoci
UUCP bya jej atrakcyjno cenowa w porwnaniu z bezporednim podczeniem
do Internetu. Aby zrobi z twojego komputera wze UUCP, potrzebujesz jedynie
modemu, dziaajcej implementacji UUCP i innego wza UUCP, ktry bdzie chcia
przyjmowa twoj poczt i grupy dyskusyjne. Wiele osb chtnie obsugiwao ruch
UUCP dla indywidualnych uytkownikw, poniewa takie poczenia nie zakcay zbytnio pracy ich sieci.
Konfiguracj UUCP omawiamy w jednym z dalszych rozdziaw ksiki, cho czynimy to skrtowo, gdy protok ten jest obecnie wypierany przez TCP/IP. Dostp
do Internetu jest powszechny i nie stanowi problemu w wikszoci zaktkw wiata.

Sie w Linuksie
Linux, ktry powstaje wsplnym wysikiem programistw z caego wiata, nie
byby moliwy bez sieci globalnej. Nie ma wic nic dziwnego w tym, e od samego
pocztku pracowano nad zapewnieniem mu zdolnoci sieciowych. Implementacja
UUCP dziaaa ju w pierwszych wersjach Linuksa, a prace nad sieci opart na
TCP/IP rozpoczy si jesieni 1992 roku, kiedy Ross Biro wraz z grup programistw stworzyli to, co teraz jest znane pod nazw Net-1.
Po Rossie, ktry odszed w maju 1993 roku, prac nad now implementacj kontynuowa Fred van Kempen, przepisujc gwne czci kodu. Projekt ten by znany jako Net-2. Pierwsza publiczna wersja, Net-2d, zostaa udostpniona w lecie 1993 roku
(jako cz jdra 0.99.10) i od tego czasu bya utrzymywana i rozwijana przez kilka
osb, a przede wszystkim przez Alana Coxa*. Oryginalne prace Alana byy znane
pod nazw Net-2Debugged, gdy uwolni on kod od wielu bdw i wprowadzi
liczne udoskonalenia. Od wersji 1.0 Linuksa kod sieciowy Alana nosi nazw Net-3.
Kod ten by dalej rozwijany w Linuksie 1.2 i 2.0. Jdra 2.2 i nowsze wykorzystuj
wersj Net-4, ktra pozostaje standardem do chwili obecnej.
Kod sieciowy Linuksa Net-4 oferuje rnorodne sterowniki urzdze i zaawansowane wasnoci. Do standardowych protokow Net-4 zaliczaj si: SLIP i PPP (do
przesyania danych przez cza szeregowe), PLIP (dla czy rwnolegych), IPX (dla
sieci kompatybilnych z Novellem, ktre omwimy w rozdziale 15, IPX i system plikw NCP), Appletalk (dla sieci Apple) i AX.25, NetRom i Rose (dla sieci radioamatorskich). Inne standardy obsugiwane przez Net-4 to: firewalle IP, liczenie ruchu IP
(omawiane w rozdziaach 9 i 10) i maskowanie IP (omawiane w rozdziale 11, Maskowanie IP i translacja adresw sieciowych). Zaawansowane algorytmy rutingu i tunelowanie IP s obsugiwane na kilka moliwych sposobw. W Net-4 zawarto sterowni*

Do Alana mona pisa na adres alan@lxorguk.ukuu.org.uk.

14

Rozdzia 1: Wprowadzenie do sieci

ki dla szeregu urzdze Ethernet, a take dla FDDI, Token Ring, Frame Relay i ISDN
oraz ATM.
Ponadto istnieje tu wiele innych waciwoci, ktre znacznie rozszerzaj elastyczno Linuksa. Nale do nich implementacja systemu plikw SMB, ktra wspdziaa
z takimi aplikacjami, jak lanmanager i Microsoft Windows, oraz implementacja
Novell NCP (NetWare Core Protocol)*.

Rne cieki rozwoju


W rnych okresach w rnych kierunkach rozwijano oprogramowanie sieciowe
dla Linuksa.
Po uznaniu Net-2Debugged za implementacj sieci, Fred nadal pracowa nad kodem
sieciowym. W rezultacie powstaa wersja kodu o nazwie Net-2e, ktra charakteryzowaa si duo lepiej przemylan konstrukcj warstwy sieciowej. Fred chcia te
ustandaryzowa interfejs sterownikw urzdze (Device Driver Interface DDI), ale
prace nad Net-2e zakoczono.
Inna implementacja sieci TCP/IP pochodzi od Matthiasa Urlichsa, ktry napisa sterownik ISDN dla Linuksa i FreeBSD. W tym celu zintegrowa on cz kodu sieciowego BSD z jdrem Linuksa. Projekt ten rwnie nie jest rozwijany.
Wiele si zmienio w implementacji sieci w jdrze Linuksa, i wci si zmienia. Czasem oznacza to, e zmiany musz wystpi take w innym oprogramowaniu, takim
jak narzdzia do konfiguracji sieci. Cho nie jest to obecnie tak duym problemem
jak niegdy, jednak wci moe si zdarzy, e jeli zainstalujesz nowsz wersj
jdra, to narzdzia do konfiguracji sieci rwnie bd wymagay uaktualnienia. Na
szczcie w wikszoci obecnych dystrybucji Linuksa jest to proste zadanie.
Implementacja sieci Net-4 jest produktem w peni dopracowanym, stosowanym
w bardzo wielu orodkach na caym wiecie. Wiele wysiku woono w popraw
wydajnoci implementacji Net-4 i teraz moe ona konkurowa z najlepszymi implementacjami dostpnymi dla danych platform sprztowych. Linux cieszy si coraz
wikszym wziciem w rodowisku dostawcw Internetu, gdzie czsto jest uywany
do tworzenia tanich i niezawodnych serwerw WWW, serwerw pocztowych
i serwerw grup dyskusyjnych dla tego typu organizacji. Obecnie zainteresowanie
rozwojem Linuksa jest na tyle due, e wszystkie zmiany w technologii sieciowej
znajduj swoje odzwierciedlenie w kolejnych wersjach jdra, a jego najnowsze wersje oferuj jako standard kolejn generacj protokou IP IPv6.

Skd wzi kod


Dzisiaj wydaje si dziwne, e w pocztkach rozwoju kodu sieciowego Linuksa standardowe jdro wymagao ogromnego pakietu poprawek dodajcego obsug sieci.
Obecnie obsuga sieci jest uwzgldniona w gwnym jdrze Linuksa. Ostatnie stabilne jdra Linuksa mona znale w orodku ftp.kernel.org w katalogu /pub/linux/kernel/v2.x/, gdzie x jest liczb parzyst. Najnowsze eksperymentalne wersje jdra
*

NCP jest protokoem, na ktrym oparte s system plikw i usugi drukowania w Novellu.

15

Rozdzia 1: Wprowadzenie do sieci

Linuksa mona znale w orodku ftp.kernel.org w katalogu /pub/linux/kernel/v2.y/,


gdzie y jest liczb nieparzyst. Na caym wiecie znajduj si serwery lustrzane z kodem rdowym jdra Linuksa. Trudno sobie obecnie wyobrazi Linuksa bez standardowej obsugi sieci.

Utrzymywanie systemu
W niniejszej ksice bdziemy mwi gwnie o instalacji i konfiguracji. Jednake
administracja jest czym wicej po skonfigurowaniu usugi musisz take pilnowa,
by dziaaa. Wikszo usug nie wymaga zbyt wielkiej uwagi, ale przy niektrych,
takich jak poczta i grupy dyskusyjne, musisz wykonywa rutynowe czynnoci, by
twj system by sprawny. Zadania te omwimy w kolejnych rozdziaach.
Absolutnym minimum niezbdnym do poprawnego funkcjonowania systemu jest
regularne sprawdzanie plikw log systemu oraz plikw log kadej aplikacji w celu
wykrycia bdw czy nietypowych zdarze. Zwykle pisze si w tym celu skrypty
administracyjne i co jaki czas uruchamia si je z usugi cron. ]rdowe dystrybucje
niektrych wikszych aplikacji, takich jak inn czy C News, zawieraj takie skrypty.
Musisz tylko dopasowa je do swoich potrzeb.
Wynik wszelkich zada wykonywanych przez usug cron powinien by wysyany
poczt elektroniczn na konto administracyjne. Domylnie wiele aplikacji wysya
raporty o bdach, statystyki wykorzystania czy streszczenia plikw log na konto root. Ma to sens tylko wtedy, jeeli czsto logujesz si jako root. Duo lepiej jest przekazywa poczt uytkownika root na wasne konto, ustawiajc alias pocztowy
wedug opisu w rozdziale 19, Exim, lub rozdziale 18, Sendmail.
Choby skonfigurowa swj orodek z najwiksz dbaoci, zgodnie z prawami
Murphy'ego i tak wystpi jaki problem. Dlatego utrzymywanie systemu oznacza take przyjmowanie skarg. Zwykle ludzie spodziewaj si, e z administratorem systemu mona skontaktowa si poczt elektroniczn pod adresem root, ale istniej take inne adresy, ktre s powszechnie uywane do kontaktu z osobami odpowiedzialnymi za konkretny aspekt utrzymania orodka. Na przykad skargi na temat
bdnej konfiguracji poczty zwykle bd wysyane na adres postmaster, a problemy
z grupami dyskusyjnymi mog by raportowane na adres newsmaster lub usenet.
Poczta na adres hostmaster powinna by przekierowana do osoby odpowiedzialnej
za podstawowe usugi sieciowe hosta i usugi DNS, jeeli na twojej maszynie dziaa
serwer nazw.

Bezpieczestwo systemu
Kolejnym, bardzo istotnym aspektem administracji systemu w rodowisku sieciowym jest zabezpieczenie go i jego uytkownikw przed intruzami. Niedbale
zarzdzane systemy stanowi atwy cel dla zoliwych osb. Ataki zaczynaj si od
zgadywania hase, a kocz na wysyaniu faszywych pakietw Ethernet, natomiast
zniszczenia zaczynaj si od faszywych poczt elektronicznych, a mog skoczy si
utrat danych lub pogwaceniem prywatnoci twoich uytkownikw. O pewnych

Utrzymywanie systemu

16

konkretnych problemach powiemy przy omawianiu kontekstu, w ktrym mog one


wystpi, i pokaemy sposoby obrony.
Ten podrozdzia omawia kilka przykadw i podstawowych technik zwizanych
z bezpieczestwem systemu. Oczywicie nie przedstawia wszystkich zagadnie
bezpieczestwa, jakie moesz napotka. Chcemy jedynie zasygnalizowa problemy,
ktre mog wystpi. Dlatego przeczytanie dobrej ksiki na temat bezpieczestwa
jest absolutnie niezbdne, szczeglnie w przypadku systemu sieciowego.
Podstaw bezpieczestwa systemu jest dobra administracja. Oznacza to sprawdzanie wasnoci wszystkich istotnych plikw i katalogw oraz prawa dostpu do nich,
a take monitorowanie wykorzystania uprzywilejowanych kont. Na przykad program COPS przeszukuje twj system plikw i podstawowe pliki konfiguracyjne pod
ktem nietypowych praw dostpu lub innych anomalii. Mdrze jest take uywa
takiego systemu hase, ktry wymaga od uytkownikw stosowania si do pewnych
regu, przez co hasa jest trudno odgadn. Na przykad pakiet hase shadow wymaga, by haso miao co najmniej 5 znakw i zawierao liczby oraz znaki niealfanumeryczne.
Gdy udostpniasz jak usug w sieci, pamitaj, eby da jej jak najmniej przywilejw. Pozwalaj na robienie tylko tych rzeczy, ktre s wymagane, by dziaaa
tak, jak zostaa zaprojektowana. Na przykad powiniene nada programom prawo
setuid roota lub innego uprzywilejowanego konta, tylko wtedy gdy jest to niezbdne. Take, jeeli chcesz uywa usugi tylko w bardzo ograniczonym zakresie, nie
wahaj si jej skonfigurowa odpowiednio do twoich szczeglnych zastosowa. Na
przykad gdyby chcia pozwoli, aby stacje bezdyskowe uruchamiay si z twojej
maszyny, musisz udostpni uproszczony protok przesyania plikw (Trivial File
Transfer Protocol TFTP), tak by mogy skopiowa podstawowe pliki konfiguracyjne
z katalogu /boot twojej maszyny. Jednak w przypadku nieograniczonego uycia
TFTP pozwala uytkownikom z caego wiata kopiowa te pliki z twojego systemu,
do ktrych wszyscy maj prawo odczytu. Jeeli sobie tego nie yczysz, ogranicz
usug TFTP jedynie do katalogu /boot*.
Moesz rwnie ograniczy usugi przyznawane uytkownikom okrelonych hostw, powiedzmy z twojej sieci lokalnej. W rozdziale 12 przedstawiamy demon tcpd,
ktry wykonuje to zadanie dla wielu aplikacji sieciowych. Bardziej wyrafinowane
metody ograniczania dostpu do poszczeglnych hostw lub usug omwimy
w rozdziale 9.
Kolejn wan rzecz jest unikanie niebezpiecznego oprogramowania. W pewnym sensie kade oprogramowanie moe by niebezpieczne, poniewa moe zawiera bdy, ktre sprytni ludzie mog wykorzysta, by uzyska dostp do twojego
systemu. Takie rzeczy si zdarzaj i nie da si przed tym zabezpieczy. Problem ten
dotyczy zarwno oprogramowania darmowego, jak i produktw komercyjnych**.
*

Do tego tematu powrcimy w rozdziale 12, Wane funkcje sieciowe.

** Zdarzay si komercyjne wersje Uniksa (za ktre pacio si mnstwo pienidzy), ktrych skrypty powoki miay tak ustawione prawo setuid root, e uytkownik mg bez trudu uzyska przywileje
roota za pomoc standardowej sztuczki.

Utrzymywanie systemu

17

Jednak programy wymagajce specjalnych przywilejw s z natury bardziej naraone na niebezpieczestwo ni pozostae, poniewa wszelkie luki mog prowadzi
do powanych konsekwencji*. Jeeli instalujesz program z prawem setuid, ktry ma
pracowa z sieci, bd dwa razy bardziej ostrony i przeczytaj dokumentacj, aby
przez przypadek nie stworzy dziury w bezpieczestwie.
Uwag powiniene zwrci take na programy, ktre pozwalaj na logowanie lub
wykonywanie polece z niepenym uwierzytelnianiem. Polecenia, takie jak rlogin,
rsh i rexec, s bardzo przydatne, ale od osoby uruchamiajcej wymagaj jedynie ograniczonego uwierzytelnienia, ktre opiera si na zaufaniu do nazwy wywoujcego
hosta, ustalonej na podstawie serwera nazw (bdziemy mwili o tym pniej), ktr
atwo mona sfaszowa. Obecnie standardow praktyk powinno by zupene
wyczanie polece r i zastpowanie ich narzdziami z pakietu ssh. Narzdzia ssh
wykorzystuj bardziej niezawodne metody uwierzytelniania i oferuj take inne
usugi, takie jak szyfrowanie i kompresja.
Nigdy nie moesz wykluczy moliwoci, e twoje zabezpieczenia kiedy zawiod,
bez wzgldu na to, jak bye ostrony. Dlatego powiniene upewni si, e dostatecznie wczenie wykrywasz intruzw. Sprawdzanie logw systemu jest dobrym
punktem pocztkowym, ale intruz jest prawdopodobnie wystarczajco mdry, by
przewidzie, e tak postpisz, i usunie wszelkie oczywiste lady pozostawione
przez siebie. Jednak istniej narzdzia takie jak tripwire, napisane przez Gene Kima
i Gene Spafforda, ktre pozwalaj sprawdza istotne pliki systemu, by zobaczy, czy
ich zawarto lub prawa dostpu nie zostay zmienione. tripwire liczy rne sumy
kontrolne tych plikw i umieszcza je w bazie danych. W czasie kolejnych przebiegw,
sumy s liczone ponownie i porwnywane z wczeniej zapisanymi, by w ten sposb
wykry modyfikacje.

W 1988 roku z powodu bdu RTM nieomal doszo do zablokowania Internetu, czciowo przez wykorzystanie dziury w pewnych programach, midzy innymi w sendmailu. Dziura ta istniaa przez do
dugi czas, zanim zostaa zaatana.

Wybrane problemy
sieci TCP/IP

Rozdzia 2: Wybrane problemy sieci TCP/IP

W tym rozdziale powiemy, jakie decyzje konfiguracyjne musisz podj, jeli chcesz
podczy swojego Linuksa do sieci TCP/IP. Zajmiemy si adresami IP, nazwami
hostw i rutingiem. Rozdzia ten daje ci podstawow wiedz, niezbdn do zrozumienia, czego wymaga twoja konfiguracja, natomiast w nastpnych rozdziaach poznasz narzdzia, ktrych bdziesz uywa.
Aby dowiedzie si wicej o TCP/IP i jego budowie, zajrzyj do trzytomowej ksiki
Internetworking with TCP/IP Douglasa R. Comera (). Bardziej szczegowym przewodnikiem po zarzdzaniu sieci TCP/IP jest ksika TCP/IP Network Administration Craiga Hunta (wyd. pol.
*).

Interfejsy sieciowe
Aby ukry rnorodno sprztu obecnego w rodowisku sieciowym, TCP/IP odwouje si do interfejsu, przez ktry nastpuje dostp do sprztu. Interfejs oferuje zestaw operacji identyczny dla wszystkich rodzajw urzdze; za jego pomoc obsuguje si wysyanie i odbieranie pakietw.
Kade sieciowe urzdzenie peryferyjne musi mie w jdrze odpowiedni interfejs.
Na przykad interfejsy Ethernet w Linuksie nosz nazwy eth0 i eth1, interfejsy PPP
(omwione w rozdziale 8, Protok punkt-punkt) s nazywane ppp0 i ppp1, a interfejsy
FDDI fddi0 i fddi1. Nazwy interfejsw s uywane tylko w poleceniu konfiguracyjnym, kiedy chcesz si odwoa do konkretnego urzdzenia fizycznego. Poza tym nie
s stosowane.
Zanim interfejsu bdzie mona uy w sieci TCP/IP, naley mu przypisa adres IP,
ktry identyfikuje go w procesie komunikacji z reszt wiata. Adres ten jest rny od
wspomnianej poprzednio nazwy interfejsu. Jeeli porwnasz interfejs do drzwi, to
adres jest przyczepion na nich tabliczk z nazwiskiem.

20

Rozdzia 2: Wybrane problemy sieci TCP/IP

Mona ustawia take inne parametry urzdzenia, takie jak maksymalny rozmiar
datagramw (Maximum Transfer Unit MTU), ktre mog by przetworzone przez
konkretne urzdzenie. Inne atrybuty omwimy pniej. Na szczcie wikszo atrybutw ma sensowne wartoci domylne.

Adresy IP
Jak wspomnielimy w rozdziale 1, Wprowadzenie do sieci, protok sieciowy IP rozumie adresy w postaci liczb 32-bitowych. Kada maszyna musi mie przypisany numer, ktry jest niepowtarzalny w rodowisku sieciowym*. Jeeli jeste podczony
do sieci lokalnej, ktra nie wymienia ruchu TCP/IP z innymi sieciami, moesz przypisa adresy zgodnie z wasnym widzimisi. Istniej pewne zakresy adresw IP,
ktre zostay zarezerwowane dla takich sieci prywatnych. Pokazano je w tabeli 2-1.
Jednak orodkom podczonym do Internetu adresy s nadawne przez administracj centraln: NIC (Network Information Center)**.
Adresy IP, aby byy atwo czytelne, s podzielone na cztery 8-bitowe liczby, zwane
oktetami. Na przykad quark.physics.groucho.edu ma adres IP 0x954C0C04, zapisywany jako 149.76.12.4. Format ten czsto nazywany jest kropkow notacj czwrkow.
Innym powodem zastosowania takiego zapisu jest to, e adresy IP s dzielone na numer sieci zawarty w pierwszej czci adresu i na numer hosta zawarty w pozostaej jego czci. Gdy prosisz NIC o adresy IP, nie dostajesz adresu dla kadego hosta, ktry
planujesz podczy. Otrzymujesz numer sieci i pozwolenie na utworzenie w przyznanym zakresie prawidowych adresw IP dla hostw w twojej sieci, zgodnie z potrzebami.
Rozmiar czci sieciowej adresu zaley od wielkoci sieci. Aby uwzgldni rne potrzeby, zdefiniowano kilka klas sieci dzielcych adresy IP w rnych miejscach. Klasy sieci s nastpujce:
Klasa A
Klasa A obejmuje sieci od 1.0.0.0 do 127.0.0.0. Numer sieci jest zapisany w pierwszym oktecie. Klasa ta udostpnia 24-bitowy adres hosta, co pozwala na podczenie do jednej sieci, z grubsza rzecz biorc, 1,6 miliona hostw w kadej sieci.
Klasa B
Klasa B obejmuje sieci od 128.0.0.0 do 191.255.0.0. Numer sieci jest zapisany
w dwch pierwszych oktetach. Klasa ta pozwala na stworzenie 16 320 sieci o 65
024 hostach w kadej z nich.
*

Najczciej uywa si 4. wersji protokou IP. Wiele wysiku woono w opracowanie jej rozszerzenia
oznaczonego jako wersja 6. IPv6 uywa innego schematu adresowania i duszych adresw. Linux posiada implementacj IPv6, ale nie jest ona jeszcze na tyle dopracowana, by dokumentowa j w tej
ksice. Obsuga IPv6 w jdrze Linuksa jest dobra, ale naley zmodyfikowa wiele aplikacji sieciowych, by take obsugiway ten standard. Cierpliwoci.

** Zwykle adresy IP nadaje usugodawca, u ktrego kupuje si poczenie IP. Jednak mona si take
zgosi po adresy IP bezporednio do NIC, wysyajc e-mail pod adresem hostmaster@internic.net lub
uywajc formularza znajdujcego si pod adresem http://www.internic.net/)

Adresy IP

21

Klasa C
Klasa C obejmuje sieci od 192.0.0.0 do 223.255.255.0, gdzie numer sieci jest zapisany w trzech pierwszych oktetach. Klasa ta pozwala na zarejstrowanie prawie
2 milionw sieci po 254 hosty w kadej.
Klasy D, E i F
Adresy nalece do zakresu 224.0.0.0 do 254.0.0.0 s albo eksperymentalne, albo
zarezerwowane do zastosowa specjalnych i nie okrelaj adnej sieci. Transmisja grupowa IP (ang. IP multicasting) usuga pozwalajca na przesyanie danych
do wielu miejsc w Internecie jednoczenie wymaga przypisania adresw wanie z tego zakresu.
Jeli wrcimy do przykadu z rozdziau 1, stwierdzimy, e 149.76.12.4 (adres quarka) oznacza host o numerze 12.4 w sieci klasy B o numerze 149.76.0.0.
By moe zauwaye przy opisie klas adresw, e nie wszystkie moliwe wartoci
byy dozwolone dla kadego oktetu w czci opisujcej hosta. Dzieje si tak dlatego,
e oktety 0 i 255 s zarezerwowane do specjalnych celw. Adres, w ktrym wszystkie
bity w czci hosta maj warto 0, jest adresem sieci, a adres, w ktrym wszystkie bity
w czci hosta maj warto 1, nazywa si adresem rozgoszeniowym (ang. broadcast address). Odnosi si on do wszystkich hostw w zadanej sieci jednoczenie. Tak wic
149.76.255.255 nie jest poprawnym adresem hosta, ale odnosi si do wszystkich
hostw w sieci 149.76.0.0.
Kilka adresw sieci jest zarezerwowane do szczeglnych celw. Dwa takie adresy
to: 0.0.0.0 i 127.0.0.0. Pierwszy nazywamy domylnym rutingiem (ang. default route),
a drugi adresem ptli zwrotnej (ang. loopback address). Domylny ruting jest zwizany
ze sposobem kierowania datagramw IP.
Sie 127.0.0.0 jest zarezerwowana dla ruchu IP lokalnego wzgldem twojego hosta.
Zwykle adres 127.0.0.1 zostaje przypisany specjalnemu interfejsowi twojego hosta
interfejsowi ptli zwrotnej, ktry dziaa jak obwd zamknity. Dowolny pakiet IP skierowany na ten interfejs z TCP lub UDP zostanie mu zwrcony tak, jakby wanie
nadszed z jakiej sieci. Dziki temu mona testowa oprogramowanie sieciowe bez
wykorzystywania rzeczywistej sieci. Sie ptli zwrotnej pozwala take na uywanie oprogramowania sieciowego na pojedynczym hocie. Cho nie wyglda to
na zbyt przydatne, to jednak jest. Na przykad wiele orodkw UUCP nie posiada
w ogle podczenia IP, ale wci moe w nich dziaa system grup dyskusyjnych
INN. Aby prawidowo pracowa w Linuksie, INN wymaga interfejsu ptli zwrotnej.
W kadej klasie sieci pewne zakresy adresw zostay odoone na bok i okrelone jako zarezerwowane lub prywatne zakresy adresw. Adresy te s przeznaczone
do uytku w sieciach prywatnych i nie s rutowane do Internetu. Zwykle korzystaj
z nich organizacje tworzce wasny intranet, ale take mae sieci. Jak ju mwilimy,
zarezerwowane adresy sieci podaje tabela 2-1.

22

Rozdzia 2: Wybrane problemy sieci TCP/IP

Tabela 2-1. Zakresy adresw IP zarezerwowane do uytku prywatnego


Klasa

Sieci

A
B
C

10.0.0.0 do 10.255.255.255
172.16.0.0 do 172.31.0.0
192.168.0.0 do 192.168.255.0

Rozwizywanie adresw
Teraz, gdy wiesz ju, jak tworzy si adresy IP, moesz zastanawia si, w jaki sposb
s one uywane do adresowania hostw w sieci Ethernet lub Token Ring. Przecie
protokoy te maj wasne adresy identyfikujce hosty, ktre nie maj nic wsplnego
z adresem IP. Prawda? Tak, masz racj.
Potrzebny jest mechanizm, ktry odwzorowuje adresy IP na adresy sieci niszej
warstwy. Tym mechanizmem jest protok rozwizywania adresw (Address Resolution
Protocol ARP). W praktyce ARP mona stosowa nie tylko w Ethernecie czy Token
Ringu, ale rwnie w innych typach sieci, midzy innymi takich, w ktrych pracuje
protok AX.25. Metoda dziaania ARP jest taka sama jak ta, ktr posuguje si wikszo ludzi, kiedy musi znale Pana X wrd 150 goci: osoba szukajca krzyczy
na tyle gono, by kady mg j usysze, i oczekuje, e jeeli Pan X jest wrd zgromadzonych, to si odezwie. Gdy X odpowie, wiemy, ktra to osoba.
Gdy ARP chce znale adres ethernetowy odpowiadajcy okrelonemu adresowi IP,
wykorzystuje funkcj Ethernetu zwan rozgaszaniem (ang. broadcasting). Rozgaszanie polega na tym, e datagram jest adresowany do wszystkich stacji w sieci jednoczenie. Datagram rozgoszeniowy wysany przez ARP zawiera zapytanie o adres
IP. Kady host, ktry go odbierze, porwnuje to zapytanie ze swoim wasnym adresem IP. Jeeli znajdzie si host, ktrego adres IP odpowiada poszukiwanemu, to zwraca on odpowied ARP do pytajcego hosta. Pytajcy host moe teraz na podstawie
odpowiedzi odczyta adres ethernetowy nadawcy.
Moesz si zastanawia, jak host moe uzyska adres innego hosta, ktry znajduje
si na przykad w zupenie innej sieci na drugim kocu wiata. Odpowied na to pytanie wymaga wyjanienia mechanizmu rutingu, czyli znalezienia fizycznej lokalizacji hosta w sieci. To zagadnienie omwimy dokadniej w nastpnym podrozdziale.
Powiedzmy nieco wicej o protokole ARP. Gdy host znajdzie adres ethernetowy, zapisuje go w pamici podrcznej ARP, aby nie pyta o niego, gdy bdzie chcia ponownie wysa datagram do tego samego hosta. Jednak niemdre byoby trzymanie
tej informacji bez koca. Karta Ethernet zdalnego hosta moe zosta wymieniona
z powodw technicznych, a wic wpis ARP byby bdny. Dlatego wpisy w pamici
podrcznej ARP s po pewnym czasie usuwane, by wymusi kolejne zapytanie o adres IP.
Czasem trzeba rwnie znale adres IP odpowiadajcy danemu adresowi ethernetowemu. Dzieje si tak, gdy maszyna bezdyskowa chce uruchomi si z serwera w sieci. Sytuacja ta jest powszechnie spotykana w sieciach LAN. Jednak klient bezdyskowy nie ma o sobie informacji za wyjtkiem swojego adresu Ethernet. Tak wic

Ruting IP

23

rozgasza komunikat, w ktrym prosi serwer uruchomieniowy (ang. boot server) o


adres IP. T sytuacj obsuguje protok o nazwie odwrotny protok rozwizywania adresw (Reverse Address Resolution Protocol RARP). Wraz z protokoem BOOTP pozwala na uruchamianie bezdyskowych klientw z sieci.

Ruting IP
Teraz wyjanijmy, jak na podstawie adresu IP odszuka host, do ktrego s adresowane datagramy. Rne czci adresu s obsugiwane w rny sposb. Twoim zadaniem jest skonfigurowanie plikw tak, aby mwiy, jak ma by traktowana kada
z poszczeglnych czci adresu IP.

Sieci IP
Gdy piszesz do kogo list, zwykle umieszczasz na kopercie peny adres, czyli take
pastwo, region administracyjny (np. stan, wojewdztwo), nazw poczty wraz z kodem. Po woeniu listu do skrzynki pocztowej, poczta dostarczy go do miejsca przeznaczenia: zostanie wysany do podanego na kopercie kraju, gdzie suby krajowe
skieruj go do odpowiedniego regionu. Zaleta takiego hierarchicznego schematu
jest oczywista: gdy wysyasz list do innego miasta lub kraju, miejscowa poczta wie
z grubsza, w jakim kierunku ma go przekaza, ale nie martwi si, ktrdy list bdzie
szed, gdy ju dotrze do kraju przeznaczenia.
Sieci IP maj podobn struktur. Cay Internet skada si z szeregu sieci, zwanych
systemami niezalenymi. Kady system realizuje wewntrznie ruting pomidzy swoimi hostami, tak wic zadanie dostarczenia datagramu redukuje si do znalezienia
cieki do sieci zawierajcej host adresata. Wystarczy przekaza datagram do jakiegokolwiek hosta w sieci adresata, a dalsza wdrwka odbywa si ju wycznie w obrbie tej sieci.

Podsieci
Zasada podziau jest widoczna w wyodrbnieniu w adresach IP czci hosta i czci
sieciowej, jak ju wyjanialimy wczeniej. Domylnie sie przeznaczenia jest uzyskiwana z czci sieciowej adresu IP. Tak wic hosty o identycznych numerach sieci IP
powinny znajdowa si w tej samej sieci*.
Zastosowanie podobnego schematu ma take sens wewntrz sieci, poniewa moe
si ona skada z setek mniejszych sieci, w ktrych najmniejszymi jednostkami s fizyczne sieci np. Ethernet. Dlatego IP pozwala na dalszy podzia sieci IP na kilka podsieci.
Podsie odpowiada za dostarczanie datagramw do pewnego zakresu adresw IP.
Jest to rozszerzenie pojcia podziau pl bitowych, tak jak w klasach A, B i C. Jednak
cz sieciowa jest teraz rozszerzana tak, by zawieraa niektre bity z czci hosta.
Liczba bitw, interpretowana jako numer podsieci, jest okrelona przez tak zwan
*

Systemy niezalene s nieco bardziej oglne. Mog skada si z wicej ni jednej sieci IP.

24

Rozdzia 2: Wybrane problemy sieci TCP/IP

mask podsieci lub mask sieci. Jest to rwnie liczba 32-bitowa, okrelajca mask bitow dla czci sieciowej adresu IP.
Sie campusowa przykadowego uniwersytetu Groucho Marx to wanie taka sie.
Ma sie klasy B o numerze 149.76.0.0 i dlatego jej maska to 255.255.0.0.
Wewntrznie sie campusowa skada si z kilku mniejszych sieci, takich jak sieci lokalne rnych wydziaw. Tak wic zakres adresw IP jest podzielony na 254 podsieci
od 149.76.1.0 do 149.76.254.0. Na przykad wydzia fizyki teoretycznej ma przypisany
adres 149.76.12.0. Szkielet campusu jest sieci sam w sobie i ma numer 149.76.1.0.
Podsieci te korzystaj ze wsplnej czci sieciowej adresu IP, a rozrniane s na podstawie 3. oktetu. Dlatego maska podsieci w tym przypadku ma posta 255.255.255.0.
Rysunek 2-1 pokazuje, jak adres quarka: 149.76.12.4 jest interpretowany, gdy ma by
zwykym adresem w sieci klasy B i wtedy, gdy ma uwzgldnia podsieci.
Klasa B

Cz sieciowa

149
Klasa B z podsieci

76

Cz sieciowa

149

76

Cz hosta

12

Podsie

Cz hosta

12

Rysunek 2-1. Podzia sieci klasy B na podsieci

Warto zauway, e dzielenie na podsieci (technika tworzenia podsieci) jest jedynie


wewntrznym podziaem sieci. Podsieci s generowane przez waciciela sieci (lub
administratorw). Czsto podsieci s tworzone, aby odzwierciedla istniejce granice fizyczne (pomidzy dwoma sieciami Ethernet), administracyjne (pomidzy
dwoma wydziaami) lub geograficzne (pomidzy dwoma lokalizacjami), natomiast
wadza nad kad z podsieci jest oddawana innej osobie. Jednak struktura ta dotyczy tylko wewntrznego zachowania sieci i jest zupenie niewidoczna dla wiata zewntrznego.

Gatewaye
Podzia na podsieci jest korzystny nie tylko ze wzgldw organizacyjnych. Czsto
jest naturaln konsekwencj ogranicze sprztowych. Punkt widzenia hosta na
dan sie fizyczn, np. Ethernet, jest bardzo ograniczony: moe on komunikowa si
tylko z hostem w sieci, do ktrej jest podczony. Dostp do wszystkich innych hostw jest moliwy tylko przez przeznaczone do tego urzdzenia nazywane gateway-

Ruting IP

25

ami. Gateway to host, ktry jest podczony do dwch lub wicej sieci fizycznych
jednoczenie i skonfigurowany tak, by przekazywa pakiety midzy tymi sieciami.
Rysunek 2-2 pokazuje fragment topologii sieci uniwersytetu Groucho Marx (GMU).
Hosty nalece jednoczenie do dwch podsieci s opatrzone oboma adresami.
Mathematics
Department

gauss
(4.23)

Theoretical
Physics
Department

4.0

12.0

erdos
(4.17)

(4.1)

quark
(12.4)

(12.1)
sophus

niels
(1.12)

(1.1)

FDDI Campus Backbone


(1.2)
gcc1
(2.1)

2.0
Groucho
Computing
Center

Rysunek 2-2. Fragment schematu sieci uniwersytetu Groucho Marx

Rne sieci fizyczne musz by rnymi sieciami IP, aby protok IP by w stanie
rozpozna, e host jest w sieci lokalnej. Na przykad numer sieci 149.76.4.0 jest zarezerwowany dla hostw w sieci LAN wydziau matematyki. Przy przesyaniu
datagramw do quarka, oprogramowanie sieciowe na erdosie natychmiast rozpoznaje na podstawie adresu IP 149.76.12.4, e host docelowy jest w innej sieci fizycznej, a co za tym idzie mona si do niego dosta jedynie przez gateway (domylnie
sophus).

26

Rozdzia 2: Wybrane problemy sieci TCP/IP

Sam sophus jest podczony do dwch rnych podsieci: wydziau matematyki


i sieci szkieletowej campusu. Dostp do kadej z nich ma przez rne interfejsy, odpowiednio eth0 i fddi0. Jaki w takim razie powinnimy przypisa mu adres IP? Powinien mie adres z podsieci 149.76.1.0 czy moe raczej z 149.76.4.0?
Odpowied brzmi: oba. Gateway sophus ma przypisany adres 149.76.1.1 do uytku
w sieci 149.76.1.0 i adres 149.76.4.1 do uytku w sieci 149.76.4.0. Gateway musi mie
odrbny adres IP w kadej sieci, do ktrej naley. Adresy te, wraz z odpowiadajcymi im maskami sieci, s zwizane z interfejsem, przez ktry nastpuje dostp do sieci. Tak wic odwzorowanie interfejsu na adres w przypadku sophusa wyglda nastpujco:
Interfejs

Adres

Maska sieci

eth0
fddi0
lo

149.76.4.1
149.76.1.1
127.0.0.1

255.255.255.0
255.255.255.0
255.0.0.0

Ostatnia pozycja to interfejs ptli zwrotnej lo, o ktrym pisalimy wczeniej.


Zwykle moesz zignorowa subtelne rnice pomidzy wizaniem adresu z hostem
lub jego interfejsem. Jeli host jest tylko w jednej sieci, tak jak erdos, bdziesz si odwoywa do hosta o takim a takim adresie IP, cho dokadnie rzecz biorc, to interfejs
Ethernet ma przypisany adres IP. Rnica jest naprawd istotna tylko w przypadku
gatewaya.

Tablica rutingu
Teraz skupimy si na tym, jak IP wybiera gateway, ktry ma zosta wykorzystany
do dostarczenia datagramu do odlegej sieci.
Widzielimy, e kiedy erdos otrzyma datagram przeznaczony dla quarka, sprawdza adres docelowy i stwierdza, e nie ley on w sieci lokalnej. Dlatego erdos wysya
datagram do domylnego gatewaya sophus, przed ktrym stoi teraz to samo zadanie. sophus stwierdza, e nie ma takiego hosta w sieciach, do ktrych jest bezporednio podczony. Musi wic znale inny gateway, do ktrego bdzie mg przekaza
datagram. Poprawnym wyborem bdzie niels, gateway wydziau fizyki. sophus potrzebuje zatem informacji wicych docelow sie z odpowiednim gatewayem.
IP wykorzystuje do tego celu tablic, ktra czy sieci z gatewayami, przez ktre mona do nich dotrze. Musi w niej istnie take wpis uniwersalny (ruting domylny)
jest to gateway zwizany z sieci 0.0.0.0. Wszystkie adresy docelowe pasuj do tej
trasy, poniewa aden z 32 bitw nie musi odpowiada temu wpisowi i dlatego pakiety do nie znanej sieci s wysyane przez tras domyln. Dla gatewaya sophusa,
tablica mogaby wyglda tak:

Ruting IP

27

Sie

Maska sieci

Gateway

Interfejs

149.76.1.0
149.76.2.0
149.76.3.0
149.76.4.0
149.76.5.0
...
0.0.0.0

255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
...
0.0.0.0

149.76.1.2
149.76.1.3
149.76.1.5
...
149.76.1.2

fddi0
fddi0
fddi0
eth0
fddi0
...
fddi0

Jeeli masz skorzysta z trasy do tej sieci, do ktrej sophus jest bezporednio podczony, nie potrzebujesz gatewaya. Kolumna z wpisem gatewaya w takim przypadku zawiera kresk.
Proces identyfikacji, czy dany adres docelowy pasuje do trasy, jest operacj matematyczn. Jest do prosty, ale wymaga znajomoci logiki i arytmetyki binarnej: dana
trasa pasuje do trasy docelowej, jeeli adres sieci po wykonaniu logicznej operacji
AND z mask sieci jest dokadnie taki sam, jak adres docelowy po wykonaniu operacji logicznej AND z mask sieci.
Wyjanienie: trasa jest prawidowa, jeeli liczba bitw adresu sieci okrelona przez
mask sieci (poczwszy od pierwszego bitu lecego od lewej strony, czyli najstarszego bitu pierwszego bajtu adresu) jest taka sama jak liczba bitw w adresie docelowym.
Gdy implementacja IP poszukuje najlepszej trasy do miejsca docelowego, moe znale wiele pasujcych wpisw z trasami. Na przykad wiemy, e domylny ruting
pasuje do kadego adresu docelowego, ale datagramy kierowane do sieci podczonych lokalnie bd pasoway take do wasnych tras. Skd IP wie, ktrej trasy uy?
To wanie tutaj maska sieci ma decydujce znaczenie. Cho obie trasy pasuj do adresu docelowego, jedna z nich ma wiksz mask sieci ni druga. Wspomnielimy
wczeniej, e maska sieci bya uywana do podziau naszej przestrzeni adresowej na
mniejsze sieci. Im wiksza jest maska, tym lepiej jest dopasowywany adres docelowy. Wyznaczajc tras dla datagramu powinnimy zawsze wybiera tras o najwikszej masce sieci. Domylna trasa ma mask sieci o wielkoci 0 bitw, a w powyej pokazanej konfiguracji, lokalnie podczone sieci maj maski sieci o dugoci 24
bitw. Jeeli datagram odpowiada lokalnie podczonej sieci, bdzie rutowany
w pierwszej kolejnoci do odpowiedniego urzdzenia, a nie na adres domylny,
gdy lokalne trasy s dopasowane wiksz liczb bitw. Tylko te datagramy ktre
nie pasuj do adnej trasy, bd przesyane przez tras domyln.
Tablice rutingu moesz tworzy na rne sposoby. Dla maych sieci lokalnych zwykle najlepiej przygotowa j rcznie i udostpni protokoowi IP za pomoc polecenia route w czasie uruchamiania maszyny (zobacz rozdzia 5, Konfigurowanie sieci
TCP/IP). Dla wikszych sieci tablice s budowane i uzupeniane w czasie pracy sieci
przez demony rutingu; te programy pracuj na centralnych hostach sieci i wymieniaj
informacje o rutingu, by obliczy optymalne trasy pomidzy podczonymi sieciami.

28

Rozdzia 2: Wybrane problemy sieci TCP/IP

Rozmiar sieci decyduje te o wyborze protokow rutingu. W przypadku rutingu


w systemach niezalenych (tak jak w campusie Groucho Marx), uywane s wewntrzne protokoy rutingu. Najbardziej znanym z nich jest RIP (Routing Information Protocol), zaimplementowany w demonie routed BSD. W przypadku rutingu pomidzy
systemami autonomicznymi stosowane s zewntrzne protokoy rutingu, takie jak
EGP (External Gateway Protocol) lub BGP (Border Gateway Protocol). Protokoy te, wraz
z RIP-em, zostay zaimplementowane w demonie gated napisanym na Uniwersytecie Cornella.

Wartoci metryki
Mona skorzysta z rutingu dynamicznego, jeeli trzeba znale najlepsz tras do
hosta docelowego lub sieci na podstawie liczby hopw. Hopy oznaczaj liczb gatewayw, przez ktre datagram musi przej, zanim dotrze do hosta lub sieci. Im
krtsza jest trasa, tym lepiej radzi sobie z ni RIP. Bardzo dugie trasy (ponad 16 hopw) s traktowane jako bezuyteczne i s usuwane.
RIP obsuguje informacje o rutingu wewntrz twojej sieci lokalnej, ale na wszystkich
hostach musisz uruchomi demona gated. W czasie startu komputera gated sprawdza
wszystkie aktywne interfejsy sieciowe. Jeeli jest aktywny wicej ni jeden interfejs
(nie liczc interfejsu ptli zwrotnej), demon zakada, e host przekazuje pakiety pomidzy kilkoma sieciami i czynnie wymienia oraz rozgasza informacje o rutingu.
W przeciwnym razie jedynie pasywnie odbiera uaktualnienia RIP i odwiea lokaln tablic rutingu.
Przy rozgaszaniu informacji z lokalnej tablicy rutingu, gated liczy dugo trasy na
podstawie tak zwanej wartoci metryki (ang. metric value) zwizanej z wpisem w tablicy. Ta warto jest ustawiana przez administratora podczas konfigurowania rutingu
i powinna odpowiada rzeczywistemu kosztowi trasy*. Dlatego metryka trasy do
podsieci, do ktrej host jest podczony bezporednio, zawsze powinna wynosi zero, natomiast trasa prowadzca przez dwa gatewaye powinna mie metryk o wartoci dwa. Nie musisz przejmowa si metryk, jeeli nie uywasz protokou RIP-a
ani gated.

Internetowy protok komunikatw kontrolnych (ICMP)


IP ma protok towarzyszcy, o ktrym jeszcze nie mwilimy. Jest nim ICMP (Internet Control Message Protocol) uywany przez kod sieciowy jdra do przesyania
komunikatw o bdach do innych hostw. Na przykad zamy, e jeste znw na
erdosie i chcesz zrealizowa poczenie telnet z portem 12345 na quarku, ale na tym
porcie nie ma procesu nasuchujcego. Gdy pierwszy pakiet TCP zaadresowany na
ten port nadejdzie do quarka, warstwa sieciowa rozpozna, e co przyszo i natychmiast zwrci do erdosa komunikat ICMP o treci Port Unreachable (port nieosigalny).
*

Koszt trasy to, w prostych sieciach, liczba hopw wymaganych do dotarcia do celu. W bardziej skomplikowanych sieciach poprawne obliczenie kosztu trasy moe by trudne.

Rozwizywanie nazwy hosta

29

Protok ICMP udostpnia rne komunikaty, gwnie z informacjami o bdach.


Jednak istnieje jeden ciekawy komunikat, tak zwany komunikat przekierowania
(ang. redirect message). Jest on generowany przez modu rutingu, gdy wykryje on, e
inny host uywa naszego hosta jako gatewaya, mimo e istnieje krtsza trasa. Na
przykad po uruchomieniu systemu tablica rutingu na sophusie moe by niepena.
Moe zawiera trasy do sieci wydziau matematyki, do szkieletu FDDI i domyln
tras do gatewaya centrum obliczeniowego Groucho (gcc1). Tak wic pakiety adresowane do quarka bd wysyane do gcc1, a nie do nielsa gatewaya wydziau fizyki. Po odebraniu takiego datagramu gcc1 zauway, e jest to nieoptymalna trasa
i przekae pakiet do nielsa, zwracajc rwnoczenie do sophusa komunikat przekierowania ICMP z informacj o lepszej trasie.
Wydaje si, e w ten sposb mona atwo unikn rcznej konfiguracji wszelkich
tras poza podstawowymi. Trzeba jednak zdawa sobie spraw, e poleganie na
schematach rutingu dynamicznego, czy to bdzie RIP, czy komunikat przekierowania ICMP, nie zawsze jest dobre. Przekierowanie ICMP i RIP daj ci niewielk moliwo (lub wrcz nie daj ci adnej szansy) weryfikowania pokrywajcych si informacji o rutingu. Ta sytuacja moe prowadzi do zakcenia pracy caej twojej sieci
lub jeszcze gorszych rzeczy. W rezultacie kod sieciowy Linuksa traktuje komunikaty
przekierowania sieci tak, jakby to byy przekierowania hosta. Minimalizuje to zniszczenia w przypadku ataku, ktre dotkn wwczas jeden host, a nie ca sie. Z drugiej strony oznacza to, e w przypadku legalnej sytuacji generowany jest nieco wikszy ruch, gdy kady host wysya komunikat przekierowania ICMP. Obecnie opieranie si na przekierowaniach ICMP nie jest dobrze widziane i uznaje si je raczej za
z praktyk.

Rozwizywanie nazwy hosta


Jak wczeniej napisalimy, adresowanie w sieci TCP/IP, przynajmniej tam, gdzie
korzysta si z IP w wersji 4, opiera si na liczbach 32-bitowych. Nie ukrywamy, e
zapamitywanie takich liczb nie jest atwe. Dlatego hosty wystpuj rwnie pod
zwykymi nazwami, takimi jak gauss czy strange. Znalezienie adresu IP odpowiadajcego nazwie to obowizek aplikacji. Proces ten jest nazywany rozwizywaniem nazwy hosta.
Gdy aplikacja chce znale adres IP danego hosta, korzysta z funkcji bibliotecznej
gethostbyname(3) i gethostbyaddr(3). Tradycyjnie te i inne zwizane z nimi procedury
byy zgrupowane w oddzielnej bibliotece o nazwie resolverlibrary. W Linuksie funkcje te s czci standardowej biblioteki libc. Potocznie zestaw tych funkcji jest nazywany resolverem. Konfiguracj mechanizmu rozwizywania nazw opisano szczegowo w rozdziale 6, Usugi nazewnicze i konfigurowanie resolvera.
W przypadku maej sieci Ethernet czy nawet grupy takich sieci, nie jest trudno utrzymywa tablice odwzorowujce nazwy hostw na adresy. Informacja ta jest zwykle
przechowywana w pliku o nazwie /etc/hosts. Podczas dodawania lub usuwania hostw albo zmiany przypisania adresw, wystarczy uaktualni plik hosts na wszystkich

30

Rozdzia 2: Wybrane problemy sieci TCP/IP

hostach. Oczywicie staje si to uciliwe przy sieciach, ktre skadaj si z wicej ni


kilku maszyn.
Jednym z rozwiza jest NIS (Network Information System system informacji sieciowej) stworzony przez firm Sun Microsystems, potocznie nazywany YP lub Yellow
Pages. NIS przechowuje plik hosts (i inne informacje) w bazie danych na hocie gwnym, z ktrego klienty mog go w razie potrzeby odczytywa. Rozwizanie takie
jest odpowiednie jedynie dla redniej wielkoci sieci typu LAN, poniewa wymaga
utrzymania centralnej bazy danych hosts i dystrybuowania jej do wszystkich serwerw.
Instalacja i konfiguracja NIS-a zostaa omwiona w rozdziale 13, System informacji
sieciowej.
W Internecie informacje adresowe byy pierwotnie przechowywane take w pliku
bazy danych HOSTS.TXT. Plik ten by utrzymywany przez NIC (Network Information
Center centrum informacji sieciowej) i musia by stamtd pobierany i instalowany
przez wszystkie orodki podczone do Internetu. Gdy sie si rozrosa, takie rozwizanie stao si niewygodne. Poza uciliwym w administracji regularnym instalowaniem pliku HOSTS.TXT, niebezpiecznie wzroso obcienie dystrybuujcych
go serwerw. Co wicej, wszystkie nazwy musiay by rejestrowane w NIC, aby
mie pewno, e adna si nie powtarza.
Dlatego w 1994 roku przyjto nowy schemat rozwizywania nazw: system nazw domen (Domain Name System DNS) autorstwa Paula Mockapetrisa. System nazw domen omawiamy szczegowo w rozdziale 6.

Konfigurowanie
sprztu sieciowego

Rozdzia 3: Konfigurowanie sprztu sieciowego

Powiedzielimy nieco o interfejsach sieciowych i oglnie o TCP/IP, ale nie opisalimy, co tak naprawd si dzieje, gdy kod sieciowy jdra uzyskuje dostp do sprztu. Aby to wyjani, musimy poda troch informacji o interfejsach i sterownikach.
Na pocztku jest oczywicie sprzt, na przykad karta Ethernet, FDDI czy Token
Ring: jest to pytka drukowana, wypeniona wieloma maymi ukadami scalonymi
z wypisanymi na nich dziwnymi numerkami, umieszczona w zczu w pycie twojego PC. Nazywamy to oglnie urzdzeniem fizycznym.
Aby mg uywa karty sieciowej, jdro Linuksa musi zawiera specjalne funkcje,
ktre rozumiej okrelony dla danego urzdzenia sposb dostpu. Oprogramowanie,
ktre implementuje te funkcje, nazywane jest sterownikiem urzdzenia. Linux ma sterowniki dla wielu rnych typw kart sieciowych: ISA, PCI, MCA, EISA, port
rwnolegy, PCMCIA i najnowszy USB.
Co jednak mamy na myli, mwic, e sterownik obsuguje urzdzenie? Rozwamy to na przykadzie karty Ethernet. Sterownik powinien komunikowa si w jaki
sposb z peryferiami karty: musi wysya polecenia i dane do karty, natomiast karta
powinna dostarcza wszelkie odebrane dane do sterownika.
W komputerach osobistych IBM komunikacja ta odbywa si przez zestaw adresw
wejcia/wyjcia, ktre s odwzorowywane na rejestry na karcie, a take (lub wycznie) przez wspdzielony lub bezporedni dostp do pamici. Wszystkie polecenia i dane, jakie jdro wysya do karty, musz zosta przesane na te adresy. Adresy
wejcia/wyjcia oraz pamici s zwykle podawane w postaci adresu pocztkowego
lub adresu podstawowego (ang. base address). Typowe adresy podstawowe w przypadku kart Ethernet dla magistrali ISA to 0x280 lub 0x300. Karty przeznaczone dla
magistrali PCI maj automatycznie przypisywane wasne adresy wejcia/ wyjcia.

32

Rozdzia 3: Konfigurowanie sprztu sieciowego

Zwykle nie musisz si martwi o zagadnienia sprztowe, takie jak adres podstawowy, poniewa jdro w czasie startu podejmuje prb wykrycia lokalizacji karty. Nazywa si to autowykrywaniem, co oznacza, e jdro odczytuje kilka lokalizacji pamici
i wejcia/wyjcia oraz porwnuje odczytane dane z tym, czego oczekuje, jeeli dana
karta sieciowa bya zainstalowana pod tym adresem. Jednak zdarzaj si karty sieciowe, ktrych nie da si wykry automatycznie. Czasem dzieje si tak w przypadku
tanich kart sieciowych, ktre nie s w peni klonami standardowych kart innych producentw. W czasie startu jdro prbuje wykry tylko jedn kart sieciow. Jeeli
uywasz wicej ni jednej karty, musisz jawnie powiedzie o tym jdru.
Innym parametrem, ktry by moe bdzie trzeba poda jdru, jest numer przerwania. Urzdzenia zwykle generuj przerwanie do jdra, aby na przykad zwrci na
siebie uwag, gdy nadeszy dane lub wystpia jaka szczeglna sytuacja. W komputerach PC z magistral ISA przerwania mog pojawia si na jednym z 15 kanaw
przerwa, ponumerowanych nastpujco: 0, 1, 3 i tak dalej do 15. Numer przerwania przypisany do urzdzenia nazywa si numerem zgoszenia przerwania (ang. Interrupt request number IRQ)*.
Z rozdziau 2, Wybrane problemy sieci TCP/IP, wiemy, e jdro uzyskuje dostp do
urzdzenia sieciowego przez oprogramowanie nazywane interfejsem. Interfejsy s
zestawami funkcji (np. wysyania lub odbierania datagramu), identycznymi dla
rnych typw urzdze.
Interfejsy s identyfikowane na podstawie nazw. W wielu uniksowych systemach
operacyjnych interfejs sieciowy jest implementowany jako specjalny plik w katalogu
/dev. Jeeli napiszesz polecenie ls -las /dev/, zobaczysz, jak wygldaj takie pliki. Zauwaysz, e w kolumnie praw dostpu (drugiej) pliki urzdze zaczynaj si
raczej liter, a nie mylnikiem (jak zwyke pliki). Znak ten okrela typ urzdzenia.
Najpopularniejsze s urzdzenia typu b, czyli urzdzenia blokowe obsugujce cae
bloki danych przy kadym odczycie i zapisie oraz urzdzenia typu c, czyli urzdzenia znakowe, obsugujce dane po jednym znaku. Tam, gdzie zwykle w wyniku pokazywanym przez polecenie ls widzisz rozmiar pliku, tutaj s dwie liczby nazywane
numerem nadrzdnym i podrzdnym urzdzenia. Liczby te wskazuj rzeczywiste
urzdzenie, z ktrym jest zwizany plik.
Kady sterownik rejestruje unikalny numer nadrzdny w jdrze. Kada instancja
urzdzenia rejestruje unikalny numer podrzdny danego urzdzenia nadrzdnego.
Interfejsy tty, /dev/tty*, s urzdzeniami znakowymi wskazywanymi przez liter c
i kade ma numer nadrzdny 4, ale /dev/tty1 ma numer podrzdny 1, a /dev/tty2 ma
numer podrzdny 2. Pliki urzdze s bardzo uyteczne dla wielu typw urzdze,
ale mog sprawia kopoty, gdy chcesz otworzy nie uywane urzdzenie.
Nazwy interfejsw w Linuksie s zdefiniowane wewntrznie w jdrze i nie s plikami urzdze w katalogu /dev. Niektre typowe nazwy podano w dalszym podrozdziale Wycieczka po urzdzeniach sieciowych Linuksa. Przypisanie interfejsw do
urzdze zwykle zaley od kolejnoci, w ktrej s one konfigurowane. Na przykad
*

IRQ 2 i 9 s tymi samymi przerwaniami, poniewa architektura IBM PC posiada dwa kaskadowe procesory po osiem IRQ kady. Drugi jest poczony z pierwszym poprzez IRQ 2 pierwszego.

33

pierwsza zainstalowana karta Ethernet bdzie nosia nazw eth0, a nastpna eth1. Interfejsy SLIP s obsugiwane inaczej ni pozostae urzdzenia, poniewa s przypisywane dynamicznie. Kiedy zostanie zestawione poczenie SLIP, interfejs jest przypisywany do portu szeregowego.
Rysunek 3-1 pokazuje zalenoci pomidzy sprztem, sterownikami urzdzenia
i interfejsami.

Kod sieciowy jdra

Interfejs
sieciowy

Sterownik
urzdzenia

Sprzt

eth0

eth1

sterownik
SMC

eth2

eth3

sterownik
3Com

Rysunek 3-1. Zwizek pomidzy sterownikami, interfejsami i sprztem

Przy uruchamianiu systemu jdro wywietla wykryte urzdzenia i instalowane interfejsy. Oto fragment typowych komunikatw wywietlanych w czasie uruchamiania systemu:
.
.

This processor honors the WP bit even when in supervisor mode./


Good.
Swansea University Computer Society NET3.035 for Linux 2.0
NET3: Unix domain sockets 0.13 for Linux NET3.035.
Swansea University Computer Society TCP/IP for NET3.034
IP Protocols: IGMP, ICMP, UDP, TCP
Swansea University Computer Society IPX 0.34 for NET3.035
IPX Portions Copyright (c) 1995 Caldera, Inc.
Serial driver version 4.13 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16550A
tty01 at 0x02f8 (irq = 3) is a 16550A
CSLIP: code copyright 1989 Regents of the University of California
PPP: Version 2.2.0 (dynamic channel allocation)
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line disciplne registered.
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 a0 24 0e e4 e0, /
IRQ 10.
3c509.c:1.12 6/4/97 becker@cesdis.gsfc.nasa.gov
Linux Version 2.0.32 (root@perf) (gcc Version 2.7.2.1)
#1 Tue Oct 21 15:30:44 EST 1997
.
.

34

Rozdzia 3: Konfigurowanie sprztu sieciowego

Ten przykad pokazuje, e jdro zostao skompilowane z wczonym protokoem


TCP/IP i zawiera sterowniki dla SLIP, CSLIP i PPP. Trzeci wiersz od koca mwi, e
zostaa wykryta karta Ethernet 3C509, ktra jest zainstalowana jako interfejs eth0.
Gdyby mia kart innego typu, na przykad D-Link pocket adaptor, jdro wypisaoby wiersz rozpoczynajcy si od nazwy takiego urzdzenia dl0 w przypadku
D-Link, a nastpnie pokazaoby typ wykrytej karty. Gdyby mia zainstalowan kart sieciow, ale nie widziaby adnego podobnego komunikatu, oznacza to, e
jdro nie jest w stanie jej poprawnie wykry. Sytuacja ta zostanie omwiona w dalszym podrozdziale Automatyczne wykrywanie kart Ethernet.

Konfigurowanie jdra
Do wielu dystrybucji Linuksa s doczane dyskietki startowe, ktre dziaaj z wikszoci sprztu PC. Dostarczone jdro jest znacznie zmodularyzowane i zawiera
prawie wszelkie moliwe sterowniki. Takie rozwizanie wyglda wietnie na dyskietce startowej, ale raczej nie przyda si zwykemu uytkownikowi. Nie ma sensu
zajmowa miejsca na dysku sterownikami, ktrych nie bdziesz uywa. Dlatego
najlepiej przygotowa wasne jdro i umieci w nim tylko te sterowniki, ktrych
rzeczywicie potrzebujesz w ten sposb zaoszczdzisz nieco miejsca na dysku
i zmniejszysz czas potrzebny na skompilowanie nowego jdra.
W kadym razie jeeli pracujesz z Linuksem, powiniene umie tworzy jdro.
Uznaj to za potwierdzenie tego, e darmowe oprogramowanie jest wietne masz
kod rdowy. Nie myl: Musz skompilowa jdro, ale raczej: Mog skompilowa jdro. Podstawy kompilacji jdra Linuksa zostay wyjanione w ksice Matta
Welsha Running Linux (Linux, Wydawnictwo RM, Warszawa 2000). Dlatego w tym
podrozdziale omwimy jedynie opcje konfiguracyjne dotyczce sieci.
Naprawd wan rzecz, ktr warto tutaj przypomie, jest schemat numeracji
jdra. Jdra Linuksa s numerowane w formacie: 2.2.14. Pierwsza cyfra oznacza
gwny numer wersji. Zmienia si ona wtedy, gdy nastpuj powane, znaczce
przeksztacenia w architekturze jdra. Na przykad wersj jdra przenumerowano
z 1. na 2., gdy zostao dodane wsparcie dla maszyn opartych na nieintelowskich
procesorach. Druga liczba to drugorzdny numer wersji. Pod wieloma wzgldami
waniejsza jest wanie ona.
Spoeczno twrcw Linuksa przyja zasad, e parzyste drugorzdne numery wersji
oznaczaj jdra produkcyjne lub stabilne, a nieparzyste numery wersji oznaczaj jdra rozwojowe lub niestabline. Na maszynie, ktra jest dla ciebie wana, powiniene uywa
jder stabilnych, gdy s one lepiej przetestowane. Po jdra rozwojowe warto sign
wtedy, gdy lubisz eksperymentowa z najnowszymi funkcjami Linuksa, ale musisz liczy si z tym, e mog pojawi si jeszcze nie znane i nie poprawione bdy. Trzecia
liczba to po prostu kolejne wersje wersji oznaczonej numerem drugorzdnym*.
*

Powinno si uywa jder rozwojowych i zgasza bdy, jeeli si je znajdzie. Takie eksperymentowanie jest bardzo pouczajce, zwaszcza jeeli masz komputer, ktrego moesz uywa tylko do testw.
Procedura zgaszania bdw jest szczegowo podana w pliku /usr/src/linux/REPORTING-BUGS w kodzie rdowym jdra Linuksa.

Konfigurowanie jdra

35

Gdy wydasz polecenie make menuconfig, pojawi si tekstowe menu z list pyta dotyczcych konfiguracji. Bd to pytania typu: czy chcesz emulacji koprocesora
w jdrze. Jedno z tych pyta dotyczy obsugi sieci TCP/IP. Musisz na nie odpowiedzie y, aby jdro byo w stanie obsuy sie.

Opcje jdra w Linuksie 2.0 i nowszych


Po ustaleniu oglnych opcji konfiguracyjnych nastpuj pytania o to, czy chcesz zapewni obsug rnych funkcji, takich jak sterowniki SCSI czy karty dwikowe.
Monit bdzie pokazywa dostpne opcje. Moesz nacisn ?, aby zapozna si z opisem danej opcji. Zawsze masz do wyboru tak (y), aby statycznie doczy element
do jdra, lub nie (n), aby usun go cakowicie z jdra. Spotkasz take opcj moduu (m) w przypadku elementw, ktre mog zosta skompilowane jako moduy
adowane w czasie pracy jdra. Moduy aduje si, zanim zostan wykorzystane i s
one szczeglnie przydatne dla sterownikw lub rzadziej uywanych elementw.
Dalej nastpuje lista pyta o obsug sieci. Dokadny zestaw opcji konfiguracyjnych
nieustannie si zmienia ze wzgldu na cigy rozwj. Typowa lista opcji oferowanych przez wikszo jder rodziny 2.0 i 2.1 wyglda tak:
*
* Network device support
*
Network device support (CONFIG_NETDEVICES) [Y/n/?]

Musisz odpowiedzie na to pytanie y, jeeli chcesz korzysta z jakichkolwiek


urzdze sieciowych, czy to bdzie Ethernet, SLIP, PPP, czy cokolwiek innego.
Gdy odpowiesz na pytanie twierdzco, automatycznie zostanie wczona obsuga
urzdze typu Ethernet. Jeeli chcesz wczy obsug innych typw sterownikw
sieciowych, musisz odpowiedzie na dodatkowe pytania.
PLIP (parallel port) support (CONFIG_PLIP) [N/y/m/?] y
PPP (point-to-point) support (CONFIG_PPP) [N/y/m/?] y
*
* CCP compressors for PPP are only built as modules.
*
SLIP (serial line) support (CONFIG_SLIP) [N/y/m/?] m
CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [N/y/?] (NEW) y
Keepalive and linefill (CONFIG_SLIP_SMART) [N/y/?] (NEW) y
Six bit SLIP encapsulation (CONFIG_SLIP_MODE_SLIP6) [N/y/?] (NEW) y

Pytania te dotycz rnych protokow warstwy cza obsugiwanych przez Linuksa.


Zarwno PPP, jak i SLIP pozwalaj na przesyanie datagramw IP po czach szeregowych. PPP w rzeczywistoci jest zestawem protokow uywanych do wysyania
danych po czach szeregowych. Niektre protokoy wchodzce w skad zestawu
PPP obsuguj uwierzytelnianie si uytkownika na serwerze dostpowym, natomiast inne zajmuj si przenoszeniem pewnych protokow przez cze PPP transportuje nie tylko datagramy TCP/IP moe take przenosi inne protokoy, takie
jak IPX.
Jeeli na pytanie o obsug protokou SLIP odpowiesz y lub m, zostaniesz poproszony
o odpowied na trzy kolejne pytania. Opcja kompresji nagwka pozwala na korzy-

36

Rozdzia 3: Konfigurowanie sprztu sieciowego

stanie z CSLIP techniki, ktra kompresuje nagwki TCP/IP do zaledwie trzech


bajtw. Zauwa, e ta opcja jdra nie wcza automatycznie CSLIP, a jedynie udostpnia niezbdne do tego celu funkcje jdra. Opcja Keepalive and linefill
powoduje, e co jaki czas jest generowany sztuczny ruch na czu SLIP, aby unikn
zerwania poczenia przez czujnik nieaktywnoci. Opcja Six bit SLIP encapsulation pozwala na uruchomienie SLIP na liniach i obwodach, ktre nie s w stanie przesya penych 8-bitowych zestaww danych. Jest to technika podobna do
uukodowania (ang. uuencoding) lub algorytmu binhex, stosowanych do przesyania
plikw binarnych poczt elektroniczn.
Protok PLIP jest sposobem przesania datagramw IP przez cze oparte o porty
rwnolege. Uywa si go do komunikowania si komputerw PC pracujcych
w systemie DOS. Na typowym komputerze PC, protok PLIP moe by szybszy ni
PPP czy SLIP, ale bardziej obcia procesor, a wic cho przepustowo pozostanie
odpowiednia, to inne zadania mog by realizowane wolniej.
Ponisze pytania dotycz kart sieciowych rnych sprzedawcw. Im wicej sterownikw jest dostpnych na rynku, tym bardziej prawdopodobne, e w tej sekcji
pojawi si nowe pytanie. Gdyby chcia stworzy jdro, mgby robi to na wielu
rnych maszynach, a gdyby twoja maszyna miaa zainstalowane rne rodzaje kart
sieciowych, mgby wczy wicej ni jeden sterownik:
.
.
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?]
3COM cards (CONFIG_NET_VENDOR_3COM) [Y/n/?]
3c501 support (CONFIG_EL1) [N/y/m/?]
3c503 support (CONFIG_EL2) [N/y/m/?]
3c509/3c579 support (CONFIG_EL3) [N/y/m/?]
3c590/3c900 series (592/595/597/900/905) "Vortex/Boomerang" support
(CONFIG_VORTEX) [N/y/m/?]
AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE) [N/y/?]
AMD PCInet32 (VLB and PCI) support (CONFIG_LANCE32) [N/y/?] (NEW)
Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [N/y/?]
WD80*3 support (CONFIG_WD80x3) [N/y/m/?] (NEW)
SMC Ultra support (CONFIG_ULTRA) [N/y/m/?] (NEW)
SMC Ultra32 support (CONFIG_ULTRA32) [N/y/m/?] (NEW)
SMC 9194 support (CONFIG_SMC9194) [N/y/m/?] (NEW)
Other ISA cards (CONFIG_NET_ISA) [N/y/?]
Cabletron E21xx support (CONFIG_E2100) [N/y/m/?] (NEW)
DEPCA, DE10x, DE200, DE201, DE202, DE422 support (CONFIG_DEPCA) [N/y/m/?] (NEW)
EtherWORKS 3 (DE203, DE204, DE205) support (CONFIG_EWRK3) [N/y/m/?] (NEW)
EtherExpress 16 support (CONFIG_EEXPRESS) [N/y/m/?] (NEW)
HP PCLAN+ (27247B and 27252A) support (CONFIG_HPLAN_PLUS) [N/y/m/?] (NEW)
HP PCLAN (27245 and other 27xxx series) support (CONFIG_HPLAN) [N/y/m/?] (NEW)
HP 10/100VG PCLAN (ISA, EISA, PCI) support (CONFIG_HP100) [N/y/m/?] (NEW)
NE2000/NE1000 support (CONFIG_NE2000) [N/y/m/?] (NEW)
SK_G16 support (CONFIG_SK_G16) [N/y/?] (NEW)
EISA, VLB, PCI and on card controllers (CONFIG_NET_EISA) [N/y/?]
Apricot Xen-II on card ethernet (CONFIG_APRICOT) [N/y/m/?] (NEW)
Intel EtherExpress/Pro 100B support (CONFIG_EEXPRESS_PRO100B) [N/y/m/?] (NEW)
DE425, DE434, DE435, DE450, DE500 support (CONFIG_DE4X5) [N/y/m/?] (NEW)
DECchip Tulip (dc21x4x) PCI support (CONFIG_DEC_ELCP) [N/y/m/?] (NEW)
Digi Intl. RightSwitch SE-X support (CONFIG_DGRS) [N/y/m/?] (NEW)
Pocket and portable adaptors (CONFIG_NET_POCKET) [N/y/?]

Konfigurowanie jdra

37

AT-LAN-TEC/RealTek pocket adaptor support (CONFIG_ATP) [N/y/?] (NEW)


D-Link DE600 pocket adaptor support (CONFIG_DE600) [N/y/m/?] (NEW)
D-Link DE620 pocket adaptor support (CONFIG_DE620) [N/y/m/?] (NEW)
Token Ring driver support (CONFIG_TR) [N/y/?]
IBM Tropic chipset based adaptor support (CONFIG_IBMTR) [N/y/m/?] (NEW)
FDDI driver support (CONFIG_FDDI) [N/y/?]
Digital DEFEA and DEFPA adapter support (CONFIG_DEFXX) [N/y/?] (NEW)
ARCnet support (CONFIG_ARCNET) [N/y/m/?]
Enable arc0e (ARCnet "Ether-Encap" packet format) (CONFIG_ARCNET_ETH)/
[N/y/?] (NEW)
Enable arc0s (ARCnet RFC1051 packet format) (CONFIG_ARCNET_1051)/
[N/y/?] (NEW)
.
.

Pod koniec sekcji dotyczcej systemu plikw skrypt konfiguracyjny zapyta ci, czy
chcesz wczy obsug NFS sieciowego systemu plikw. NFS pozwala na udostpnienie systemu plikw kilku hostom, na ktrych pliki z twojego hosta bd widoczne tak, jakby byy na zwykym dysku podczonym lokalnie:
NFS file system support (CONFIG_NFS_FS) [y]

NFS opiszemy szczegowo w rozdziale 14, Sieciowy system plikw.

Opcje sieciowe jdra w Linuksie 2.0.0 i nowszych


W jdrze Linuksa 2.0.0 nastpiy znaczne zmiany w obsudze sieci. Wiele funkcji stao si standardow czci jdra, na przykad obsuga protokou IPX. Dodano
take szereg opcji, co otworzyo nowe moliwoci konfiguracyjne. Wielu opcji uywa si tylko w bardzo szczeglnych sytuacjach i nie bdziemy ich opisywa. Dokument Networking-HOWTO opisuje to, co my tutaj pomijamy. W tym podrozdziale
podajemy najbardziej przydatne opcje i wyjaniamy, kiedy naley ich uywa:
Podstawy
Aby uywa sieci TCP/IP, musisz odpowiedzie na to pytanie, wpisujc y. Jeeli
odpowiesz n, wci bdziesz mg skompilowa jdro z obsug IPX:
Networking options --->
[*] TCP/IP networking

Gatewaye
Musisz wczy t opcj, jeeli twj system pracuje jako gateway pomidzy dwoma sieciami lub pomidzy sieci lokaln a czem SLIP. To, e opcja jest domylnie wczona, w niczym nie przeszkadza, ale trzeba j wyczy, jeeli chcesz
skonfigurowa host jako firewall. Firewalle to hosty, ktre s podczone do dwch
lub wicej sieci, ale nie rutuj ruchu pomidzy nimi. S one powszechnie stosowane, aby udostpni uytkownikom Internet przy minimalnym ryzyku dla sieci
wewntrznej. Uytkownicy mog logowa si do firewalla i korzysta z usug internetowych, a komputery firmowe s zabezpieczone przed atakami z zewntrz,
poniewa firewalle nie przepuszczaj adnych pocze przychodzcych z zewntrz (firewalle opisujemy szczegowo w rozdziale 9, Firewall TCP/IP):
[*] IP: forwarding/gatewaying

38

Rozdzia 3: Konfigurowanie sprztu sieciowego

Wirtualne hosty
Opcje te pozwalaj na skonfigurowanie wicej ni jednego adresu IP dla jednego
interfejsu. Przydaj si, jeeli chcesz tworzy hosty wirtualne, czyli skonfigurowa maszyn tak, e wyglda i dziaa jak kilka oddzielnych maszyn, kada
o wasnych parametrach sieciowych. Wicej na temat tworzenia aliasw IP powiemy za chwil:
[*] Network aliasing
<*> IP: aliasing support

Liczenie ruchu IP
Opcja ta pozwala na zbieranie danych na temat wielkoci ruchu IP (wychodzcego i wchodzcego) w danej maszynie. (Omwienie tego zagadnienia zawiera rozdzia 10, Liczenie ruchu IP).
[*] IP: accounting

Bd PC
Opcja ta rozwizuje problem niekompatybilnoci z niektrymi wersjami zestawu
PC/TCP, bedcego komercyjn implementacj TCP/IP dla komputerw PC
opartych na DOS-ie. Jeeli wczysz t opcj, wci bdziesz mg komunikowa
si ze zwykymi maszynami uniksowymi, ale wydajno na gorszych czach
moe by sabsza:
--- (it is safe to leave these untouched)
[*] IP: PC/TCP compatibility mode

Uruchamianie bezdyskowe
Funkcja ta wcza RARP (odwrotny protok rozwizywania adresw). RARP
jest uywany przez klienty bezdyskowe i X terminale do uzyskiwania swojego
adresu IP przy uruchamianiu. Powiniene wczy RARP, jeeli planujesz obsug klientw tego typu. May program o nazwie rarp, doczony do standardowych narzdzi sieciowych, jest uywany to dodawania wpisw do tablicy RARP
jdra:
<*> IP: Reverse ARP

MTU
Aby dane wysyane przez TCP/IP mogy zosta przekazane do protokou IP,
jdro musi podzieli ich strumie na bloki. Rozmiar bloku jest okrelany za pomoc maksymalnej jednostki transmisji (Maximum Transmission Unit MTU).
W przypadku hostw, ktre s osigalne przez sie lokaln, np. Ethernet, typowe
jest uywanie MTU odpowiadajcego maksymalnej wielkoci pakietu Ethernet
1500 bajtom. W przypadku rutingu IP przez sieci rozlege takie jak Internet, preferowane jest stosowanie mniejszych datagramw, aby nie musiay by dalej
dzielone w procesie zwanym fragmentacj IP (ang. IP fragmentation)*. Jdro jest
w stanie automatycznie okreli najmniejsz warto MTU dla danej trasy IP i automatycznie skonfigurowa poczenie TCP dla tej trasy. Zachowanie to jest do*

Pamitaj, e protok IP moe by przesyany przez rne typy sieci, a nie wszystkie obsuguj tak duy
rozmiar pakietu jak sie Ethernet.

Konfigurowanie jdra

39

mylne. Jeeli odpowiesz y przy wyborze tej opcji, waciwo ta zostanie wyczona.
Jeeli rzeczywicie chcesz wysya dane w mniejszych pakietach do okrelonych
hostw (poniewa na przykad dane s przesyane przez cze SLIP), skorzystaj
z opcji mss polecenia route, ktre zostanie krtko omwione pod koniec tego rozdziau:
[ ] IP: Disable Path MTU Discovery (normally enabled)

Bezpieczestwo
Protok IP obsuguje funkcj rdowego wyboru trasy (ang. source routing). ]rdowy wybr trasy pozwala na zakodowanie trasy datagramu w nim samym.
Z ca pewnoci byo to dobre rozwizanie, zanim upowszechniy si protokoy
RIP i OSPF. Obecnie uznawane jest za niebezpieczne, poniewa daje osobom niepowoanym narzdzie do pokonania zabezpiecze firewalli, mianowicie pozwala na ominicie tablicy rutingu rutera. W normalnej sytuacji powiniene filtrowa
datagramy ze rdowym wyborem trasy, a wic ta opcja powinna by wczona:
[*] IP: Drop source routed frames

Obsuga sieci Novell


Opcja ta wcza obsug IPX protokou transportowego wykorzystywanego
w sieci Novell. Linux bdzie dziaa doskonale jako ruter IPX, a ponadto funkcja
ta jest przydatna w rodowiskach, gdzie znajduj si serwery plikw Novell. System plikw NCP rwnie wymaga wczonej obsugi IPX w jdrze. Gdyby
chcia podczy si i zamontowa systemy plikw Novell, musiaby mie t
opcj wczon (IPX i system plikw NCP omawiamy w rozdziale 15, IPX i system
plikw NCP):
<*> The IPX protocol

Radio amatorskie
Trzy ponisze opcje wczaj obsug protokow radia amatorskiego obsugiwanych przez Linuksa: AX.25, NetRom i Rose (nie opisujemy ich w tej ksice,
ale s one szczegowo przedstawione w dokumencie AX25-HOWTO):
<*> Amateur Radio AX.25 Level 2
<*> Amateur Radio NET/ROM
<*> Amateur Radio X.25 PLP (Rose)

Linux obsuguje jeszcze jeden typ sterownika: sterownik fikcyjny (ang. dummy
driver). Ponisze pytanie pojawia si na pocztku sekcji dotyczcej sterownikw
urzdze:
<*> Dummy net driver support

Sterownik fikcyjny jest w zasadzie przydatny tylko w przypadku samodzielnych


hostw PPP/SLIP. Jest to w istocie interfejs ptli zwrotnej z maskowaniem IP. Na hostach, ktre posiadaj jedynie interfejsy PPP/SLIP, bdziesz chcia mie interfejs, ktry przez cay czas utrzymuje twj adres IP. Omawiamy to nieco bardziej szczegowo w podrozdziale Interfejs fikcyjny w rozdziale 5, Konfigurowanie sieci TCP/IP.

40

Rozdzia 3: Konfigurowanie sprztu sieciowego

Zauwa, e dzisiaj to samo moesz uzyska, uywajc aliasu IP i konfigurujc swj


adres IP jako alias na interfejsie ptli zwrotnej.

Wycieczka po urzdzeniach sieciowych Linuksa


Jdro Linuksa obsuguje szereg sterownikw dla rnego rodzaju sprztu. Ten podrozdzia to krtki przegld dostpnych rodzin sterownikw i uywanych przez nie
nazw interfejsw.
Interfejsy w Linuksie maj standardowe nazwy, wymienione poniej. Wikszo
sterownikw obsuguje wicej ni jeden interfejs, dlatego interfejsy s numerowane,
na przykad eth0 i eth1.
lo
To lokalny interfejs ptli zwrotnej. Jest uywany zarwno do celw testowych,
jak i przez kilka aplikacji sieciowych. Dziaa na zasadzie obwodu zamknitego,
w ktrym wszelkie dane wysane do interfejsu s zwracane do warstwy sieciowej
hosta. W jdrze istnieje zawsze tylko jeden interfejs ptli zwrotnej i nie ma sensu,
aby byo ich wicej.
eth0, eth1...
To interfejsy kart Ethernet. S uywane przez wikszo kart Ethernet, wcznie
z tymi podczanymi przez port rwnolegy.
tr0, tr1...
To interfejsy kart Token Ring. S uywane przez wikszo kart Token Ring,
wcznie z produkowanymi przez firmy inne ni IBM.
sl0, sl1...
To interfejsy SLIP. S zwizane z czami szeregowymi w kolejnoci alokowania
dla SLIP.
ppp0, ppp1...
To interfejsy PPP. Podobnie jak interfejsy SLIP, interfejs PPP jest zwizany z czem
szeregowym pracujcym w trybie PPP.
plip0, plip1...
To interfejsy PLIP. PLIP przesya datagramy IP przez cza rwnolege. Interfejsy
s alokowane przez sterownik PLIP w czasie uruchamiania systemu i s odwzorowane na porty rwnolege. W jdrach 2.0.x istnieje bezporedni zwizek midzy
nazw urzdzenia a portem wejcia/wyjcia portu rwnolegego, ale w nowszych jdrach nazwy urzdze s przypisywane kolejno, tak jak w urzdzeniach
SLIP i PPP.
ax0, ax1...
To interfejsy AX.25. AX.25 jest podstawowym protokoem uywanym przez
operatorw radia amatorskiego. Interfejsy AX.25 s alokowane i przypisywane
w podobny sposb jak urzdzenia SLIP.
Istnieje wiele innych typw interfejsw dla innych urzdze sieciowych. Wymienilimy tylko najpopularniejsze z nich.

Instalowanie Ethernetu

41

W kilku nastpnych podrozdziaach omwimy dokadniej korzystanie z opisanych


powyej sterownikw. Dokument Networkig-HOWTO opisuje konfiguracj wikszoci pozostaych interfejsw, natomiast AX25-HOWTO wyjania, jak skonfigurowa
urzdzenia sieciowe radia amatorskiego.

Instalowanie Ethernetu
Kod sieciowy Liunksa w obecnej postaci obsuguje wiele kart Ehternet. Wikszo
sterownikw zostaa napisana przez Donalda Beckera, ktry stworzy rodzin sterownikw dla kart opartych o ukad National Semiconductor 8390. S one znane
pod nazw Becker Series Drivers. Sterowniki dla rnego sprztu pisali te inni programici. Dziki temu wikszo popularnych kart jest obsugiwana przez Linuksa,
z naprawd nielicznymi wyjtkami. Lista obsugiwanych kart Ethernet stale si
wydua, a wic jeeli twoja karta jeszcze si na niej nie znajduje, to istnieje realna
szansa, e wkrtce tam doczy.
Niegdy prbowano sporzdzi list wszystkich obsugiwanych kart Ethernet, ale
obecnie zajoby to zbyt duo czasu i miejsca. Na szczcie Paul Gortmaker, ktry redaguje dokument Ethernet-HOWTO, zamieszcza list wszystkich obsugiwanych
kart i podaje przydatne informacje na temat ich uruchamiania w Linuksie*. Co miesic jest ona wysyana do grupy dyskusyjnej comp.os.linux.answers, a take jest dostpna w orodkach lustrzanych Projektu Dokumentacji Linuksa.
Nawet, jeeli jeste przekonany, e potrafisz zainstalowa dany typ karty Ethernet
w swoim komputerze, warto zajrze do Ethernet-HOWTO i dowiedzie si, co ma do
powiedzenia na ten temat. Znajdziesz tam informacje wykraczajce poza proste zagadnienia konfiguracji. Na przykad zapewne unikniesz niepotrzebnych kopotw,
jeli bdziesz wiedzia, jak si zachowuj niektre karty Ethernet oparte na DMA
i wykorzystujce ten sam kana DMA, ktry jest domylnie przeznaczony dla kontrolera SCSI Adaptec AHA 1542. Dopki nie przeczysz ich na inny kana DMA,
uruchomienie komputera bdzie si koczyo zapisywaniem pakietw przez kart
Ethernet na losowe miejsca twojego dysku twardego.
Aby skorzysta z dowolnej obsugiwanej przez Linuksa karty Ethernet, moesz uy
prekompilowanego jdra z jakiej znanej dystrybucji Linuksa. Zwykle maj one
moduy dla wszystkich obsugiwanych sterownikw, a w procesie instalacji zwykle
moesz wybra te sterowniki, ktre chcesz zaadowa. Jednak na dusz met lepiej
jest skompilowa wasne jdro i umieci w nim tylko te sterowniki, ktre s rzeczywicie potrzebne. Zaoszczdzisz miejsce na dysku i pami.

Automatyczne wykrywanie kart Ethernet


Sterowniki Ethernet w Linuksie s zwykle na tyle inteligentne, by znale lokalizacj
karty Ethernet. Dziki temu nie musisz sam wskazywa jej jdra. Ethernet-HOWTO
informuje, czy dany sterownik uywa automatycznego wykrywania i w jakiej kolejnoci sprawdza adresy wejcia/wyjcia karty.
*

Z Paulem mona si skontaktowa pod adresem gpg109@rsphy1.anu.edu.au.

42

Rozdzia 3: Konfigurowanie sprztu sieciowego

Kod automatycznego wykrywania ma trzy ograniczenia. Po pierwsze, nie jest on


w stanie poprawnie rozpozna wszystkich kart. Jest to szczeglnie widoczne
w przypadku taszych klonw popularnych kart. Po drugie, jdro nie wykryje automatycznie wicej ni jednej karty, dopki mu tego jawnie nie zaznaczysz. Jest to
wiadome zaoenie konstrukcyjne, gdy uznano, e bdziesz chcia mie kontrol
nad tym, ktra karta jest przypisywana do ktrego interfejsu. Najlepszym sposobem
na zrobienie tego porzdnie jest rczne skonfigurowanie kart Ethernet we wasnym
komputerze. Po trzecie, sterownik moe przeoczy adres, pod ktrym jest skonfigurowana twoja karta. Podsumowujc, sterowniki bd automatycznie szukay karty
tylko pod tymi adresami, pod ktrymi dane urzdzenie moe by skonfigurowane,
ale czasem pewne adresy s ignorowane w celu uniknicia konfliktw sprztowych
z innymi typami kart, ktre czsto wykorzystuj ten sam adres.
Karty sieciowe PCI powinny by wykrywane bez kopotw. Jeeli jednak uywasz
wicej ni jednej karty albo jeeli automatyczne wykrywanie si nie powiedzie, istnieje sposb na jawne powiadomienie jdra o adresie podstawowym i nazwie karty.
W czasie uruchamiania systemu moesz poda do jdra argumenty i informacje,
ktre mog si przyda niektrym jego skadnikom. Mechanizm ten pozwala ci na
przykad na przekazanie do jdra informacji, ktre umoliwi sterownikom Ethernet zlokalizowanie sprztu Ethernet bez wykrywania go przez sterownik.
Jeeli korzystasz z systemu uruchamiania lilo, moesz przekaza parametry do
jdra, wpisujc je za pomoc opcji append w pliku lilo.conf. Aby powiadomi jdro
o urzdzeniu Ethernet, moesz przekaza mu nastpujce parametry:
ether=irq,base_addr,[param1,][param2,]name

Pierwsze cztery parametry s liczbami, natomiast ostatni to nazwa urzdzenia. Obowizkowe s irq, base_addr i name, opcjonalne dwa parametry param. Dowolne wartoci liczbowe mog by ustawione na zero, co powoduje, e jdro okreli
je przez wykrywanie.
Pierwszy parametr okrela IRQ przypisane do urzdzenia. Domylnie jdro bdzie
prbowao automatycznie wykry kana IRQ urzdzenia. Sterownik 3c503, na
przykad, ma specjaln funkcj, ktra wybiera wolne IRQ z listy 5, 9, 3, 4 i konfiguruje kart tak, by z niego korzystaa. Parametr base_addr okrela podstawowy adres
wejcia/wyjcia karty warto zero mwi jdru, by sprawdzio podane adresy.
Kolejne dwa parametry s rnie wykorzystywane przez rne sterowniki. W przypadku kart wykorzystujcych wspdzielenie pamici, takich jak WD80x3, parametry
te okrelaj adresy pocztkowy i kocowy obszaru pamici. Inne karty powszechnie
uywaj param1 do ustawienia poziomu wywietlanych informacji debugujcych.
Wartoci od 1 do 7 wyznaczaj kolejne poziomy iloci informacji, natomiast 8
wycza je wszystkie. 0 jest wartoci domyln. Sterownik 3c503 uywa param2 do
wyboru pomidzy wewntrznym (domylnie) a zewntrznym (warto 1) transceiverem. Ten pierwszy wykorzystuje zcze karty BNC, natomiast drugi jej port AUI.
Argumenty param nie musz by w ogle podawane, jeeli nie masz nic szczeglnego do skonfigurowania.

Instalowanie Ethernetu

43

Pierwszy, nieliczbowy argument jest interpretowany przez jdro jako nazwa urzdzenia. Musisz poda nazw urzdzenia dla kadej konfigurowanej karty Ethernet.
Gdyby mia dwie karty Ethernet, Linux mgby wykry jedn kart automatycznie
i przez lilo przekaza parametry do drugiej karty, ale prawdopodobnie wolaby
rcznie skonfigurowa obie karty. Jeli decydujesz si na wykrywanie jednej karty
przez jdro i rczne konfigurowanie drugiej, musisz mie pewno, e jdro przypadkowo nie znajdzie najpierw drugiej karty i e pierwsza zostanie w ogle znaleziona. Dlatego przeka do lilo opcj reserve, ktra jawnie mwi jdru, by nie
sprawdzao obszaru wejcia/wyjcia zajtego przez drug kart. Na przykad,
aby Linux zainstalowa drug kart Ethernet znajdujc si pod adresem 0x300 jako eth1, musiaby przekaza jdru nastpujce parametry:
reserve=0x300,32 ether=0,0x300,eth1

Opcja reserve gwarantuje, e aden sterownik nie bdzie mia dostpu do obszaru
wejcia/wyjcia drugiej karty w czasie wykrywania innych urzdze. Moesz take
uy parametru jdra, ktry uniewania automatyczne wykrywanie eth0:
reserve=0x340,32 ether=0,0x340,eth0

Moesz take w ogle wyczy automatyczne wykrywanie, na przykad, aby jdro


nie prbowao szuka karty Ethernet, ktr tymczasowo usune. W tym celu
ustaw argument base_addr na warto -1:
ether=0,-1,eth0

Aby przekaza te parametry do jdra w czasie uruchamiania, wpisujesz je w monicie


boot: lilo. Aby lilo pokazao monit boot:, musisz nacisn jeden z klawiszy
[Control], [Alt] lub [Shift] w czasie uruchamiania lilo. Jeeli majc monit, naciniesz
klawisz [Tab], pojawi si lista jder. Aby uruchomi jdro z podanymi parametrami,
wprowad nazw wybranego jdra, a nastpnie spacj i parametry, ktre chcesz
przekaza. Po naciniciu [Enter] lilo zaaduje jdro z uwzgldnieniem podanych
parametrw.
Aby te nowe parametry pojawiy si automatycznie przy ponownym uruchamianiu
systemu, wprowad je do pliku /etc/lilo.conf, uywajc sowa kluczowego append=.
Oto przykad:
boot=/dev/hda
root=/dev/hda2
install=/boot/boot.b
map=/boot/map
vga=normal
delay=20
append="ether=10,300,eth0"
image=/boot/vmlinuz-2.2.14
label=2.2.14
read-only

Po edycji pliku lilo.conf musisz ponownie uruchomi polecenie lilo, aby uaktywni
zmiany.

44

Rozdzia 3: Konfigurowanie sprztu sieciowego

Sterownik PLIP
Protok IP cza rwnolegego (Parallel Line IP PLIP) to atwy i tani sposb na
poczenie dwch maszyn w sie. Wykorzystuje port rwnolegy i specjalny kabel.
Osiga prdko od 10 do 20 kilobajtw na sekund.
PLIP powsta w firmie Cyrnwr, Inc. Na swoje czasy odznacza si pomysow (lub,
jeli wolisz, typowo hakersk* architektur), poniewa oryginalne porty rwnolege
IBM PC byy projektowane jako jednokierunkowe porty drukarki. Osiem linii danych suyo do wysyania danych jedynie z PC do urzdzenia peryferyjnego, ale nie
w drug stron.* Protok PLIP firmy Cyrnwr znosi to ograniczenie. W PLIP do
przyjmowania danych przeznaczono tylko pi linii stanu portu, co ograniczyo
wielko dostarczanych danych do pbajtu, ale dopuszczono przesyanie w obie
strony. Ten tryb dziaania zosta nazwany PLIP tryb 0. Obecnie porty rwnolege PC
obsuguj pene dwukierunkowe przesyanie danych 8-bitowych, a PLIP zosta rozszerzony i obecnie nosi nazw PLIP tryb 1.
Jdra Linuksa do wersji 2.0 (wcznie) obsugiway jedynie PLIP tryb 0, ale istniay
rozszerzone sterowniki portu rwnolegego (w postaci poprawek dla jdra 2.0 i jako
standardowy kod w jdrze 2.2), ktre obsugiway take PLIP tryb 1**. W odrnieniu od wczeniejszych wersji kodu PLIP, obecny sterownik prbuje by kompatybilny z implementacjami PLIP firmy Cyrnwr oraz sterownikiem PLIP umieszczonym w NCSA telnet***. Aby poczy dwa komputery za pomoc PLIP, musisz
mie specjalny kabel sprzedawany w niektrych sklepach pod nazw Null Printer
lub Turbo Laplink. Moesz jednak wykona go samodzielnie i nie jest to trudne. Dodatek B, Przydatne konfiguracje kabli, wyjania, jak to zrobi.
Sterownik PLIP dla Linuksa jest dzieem prawie niezliczonej rzeszy uytkownikw.
Obecnie znajduje si pod opiek Niibe Yutaka (adres kontaktowy: gniibe@mri.co.jp).
Sterownik po wkompilowaniu w jdro, konfiguruje interfejs sieciowy dla kadego
moliwego portu drukarki, gdzie plip0 odpowiada portowi lp0, plip1 portowi lp1
i tak dalej. Odwzorowanie interfejsw na porty inaczej wyglda w jdrach 2.0, ni
w jdrach 2.2. W jdrach 2.0 odwzorowanie byo zdefiniowane w pliku drives/
net/Space.c w kodzie jdra i nie mogo si zmieni. Domylne odwzorowanie w tym
pliku jest nastpujce:

Walcz o oczyszczenie z zarzutw nazwy haker! Zawsze uywaj nazwy craker, gdy mwisz o ludziach, ktrzy prbuj pokona system zabezpiecze, a haker, gdy mwisz o ludziach, ktrzy wymylili mdry sposb na rozwizanie problemu. Hakerzy mog by crakerami, ale nie naley ich nigdy
ze sob myli. Zajrzyj do Nowego sownika Hakerw (New Hackers Dictionary), ktry mona znale
w postaci pliku Jargon, a lepiej zrozumiesz te pojcia.
** Poprawka obsugujca rozszerzony port rwnolegy w jdrach 2.0 jest dostpna pod adresem
http://www.cyberelk.demon.co.uk/parport.html.

*** NCSA telnet to popularny program dla DOS-a, ktry pozwala na uywanie TCP/IP w sieci Ethernet lub
PLIP i obsugujcy usugi telnet oraz FTP.

Sterownik PLIP

45

Interfejs

Port wejcia/wyjcia

IRQ

plip0
plip1
plip2

0x3BC
0x378
0x278

7
7
5

Gdyby skonfigurowa swj port drukarki w inny sposb, musiaby zmieni odpowiednie wartoci w pliku drivers/net/Space.c w kodzie rdowym jdra Linuksa,
ktre trzeba byoby przekompilowa.
W jdrach 2.2 sterownik PLIP wykorzystuje sterownik portu rwnolegego parport
napisany przez Philipa Blundella*. Nowy sterownik przypisuje nazwy urzdze sieciowych PLIP kolejno, tak jak sterowniki Ethernet czy PPP, a wic pierwsze utworzone urzdzenie PLIP ma nazw plip0, drugie plip1 i tak dalej. Fizyczne porty rwnolege s rwnie przypisywane kolejno. Domylnie sterownik portu rwnolegego
zastosuje procedur automatycznego wykrywania, aby zidentyfikowa sprzt,
ktry go obsuguje, i kolejno zapisze uzyskiwane informacje o urzdzeniu fizycznym. Lepiej jest jawnie przekaza jdru fizyczne parametry wejcia/wyjcia. W tym
celu trzeba poda argumenty do moduu parport_pc.o w czasie jego adowania, a jeeli sterownik jest wkompilowany w jdro, argumenty podaje si w czasie uruchamiania lilo. Ustawienia IRQ dowolnego urzdzenia mog zosta zmienione pniej
przez zapisanie nowej wartoci IRQ do pliku /proc/parport/*/irq.
Konfigurowanie parametrw fizycznych wejcia/wyjcia w jdrze 2.2 w czasie adowania moduu jest proste. Na przykad, aby przekaza sterownikowi, e masz dwa
porty rwnolege typu PC pod adresami wejcia/wyjcia 0x278 i 0x378 oraz IRQ
odpowiednio 5 i 7, moesz zaadowa modu z nastpujcymi argumentami:
modprobe parport_pc io=0x278,0x378 irq=5,7

Odpowiednie argumenty przekazywane do jdra w przypadku wkompilowanego


sterownika s nastpujce:
parport=0x278,5 parport=0x378,7

Aby argumenty te przekaza do jdra automatycznie w czasie uruchamiania systemu, musisz uy sowa kluczowego append w lilo.
Gdy sterownik PLIP zostanie zainicjowany, czy to w czasie uruchamiania systemu,
jeeli jest wbudowany, czy te w czasie adowania moduu plip.o, kady z portw rwnolegych bdzie mia zwizane z nim urzdzenie sieciowe plip. Urzdzenie plip0
zostanie przypisane do pierwszego portu rwnolegego, plip1 do drugiego i tak dalej. To przypisanie mona pomin, rcznie zadajc inny zestaw argumentw jdra.
Na przykad, aby przypisa parport0 do urzdzenia plip0 i parport1 do
urzdzenia plip1, uyby nastpujcych argumentw jdra:
plip=parport1 plip=parport0

Jednak takie przypisanie nie znaczy, e nie moesz wykorzystywa tych portw
rwnolegych do drukowania czy innych celw. Fizyczne porty rwnolege s uy*

Z Philipem moesz skontaktowa si, piszc na adres Philip.Blundell@pobox.com.

46

Rozdzia 3: Konfigurowanie sprztu sieciowego

wane przez sterownik PLIP jedynie wtedy, gdy odpowiadajcy im interfejs jest
w trybie up.

Sterowniki PPP i SLIP


Protokoy PPP (Point-to-point Protocol protok punkt-punkt) i SLIP (Serial Line IP
IP cza szeregowego) s powszechnie stosowane do przesyania pakietw IP przez
cze szeregowe. Wiele firm oferuje dostp komutowany PPP i SLIP do maszyn, ktre s podczone do Internetu, zapewniajc w ten sposb poczenia IP dla prywatnych osb (czsto inaczej trudno dostpne).
Aby uruchomi PPP czy SLIP, nie trzeba modyfikowa sprztu moesz uy dowolnego portu szeregowego. Poniewa konfiguracja portu szeregowego nie jest
istot sieci TCP/IP, zagadnienie to znalazo si w rozdziale 4, Konfigurowanie
urzdze szeregowych. Natomiast PPP omawiamy szczegowo w rozdziale 8, Protok punkt-punkt, a SLIP - w rozdziale 7, IP cza szeregowego.

Inne typy sieci


Wikszo pozostaych typw sieci jest konfigurowana podobnie jak Ethernet. Argumenty przekazywane do moduw adowalnych bd oczywicie inne, a niektre
sterowniki mog obsugiwa tylko jedn kart, ale caa reszta jest taka sama. Dokumentacj tych kart moesz znale w katalogu /usr/src/linux/Documentation/networking w kodzie rdowym Linuksa.

Konfigurowanie
urzdze szeregowych
Rozdzia 4: Konfigurowanie urzdze szeregowych

Internet rozwija si bardzo szybko. A przecie wiekszo jego uytkownikw stanowi ci, ktrzy nie mog sobie pozwoli na stae i szybkie cza i uywaj protokow
takich jak SLIP, PPP czy UUCP, dzwonic do dostawcy usug internetowych i odbierajc dzienn porcj swojej poczty i wiadomoci grup dyskusyjnych.
Rozdzia niniejszy ma pomc tym wszystkim, ktrzy swoje poczenie ze wiatem zewntrznym opieraj na modemach. Nie bdziemy mwili, jak skonfigurowa modem
(instrukcja konkretnego urzdzenia powie ci wicej na ten temat), ale opiszemy aspekty specyficzne dla Linuksa i dotyczce zarzdzania urzdzeniami wykorzystujcymi
porty szeregowe. Interesujce nas tematy to: oprogramowanie do komunikacji szeregowej, tworzenie plikw urzdze szeregowych, urzdzenia szeregowe i konfigurowanie urzdze szeregowych za pomoc polece setserial i stty. Wiele innych tematw
mona znale w Serial-HOWTO autorstwa Davida Lawyera*.

Oprogramowanie komunikacyjne do pocze modemowych


Istnieje wiele pakietw komunikacyjnych dla Linuksa. Gwnie s to programy terminala, ktre pozwalaj uytkownikowi dzwoni do innego komputera i poczu si
tak, jakby siedzia przed prostym terminalem. Tradycyjny program terminala dla
rodowisk uniksowych to kermit. Obecnie jest on ju nieco przestarzay i moe wydawa si trudny. Istniej wygodniejsze programy, ktre obsuguj funkcje, takie jak
ksiki telefoniczne, jzyki skryptowe do automatycznego dzwonienia i logowania
si do zdalnych systemw komputerowych oraz rne protokoy wymiany plikw. Jednym z tych programw jest minicom, wzorowany na najpopularniejszym

Z Davidem mona skontaktowa si pod adresem bf347@lafn.org.

48

Rozdzia 4: Konfigurowanie urzdze szeregowych

DOS-owym programie terminala. Uytkownicy X11 take maj narzdzie dla siebie
seyon jest w peni funkcjonalnym programem komunikacyjnym opartym na X11.
Programy terminala nie s jedynym rodzajem programw do pocze szeregowych. Inne pozwalaj poczy si z hostem i pobra wiadomoci grup dyskusyjnych oraz poczt w jednej paczce, aby pniej, w wolnej chwili, zapozna si z nimi
i da odpowied. Moe zaoszczdzisz w ten sposb duo czasu i pienidzy, jeeli
zoyo si tak nieszczliwie, e mieszkasz w rejonie, gdzie poczenia lokalne s
patne*. Podczas czytania i przygotowania odpowiedzi nie musisz mie poczenia
z sieci, a gdy bdziesz gotowy, zadzwonisz ponownie i umiecisz swoje odpowiedzi na serwerze za jednym zamachem. Potrzebujesz te nieco wicej miejsca na dysku twardym, poniewa wszystkie wiadomoci musz by na nim umieszczone, zanim je przeczytasz, ale moe by to sensowny kompromis przy obecnych cenach dyskw twardych.
UUCP zawiera w sobie wanie tego typu oprogramowanie komunikacyjne. Jest to
zestaw programw, ktre kopiuj pliki z jednego hosta na drugi i uruchamiaj programy na hocie zdalnym. Czsto jest uywany do przenoszenia poczty czy grup
dyskusyjnych w sieciach prywatnych. Pakiet UUCP Iana Taylora, dziaajcy take
pod Linuksem, opisujemy szczegowo w rozdziale 16, Zarzdzanie UUCP Taylora.
Pozostae nieinteraktywne oprogramowanie komunikacyjne jest uywane w sieciach takich, jak Fidonet. Wersje aplikacji pochodzce z Fidonet, takie jak ifmail, s
rwnie dostpne, chocia wydaje si nam, e ju niewiele osb z nich korzysta.
PPP i SLIP s porodku, gdy pozwalaj zarwno na interaktywne, jak i nieinteraktywne uycie. Wiele osb uywa PPP i SLIP w celu dzwonienia do swoich sieci campusowych lub innych dostawcw Internetu, a potem korzysta z FTP lub czyta strony
WWW. PPP i SLIP s take powszechnie stosowane do pocze staych i pstaych
pomidzy sieciami LAN, cho jest to ciekawe jedynie przy poczeniach ISDN lub
innych o podobnej szybkoci.

Wprowadzenie do urzdze szeregowych


Jdro Linuksa daje moliwo komunikacji z urzdzeniami szeregowymi, zwykle
nazywanymi urzdzeniami tty. Jest to skrt od angielskiej nazwy Teletype device**,
ktra wskazuje na gwnego producenta urzdze terminalowych z pocztkw
Uniksa. Termin urzdzenie tty odnosi si obecnie do wszelkich terminali znakowych. W tym rozdziale zawamy jego zakres wycznie do plikw urzdze
w Linuksie, czyli oznacza on tutaj fizyczny terminal.
Linux udostpnia trzy klasy urzdze tty: urzdzenia szeregowe, terminale wirtualne (do ktrych masz dostp przez nacinicie klawiszy od [Alt+F1] do [Alt+Fnn] na
konsoli lokalnej) i pseudoterminale (podobne do potokw dwukierunkowych i uywane przez aplikacje, takie jak X11). Te pierwsze zostay nazwane urzdzeniami tty,
* W USA rozmowy lokalne s przewanie bezpatne (przyp. tum.).
** teletype to po polsku dalekopis, ale w tym przypadku chodzi o firm o identycznie brzmicej nazwie
(przyp. tum.).

Dostp do urzdze szeregowych

49

poniewa oryginalne terminale znakowe byy podczone do maszyny uniksowej


przez kabel szeregowy lub lini telefoniczn i modem. Dwa kolejne zostay te zaliczone do grupy urzdze tty, poniewa z punktu widzenia programisty dziaay podobnie do tych pierwszych.
SLIP i PPP s przewanie implementowane w jdrze. Jdro w rzeczywistoci nie
traktuje urzdzenia tty jako urzdzenia sieciowego, ktrym moesz posugiwa si
tak jak urzdzeniem Ethernet, uywajc polece ifconfig. Natomiast widzi je jako co,
do czego moe podczy urzdzenia sieciowe. Aby to zrobi, jdro zmienia tzw.
protok obsugi (ang. line discipline) urzdzenia tty. Zarwno SLIP, jak i PPP s protokoami obsugi, ktre mog zosta wczone na urzdzeniach tty. Oglna zasada
jest taka, e sterownik szeregowy obsuguje otrzymane dane w rny sposb, w zalenoci od tego, z jakiego protokou obsugi korzysta. W przypadku domylnego
protokou obsugi sterownik po prostu przesya kolejno kady otrzymany znak.
Gdy zostanie wybrany protok obsugi PPP lub SLIP, sterownik nie czyta blokw
danych, ale opatruje je specjalnym nagwkiem, ktry pozwala na identyfikacj bloku danych w strumieniu po drugiej stronie i przesanie nowego bloku danych. Na
razie zrozumienie tego nie jest zbyt istotne. W dalszych rozdziaach omwimy
dokadniej PPP i SLIP i wszystko stanie si jasne.

Dostp do urzdze szeregowych


Tak jak wszystkie urzdzenia w systemie Unix, tak i porty szeregowe s dostpne
poprzez specjalne pliki urzdze znajdujce si w katalogu /dev. Istniej dwa rodzaje plikw urzdze zwizanych ze sterownikami szeregowymi i dla kadego portu
istnieje jeden taki plik. Zachowanie urzdzenia bdzie zaleao od tego, ktry z jego
plikw otworzymy. Tutaj wskaemy rnice, co pomoe nam zrozumie pewne
konfiguracje. Jednak w praktyce wystarczy uywa tylko jednego z tych plikw.
Niedugo jeden z nich moe w ogle przesta istnie.
Waniejsze urzdzenia z dwch klas urzdze szeregowych maj numer nadrzdny
4, a pliki specjalne urzdze nosz nazwy ttyS0, ttyS1 itd. Drugi rodzaj ma numer
nadrzdny 5 i zosta stworzony do wykorzystania przy dzwonieniu na zewntrz
przez port. Pliki specjalne w tym przypadku nosz nazwy cua0, cua1 itd. W wiecie
Uniksa liczenie generalnie rozpoczyna si od zera, cho inteligentni ludzie zwykle
licz od jednego. Wprowadza to lekkie zamieszanie, poniewa COM1: jest reprezentowany przez /dev/ttyS0, COM2: przez /dev/ttyS1 itd. Kady, kto zna architektur
sprztow IBM PC wie, e port COM3: i porty o wikszych numerach nigdy nie stay
si w rzeczywistoci standardem.
Urzdzenia cua, czyli suce do dzwonienia (z ang. calling out), miay rozwiza
problem konfliktw urzdze szeregowych przeznaczonych dla modemw
i obsugujcych zarwno poczenia przychodzce, jak i wychodzce. Niestety, stay
si one rdem innych kopotw i zapewne trzeba bdzie z nich zrezygnowa.
Przyjrzyjmy si pokrtce problemowi.
Linux, podobnie jak Unix, pozwala, by urzdzenie lub inny plik byy otwierane
przez wicej ni jeden proces jednoczenie. Niestety nie jest to zalet w przypadku

50

Rozdzia 4: Konfigurowanie urzdze szeregowych

urzdze tty, gdy dwa procesy prawie na pewno bd sobie przeszkadzay. Na


szczcie wymylono mechanizm pozwalajcy sprawdza procesowi, czy urzdzenie tty zostao ju otwarte przez inny proces. Mechanizm ten wykorzystuje tak zwane pliki blokujce (ang. lock files). Dziaa na nastpujcej zasadzie: gdy proces chce
otworzy urzdzenie tty, sprawdza, czy w okrelonym miejscu istnieje plik o nazwie
podobnej do urzdzenia, ktre chce otworzy. Jeeli plik nie istnieje, proces go tworzy i otwiera urzdzenie tty. Jeeli plik istnieje, proces zakada, e urzdzenie otworzy ju inny proces i podejmuje stosowne dziaanie. Jeszcze jeden pomys na sprawne dziaanie systemu zarzdzania plikami blokujcymi to zapisywanie w samym
pliku ID procesu (pid), ktry stworzy plik blokujcy. Wicej na ten temat powiemy
za chwil.
Mechanizm pliku blokujcego dziaa doskonale w warunkach, gdy jest zdefiniowane miejsce dla takich plikw i wszystkie programy wiedz, gdzie ich szuka. Niestety nie zawsze tak byo w Linuksie. Korzystanie z tego mechanizmu stao si moliwe
dopiero, gdy zosta zdefiniowany FSSTND (standard systemu plikw Linuksa) z
ustalon lokalizacj plikw blokujcych, ktre zaczy wtedy dziaa poprawnie dla
urzdze tty. Wczeniej zdarzyo si, e wspistniao kilka moliwych lokalizacji
plikw blokujcych wybranych przez programistw: /usr/spool/locks/, /var/spool/locks/,
/var/lock/ i /usr/lock/. Zamieszanie rodzio chaos. Programy otwieray pliki blokujce
z rnych miejsc, a majce kontrolowa jedno urzdzenie tty. Efekt by taki, jakby
pliki blokujce w ogle nie byy uywane.
Aby rozwiza ten problem, stworzono urzdzenia cua. Zamiast polega na plikach
blokujcych, ktre miay zabezpiecza przed kolidowaniem ze sob programw korzystajcych z urzdze szeregowych, zdecydowano, e to jdro bdzie decydowa,
kto ma mie dostp do urzdzenia. Jeeli urzdzenie ttyS byo ju otwarte, prba
otwarcia cua koczya si bdem. Program mg go zinterpretowa jako informacj,
e urzdzenie jest uywane. Jeeli urzdzenie cua byo ju otwarte i zostaa podjta
prba otwarcia urzdzenia ttyS, danie byo blokowane, to znaczy wstrzymywane
do czasu zamknicia urzdzenia cua przez inny proces. Dziaao do cakiem dobrze,
jeeli miae jeden modem skonfigurowany do odbierania pocze i co jaki czas
chciae zadzwoni za pomoc tego samego urzdzenia. Kopoty pojawiy si w rodowiskach, gdzie wiele programw chciao dzwoni z tego samego urzdzenia. Jedynym sposobem na rozwizanie tego problemu byo zastosowanie plikw blokujcych. Powrt do punktu wyjcia.
Wystarczy wspomnie, e przyszed tu z pomoc standard systemu plikw Linuksa.
Teraz pliki blokujce musz znajdowa si w katalogu /var/lock i nazywa zgodnie
z przyjt konwencj, czyli plik blokujcy dla urzdzenia ttyS1 nazywa si na
przykad LCK..ttyS1. Pliki blokujce cua powinny take znajdowa si w tym katalogu, ale uywanie urzdze cua nie jest zalecane.
Przez jaki czas urzdzenia cua bd jeszcze funkcjonoway, by zapewni kompatybilno w okresie przejciowym, ale stopniowo bd wycofywane. Jeeli zastanawiasz
si, czego uywa, trzymaj si urzdze ttyS i upewnij si, e twj system jest zgodny
z FSSTND lub e przynajmniej wszystkie programy korzystajce z urzdze szeregowych umieszczaj pliki blokujce w tym samym miejscu. Wikszo oprogramo-

Dostp do urzdze szeregowych

51

wania pracujcego z urzdzeniami szeregowymi tty posiada opcj kompilacyjn pozwalajc na wskazanie miejsca umieszczania plikw blokujcych. Czsto wystpuje ona w postaci zmiennej o nazwie typu LOCKDIR w pliku Makefile lub w nagwkowym pliku konfiguracyjnym. Jeeli sam kompilujesz oprogramowanie, najlepiej
jest ustawi t zmienn tak, by zapewni zgodno z lokalizacj okrelon przez
FSSTND. Jeeli korzystasz ze skompilowanych plikw binarnych i nie jeste pewien,
gdzie program zapisuje swoje pliki blokujce, moesz uy poniszego polecenia,
by uzyska wskazwk:
strings plikbinarny | grep lock

Jeeli wskazana lokalizacja nie zgadza si z pozosta czci twojego systemu, staraj si utworzy dowizanie symboliczne z katalogu plikw blokujcych, ktrego
chce uywa dany program, do katalogu /var/lock. Nie jest to zbyt eleganckie rozwizanie, ale dziaa.

Pliki specjalne urzdzenia szeregowego


Numery podrzdne s identyczne dla obu typw urzdze szeregowych. Gdyby
mia swj modem na jednym z czterech standardowych portw COM:, jego numer
podrzdny byby numerem portu COM plus 63. Gdyby uywa specjalnego
urzdzenia szeregowego, takiego jak szybki wieloportowy kontroler szeregowy,
prawdopodobnie musiaby tworzy dla niego specjalne pliki urzdze. Zapewne
karta taka nie posugiwaaby si standardowym sterownikiem urzdzenia. Odpowiednie szczegy zapewne znajdziesz w dokumencie Serial-HOWTO.
Zamy, e twj modem jest podczony do COM2:. Jego numer podrzdny to 65,
a nadrzdny to 4 w przypadku normalnego zastosowania. Powinno istnie urzdzenie ttyS1, ktre ma takie numery. Wylistuj urzdzenia szeregowe tty w katalogu
/dev/. Pita i szsta kolumna pokazuj odpowiednio numery podrzdne i nadrzdne:
$
0
0
0
0

ls -l /dev/ttyS*
crw-rw---- 1 uucp
crw-rw---- 1 uucp
crw-rw---- 1 uucp
crw-rw---- 1 uucp

dialout
dialout
dialout
dialout

4,
4,
4,
4,

64
65
66
67

Oct
Jan
Oct
Oct

13
26
13
13

1997
21:55
1997
1997

/dev/ttyS0
/dev/ttyS1
/dev/ttyS2
/dev/ttyS3

Gdyby nie byo urzdzenia o numerze nadrzdnym 4 i podrzdnym 65, musiaby je


stworzy. W takiej sytuacji zaloguj si jako uytkownik uprzywilejowany i napisz:
# mknod -m 666 /dev/ttyS1 c 4 65
# chown uucp.dialout /dev/ttyS1

Dystrybucje Linuksa uywaj rnych strategii do okrelania, kto powinien by


wacicielem urzdze szeregowych. Czasem bd one wasnoci uytkownika root,
a innym razem bd naleay na przykad do uucp, tak jak w naszym przykadzie.
Wspczesne dystrybucje maj specjaln grup dla urzdze sucych do dzwonienia. Kady uytkownik, ktry ma prawo ich uywa, jest dodawany do tej grupy.
Niektrzy sugeruj stworzenie dowizania symbolicznego /dev/modem do urzdzenia modemu, tak by zwykli uytkownicy nie musieli zapamitywa czego tak
skomplikowanego jak ttyS1. Jednak nie moesz uywa w jednym programie nazwy

52

Rozdzia 4: Konfigurowanie urzdze szeregowych

modem, a w drugim rzeczywistej nazwy pliku urzdzenia. Ich pliki blokujce bd


miay rne nazwy i mechanizm blokowania nie zadziaa.

Urzdzenia szeregowe
RS-232 jest obecnie najbardziej znanym standardem komunikacji szeregowej
w wiecie PC. Wykorzystuje wiele ukadw do transmisji pojedynczych bitw oraz
do synchronizacji. Mona wprowadzi dodatkowe linie do sygnalizacji obecnoci
nonej (uywanej przez modemy) i do uzgadniania (ang. handshaking). Linux
obsuguje wiele kart szeregowych zgodnych ze standardem RS-232.
Uzgadnianie sprztowe jest opcjonalne, ale bardzo przydatne. Pozwala obu stronom
na sygnalizowanie gotowoci odbioru kolejnych danych lub na powiadomienie, e
druga strona powinna poczeka, a odbiorca zakoczy przetwarzanie odebranych
danych. Linie uywane do tego celu s nazywane odpowiednio Clear to Send
(CTS) i Ready to Send (RTS), co wyjania potoczn nazw uzgadniania sprztowego: RTS/CTS. Innym rodzajem uzgadniania, z ktrym moge si ju spotka, jest
XON/XOFF. Wykorzystuje ono dwa wyznaczone znaki, zwykle [CTRL+S] i [CTRL+Q]
do sygnalizowania drugiej stronie, e powinna odpowiednio zatrzyma lub rozpocz przesyanie danych. Cho sposb ten jest atwy do zaimplementowania
i dziaa poprawnie na terminalach uproszczonych (ang. dumb terminals), powoduje
zamieszanie w przypadku danych binarnych. Moe si bowiem zdarzy, e wolisz
przesa te znaki jako cz strumienia danych i chcesz, aby byy interpretowane jako znaki sterujce. Poza tym metoda ta jest wolniejsza ni uzgadnianie sprztowe,
ktre jako proste i szybkie jest zalecane zamiast XON/XOFF, o ile oczywicie masz
wybr.
W pierwszych modelach IBM PC interfejs RS-232 by sterowany przez ukad scalony
UART 8250. PC z czasw procesora 486 uyway nowszej wersji ukadu UART
16450. By on nieco szybszy ni 8250. Prawie wszystkie komputery oparte na Pentium s wyposaone w jeszcze nowsz wersj ukadu UART 16550. Niektre marki
(przewanie modemy wewntrzne wyposaone w zestaw ukadw Rockwell) wykorzystuj zupenie inne ukady emulujce zachowanie 16550 i mog by traktowane
podobnie. Standardowy sterownik portu szeregowego Linuksa obsuguje je wszystkie*.
Ukad 16550 jest znacznym krokiem naprzd w stosunku do 8250 i 16450, poniewa
oferuje 16-bajtowy bufor FIFO. 16550 jest w rzeczywistoci rodzin urzdze UART,
do ktrej nale ukady 16550, 16550A i 16550AFN (nazwa zostaa pniej zmieniona na PCI16550DN). Rnice midzy nimi polegaj na zapewnieniu dziaania FIFO; w ukadzie 16550AFN dziaa ono na pewno. Istnia take ukad NS16550, ale
w nim bufor FIFO nigdy tak naprawd nie dziaa.

Zauwa, e nie mwimy tu o tak zwanych WinModemach! WinModemy maj bardzo prost budow
sprztow i do wykonania caej pracy w peni wykorzystuj gwny procesor, zamiast dedykowanych
ukadw. Zdecydowanie odradzamy ci zakup takiego modemu kup prawdziwy modem. Linux oczywicie obsuguje WinModemy, ale nie jest to atrakcyjne rozwizanie.

Uywanie narzdzi konfiguracyjnych

53

Ukady UART 8250 i 16450 miay prosty bufor jednobajtowy. Oznaczao to, e 16450
generowa przerwanie dla kadego nadanego lub odebranego znaku. Kade wymagao krtkiego czasu na jego obsug i to niewielkie opnienie ograniczao prdko ukadu 16450 do 9600 bitw na sekund w typowym komputerze z magistral
ISA.
W domylnej konfiguracji jdro sprawdza cztery standardowe porty szeregowe, od
COM1: do COM4:. Jdro jest take w stanie wykry, jaki ukad UART jest uywany
dla kadego ze standardowych portw szeregowych i wykorzystuje bufor FIFO
ukadu 16550, jeeli jest dostpny.

Uywanie narzdzi konfiguracyjnych


Teraz przyjrzyjmy si krtko dwm najbardziej przydatnym narzdziom do konfiguracji urzdzenia szeregowego: setserial i stty.

Polecenie setserial
Jdro zrobi wszystko co w jego mocy, by poprawnie rozpozna konfiguracj twojego
urzdzenia szeregowego, ale wielo moliwoci powoduje, e trudno jest uzyska
w praktyce stuprocentow niezawodno. Dobrym przykadem tego, co sprawia
problemy, s modemy wewntrzne, o ktrych mwilimy wczeniej. Uywany
przez nie ukad UART ma 16-bajtowy bufor FIFO, ale z punktu widzenia sterownika
urzdzenia w jdrze wyglda jak ukad UART 16450: dopki nie wskaemy sterownikowi, e jest to urzdzenie 16550, jdro nie bdzie wykorzystywa rozszerzonego
bufora. Innym przykadem s uproszczone karty 4-portowe pozwalajce na
wspdzielenie jednego IRQ przez wiele urzdze szeregowych. W takiej sytuacji
musimy wskaza jdru waciwe IRQ i uprzedzi je, e IRQ moe by wspdzielone.
Do konfiguracji sterownika szeregowego w czasie pracy stworzono program setserial. Polecenie to jest powszechnie uruchamiane w czasie startu systemu ze skryptu
0setserial lub rc.serial, w zalenoci od dystrybucji. Skrypt ma tak ustawi inicjacj
sterownika szeregowego, aby ten dostosowa si do niestandardowych lub niezwykych urzdze szeregowych zainstalowanych w komputerze.
Oglna skadnia polecenia setserial jest nastpujca:
setserial urzdzenie [parametry]

gdzie urzdzenie to jedno z urzdze szeregowych, na przykad ttyS0.


Polecenie setserial ma wiele parametrw. Najpopularniejsze z nich opisano w tabeli
4-1. Informacje o pozostaych znajdziesz w podrczniku elektronicznym setserial.

54

Rozdzia 4: Konfigurowanie urzdze szeregowych

Tabela 4-1. Parametry polecenia setserial


Parametr

Opis

port numer_portu

Okrela adres portu wejcia/wyjcia urzdzenia szeregowego.


Numery portu powinny by podawane w notacji szesnastkowej,
tzn. 0x2f8.
Okrela numer przerwania uywany przez urzdzenie szeregowe.
Okrela typ UART urzdzenia szeregowego. Powszechnie stosowane wartoci to 16450, 16550 itd. Ustawienie tej wartoci na
none wycza dane urzdzenie szeregowe.
Okrelenie tego parametru mwi sterownikowi szeregowemu
jdra, e port jest jednym z portw czteroportowej karty AST.
Programuje UART na prdko 57,6 kb/s, gdy proces da 38,4
kb/s.
Programuje UART na prdko 115 kb/s, gdy proces da 38,4
kb/s.
Programuje UART na domyln prdko 38,4 kb/s, gdy zostanie
zadana. Parametr ten jest uywany do wyczenia dziaania
spd_hi i spd_vhi wykonanych na danym urzdzeniu szeregowym.
Parametr ten powoduje, e jdro prbuje automatycznie okreli
IRQ danego urzdzenia. Prba moe si nie powie, a wic lepiej
traktowa to jako danie odgadnicia IRQ przez jdro. Jeeli
znasz IRQ urzdzenia, powiniene od razu uy opcji irq.
Parametr ten musi by okrelony w poczeniu z parametrem
port. Podanie tego parametru powoduje, e setserial zleca jdru
prb automatycznego okrelenia typu ukadu UART znajdujcego si pod zadanym adresem portu. Jeeli zostanie podany
rwnie parametr auto_irq, jdro podejmie take prb automatycznego wykrycia IRQ.
Parametr ten mwi jdru, aby nie wykonywao sprawdzania
typu ukadu UART podczas automatycznej konfiguracji. Jest on
niezbdny, jeeli ukad UART nie jest poprawnie wykrywany
przez jdro.

irq numer
uart typ_uart
Fourport
spd_hi
spd_vhi
spd_normal

auto_irq

Autoconfig

skip_test

Plik rc konfigurujcy porty szeregowe w czasie uruchamiania komputera moe


wyglda tak jak w przykadzie 4-1. W wikszoci dystrybucji Linuksa bdzie on
bardziej wyrafinowany ni tutaj.
Przykad 4-1. Przykadowy plik rc.serial zawierajcy polecenia setserial
# /etc/rc.serial skrypt konfigurujcy cze szeregowe
#
# Konfiguracja urzdze szeregowych
/sbin/setserial /dev/ttyS0 auto_irq skip_test autoconfig
/sbin/setserial /dev/ttyS1 auto_irq skip_test autoconfig
/sbin/setserial /dev/ttyS2 auto_irq skip_test autoconfig
/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig
#
# Wywietlenie konfiguracji urzdze szeregowych
/sbin/setserial -bg /dev/ttyS*

Uywanie narzdzi konfiguracyjnych

55

Argument -bg /dev/ttyS* w ostatnim poleceniu wypisze adnie sformatowane


podsumowanie konfiguracji wszystkich urzdze szeregowych. Wynik bdzie wyglda tak jak w przykadzie 4-2.
Przykad 4-2: Wynik polecenia setserial -bg /dev/ttyS
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A

Polecenie stty
Nazwa stty moe oznacza set tty, ale polecenie stty bywa te uywane do wywietlania konfiguracji terminala. Polecenie stty, prawdopodobnie jeszcze bardziej
ni setserial, wprawia w konsternacj posiadan liczb charakterystyk, ktre mona
konfigurowa. W tej chwili pokaemy najwaniejsze z nich. Pozostae znajdziesz na
stronie podrcznika elektronicznego stty.
Polecenie stty jest najczciej uywane do konfigurowania parametrw terminala,
ktre decyduje na przykad, czy wprowadzane znaki bd wywietlane na ekranie
albo czy klawisz powinien generowa sygna przerwania. Wczeniej wyjanilimy,
e urzdzenia szeregowe s urzdzeniami tty i dlatego polecenie stty odnosi si take do nich.
Jednym z najwaniejszych zastosowa stty w urzdzeniach szeregowych jest
wczenie uzgadniania sprztowego w urzdzeniu. Wczeniej krtko wspomnielimy o uzgadnianiu sprztowym. Domylna konfiguracja urzdze szeregowych
zakada wyczenie uzgadniania sprztowego. Wwczas mog dziaa kable szeregowe trzyyowe. Nie obsuguj one sygnaw wymaganych do uzgadniania
sprztowego i gdyby byo ono domylnie wczone, nie mona byoby przez nie
przesa adnych znakw, by to zmieni.
Co dziwniejsze, niektre szeregowe programy komunikacyjne nie wczaj uzgadniaia
sprztowego, a wic jeeli twj modem je obsuguje, powiniene go skonfigurowa
tak, eby go uywa (odszukaj w instrukcji modemu waciwe polecenie), a take
skonfiguruj odpowiednio urzdzenie szeregowe. Polecenie stty ma znacznik crtscts,
ktry wcza uzgadnianie sprztowe w urzdzeniu bdziesz musia go uy. Polecenie prawdopodobnie najlepiej uruchomi z pliku rc.serial (lub rwnowanego)
w czasie startu systemu za pomoc polece pokazanych w przykadzie 4-3.
Przykad 4-3. Przykadowe polecenia stty w pliku rc.serial
#
stty
stty
stty
stty
#

crtscts
crtscts
crtscts
crtscts

<
<
<
<

/dev/ttyS0
/dev/ttyS1
/dev/ttyS2
/dev/ttyS3

Polecenie stty dziaa domylnie na biecym terminalu, ale uywajc funkcji przekierowujcej wejcie (<) powoki, moemy za pomoc stty operowa na dowolnym urzdzeniu tty. Znak przekierowania < czsto bywa mylony z > na
szczcie nowsze wersje stty maj duo prostsz skadni takiego przekierowania.

56

Rozdzia 4: Konfigurowanie urzdze szeregowych

Aby uy nowej skadni, musimy napisa nasz przykadow konfiguracj tak jak
w przykadzie 4-4.
Przykad 4-4. Przykad polecenia stty w pliku rc.serial z wykorzystaniem nowej skadni
#
stty
stty
stty
stty
#

crtscts
crtscts
crtscts
crtscts

-F
-F
-F
-F

/dev/ttys0
/dev/ttys1
/dev/ttys2
/dev/ttys3

Wspomnielimy, e polecenie stty moe by uywane do wywietlenia parametrw


konfiguracyjnych terminala. Aby wywietli wszystkie aktywne ustawienia urzdzenia tty, uyj:
$ stty -a -F /dev/ttyS1

Wynik dziaania tego polecenia, przedstawiony jako przykad 4-5, pokazuje stan
wszystkich znacznikw urzdzenia. Znacznik poprzedzony znakiem minus, na
przykad -crtscts, oznacza, e dana opcja jest wyczona.
Przykad 4-5. Wynik dziaania polecenia stty -a
speed 19200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = "\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocl -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon
-ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
bs0 vt0 ff0
-isig -icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt echoctl echoke

Opis najwaniejszych znacznikw znajduje si w tabeli 4-2. Kady z nich jest


wczany przez podanie w poleceniu stty i wyczany przez podanie w poleceniu
stty z poprzedzajcym znakiem -. Zatem, aby wyczy uzgadnianie sprztowe na
urzdzeniu ttyS0, napisaby:
$ stty -crtscts -F /dev/ttyS0

Kolejny przykad czy niektre z tych znacznikw i konfiguruje urzdzenie ttyS0


na 19200 bitw na sekund, 8 bitw danych, brak parzystoci i uzgadnianie sprztowe bez wypisywania odebranych znakw u nadawcy:
$ stty 19200 cs8 -parenb -crtscts -echo -F /dev/ttyS0

Tabela 4-2. Najwaniejsze znaczniki w konfiguracji urzdze szeregowych


Znaczniki

Opis

N
crtscts
ixon

Ustawienie prdkoci cza na N b/s.


Wczenie/wyczenie uzgadniania sprztowego.
Wczenie/wyczenie kontroli przepywu XON/XOFF.

Urzdzenia szeregowe i monit login:

57

Znaczniki

Opis

clocal

Wczenie/wyczenie sygnaw sterowania modemem, takich jak


DTR/DTS i DVD. Jest to potrzebne, jeeli uywasz trzyyowego kabla szeregowego.
Ustawienie liczby bitw danych odpowiednio na 5, 6, 7 lub 8.
Wczenie dopeniania bajtu do nieparzystej liczby jedynek.
Wyczenie tego znacznika powoduje wczenie dopeniania bajtu
do parzystej liczby jedynek.
Wczenie sprawdzania parzystoci. Zanegowanie tego znacznika
powoduje nieuywanie parzystoci.
Wczenie uywania dwch bitw stopu na znak. Zanegowanie
tego znacznika powoduje uywanie jednego bitu stopu na znak.
Wczenie/wyczenie wysyania odebranych znakw do nadawcy.

cs5 cs6 cs7 cs8


parodd
parenb
cstopb
echo

Urzdzenia szeregowe i monit login:


Swego czasu instalacja Uniksa wymagaa najczciej jednego serwera i wielu
uproszczonych terminali znakowych lub modemw do pocze komutowanych.
Obecnie ten typ instalacji jest mniej powszechny. To dobra wiadomo dla wielu
osb zainteresowanych tak metod pracy, poniewa uproszczone terminale mona teraz kupi za grosze. Konfiguracje z modemami nie straciy na popularnoci,
ale dzisiaj s one raczej uywane do obsugi logowania przez SLIP lub PPP (co omawiamy w rozdziale 7, IP cza szeregowego, i w rozdziale 8, Protok punkt-punkt), a nie
do zwykego logowania. Niemniej jednak kada z tych konfiguracji moe wykorzystywa prosty program o nazwie getty.
Okrelenie getty mona traktowa jako skrt od get tty. Program getty otwiera
urzdzenie szeregowe, konfiguruje je w odpowiedni sposb, opcjonalnie konfiguruje modem i czeka na zestawienie poczenia. Aktywne poczenie na urzdzeniu
szeregowym jest zwykle wskazywane przez wyprowadzenie DCD (Data Carrier Detect) wzbudzanego urzdzenia szeregowego.
Gdy zostanie wykryte poczenie, program getty wywietla monit login: i wywouje
program login, aby obsuy rzeczywiste logowanie do systemu. Kady terminal wirtualny (na przykad dev/tty1) w Linuksie posiada dziaajcy na jego rzecz program getty.
Istnieje szereg rnych implementacji getty, a kada z nich jest zaprojektowana tak,
aby pewne konfiguracje obsugiwa lepiej ni inne. Opisywany tutaj getty nosi nazw
mgetty. Jest dosy popularny, poniewa posiada wszelkie funkcje, ktre czyni go
szczeglnie przydatnym do obsugi modemw. Midzy innymi jest wyposaony
w programy do automatycznej obsugi faksu i modemw gosowych. Skoncentrujemy si na konfigurowaniu mgetty do odpowiadania na typowe poczenia majce na
celu transmisj danych, a ca reszt pozostawiamy ci do zbadania w wolnej chwili.

58

Rozdzia 4: Konfigurowanie urzdze szeregowych

Konfigurowanie demona mgetty


Demon mgetty jest dostpny w postaci rdowej pod adresem ftp://alpha.greenie.net/
pub/mgetty/source/, a w kadej dystrybucji Linuksa wystpuje w postaci pakietu. Demon mgetty rni si od wikszoci pozostaych implementacji getty tym, e zosta
stworzony specjalnie dla modemw kompatybilnych ze standardem Hayesa. Wci
obsuguje bezporednie poczenia terminalowe, ale najlepiej nadaje si do aplikacji
pracujcych po czu komutowanym. Zamiast uywa linii DCD do wykrywania
przychodzcego poczenia, oczekuje na komunikat RING generowany w momencie wykrycia nadchodzcego poczenia przez nowoczesne modemy, o ile nie s
skonfigurowane na automatyczne odpowiadanie.
Gwny program wykonywalny nazywa si /usr/sbin/mgetty, a jego plik konfiguracyjny to /etc/mgetty/mgetty.config. Poza tym jest szereg innych programw binarnych
i plikw konfiguracyjnych, ktre obsuguj inne funkcje mgetty.
W wikszoci instalacji konfiguracja polega na edycji pliku /etc/mgetty/mgetty.config
i dodaniu odpowiednich wpisw w pliku /etc/inittab, automatycznie uruchamiajcych mgetty.
Przykad 4-6 pokazuje bardzo prosty plik konfiguracyjny mgetty dla dwch urzdze
szeregowych. Pierwsze urzdzenie /dev/ttyS0, obsuguje modem kompatybilny ze
standardem Hayesa przy prdkoci 38 400 bps. Drugie, /dev/ttyS1, obsuguje bezporednio podczony terminal VT100 z prdkoci 19200 bps.
Przykad 4-6. Przykadowy plik /etc/mgetty/mgetty.config
#
# plik konfiguracyjny mgetty
#
# jest to przykadowy plik konfiguracyjny, wicej szczegw
# znajdziesz w mgetty.info
#
# wiersze komentarza zaczynaj si od "#", puste wiersze s
# ignorowane
#
# ----- sekcja oglna ----#
# w tej sekcji umieszczasz oglne wartoci domylne, dane
# dotyczce portu znajduj si dalej
#
# modem pracuje z prdkoci 38400 bps
speed 38400
#
# ustawienie oglnego poziomu debugowania na "4" (domylnie z
# policy.h)
debug 4
#
#
#
#
#
#
#
#

----- sekcja okrelajca porty ----Tutaj moesz umieci ustawienia dotyczce tylko danej linii
i nie dotyczce innych
Modem Hayesa podczony do ttyS0: bez obsugi faksu, bez

Urzdzenia szeregowe i monit login:

59

# logowania
#
port ttyS0
debug 3
data-only y
#
# bezporednie podczenie terminala VT100, ktry potrzebuje
# DTR
#
port ttyS1
direct y
speed 19200
toggle-dtr n
#

Plik konfiguracyjny zawiera opcje oglne i specyficzne dla portw. W naszym


przykadzie uylimy opcji oglnych do ustawienia prdkoci na 38 400 bitw na
sekund. Warto ta jest dziedziczona przez port ttyS0. To ustawienie prdkoci dotyczy portw mgetty, dopki nie zostanie ono nadpisane przez ustawienie prdkoci
specyficznej dla portu, co robimy w konfiguracji ttyS1.
Sowo kluczowe debug kontroluje liczb informacji logowanych przez mgetty.
Sowo kluczowe data-only w konfiguracji ttyS0 powoduje, e mgetty ignoruje
wszelkie funkcje faksowe modemu, i w zwizku z tym modem przesya tylko dane.
Sowo kluczowe direct w konfiguracji ttyS1 mwi programowi mgetty, aby nie
prbowa inicjowa modemu na danym porcie. Wreszcie sowo kluczowe
toggle-dtr mwi mgetty, aby nie prbowa zawiesza linii przy braku sygnau
DTR (Data Terminal Ready) na interfejsie szeregowym. Niektre terminale tego nie
lubi.
Moesz take zdecydowa si na pozostawienie pustego pliku mgetty.config, a wikszo z tych parametrw okreli za pomoc argumentw wiersza polece. Dokumentacja dotyczca aplikacji zawiera peny opis parametrw pliku konfiguracyjnego mgetty i argumentw wiersza polece. (Patrz fragment pliku poniej).
Aby uaktywni t konfiguracj, musimy doda dwa wpisy do pliku /etc/inittab. Plik
inittab jest plikiem konfiguracyjnym polecenia init Uniksa w wersji System V. Polecenie init jest odpowiedzialne za inicjacj systemu. Zapewnia automatyczne uruchamianie programw w czasie startu systemu i ponowne ich uruchamianie po zakoczeniu
pracy. Rozwizanie to idealnie nadaje si do obsugi programu getty.
T0:23:respawn:/sbin/mgetty ttyS0
T1:23:respawn:/sbin/mgetty ttyS1

Kady wiersz pliku /etc/inittab zawiera cztery pola oddzielone dwukropkami.


Pierwsze pole to identyfikator jednoznacznie okrelajcy wpis w pliku. Tradycyjnie
jest on dwuznakowy, ale nowsze wersje pozwalaj na zastosowanie czterech znakw.
Drugie pole to lista poziomw uruchomienia (ang. run levels), przy ktrych wpis powinien by aktywny. Poziom uruchomienia pozwala na rne konfiguracje systemu
i jest zaimplementowany za pomoc drzewiastej struktury skryptw startowych,
znajdujcych si w katalogach /etc/rc1.d, /etc/rc2.d itd. Funkcja ta jest zwykle implementowana w bardzo prosty sposb i powiniene wzorowa swoje wpisy na innych
wpisach w pliku lub zajrze do dokumentacji, jeeli potrzebujesz dodatkowych in-

60

Rozdzia 4: Konfigurowanie urzdze szeregowych

formacji. Trzecie pole opisuje, kiedy zadziaa. W przypadku uruchamiania programu getty, pole to powinno mie warto respawn, co oznacza, e polecenie powinno
by automatycznie uruchomione ponownie po zakoczeniu dziaania. Istnieje kilka
innych moliwoci, ale nie s dla nas teraz przydatne. Czwarte pole to rzeczywiste
polecenie do wykonania. Tutaj wpisujemy polecenie mgetty i jego argumenty. W naszym prostym przykadzie inicjujemy i ponownie uruchamiamy mgetty, gdy system
dziaa na poziomie drugim lub trzecim, a jako argumenty podajemy nazw urzdzenia, z ktrego chcemy korzysta. Polecenie mgetty automatycznie zakada ciek
/dev/, a wic nie musimy jej tutaj podawa.
Podrozdzia ten by krtkim omwieniem mgetty i sposobu udostpnienia monitu
logowania dla urzdze szeregowych. Wicej na ten temat moesz znale w dokumencie Serial-HOWTO.
Gdy dokonasz edycji plikw konfiguracyjnych, musisz przeadowa proces init, aby
zmiany byy aktywne. Po prostu wylij sygna hangup do procesu init. Proces ten
zawsze ma ID rwne 1, a wic moesz bezpiecznie wyda nastpujce polecenie:
# kill -HUP 1

Konfigurowanie sieci
TCP/IP
Rozdzia 5: Konfigurowanie sieci TCP/IP

W tym rozdziale pokaemy wszystkie kroki niezbdne do skonfigurowania sieci


TCP/IP na twoim komputerze. Zaczniemy od przypisania adresw IP, potem
zajmiemy si konfigurowaniem interfejsw sieciowych TCP/IP i na koniec przedstawimy kilka narzdzi, ktre przydaj si przy rozwizywaniu problemw z sieci.
Wikszo zada omwionych w tym rozdziale wykonuje si zwykle tylko raz. Po
pliki konfiguracyjne siga si powtrnie tylko wtedy, gdy dodaje si nowy system
do sieci lub zupenie przekonfigurowuje istniejcy system. Niektre polecenia uywane do konfigurowania TCP/IP musz by jednak uruchamiane przy kadym
starcie systemu, zwykle przez ich wywoanie ze skryptw /etc/rc*.
Cz sieciowa procedury konfiguracyjnej zwykle jest zawarta w skrypcie. Jego nazwa zaley od dystrybucji Linuksa. W wielu starszych dystrybucjach by to skrypt
rc.net lub rc.inet. Czasem spotkasz si take z dwoma skryptami o nazwach rc.inet1
i rc.inet2 pierwszy z nich inicjuje cz sieciow zwizan z jdrem, a drugi uruchamia podstawowe usugi sieciowe i aplikacje. We wspczesnych dystrybucjach pliki
rc s uporzdkowane w bardziej wyrafinowany sposb. W katalogu /etc/init.d/ (lub
/etc/rc.d/rc.init.d/) moesz znale skrypty tworzce urzdzenia sieciowe, a inne pliki
rc mog uruchamia aplikacje sieciowe. Przykady w tej ksice zostay oparte
wanie na tym ostatnim porzdku plikw.
Niniejszy rozdzia przedstawia czci skryptu konfigurujce interfejsy sieciowe, natomiast aplikacje zostan omwione w dalszych rozdziaach. Po lekturze tego rozdziau bdziesz zna zestaw polece, za pomoc ktrych poprawnie skonfigurujesz
sie TCP/IP na swoim komputerze. Zatem powiniene zastpi wszelkie przykadowe polecenia w swoich skryptach konfiguracyjnych wasnymi, upewni si, e
skrypt jest uruchamiany z podstawowego skryptu rc w czasie uruchamiania systemu i ponownie uruchomi komputer. Skrypty sieciowe rc zawarte w twojej ulubionej dystrybucji Linuksa powinny zawiera idealny przykad, z ktrego moesz skorzysta.

62

Rozdzia 5: Konfigurowanie sieci TCP/IP

Montowanie systemu plikw /proc


Niektre narzdzia konfiguracyjne NET-2 i NET-3 w Linuksie komunikuj si
z jdrem za pomoc systemu plikw /proc. Interfejs ten pozwala na dostp do roboczych informacji jdra przez mechanizm przypominajcy system plikw. Po jego zamontowaniu moesz oglda pliki tak jak w kadym innym systemie plikw lub
wywietla ich zawarto. Do typowych elementw nale: plik loadavg informujcy
o rednim obcieniu systemu i plik meminfo pokazujcy aktualne wykorzystanie
pamici gwnej i pamici wymiany.
Do tego wszystkiego kod sieciowy dodaje katalog net. Zawiera on szereg plikw pokazujcych takie rzeczy, jak tablica ARP jdra, stan pocze TCP oraz tablice rutingu. Wikszo narzdzi do administrowania sieci odczytuje potrzebne im informacje wanie z tych plikw.
System plikw proc (znany te pod nazw procfs) zwykle jest montowany w katalogu
/proc w czasie uruchamiania systemu. Najlepszym sposobem na zrobienie tego jest
dodanie nastpujcego wiersza w pliku /etc/fstab:
# punkt montowania procfs
none
/proc
proc

defaults

a nastpnie wykonanie mount /proc ze skryptu /etc/rc.


Obecnie procfs jest skonfigurowany domylnie w wikszoci jder. Jeeli w twoim
jdrze nie ma procfs, otrzymasz komunikat typu: mount: fs type procfs not
supported by kernel. Bdziesz zatem musia przekompilowa jdro i odpowiedzie yes na pytanie o obsug procfs.

Instalowanie plikw binarnych


Jeeli korzystasz z dowolnej gotowej dystrybucji Linuksa, znajdziesz w niej gwne
aplikacje i narzdzia sieciowe wraz z odpowiednim zestawem przykadowych plikw. Jedynym przypadkiem, w ktrym moe zaj potrzeba znalezienia i zainstalowania nowych narzdzi, jest instalacja nowej wersji jdra. Nowe jdro miewa zmiany w warstwie sieciowej i dlatego naley uaktualni podstawowe narzdzia konfiguracyjne. Uaktualnienie takie oznacza przynajmniej ponown kompilacj, ale czasem take wymaga nowego zestawu plikw binarnych. S one dostpne na oficjalnej
witrynie macierzystej ftp.inka.de/pub/comp/Linux/networking/NetTools/ w postaci pakietu net-tools-XXX.tar.gz, gdzie XXX to numer wersji. Wersja dla Linuksa 2.0 nosi
nazw net-tools-1.45.
Gdyby chcia skompilowa i zainstalowa samodzielnie standardowe aplikacje sieciowe TCP/IP, mgby zdoby ich rda z wikszoci serwerw FTP Linuksa.
Wszystkie wspczesne dystrybucje Linuksa zawieraj peny zestaw aplikacji sieciowych TCP/IP, takich jak przegldarka WWW, programy telnet i ftp oraz inne aplikacje sieciowe, na przykad talk. Jeeli jednak dojdziesz do wniosku, e co musisz skompilowa samodzielnie, prawdopodobnie nie bdziesz mia z tym problemw ze
w Linuksie, jeeli tylko bdziesz postpowa zgodnie z instrukcjami zawartymi
w pakiecie rdowym.

Przypisywanie adresu IP

63

Ustalanie nazwy hosta


Wikszo aplikacji sieciowych, jeeli nie wszystkie, oczekuje od ciebie ustawienia
lokalnej nazwy hosta na jak sensown warto. Najlepiej zrobi to w czasie procedury uruchamiania systemu przez wykonanie polecenia hostname. Aby ustali nazw hosta nazwa, wprowad:
# hostname nazwa

Powszechnie stosuje si skrcon nazw hosta bez podawania nazwy domeny. Na


przykad hosty w wirtualnym browarze (opisanym w dodatku A, Przykadowa sie:
browar wirtualny) mogyby nosi nazwy vale.vbrew.com czy vlager.vbrew.com. S
to ich pene nazwy domenowe (ang. fully qualified domain names FQDN). Nazwa hosta
to jedynie pierwszy czon penej nazwy, czyli na przykad vale. Jednak cho lokalna
nazwa hosta jest czsto uywana do szukania jego adresu IP, musisz mie pewno,
e biblioteka resolvera bdzie w stanie znale adres IP hosta. Zwykle oznacza to, e
musisz wprowadzi nazw do pliku /etc/hosts.
Niektrzy zalecaj uycie polecenia domainname, by powiadomi jdro o nazwie domeny, czyli o pozostaej czci FQDN. Wydaje si, e mona by poczy wynik hostname i domainname, aby uzyska pen nazw domenow. Jednak w najlepszym razie
rezultat byby tylko w poowie poprawny. Polecenie domainname jest bowiem uywane do definiowania domeny NIS, ktra moe by zupenie inna ni domena DNS,
do ktrej naley host. Dlatego warto zadba o to, aby nazwa hosta bya rozwizywalna przez wszystkie nowe wersje polecenia hostname. W tym celu naley doda
wpis do lokalnego serwera nazw domen lub umieci pen nazw domenow
w pliku /etc/hosts. Teraz moesz uy argumentu -fqdn polecenia hostname, aby wywietli pen nazw domenow.

Przypisywanie adresu IP
Jeeli nie planujesz pracy w sieci, ale konfigurujesz oprogramowanie sieciowe na
swoim hocie, aby na przykad mc uruchomi oprogramowanie INN Netnews,
moesz bezpiecznie pomin ten podrozdzia, poniewa jedynym potrzebnym ci
adresem IP bdzie interfejs ptli zwrotnej, ktry zawsze ma numer 127.0.0.1.
Rzeczy nieco bardziej si komplikuj w rzeczywistych sieciach takich jak Ethernet.
Gdyby chcia podczy swj host do istniejcej sieci, musiaby poprosi administratorw o nadanie ci w niej adresu IP. Jeeli konfigurujesz sam ca sie, musisz
sam przypisa adresy IP.
Hosty w sieci lokalnej zwykle powinny mie adresy z tej samej logicznej sieci IP.
W zwizku z tym musisz przypisa adres IP dla sieci. Jeeli masz kilka sieci fizycznych, musisz przypisa im rne numery sieci albo uy podsieci i podzieli posiadany zakres adresw IP na kilka podsieci. Podsieci zostan omwione w najbliszym podrozdziale.
Wybr numeru IP sieci w duym stopniu zaley od tego, czy w niedalekiej
przyszoci zamierzasz podczy si do Internetu. Jeeli tak, powiniene uzyska

64

Rozdzia 5: Konfigurowanie sieci TCP/IP

oficjalny adres IP ju teraz. Popro o pomoc swojego dostawc usug internetowych.


Jeeli chcesz uzyska numer sieci po prostu na wypadek, gdyby kiedy podczy
si do Internetu, popro o formularz proby o adres sieci, piszc na adres hostmaster@internic.net lub zgo si do centrum informacji sieciowej w twoim kraju, o ile takie istnieje.
Jeeli twoja sie nie jest podczona do Internetu i nie nosisz si z takim zamiarem,
moesz wybra dowolny dopuszczalny adres sieci. Wystarczy upewni si, e adne pakiety z twojej sieci wewntrznej nie przedostan si do prawdziwego Internetu. Aby zagwarantowa, e nic si nie stanie, nawet jeeli pakiety si przedostan,
powiniene uy jednego z numerw sieci zarezerwowanych dla sieci prywatnych.
Organizacja zajmujca si przydzielaniem numerw w Internecie (Internet Assigned
Numbers Authority IANA) wyznaczya kilka adresw sieci z klasy A, B i C, ktrych moesz uywa bez rejestrowania. Adresy te s wane tylko w twojej sieci prywatnej i nie s rutowane pomidzy prawdziwymi orodkami w Internecie. S one
zdefiniowane w RFC 1597. My zamiecilimy je w tabeli 2-1 w rozdziale 2, Wybrane
problemy sieci TCP/IP. Zauwa, e druga i trzecia klasa zawieraj odpowiednio 16
i 256 sieci.
Wybranie swojego adresu w jednej z tych sieci sprawdza si nie tylko w przypadku
sieci zupenie nie podczonych do Internetu. Bdc w takiej sieci, moesz zaimplementowa nieco bardziej ograniczony dostp za pomoc jednego hosta jako gatewaya. Dla twojej sieci lokalnej gateway jest dostpny pod swoim wewntrznym adresem IP, natomiast dla wiata zewntrznego pod oficjalnie zarejestrowanym adresem (nadanym ci przez dostawc). Powrcimy do tego rozwizania przy omawianiu
funkcji maskowania (ang. masquarading) w rozdziale 11, Maskowanie IP i translacja
adresw sieciowych.
Na potrzeby naszych rozwaa zakadamy, e administrator przykadowej sieci
browarw uywa numeru sieci z klasy B, powiedzmy 172.16.0.0. Oczywicie numer
z klasy C w zupenoci by wystarczy zarwno dla sieci browarw, jak i winiarni.
Klasy B uywamy tu dla uproszczenia. Dziki temu przykady podziau na podsieci
pokazane w nastpnym podrozdziale bd bardziej przekonujce.

Tworzenie podsieci
Aby obsuy kilka sieci Ethernet (lub innych, dla ktrych dostpny jest sterownik),
musisz podzieli swoj sie na podsieci. Zauwa, e podzia taki jest potrzebny tylko
wtedy, gdy masz wicej ni jedn sie rozgoszeniow cza punkt-punkt si nie
licz. Na przykad gdyby mia jedn sie Ethernet i przynajmniej jedno cze SLIP
do wiata zewntrznego, nie musiaby dzieli swojej sieci na podsieci. Wyjaniamy
to bardziej szczegowo w rozdziale 7, IP cza szeregowego.
Aby obsuy dwie sieci Ethernet, administrator sieci browaru zdecydowa si przeznaczy w adresie 8 bitw czci hosta na dodatkowe bity podsieci. Dla hosta zostaje
8 bitw, co pozwala na umieszczenie w kadej podsieci po 254 hosty. Nastpnie sie
numer 1 zostaa przypisana do browaru, a sie numer 2 do winiarni. Odpowiednie
adresy sieci to 172.16.1.0 i 172.16.2.0. Maska podsieci to 255.255.255.0.

Tworzenie plikw hosts i networks

65

Gateway pomidzy tymi dwoma sieciami, vlager, ma w obu sieciach numer hosta 1,
co daje adresy IP odpowiednio 172.16.1.1 i 172.16.2.1.
W tym przykadzie uywamy dla uproszczenia sieci klasy B, cho sie klasy C
byaby bardziej realistyczna. W nowym kodzie sieciowym jdra podzia na podsieci
nie zaley od granic bajtowych, a wic nawet klasa C moe by dzielona na kilka
podsieci. Na przykad mgby uy dwch bitw czci hosta na adres sieci, co
daoby 4 moliwe podsieci, po 64 hosty w kadej*.

Tworzenie plikw hosts i networks


Jeli ju podzielie swoj sie na podsieci, powiniene postara si o proste rozwizywanie nazw hostw za pomoc pliku /etc/hosts. Jeeli nie zamierzasz korzysta
z DNS-u lub NIS-a do rozwizywania adresw, musisz umieci wszystkie hosty
w pliku hosts.
Nawet jeeli bdziesz uywa DNS-u lub NIS-a w czasie normalnej pracy, w pliku
/etc/hosts powiniene mie pewien podzbir wszystkich nazw hostw. Musisz zapewni rozwizywanie nazw, nawet jeeli nie dziaaj adne interfejsy sieciowe na
przykad w czasie uruchamiania systemu. Chodzi nie tylko o wygod, ale te o moliwo zastosowania symbolicznych nazw hostw w skryptach sieciowych rc. Dziki temu gdy zmienisz adresy IP, wystarczy jedynie skopiowa uaktualniony plik
hosts na wszystkie komputery i uruchomi je ponownie, zamiast edytowa mnstwo
plikw rc. Zwykle w pliku hosts umieszczasz wszystkie lokalne nazwy hostw i adresy oraz dodajesz adresy uywanych gatewayw i serwerw NIS**.
Powiniene si upewni, e twj resolver w czasie testowania przy inicjacji wykorzystuje jedynie informacje z pliku hosts. Przykadowe pliki dostarczane wraz
z oprogramowaniem DNS czy NIS mog dawa dziwne rezultaty. Aby wszystkie
aplikacje korzystay wycznie z /etc/hosts przy poszukiwaniu adresu IP hosta, musisz dokona edycji pliku /etc/host.conf. Poprzed znakiem komentarza (#) wszystkie
linie zaczynajce si od sowa kluczowego order, i wstaw wiersz:
order hosts

Konfiguracja resolvera jest dokadnie opisana w rozdziale 6, Usugi nazewnicze i konfigurowanie resolvera.
Plik hosts zawiera po jednym wpisie w wierszu, a kady wpis skada si z adresu IP
i nazwy hosta oraz opcjonalnej listy aliasw tej nazwy. Pola s oddzielone spacjami
albo tabulatorami, a pole adresu musi zaczyna si w pierwszej kolumnie. Wszystko, co jest poprzedzone hashem, jest uznawane za komentarz i ignorowane.

Pierwsza liczba w kadej podsieci to jej adres, a ostatnia to adres rozgoszeniowy, a wic w podsieci
mona w rzeczywistoci umieci tylko 62 hosty.
** Adres serwera NIS jest potrzebny tylko wtedy, gdy uywasz NYS Petera Erikssona. Inne implementacje NIS znajduj swoje serwery w czasie pracy za pomoc polecenia ypbind.

66

Rozdzia 5: Konfigurowanie sieci TCP/IP

Nazwy hostw mog by pene lub wzgldne dla domeny lokalnej. W przypadku
vale wprowadziby w pliku hosts pen nazw vale.vbrew.com oraz vale, aby host
by znany zarwno pod nazw oficjaln, jak i skrcon lokaln.
Oto przykad, jak moe wyglda plik hosts dla wirtualnego browaru. Dodano dwie
nazwy specjalne vlager-if1 i vlager-if2, ktre zawieraj adresy obu interfejsw
uywanych na hocie vlager:
#
# Plik hosts
#
# IP
#
127.0.0.1
#
172.16.1.1
172.16.1.2
172.16.1.3
#
172.16.2.1
172.16.2.2
172.16.2.3
172.16.2.4

dla wirtualnego browaru/wirtualnej winiarni


FQDN

aliasy

localhost
vlager.vbrew.com
vstout.vbrew.com
vale.vbrew.com

vlager vlager-if1
vstout
vale

vlager-if2
vbeaujolais.vbrew.com
vbardolino.vbrew.com
vchianti.vbrew.com

vbeaujolais
vbardolino
vchianti

Podobnie jak w przypadku adresw IP hosta, tak i dla numerw sieci powiniene
czasem uywa rwnie nazw symbolicznych. Dlatego plik hosts posiada bliniaczy
plik /etc/networks, ktry odwzorowuje nazwy sieci na ich numery i odwrotnie.
W wirtualnym browarze zainstalowalibymy nastpujcy plik networks:*
# /etc/networks dla wirtualnego browaru
brew-net
172.16.1.0
wine-net
172.16.2.0

Konfigurowanie interfejsu dla IP


Zgodnie z tym, co napisalimy w rozdziale 4, Konfigurowanie urzdze szeregowych,
po skonfigurowaniu sprztu musisz zadba o to, aby oprogramowanie sieciowe
jdra rozpoznawao urzdzenia. Do skonfigurowania interfejsw sieciowych i zainicjowania tablicy rutingu stosuje si kilka polece. Zadania te zwykle s wykonywane ze skryptu inicjujcego sie kadorazowo podczas uruchomienia systemu. Podstawowe narzdzia do tego celu to ifconfig (gdzie if jest skrtem od interfejs) i route.
Polecenie ifconfig jest uywane do udostpnienia interfejsu warstwie sieciowej jdra.
Wymaga to przypisania adresu IP i zdefiniowania innych parametrw oraz aktywacji
interfejsu, czsto nazywanej take podniesieniem interfejsu. Interfejs aktywny
oznacza tutaj, e jdro bdzie przez niego wysyao i odbierao datagramy IP. Oto
najprostsza procedura tego zadania:
ifconfig interfejs adres-IP

Pamitaj, e nazwy w pliku networks nie mog kci si z nazwami z pliku hosts, gdy niektre programy mogyby si dziwnie zachowywa.

Konfigurowanie interfejsu dla IP

67

Polecenie to przypisuje adres-IP do interfejsu i go aktywuje. Wszystkie pozostae parametry s ustawiane na wartoci domylne. Na przykad domylna maska
sieci jest ustalana na podstawie klasy sieci, do ktrej naley podany adres IP, czyli
255.255.0.0 dla klasy B. ifconfig jest opisane szczegowo w podrozdziale Wszystko o
ifconfig.
Polecenie route pozwala na dodanie lub usunicie trasy z tablicy rutingu jdra. Mona wywoa je nastpujco:
route [add|del] [-net|-host] przeznaczenie [if]

Argumenty add i del okrelaj, czy naley doda, czy te usun tras do przeznaczenia. Argumenty -net i -host mwi poleceniu route, czy przeznaczenie to sie, czy host (domylnie, jeeli nic nie podasz, przyjmowany jest host). Argument if jest opcjonalny i pozwala na podanie interfejsu sieciowego, do ktrego powinna zosta przekierowana dana trasa jdro Linuksa rozsdnie zgaduje, jeeli nie
podasz tej informacji. Temat ten zostanie szczegowo wyjaniony w kolejnych podrozdziaach.

Interfejs ptli zwrotnej


W pierwszej kolejnoci aktywowany jest interfejs ptli zwrotnej:
# ifconfig lo 127.0.0.1

Moe si zdarzy, e zamiast adresu IP zobaczysz fikcyjn nazw hosta localhost.


ifconfig bdzie szuka nazwy w pliku hosts, gdzie powinien znajdowa si wpis
wicy t nazw z adresem 127.0.0.1.
# Przykadowy wpis localhost w /etc/hosts
localhost
127.0.0.1

Aby obejrze konfiguracj interfejsu, wywoujesz polecenie ifconfig, podajc jako argument jedynie nazw interfejsu.
$ ifconfig lo
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Collisions:0

Jak widzisz, interfejsowi ptli zwrotnej zostaa przypisana maska sieci 255.0.0.0, poniewa adres 127.0.0.1 naley do klasy A.
Teraz w zasadzie moesz zacz zabaw ze swoj minisieci. Wci jednak brakuje
wpisu w tablicy rutingu, mwicego IP, e moe uywa tego interfejsu jako trasy
do adresu 127.0.0.1. Mona go doda nastpujco:
# route add 127.0.0.1

Znw moesz uy localhost zamiast adresu IP, pod warunkiem, e wpisae go do


pliku /etc/hosts.

68

Rozdzia 5: Konfigurowanie sieci TCP/IP

Nastpnie powiniene sprawdzi, czy wszystko poprawnie dziaa, na przykad


uywajc polecenia ping. Polecenie to sprawdza, czy podany adres jest rzeczywicie
osigalny, i mierzy opnienia wystpujce przy wysyaniu datagramu na ten adres
i z powrotem. Czas potrzebny do wykonania tego zadania jest czsto nazywany
czasem przewidzianym na transmisj i potwierdzenie przyjcia (ang. round-trip
time):
# ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.4
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.4
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.4
^C
--- localhost ping statistics --3 packets transmitted, 3 packets received, 0% packet
round-trip min/avg/max = 0.4/0.4/0.4 ms
#

ms
ms
ms
loss

Kiedy ping zostanie wywoane w pokazany tu sposb, bdzie wysyao pakiety dopty, dopki uytkownik nie przerwie wykonywania polecenia. Znak ^C pokazuje,
gdzie nacisnlimy [CTRL+C].
W tym przykadzie wida, e pakiety s poprawnie dostarczane na adres 127.0.0.1,
a odpowied jest zwracana natychmiast. To znak, e prawidowo skonfigurowae
swj pierwszy interfejs sieciowy.
Jeli wynik polecenia ping nie przypomina pokazanego w powyszym przykadzie,
znaczy to, e masz kopot. Sprawd wszelkie odstpstwa czy nie wskazuj one, e
jakie pliki nie zostay poprawnie zainstalowane? Sprawd, czy binaria ifconfig i route, ktrych uywasz, s kompatybilne z twoj wersj jdra, a przede wszystkim,
czy jdro zostao skompilowane z obsug sieci (powiniene mie katalog /proc/net).
Jeeli otrzymasz komunikat o treci Network unreachable, prawdopodobnie zrobie co nie tak w poleceniu route. Sprawd, czy uye tego samego adresu, ktry
podae w ifconfig.
Przedstawiona procedura powinna umoliwi ci korzystanie z aplikacji sieciowych
na pojedynczym hocie. Po dodaniu wczeniej wspomnianych linii do skryptu inicjujcego sie i upewnieniu si, e zostanie on uruchomiony w czasie startu, moesz
ponownie uruchomi swj komputer i wyprbowa rne aplikacje. Na przykad
telnet localhost powinno zrealizowa poczenie telnet z twoim hostem, pokazujc
monit login:.
Jednak interfejs ptli zwrotnej jest przydatny nie tylko jako przykad w ksikach
o sieci czy do testowania oprogramowania, ale jest rzeczywicie uywany przez
niektre aplikacje w czasie normalnej pracy*. Dlatego zawsze musisz go konfigurowa bez wzgldu na to, czy twoja maszyna jest podczona do sieci, czy nie.

Na przykad wszystkie aplikacje oparte na RPC wykorzystuj interfejs ptli zwrotnej do rejestrowania
si w demonie portmapper w czasie startu. Do aplikacji tych nale NIS i NFS.

Konfigurowanie interfejsu dla IP

69

Interfejsy Ethernet
Konfigurowanie interfejsu Ethernet jest prawie identyczne z konfigurowaniem interfejsu ptli zwrotnej. Wymaga jedynie wprowadzenia kilku dodatkowych parametrw, jeeli uywasz podziau na podsieci.
W wirtualnym browarze podzielilimy oryginaln sie IP klasy B na podsieci o postaci sieci klasy C. Aby interfejs rozpozna podzia na podsieci, wywoanie ifconfig
powinno by nastpujce:
# ifconfig eth0 vstout netmask 255.255.255.0

Polecenie to przypisuje interfejsowi eth0 adres IP vstout (172.16.1.2). Gdybymy pominli mask sieci, ifconfig zredukowaoby mask sieci na podstawie adresu IP i uzyskalibymy niepoprawn mask postaci 255.255.0.0. Teraz szybko sprawdzamy wynik:
# ifconfig eth0
eth0
Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0

Moesz zauway, e ifconfig automatycznie ustawia adres rozgoszeniowy (pole


Bcast) na typow warto, ktra skada si z numeru sieci hosta i ustawionych
wszystkich bitw w czci numeru hosta. Take maksymalna jednostka transmisji
(maksymalny rozmiar datagramw IP tworzonych dla interfejsu przez jdro) zostaa ustawiona na maksymalny rozmiar pakietw Ethernet: 1500 bajtw. Zwykle
bdziesz uywa wartoci domylnych, ale w razie potrzeby moesz je zmieni za
pomoc specjalnych opcji, ktre zostan opisane w podrozdziale Wszystko o ifconfig.
Tak jak przy konfiguracji interfejsu ptli zwrotnej, musisz teraz utworzy wpis w tablicy rutingu mwicy jdru o sieci, ktra jest osigalna przez eth0. W przypadku
wirtualnego browaru moesz wywoa polecenie route nastpujco:
# route add -net 172.16.1.0

Z pocztku wyglda to nieco tajemniczo, poniewa nie jest zupenie jasne, jak route
wykrywa interfejs, przez ktry ma przesya pakiety. Jednak cay zabieg jest raczej
prosty: jdro sprawdza wszystkie interfejsy, ktre zostay do tej pory skonfigurowane, i porwnuje adres docelowy (w tym przypadku 172.16.1.0) z czci sieciow
adresu interfejsu (to znaczy wykonuje bitow logiczn operacj AND na adresie interfejsu i masce sieci). Jedynym pasujcym interfejsem jest eth0.
A do czego suy opcja -net? Jest ona potrzebna, poniewa route moe obsuy obie
trasy: do sieci i do pojedynczego hosta (co widziae wczeniej przy localhost). Kiedy podamy adres w notacji kropkowej, route prbuje zgadn, czy jest to adres sieci
czy hosta, patrzc na bity czci hosta. Jeeli w adresie cz hosta jest zerowa, route
zakada, e chodzi o adres sieci w przeciwnym razie route uznaje go za adres hosta.
Dlatego route uznaoby, e 172.16.1.0 to adres hosta, a nie adres sieci, poniewa nie
wie, e zastosowalimy podzia na podsieci. Musimy powiedzie jawnie, e chodzi
o sie, a wic podajemy opcj -net.

70

Rozdzia 5: Konfigurowanie sieci TCP/IP

Oczywicie wpisywanie polecenia route jest nuce i atwo przy tym o pomyk. Wygodniejsze jest uycie nazw sieci, ktre zdefiniowalimy w /etc/networks. Polecenie
staje si bardziej czytelne i mona nawet pomin opcj -net, poniewa route wie, e
172.16.1.0 oznacza sie.
# route add brew-net

Teraz, gdy ju masz za sob podstawowe kroki konfiguracyjne, upewnj si, e interfejs Ethernet naprawd dziaa poprawnie. Wybierz jaki host ze swojej sieci, na
przykad vlager, i napisz:
# ping vlager
PING vlager: 64 byte packets
64 bytes from 172.16.1.1: icmp_seq=0. time=11. ms
64 bytes from 172.16.1.1: icmp_seq=1. time=7. ms
64 bytes from 172.16.1.1: icmp_seq=2. time=12. ms
64 bytes from 172.16.1.1: icmp_seq=3. time=3. ms
^C
--- vstout.vbrew.com PING Statistics --4 packets transmitted, 4 packets received, 0
round-trip (ms) min/avg/max = 3/8/12

Jeeli twj wynik si rni, co jest nie tak. Jeeli zauwaysz, e wspczynnik
utraty pakietw ma jak nieprawdopodobn warto, wskazuje to na problem
sprztowy, na przykad ze terminatory w przypadku kabla wsposiowego lub
ich brak.
Jeeli nie uzyskasz w ogle adnych odpowiedzi, powiniene sprawdzi konfiguracj interfejsu za pomoc polecenia netstat (patrz podrozdzia Polecenie netstat w tym
rozdziale). Statystyka pakietw pokazana przez ifconfig powinna powiedzie ci, czy
jakie pakiety zostay w ogle wysane przez interfejs. Jeeli masz rwnie dostp do
zdalnego hosta, powiniene podej do niego i sprawdzi statystyki interfejsu. W ten
sposb moesz dokadnie stwierdzi, gdzie pakiety zostay zgubione. Ponadto za
pomoc polecenia route powiniene wywietli informacje o rutingu i zobaczy, czy
oba hosty maj poprawne wpisy dotyczce rutingu. route wywietli pen tablic rutingu jdra, jeeli zostanie wywoane bez argumentw (-n powoduje jedynie, e s
drukowane adresy w postaci numerycznej, a nie nazwy hostw):
# route -n
Kernel routing
Destination
127.0.0.1
172.16.1.0

table
Gateway
*
*

Genmask
255.255.255.255
255.255.255.0

Flags
UH
U

Metric Ref Use Iface


1
0
112 lo
1
0
10 eth0

Znaczenie poszczeglnych pl zostanie wyjanione dalej w podrozdziale Polecenie


netstat. Kolumna Flags zawiera list znacznikw ustawionych dla kadego interfejsu. U zawsze jest ustawione w przypadku aktywnych interfejsw, a H mwi, e adresem docelowym jest adres hosta. Jeeli znacznik H jest ustawiony dla trasy, ktra
miaa by tras do sieci, musisz ponownie wyda polecenie route z opcj -net. Aby dowiedzie si, czy wprowadzona trasa jest w ogle uywana, sprawd, czy warto
pola Use w drugiej kolumnie od koca zwiksza si pomidzy wywoaniami polecenia ping.

Konfigurowanie interfejsu dla IP

71

Ruting przez gateway


W poprzednim podrozdziale omwilimy konfiguracj hosta podczonego do
jednej sieci Ethernet. Czsto si jednak zdarza, e sieci s ze sob poczone. Su
do tego gatewaye, ktre cz po prostu dwie lub wicej sieci Ethernet, ale mog
take stanowi pomost do wiata zewntrznego, na przykad do Internetu. Aby wykorzysta gateway, musisz poda warstwie sieciowej dodatkowe informacje o rutingu.
Sieci Ethernet nalece do wirtualnego browaru i wirtualnej winiarni s poczone
takim wanie gatewayem. Nosi on nazw vlager. Zakadajc, e vlager zosta ju
skonfigurowany, musimy po prostu doda do tablicy rutingu vstout wpis, ktry poinformuje jdro, jak moe dosta si przez vlager do wszystkich hostw w sieci winiarni. Odpowiednie wywoanie polecenia route zostao pokazane poniej. Sowo
kluczowe gw mwi, e nastpny argument oznacza gateway:
# route add wine-net gw vlager

Oczywicie dowolny host w sieci winiarni, z ktrym si chcesz poczy, musi mie
wpis dotyczcy trasy do sieci browaru. W przeciwnym razie bdziesz w stanie jedynie wysa dane z sieci browaru do sieci winiarni, ale hosty w sieci winiarni nie
bd w stanie odpowiedzie.
Przykad ten opisuje tylko gateway, ktry przekazuje pakiety pomidzy dwoma wyizolowanymi sieciami Ethernet. Zamy teraz, e vlager ma take poczenie z Internetem (przyjmij, e przez dodatkowe cze SLIP). W takim razie chcemy, aby datagramy adresowane do dowolnego miejsca poza sieci browaru byy obsugiwane
przez vlager. Mona to zrobi, definiujc ten gateway jako domylny dla vstout:
# route add default gw vlager

Nazwa sieci default stanowi skrt dla adresu 0.0.0.0, ktry oznacza tras domyln.
Domylna trasa pasuje do kadego adresu docelowego i bdzie uywana, jeeli w tablicy rutingu nie ma dokadniejszej trasy. Nie musisz dodawa tej nazwy do pliku
/etc/networks, poniewa jest ona wbudowana w polecenie route.
Jeeli polecenie ping skierowane do hosta znajdujcego si za jednym lub kilkoma
gatewayami pokazuje, e duo pakietw jest gubionych, moe to oznacza, e sie
jest zapchana. Gubienie pakietw nie wynika z wad technicznych, ale z tymczasowego przecienia hostw przekazujcych, ktre powoduje opnienia, a nawet gubienie przychodzcych pakietw.

Konfigurowanie gatewaya
Skonfigurowanie maszyny, ktra przekazuje pakiety pomidzy dwoma sieciami Ethernet, jest dosy proste. Wrmy do hosta vlager, ktry jest wyposaony w dwie
karty Ethernet, a kada z nich jest podczona do jednej z dwch sieci. Musisz jedynie skonfigurowa oddzielnie obie karty i nada im odpowiednie adresy IP oraz wyznaczy trasy.

72

Rozdzia 5: Konfigurowanie sieci TCP/IP

Dosy przydatne jest dodanie informacji o obu interfejsach do pliku hosts, by mie
pod rk atwe do zapamitania nazwy, co pokazano w poniszym przykadzie.
172.16.1.1
172.16.2.1

vlager.vbrew.com
vlager-if2

vlager vlager-if1

Aby skonfigurowa te dwa interfejsy, naley wyda nastpujce polecenia:


#
#
#
#

ifconfig eth0 vlager-if1


route add brew-net
ifconfig eth1 vlager-if2
route add wine-net

Jeeli te polecenia nie dziaaj, sprawd, czy jdro zostao skompilowane z wczon
opcj przekazywania IP (ang. IP forwarding). W tym celu upewnij si, czy pierwsza
liczba w drugim wierszu pliku /proc/net/snmp jest ustawiona na 1.

Interfejs PLIP
cze PLIP uywane do poczenia dwch komputerw rni si nieco od Ethernetu. cza PLIP nale do czy typu punkt-punkt, co oznacza, e na kadym kocu
takiego cza jest jeden host. Sieci typu Ethernet s nazywane sieciami rozgoszeniowymi. Konfiguracja czy punkt-punkt jest inna, poniewa w odrnieniu od sieci
rozgoszeniowych nie tworz one wasnej sieci.
PLIP to bardzo tanie i przenone cze pomidzy komputerami. Jako przykad rozwamy komputer typu laptop nalecy do pracownika wirtualnego browaru. Komputer ten jest podczony do hosta vlager przez cze PLIP. Sam laptop nazywa si
vlite i ma tylko jeden port rwnolegy. W czasie uruchamiania systemu port ten rejestruje si jako plip1. Aby uaktywni cze, musisz skonfigurowa interfejs plip1, uywajc poniszych polece*:
# ifconfig plip1 vlite pointopoint vlager
# route add default gw vlager

Pierwsze polecenie konfiguruje interfejs mwic jdru, e jest to cze punkt-punkt


i e druga strona ma adres vlager. Drugie polecenie dodaje domyln tras, uywajc hosta vlager jako gatewaya. Do uaktywnienia cza na hocie vlager niezbdne jest podobne polecenie ifconfig (wywoanie route nie jest potrzebne):
# ifconfig plip1 vlager pointopoint vlite

Zauwa, e interfejs plip1 na hocie vlager nie potrzebuje oddzielnego adresu IP, ale
mona mu nada rwnie adres 172.16.1.1. cza punkt-punkt nie obsuguj bezporednio sieci, a wic interfejsy nie wymagaj adresu. Jdro wykorzystuje informacje
o interfejsie zawarte w tablicy rutingu, aby unikn jakich pomyek*.
Skonfigurowalimy ju ruting z laptopa do sieci browaru. Wci jednak nie mamy
trasy z dowolnego hosta browaru do vlite. Dodawanie takiej trasy w tablicy rutingu

Pisownia pointopoint nie jest bdna. Tak si po prostu pisze.

Konfigurowanie interfejsu dla IP

73

kadego hosta jest wyjtkowo kopotliwe. Trzeba byoby tam wskaza, e vlager jest
gatewayem dla vlite:
# route add vlite gw vlager

Dla tras tymczasowych lepszy jest ruting dynamiczny. Na kadym hocie w sieci
mona zainstalowa demona rutingu gated, ktry bdzie dynamicznie rozpowszechnia informacje o rutingu. Prostszym wyjciem jednak jest uycie proxy ARP (Address
Resolution Protocol). Dziki proxy ARP, vlager bdzie odpowiada na kade zapytanie ARP o vlite, wysyajc wasny adres Ethernet. Wszystkie pakiety dla vlite bd
docieray do vlagera, ktry nastpnie bdzie je przekazywa do laptopa. Do proxy
ARP powrcimy w podrozdziale Sprawdzanie tablic ARP.
Obecna wersja net-tools zawiera narzdzie o nazwie plipconfig pozwalajce na ustawienie odpowiednich parametrw czasowych PLIP. IRQ dla portu rwnolegego mona
ustawi za pomoc polecenia ifconfig.

Interfejsy SLIP i PPP


Cho cza SLIP i PPP s, tak jak PLIP, jedynie prostymi czami typu punkt-punkt,
mona o nich powiedzie duo wicej. Zwykle ustanowienie poczenia SLIP wymaga zadzwonienia do drugiej strony przez modem i ustawienia trybu SLIP dla
cza szeregowego. Z PPP korzysta si podobnie. SLIP i PPP omawiamy dokadniej
w rozdziaach 7, IP cza szeregowego, i 8, Protok punkt-punkt.

Interfejs fikcyjny (ang. dummy interface)


Interfejs fikcyjny (ang. dummy interface) jest nieco egzotyczny, ale jednak przydatny.
Jego gwn zalet w przypadku pojedynczych hostw i komputerw posiadajcych jedynie podczenie do sieci IP jest cze komutowane. W rzeczywistoci
przewanie obsuguje pojedyncze hosty.
Problem z pojedynczymi hostami polega na tym, e maj one aktywne tylko jedno
urzdzenie sieciowe interfejs ptli zwrotnej, ktremu zwykle jest przypisywany
adres 127.0.0.1. Czasami jednak musisz wysa dane na oficjalny adres IP hosta lokalnego. Na przykad zamy, e laptop vlite zosta chwilowo odczony od sieci.
Aplikacja na vlite moe teraz chcie wysa dane do innej aplikacji na tym samym
hocie. Sprawdzenie vlite w pliku /etc/hosts daje adres IP 172.16.1.65, a wic aplikacja
prbuje wysya dane na taki adres. Poniewa interfejs ptli zwrotnej jest obecnie jedynym aktywnym interfejsem w tym komputerze, jdro nie ma pojcia, e adres
172.16.1.65 tak naprawd odnosi si do tej samej maszyny! W konsekwencji jdro
odrzuca datagram i zwraca do aplikacji komunikat o bdzie.
Tu wanie przydaje si interfejs fikcyjny. Rozwizuje on problem wykorzystujc interfejs ptli zwrotnej. W przypadku vlite, po prostu nadajesz interfejsowi adres
172.16.1.65 i dodajesz tras, tak by na niego wskazywaa. Kady datagram przezna*

Ostrono nakazuje skonfigurowa cze PLIP czy SLIP dopiero wtedy, gdy w peni skonfigurujesz
wpisy w tablicy rutingu dla kart Ethernet. W przeciwnym razie w niektrych starszych jdrach twoja
trasa moga si koczy, wskazujc na cze punkt-punkt.

74

Rozdzia 5: Konfigurowanie sieci TCP/IP

czony dla adresu 172.16.1.65 bdzie od tej chwili dostarczony lokalnie. Oto poprawne wywoanie*:
# ifconfig dummy vlite
# route add vlite

Alias IP
Nowe jdra obsuguj funkcj, ktra moe zastpi interfejs fikcyjny i peni inne
uyteczne role. Alias IP pozwala na skonfigurowanie wielu adresw IP na jednym
urzdzeniu fizycznym. W najprostszym przypadku mona inaczej zrealizowa interfejs fikcyjny. Wystarczy skonfigurowa adres hosta jako alias dla interfejsu ptli
zwrotnej i moesz zupenie zrezygnowa z interfejsu fikcyjnego. W bardziej
zoonych zastosowaniach mgby skonfigurowa swj host tak, by wyglda jak
inne hosty, kady o swoim wasnym adresie IP. Konfiguracja taka jest czasem nazywana tworzeniem hostw wirtualnych, cho technicznie jest rwnie uywana
w wielu innych celach**.
Aby skonfigurowa alias dla interfejsu, musisz najpierw sprawdzi, czy jdro zostao skonfigurowane z obsug aliasw IP (sprawd, czy masz plik /proc/net/ip_alias;
jeeli nie trzeba ponownie skompilowa jdro). Konfiguracja aliasu IP przebiega
tak samo jak konfiguracja normalnego urzdzenia sieciowego. Jedyna rnica polega na uyciu specjalnej nazwy wskazujcej, e jest to alias. Na przykad:
# ifconfig lo:0 172.16.1.1

To polecenie utworzy alias o adresie 172.16.1.1 dla interfejsu ptli zwrotnej.


Aliasy IP s oznaczane przez dodanie :n do rzeczywistej nazwy urzdzenia sieciowego, gdzie n jest liczb cakowit. W naszym przykadzie tworzymy alias
o numerze 0 dla urzdzenia sieciowego lo. Dziki numeracji pojedyncze urzdzenie fizyczne moe obsuy wiele aliasw.
Kady alias moe by traktowany jako oddzielne urzdzenie i z punktu widzenia
oprogramowania IP jdra tak wanie jest. Bdzie jednak wspdzieli sprzt z innym interfejsem.

Wszystko o ifconfig
Polecenie ifconfig ma duo wicej parametrw, ni opisalimy do tej pory. Typowe
wywoanie wyglda tak:
ifconfig interfejs [adres [parametry]]

Urzdzenie fikcyjne nosi nazw dummy0, jeeli zaadowae jego sterownik jako modu, a nie wbudowae w jdro. Numeracja jest potrzebna, poniewa moesz zaadowa wiele moduw i mie wicej
ni jedno urzdzenie fikcyjne
** Uywanie aliasw IP bardziej poprawnie jest nazywane tworzeniem hostw wirtualnych w warstwie
sieciowej. W wiecie WWW i SMPT bardziej popularne jest tworzenie hostw wirtualnych uywanych
w warstwie aplikacji, gdzie ten sam adres IP jest uywany dla kadego hosta wirtualnego, ale przy kadym daniu warstwy aplikacji jest podawana inna nazwa hosta. Usugi takie jak FTP nie s w stanie
dziaa w ten sposb i wymagaj hostw wirtualnych w warstwie sieciowej.

Wszystko o ifconfig

75

Oczywiste jest, e interfejs to nazwa interfejsu, a adres to nazwa adresu IP


przypisanego interfejsowi. Moe by to adres w postaci liczbowej lub nazwa, ktr
ifconfig odnajdzie w pliku /etc/hosts.
Gdybymy wywoali ifconfig tylko z nazw interfejsu, zobaczylibymy konfiguracj
interfejsu. Przy wywoaniu bez parametrw ifconfig wywietla wszystkie interfejsy,
jakie masz do tej pory skonfigurowane. Opcja -a wymusza rwnie pokazanie interfejsw nieaktywnych. Przykadowe wywoanie dla interfejsu Ethernet eth0 moe
wyglda nastpujco:
# ifconfig eth0
eth0
Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0

Pola MTU i Metric pokazuj aktualne wartoci MTU i metryki interfejsu. Metryka
jest tradycyjnie uywana przez niektre systemy operacyjne do obliczenia kosztu
trasy. Linux nie korzysta z tej wartoci, ale definiuje j dla zachowania kompatybilnoci.
Wiersze RX i TX pokazuj, ile pakietw zostao pomylnie odebranych i wysanych, ile wystpio bdw, ile pakietw zostao pominitych (prawdopodobnie ze wzgldu na brak pamici), a ile zostao zgubionych ze wzgldu na przecienie. Przecienia odbiorcy wystpuj zwykle wtedy, gdy pakiety nadchodz szybciej ni jdro jest w stanie obsuy ostatnie przerwanie. Znaczniki pokazywane przez ifconfig z grubsza odpowiadaj nazwom opcji wiersza polece,
ktre omwimy dalej.
Poniej przedstawiamy list parametrw rozpoznawanych przez ifconfig z odpowiednimi nazwami znacznikw. Opcje, ktre wczaj funkcj, pozwalaj rwnie
j wyczy, jeli przed opcj umiecimy znak minus (-).
up
Ta opcja udostpnia interfejs warstwie IP. Opcja jest domylna w momencie
podania w wierszu polece adresu. Moe by take uyta do ponownego
wczenia interfejsu, ktry zosta tymczasowo zamknity za pomoc opcji down.
Z t opcj zwizane s znaczniki UP i RUNNING.
down
Ta opcja oznacza, e interfejs jest niedostpny dla warstwy IP. W rzeczywistoci
odcina cay ruch IP do interfejsu. Zauwa, e ta opcja usunie automatycznie take
wszystkie wpisy w tablicy rutingu, ktre wykorzystuj dany interfejs.
netmask maska
Ta opcja okrela mask sieci uywan przez interfejs. Moe by ona podana
w postaci 32-bitowej liczby szesnastkowej poprzedzonej 0x albo w postaci liczb
dziesitnych oddzielonych kropkami. Cho posta liczb dziesitnych jest popularniejsza, czsto duo atwiej jest pracowa z notacj szesnastkow. Maski sieci
s w gruncie rzeczy binarne i atwiej dokona konwersji z zapisu binarnego na
szesnastkowy, ni z binarnego na dziesitny.

76

Rozdzia 5: Konfigurowanie sieci TCP/IP

pointopoint adres
Ta opcja jest uywana przy czach IP punkt-punkt czcych tylko dwa hosty.
Jest potrzebna na przykad do skonfigurowania interfejsw SLIP i PPP. Jeeli zostanie ustawiony adres punkt-punkt, ifconfig wywietli znacznik POINTOPOINT.
broadcast adres
Adres rozgoszeniowy jest zwykle zoony z adresu sieci i wszystkich bitw ustawionych w adresie hosta. Niektre implementacje IP (systemy pochodzce na
przykad z BSD 4.2) wykorzystuj inny schemat, w ktrym wszystkie bity w czci hosta s zerowane. Opcja broadcast przystosowuje si do tych dziwnych rodowisk. Jeeli adres rozgoszeniowy zosta okrelony, ifconfig wywietla znacznik
BROADCAST.
irq
Ta opcja pozwala ustali IRQ uywane przez zadane urzdzenia. Jest to przydatne zwaszcza w czach PLIP, ale take przy niektrych kartach Ethernet.
metric liczba
Ta opcja moe by uyta do przypisania metryki we wpisie utworzonym dla interfejsu w tablicy rutingu. Metryka jest uywana przez protok rutowania RIP
(Routing Information Protocol) do tworzenia tablic rutingu dla sieci*. Domylna
metryka uywana przez ifconfig ma warto zero. Jeeli nie korzystasz z demona
RIP, nie potrzebujesz w ogle tej opcji. A nawet jeeli go uywasz, rzadko bdziesz musia zmienia warto metryki.
mtu bajty
W ten sposb ustawia si maksymaln jednostk transmisji, ktra okrela maksymaln liczb oktetw, jak interfejs jest w stanie obsuy w jednym ruchu.
W przypadku Ethernetu domylna warto MTU wynosi 1500 (najwikszy dopuszczalny rozmiar dla pakietu Ethernet). W przypadku interfejsw SLIP jest to
296 (nie ma ogranicze MTU w czach SLIP ta warto jest po prostu pewnym
kompromisem).
arp
Ta opcja jest waciwa dla sieci rozgoszeniowych, takich jak Ethernet, lub dla radia pakietowego. Wcza ona protok rozwizywania adresw (ARP), uywany
do znajdowania fizycznych adresw hostw podczonych do sieci. W sieciach
rozgoszeniowych uycie tego protokou jest domylne. Jeeli ARP jest wyczony, ifconfig wywietla znacznik NOARP.
-arp
Ta opcja wycza uycie ARP na interfejsie.

RIP wybiera optymaln tras do zadanego hosta na podstawie dugoci drogi. Jest ona obliczana
przez zsumowanie pojedynczych metryk na kadym czu host-host. Domylnie hop ma warto 1, ale
moe by to cakowita warto dodatnia mniejsza od 16. Dugo trasy o wartoci 16 odpowiada nieskoczonoci. Takie trasy s uznawane za bezuyteczne. Parametr metric ustala koszt hopa, ktry jest nastpnie rozgaszany przez demona rutingu.

Polecenie netstat

77

promisc
Ta opcja przecza interfejs w tryb przechwytywania pakietw (ang. promiscuous
mode). W sieciach rozgoszeniowych oznacza to, e interfejs odbiera wszystkie
pakiety, bez wzgldu na to, czy s one dla niego przeznaczone, czy te nie. Pozwala to na analiz ruchu za pomoc filtrw pakietw i tym podobnych narzdzi,
co jest nazywane take snoopingiem Ethernetu. Zwykle jest to dobra technika wykrywania problemw z sieci, ktre inn metod byyby trudne do znalezienia.
Narzdzia takie jak tcpdump opieraj si na tym trybie interfejsu.
Z drugiej strony opcja ta pozwala wamywaczom na robienie brzydkich rzeczy,
na przykad na przegldanie pakietw twojej sieci w poszukiwaniu hase.
Moesz si zabezpieczy przed tego typu atakiem, zabraniajc komukolwiek
wcza komputery do twojej sieci Ethernet. Moesz take uywa bezpiecznych
protokow uwierzytelniania, takich jak Kerberos czy pakiet secure shell*. Opcji
tej odpowiada znacznik PROMISC.
-promisc
Ta opcja wycza tryb przechwytywania pakietw.
allmulti
Adresy grupowe (ang. multicast addresses) maj wiele wsplnego z adresami rozgoszeniowymi Ethernet, z tym wyjtkiem, e nie implikuj automatycznego kierowania do pakietw wszystkich czonkw sieci. Pakiety wysane na
adres grupowy dostaj tylko te osoby, ktre ustawiy ich odbieranie. Jest to przydatne w takich zastosowaniach, jak wideokonferencje oparte na sieci Ethernet
czy audio w sieci, gdzie tylko zainteresowani odbieraj dane pakiety. Adresowanie grupowe jest obsugiwane przez wikszo sterownikw Ethernet, aczkolwiek nie przez wszystkie. Gdy opcja ta jest wczona, interfejs odbiera i przekazuje pakiety grupowe do przetwarzania. Opcji tej odpowiada znacznik
ALLMULTI.
-allmulti
Ta opcja wycza adresy grupowe.

Polecenie netstat
netstat jest przydatnym narzdziem do sprawdzania konfiguracji sieci i jej dziaania.
W gruncie rzeczy jest to zestaw kilku poczonych ze sob narzdzi. W kolejnych
podrozdziaach omawiamy kad z funkcji polecenia.

Wywietlanie tablicy rutingu


Kiedy wywoasz netstat z opcj -r, wywietli ono tablic rutingu jdra w postaci podobnej jak polecenie route. Na hocie vstout wynik wyglda nastpujco:
# netstat -nr
Kernel IP routing table
Destination
Gateway
*

Genmask

Flags

ssh znajduje si w katalogu /pub/ssh pod adresem ftp.cs.hut.fi.

MSS

Window

irtt

Iface

78
127.0.0.1
172.16.1.0
172.16.2.0

Rozdzia 5: Konfigurowanie sieci TCP/IP


*
*
172.16.1.1

255.255.255.255 UH
255.255.255.0
U
255.255.255.0
UG

0
0
0

0
0
0

0
0
0

lo
eth0
eth0

Opcja -n powoduje, e netstat wywietla adresy w postaci numerw IP, a nie symbolicznych nazw hostw i sieci. Opcja ta jest szczeglnie przydatna, jeeli chcesz
unikn szukania adresw w sieci (tzn. na serwerach DNS albo NIS).
Druga kolumna wyniku polecenia netstat pokazuje gateway, na ktry wskazuje
dany wpis. Jeeli gateway nie jest uywany, wywietlana jest gwiazdka. Trzecia kolumna pokazuje mask sieci dla danej trasy. Gdy podamy adres IP, dla ktrego chcemy znale odpowiedni tras, jdro przeglda kolejne wpisy w tablicy rutingu
i wykonuje bitowo logiczn operacj AND na adresie i masce sieci, porwnujc adres docelowy z tras.
Czwarta kolumna zawiera nastpujce znaczniki opisujce tras:
G Trasa przez gateway.
U Interfejs, ktry ma by uyty, jest aktywny.
H Przez t tras mona dosta si tylko do jednego hosta. Na przykad znacznik ten
wystpuje w przypadku wpisu dla ptli zwrotnej 127.0.0.1.
D Ta trasa jest tworzona dynamicznie. Znacznik jest ustawiany, jeeli wpis w tablicy zosta stworzony przez demona rutingu, na przykad gated, lub przez komunikat przekierowania ICMP (zobacz podrozdzia Internetowy protok komunikatw
kontrolnych (ICMP) w rozdziale 2).
M Ten znacznik jest ustawiony, jeeli wpis w tablicy zosta zmodyfikowany przez
komunikat przekierowania ICMP.
! Ta trasa zostaa odrzucona i datagramy do niej skierowane bd gubione.
Kolejne trzy kolumny pokazuj MSS, Window i irtt, czyli zmienne dotyczce
pocze TCP zrealizowanych w oparciu o dan tras. MSS to maksymalny rozmiar
segmentu (ang. maximum segment size); jest to rozmiar najwikszego datagramu, jaki
jdro moe zbudowa i wysa t tras. Window to maksymalna liczba danych, jak
system przyjmie jednorazowo ze zdalnego hosta. Skrt irtt pochodzi od sw initial round trip time (wstpny czas przewidywany na transmisj i potwierdzenie przyjcia). Protok TCP zapewnia niezawodno dostarczania danych pomidzy hostami, poniewa ponownie wysya datagram, jeeli zostanie on zgubiony. Pilnuje te
licznika mierzcego czas potrzebny na dostarczenie datagramu na drugi koniec
i odebranie potwierdzenia. Na podstawie tego licznika wie, po jakim czasie naley
dokona ewentualnej ponownej transmisji datagramu. Proces ten jest nazywany
czasem przewidywanym na transmisj i potwierdzenie przyjcia (ang. round-trip time). Wstpny czas przewidywany na transmisj i potwierdzenie przyjcia to warto, jakiej protok TCP uywa, kiedy po raz pierwszy realizuje poczenie. W wikszoci typw sieci domylna warto jest poprawna, ale w przypadku niektrych
wolnych sieci, jak na przykad w pewnych typach sieci amatorskiego radia pakietowego, czas ten jest zbyt krtki i powoduje niepotrzebne retransmisje. Warto irtt

Polecenie netstat

79

moe by ustawiona za pomoc polecenia route. Wartoci zero w tych polach oznaczaj, e bdzie uywana warto domylna.
No i ostatnie pole pokazuje interfejs sieciowy uywany dla danej trasy.

Wywietlanie statystyk interfejsu


Wywoanie netstat z opcj -i wywietla statystyki obecnie skonfigurowanych interfejsw sieciowych. Jeeli zostanie podana rwnie opcja -a, wywietlane s wszystkie
interfejsy obecne w jdrze, a nie tylko te obecnie skonfigurowane. Na hocie vstout
wynik polecenia netstat bdzie wyglda nastpujco:
# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
lo
0
0 3185
0
0
0 3185
0
0
0
BLRU
eth0 1500
0 972633
17
20
120 628711
217
0
0
BRU

Pola MTU i Met pokazuj aktualnie ustalone wartoci MTU i metryki dla danego interfejsu. Kolumny RX i TX pokazuj, ile pakietw zostao odebranych albo
wysanych bezbdnie (RX-OK/TX-OK), albo uszkodzonych (RX-ERR/TX-ERR), ile
pakietw zostao zgubionych (RX-DRP/TX-DRP) oraz ile zostao zgubionych z powodu przecienia (RX-OVR/TX-OVR).
Ostatnia kolumna pokazuje znaczniki, ktre zostay ustawione dla danego interfejsu.
Litery te s skrcon wersj dugich nazw znacznikw wywietlanych dla konfiguracji interfejsu przez ifconfig:
B Zosta ustawiony adres rozgoszeniowy.
L Ten interfejs to urzdzenie ptli zwrotnej.
M Odbierane s wszystkie pakiety (tryb przechwytywania).
O ARP dla interfejsu jest wyczony.
P Jest to poczenie punkt-punkt.
R Interfejs dziaa.
U Interfejs jest aktywny.

Wywietlanie pocze
netstat obsuguje zestaw opcji do wywietlania aktywnych lub pasywnych gniazd.
Opcje -t, -u, -w i -x pokazuj aktywne poczenia TCP, UDP, RAW i gniazda Uniksa.
Jeeli ponadto podasz opcj -a, gniazda oczekujce na poczenie (tzn. nasuchujce)
take zostan wywietlone. W wyniku zobaczysz list wszystkich serwerw, ktre
aktualnie dziaaj w twoim systemie.
Wywoanie netstat -ta na hocie vlager da nastpujcy wynik:
$ netstat -ta
Active Internet Connections
Proto Recv-Q Send-Q Local Address
tcp
0
0 *:domain
tcp
0
0 *:time
tcp
0
0 *:smtp

Foreign Address
*:*
*:*
*:*

(State)
LISTEN
LISTEN
LISTEN

80

Rozdzia 5: Konfigurowanie sieci TCP/IP

tcp
tcp
tcp
tcp
tcp
tcp
tcp
tcp
tcp

0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0

vlager:smtp
*:telnet
localhost:1046
*:chargen
*:daytime
*:discard
*:echo
*:shell
*:login

vstout:1040
*:*
vbardolino:telnet
*:*
*:*
*:*
*:*
*:*
*:*

ESTABLISHED
LISTEN
ESTABLISHED
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN

Wida, e wikszo serwerw po prostu oczekuje na nadchodzce poczenia. Jednak czwarta linia pokazuje przychodzce poczenie SMTP z hosta vstout, a szsta
linia mwi, e istnieje wychodzce poczenie telnet do hosta vbardolino*.
Uycie samej opcji -a wywietli wszystkie gniazda ze wszystkich rodzin.

Sprawdzanie tablic ARP


W pewnych sytuacjach warto obejrze lub zmieni zawarto tablic ARP jdra. Przydaje si to, kiedy na przykad podejrzewasz, e zduplikowany adres internetowy
jest powodem sporadycznych problemw z sieci. Narzdzie arp zostao stworzone
do uycia w tego typu sytuacjach. Opcje wiersza polece arp s nastpujce:
arp [-v] [-t typhw] -a [nazwahosta]
arp [-v] [-t typhw] -s nazwahosta hwadres
arp [-v] -d nazwahosta [nazwahosta...]

Wszystkie argumenty nazwahosta mog mie posta symbolicznych nazw hostw


lub adresw IP w notacji kropkowej.
Pierwsze wywoanie wywietla wpis ARP dla podanego adresu IP lub nazwy hosta
albo wszystkich hostw, jeeli nie zostanie podana nazwahosta. Na przykad
wywoanie arp na hocie vlager moe pokaza co takiego:
# arp -a
IP address
172.16.1.3
172.16.1.2
172.16.2.4

HW type
10Mbps Ethernet
10Mbps Ethernet
10Mbps Ethernet

HW address
00:00:C0:5A:42:C1
00:00:C0:90:B3:42
00:00:C0:04:69:AA

S to adresy Ethernet hostw vlager, vstout i vale.


Uywajc opcji -t, moesz ograniczy wywietlanie do zadanego typu karty. Moe
to by ether, ax25 albo pronet, czyli odpowiednio Ethernet 10 Mb/s, AMPR
AX.25 i token ring IEEE 802.5.
Opcja -s jest uywana do dodawania na stae w tablicy ARP adresu ethernetowego
nazwyhosta. Argument hwadres okrela adres sprztowy, ktry domylnie
oczekuje, e jest adresem Ethernet podanym w postaci szeciu liczb szesnastkowych
oddzielonych dwukropkami. Za pomoc opcji -t moesz rwnie ustawi adresy
sprztowe dla innych typw urzdze.
*

Na podstawie numerw portw moesz stwierdzi, czy poczenie jest wychodzce. Numer portu pokazany dla hosta wywoujcego bdzie zawsze liczb cakowit. Na hocie, z ktrym jest realizowane
poczenie, bdzie uywany port dobrze znanej usugi i netstat pokae symboliczn nazw, na
przykad smtp, ktra jest zdefiniowana w pliku /etc/services.

Sprawdzanie tablic ARP

81

Zapytania ARP o zdalny host nie udaj si czasem z rnych powodw. Na


przykad gdy sterownik ARP jest bdny lub inny host w sieci bdnie identyfikuje
si z adresem IP innego hosta. Problem ten wymaga rcznego dodania adresu IP do
tablicy ARP. Adresy IP na sztywno (rcznie) wpisane w tablicy ARP s rwnie (bardzo drastycznym) zabezpieczeniem przed tymi hostami w twojej sieci, ktre udaj,
e s kim innym.
Wywoanie arp z opcj -d powoduje usunicie wszystkich wpisw ARP dotyczcych
danego hosta. W ten sposb mona wymusi na interfejsie ponown prb uzyskania adresu Ethernet zwizanego z danym adresem IP. Jest to przydatne, gdy bdnie
skonfigurowany system rozgosi z informacj ARP (oczywicie musisz najpierw
przekonfigurowa bdny host).
Wspomniana powyej opcja -s moe by uywana do implementacji serwera proxy
ARP. Jest to specjalna technika, dziki ktrej host, powiedzmy gate, dziaa jako gateway dla innego hosta fnord udajc, e oba adresy odnosz si do tego samego hosta
gate. W tym celu rozgasza wpis ARP dla fnord wskazujcy na jego wasny interfejs
Ethernet. Teraz gdy host wyle zapytanie ARP o fnord, gate zwrci odpowied zawierajc jego wasny adres Ethernet. Pytajcy host wyle wszystkie datagramy do
gate, ktry z kolei posusznie przekae je do fnord.
Taki mechanizm moe by potrzebny, gdy chcesz si dosta do fnord z komputera
DOS-owego z niepoprawn implementacj TCP, niezbyt dobrze rozumiejc ruting.
Gdy uyjesz proxy ARP, maszyna DOS-owa bdzie widziaa fnord tak, jakby by on
w lokalnej podsieci, a wic nie bdzie musiaa rutowa pakietw przez gateway.
Proxy ARP przydaje si te, gdy jeden z twoich hostw dziaa tymczasowo jako gateway dla innego hosta, na przykad poczonego przez cze komutowane. W jednym z poprzednich przykadw spotkalimy si z laptopem vlite, ktry by czasem
podczony do vlagera przez cze PLIP. Oczywicie protok zadziaa tylko wtedy,
jeeli adres hosta, dla ktrego chcesz realizowa proxy ARP, znajduje si w tej samej
podsieci IP co gateway. vstout moe peni rol proxy ARP dla dowolnego hosta
w podsieci browaru (172.16.1.0), ale nie moe dla hostw w podsieci winiarni
(172.16.2.0).
Poniej pokazujemy poprawne wywoanie tworzce proxy ARP dla fnord. Oczywicie podany adres Ethernet musi by adresem gate'a:
# arp -s fnord 00:00:c0:a1:42:e0 pub

Wpis proxy ARP moe zosta usunity przez ponowne wywoanie:


# arp -d fnord

Usugi nazewnicze
i konfigurowanie
resolvera

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

Jak powiedzielimy w rozdziale 2, Wybrane problemy sieci TCP/IP, w sieci TCP/IP


mog funkcjonowa rne schematy konwersji nazw na adresy. Najprostszym rozwizaniem jest tablica hostw zapisana w pliku /etc/hosts. Sprawdza si ona jedynie
w maych sieciach LAN, ktre s pod opiek jednego administratora albo nie
obsuguj ruchu IP do wiata zewntrznego. Format pliku hosts zosta ju opisany
w rozdziale 5, Konfigurowanie sieci TCP/IP.
Idc dalej, do zamiany nazw hostw na adresy IP moesz uy usugi z BIND (Berkeley Internet Name Domain Service internetowe usugi nazewnicze domen z Berkeley). Konfigurowanie BIND-a bywa przykre, ale jak ju to zrobisz, atwo wprowadzisz kad zmian w topologii sieci. W Linuksie, jak i w wielu innych systemach
uniksowych, usugi nazewnicze s obsugiwane przez program o nazwie named.
Przy uruchamianiu aduje on zestaw gwnych plikw do swojej pamici wewntrznej i czeka na zapytania od lokalnych lub zdalnych procesw uytkownika. Istniej
rne sposoby skonfigurowania BIND-a i nie wszystkie wymagaj uruchamiania
serwera nazw na kadym hocie.
Chcielibymy, aby ten rozdzia by czym wicej ni pobienym szkicem na temat
DNS-u i obsugi serwera nazw. Informacje tu podane powinny wystarczy, jeeli
masz ma sie lokaln i poczenie z Internetem. Najwiesze informacje znajdziesz
w dokumentacji zamieszczonej w pakiecie rdowym BIND, ktry zawiera strony
podrcznika elektronicznego, uwagi do danej wersji oraz Przewodnik operatora BIND
(BIND Operator's Guide BOG). Nie pozwl, by ta nazwa ci odstraszya. W praktyce
jest to bardzo uyteczny dokument. Peniejszy opis DNS-u i zwizanych z nim zagadnie moesz znale w ksice DNS and BIND autorstwa Paula Albitza i Cricketa
Liu (wyd. pol.: DNS i BIND, Wydawnictwo RM, Warszawa 1999.), ktra stanowi doskonae rdo informacji na ten temat. Odpowiedzi na pytania na temat DNS-u
moesz znale w wiadomociach grupy dyskusyjnej comp.protocols.tcp-ip.domains.

84

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

Szczegy techniczne DNS-u s zdefiniowane w nastpujcych dokumentach RFC:


1033, 1034 i 1035.

Biblioteka resolvera
Okrelenie resolver nie odnosi si do jakiej szczeglnej aplikacji, ale do biblioteki resolvera. Jest to zbir funkcji, ktre mona znale w standardowej bibliotece C. Podstawowe procedury to gethostyname(2) i gethostbyaddr(2), poszukujce adresw IP
zwizanych z dan nazw hosta i odwrotnie. Mog by skonfigurowane tak, aby po
prostu szuka informacji w pliku hosts, albo zadawa zapytania do serwerw nazw
DNS, albo te korzysta z bazy danych hosts NIS-a.
Funkcje resolvera odczytuj pliki konfiguracyjne w momencie, gdy s wywoywane.
Na ich podstawie ustalaj, ktr baz danych zapyta i w jakiej kolejnoci, oraz dowiaduj si innych szczegw na temat konfiguracji rodowiska. Starsza standardowa biblioteka, libc, w Linuksie wykorzystywaa plik /etc/host.conf jako gwny plik
konfiguracyjny, ale wersja 2. standardowej biblioteki GNU, glibc, wykorzystuje plik
/etc/nsswitch.conf. Opiszemy kolejno kady z nich, poniewa oba s powszechnie
uywane.

Plik host.conf
Plik /etc/host.conf mwi funkcjom resolvera ze starszej biblioteki standardowej
w Linuksie, jakich usug uywa i w jakiej kolejnoci.
Opcje w pliku host.conf trzeba umieszcza w oddzielnych wierszach. Pola mog by
oddzielone biaymi znakami (spacjami lub tabulatorami). Znak hasha (#) oznacza lini z komentarzem. Dostpne s nastpujce opcje:
order
Ta opcja okrela kolejno, w jakiej wyprbowane s usugi. Dopuszczalne opcje
to: bind dla zapyta serwera nazw, hosts dla sprawdzania pliku /etc/hosts i nis
dla zapyta NIS. Mona poda jedn opcj lub wszystkie. Kolejno przepytywania (sprawdzania) usug zaley od uporzdkowania opcji w wierszu.
multi
multi moe posiada opcje on lub off. Okrela, czy host wpisany do pliku
/etc/hosts moe mie kilka adresw IP. Domylna warto to off. Znacznik nie
ma wpywu na zapytania do DNS-u czy NIS-a.
nospoof
Jak wyjanimy dalej w podrozdziale Wyszukiwanie odwrotne, DNS pozwala na
znalezienie nazwy hosta zwizanej z danym adresem IP za pomoc domeny
in-addr.arpa. Prb dostarczenia przez serwery nazw faszywej nazwy hosta nazywa si spoofingiem. Aby si przed tym obroni, resolver mona skonfigurowa
tak, eby sprawdza, czy oryginalny adres IP faktycznie jest zwizany z uzyskan nazw hosta. Jeeli nie, nazwa jest odrzucana i zwracany jest bd. Zachowanie to jest wczane przez ustawienie nospoof.

Biblioteka resolvera

85

alert
Ta opcja przyjmuje parametry on lub off. Jeeli jest wczona, prby spoofingu
skocz si tym, e resolver zapisze komunikat za pomoc funkcji syslog.
trim
Jako argument tej opcji wystpuje nazwa domeny, usunitej z nazw hostw
przed rozpoczciem wyszukiwania. Jest to przydatne dla wpisw w pliku hosts,
w ktrych chcesz podawa same nazwy hosta, bez lokalnej domeny. Jeeli podasz swoj domen lokaln, zostanie ona usunita przy poszukiwaniu hosta
z dodan nazw domeny lokalnej, co pozwala na poprawne wyszukiwanie w pliku /etc/hosts. Nazwa domeny, ktr podajesz, musi koczy si kropk (na
przykad linux.org.au.), jeeli trim ma dziaa poprawnie.
Opcje trim cz si ze sob. Moesz sprawi, e twj host bdzie uznawany za
lokalny w kilku domenach.
W przykadzie 6-1 pokazano plik host.conf dla hosta vlager.
Przykad 6-1. Przykadowy plik host.conf
# /etc/host.conf
# named dziaa, ale nie mamy NIS-a (jeszcze)
order
bind,hosts
# Pozwalamy na wielokrotne adresy
multi
on
# Zabezpieczamy si przed prbami spoofingu
nospoof on
# obcinamy domen lokaln (nie jest to naprawd niezbdne).
trim
vrew.com.

Zmienne rodowiskowe resolvera


Ustawienia w pliku host.conf mog by zmienione za pomoc szeregu zmiennych
rodowiskowych:
RESOLV_HOST_CONF
Ta zmienna okrela, jaki plik ma by czytany zamiast /etc/host.conf.
RESOLV_SERV_ORDER
Ta zmienna uniewania opcj order zawart w pliku host.conf. Usugi s podawane jako hosts, bind i nis, oddzielone spacjami, przecinkami, dwukropkami
lub rednikami.
RESOLV_SPOOF_CHECK
Ta zmienna okrela stopie ochrony przed spoofingiem. Podanie off wycza t
opcj. Wartoci warn i warn off wczaj sprawdzanie spoofingu, odpowiednio, przez wczenie i wycznie logowania. Warto * wcza sprawdzanie spoofingu, ale pozostawia funkcj logowania zgodnie z tym, co jest zdefiniowane w
pliku host.conf.
RESOLV_MULTI
Ta zmienna pozwala na podanie wartoci on lub off i uniewania opcj multi
z pliku host.conf.

86

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

RESOLV_OVERRIDE_TRIM_DOMAINS
Ta zmienna okrela list domen, ktre maj by obcinane, i uniewania te podane
w pliku host.conf. Obcinanie domen omwilimy wczeniej, przy opisie sowa
kluczowego trim.
RESOLV_ADD_TRIM_DOMAINS
Ta zmienna okrela list obcinanych domen, dodawan do listy podanej w pliku
host.conf.

Plik nsswitch.conf
Wersja 2. standardowej biblioteki GNU oferuje wydajniejszy i bardziej elastyczny
mechanizm, ktry zastpuje starszy plik host.conf. Pojcie usugi nazewniczej zostao
rozszerzone tak, e obecnie jej plik zawiera wiele rnych informacji. Opcje konfiguracyjne dla rnych funkcji zadajcych zapytania do jej baz danych zostay z powrotem umieszczone w jednym pliku konfiguracyjnym o nazwie nsswitch.conf.
Plik nsswitch.conf pozwala administratorowi systemu skonfigurowa szereg rnych baz danych. Ograniczymy omwienie do opcji zwizanych z rozwizywaniem
adresw IP hostw i sieci. Wicej informacji na temat innych funkcji moesz znale
w dokumentacji standardowej biblioteki GNU.
Opcje w pliku nsswitch.conf musz wystpowa w oddzielnych wierszach. Pola
mog by oddzielone biaymi znakami (spacjami lub tabulatorami). Znak hasha (#)
oznacza komentarz, ktry cignie si do nastpnego wiersza. Kady wiersz opisuje
okrelon usug jedn z nich jest rozwizywanie nazwy hosta. Pierwsze pole
w kadym wierszu to nazwa bazy danych koczca si dwukropkiem. Nazwa bazy
zwizanej z rozwizywaniem adresw hostw to hosts. Inna, zwizana z usug
nazewnicz baza to networks; suy do zamiany nazw sieci na ich adresy. Pozostaa cz kadego wiersza zawiera opcje okrelajce sposb wyszukiwania w bazie
danych.
Dostpne s nastpujce opcje:
dns
Uycie systemu nazw domen (DNS) do rozwizywania adresw. Ma to sens jedynie przy rozwizywaniu adresw hostw, a nie sieci. Mechanizm ten wykorzystuje plik /etc/resolv.conf, opisany w dalszej czci tego rozdziau.
files
Przeszukiwanie pliku lokalnego w poszukiwaniu nazwy hosta lub sieci i odpowiadajcych im adresw. Ta opcja wykorzystuje tradycyjne pliki /etc/hosts i /etc/
networks.
nis lub nisplus
Uycie systemu informacji sieciowej (NIS) do rozwizywania adresw hostw
lub sieci. NIS i NIS+ zostay szczegowo omwione w rodziale 13, System informacji sieciowej.
Kolejno, w jakiej s podane, decyduje o porzdku zadawania zapyta o rozwizanie nazwy. Lista kolejnoci zapyta znajduje si w opisie usugi umieszczonym

Biblioteka resolvera

87

w pliku /etc/nsswitch.conf. Usugi s zapytywane od lewej do prawej. Domylnie poszukiwanie koczy si, gdy rozwizanie nazwy si powiedzie.
W przykadzie 6-2 pokazujemy prosty plik, naladujcy nasz konfiguracj wykorzystujc starsz bibliotek standardow libc.
Przykad 6-2. Przykadowy plik nsswitch.conf
# /etc/nsswitch.conf
#
# Przykadowa konfiguracja funkcjonalnoci GNU Name Service Switch.
# Informacje o tym pliku s dostpne w pakiecie 'libc6-doc'.
hosts:
networks:

dns files
files

Zapis taki jak w powyszym przykadzie oznacza, e system poszukuje hostw najpierw przez system nazw domen, a nastpnie, jeeli to si nie uda, w pliku /etc/hosts.
Poszukiwanie nazw sieci bdzie realizowane tylko w oparciu o plik /etc/networks.
Moesz bardziej precyzyjnie sterowa poszukiwaniami, jeli skorzystasz z elementw dziaania. Podpowiadaj one kolejne kroki na podstawie wynikw uzyskanych w poprzedniej prbie wyszukiwania. Elementy dziaania znajduj si pomidzy specyfikacjami usug i s otoczone nawiasami kwadratowymi []. Oglna
skadnia dyrektywy dziaania jest nastpujca:
[ [!] status = dziaanie ... ]

Istniej dwa moliwe dziaania:


return
Powoduje powrt do programu, ktry prbowa rozwiza nazw. Jeeli prba
wyszukiwania si powioda, resolver zwrci szczegowe informacje, a w przeciwnym razie zwrci zero.
continue
Resolver przejdzie do kolejnej usugi na licie i sprbuje za jej pomoc znale nazw.
Opcjonalny znak wykrzyknika (!) mwi, e status powinien by odwrcony przed
wykonaniem testu, czyli oznacza nie.
Dopuszczalne wartoci statusu, na ktrych moemy operowa to:
success
dany adres zosta znaleziony bez bdu. Domylne dziaanie dla tego statusu
to return.
notfound
W wyszukiwaniu nie wystpi bd, ale poszukiwany host lub sie nie mog by
znalezione. Domylne dziaanie dla tego statusu to continue.
unavail
Usuga, do ktrej zostao zadane zapytanie, jest niedostpna. Moe to oznacza,
e plik hosts lub networks jest nieczytelny dla usugi files lub e serwer nazw

88

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

albo serwer NIS nie odpowiadaj na usug dns lub nis. Domylne dziaanie
dla tego statusu to continue.
tryagain
Ten status mwi, e usuga jest tymczasowo niedostpna. W przypadku usugi
files zwykle oznacza to, e dany plik jest zablokowany przez inny proces.
W przypadku innych usug moe to oznacza tymczasow niemono przyjcia
poczenia. Domylne dziaanie dla tego statusu to continue.
Prost ilustracj wykorzystania tego mechanizmu stanowi przykad 6-3.
Przykad 6-3. Przykadowy plik nsswitch.conf wykorzystujcy dyrektyw dziaania
# /etc/nsswitch.conf
#
# Przykadowa konfiguracja funkcjonalnoci GNU Name Service Switch.
# Informacje o tym pliku s dostpne w pakiecie 'libc6-doc'.
hosts:
networks:

dns [!UNAVAIL=return] files


files

W tym przykadzie prbujemy znale nazw hosta za pomoc systemu usug nazewniczych domen. Jeeli tylko zwrcony status nie oznacza niedostpnoci, resolver zwraca to, co znalaz. Jeeli prba zapytania DNS zwrcia status niedostpnoci (wycznie w tym przypadku), resolver prbuje uy lokalnego pliku
/etc/hosts. Oznacza to, e powinnimy uy pliku hosts tylko wtedy, gdy nasz serwer
nazw z jakiego powodu jest niedostpny.

Konfigurowanie poszukiwania przez serwer nazw za pomoc pliku resolv.conf


Gdy konfigurujesz bibliotek resolvera do korzystania z usugi nazewniczej
BIND przy rozwizywaniu nazw, musisz take wskaza serwery nazw, ktre maj
by uywane. Do tego celu suy oddzielny plik resolv.conf. Jeeli plik ten nie istnieje
lub jest pusty, resolver zakada, e serwer nazw znajduje si na twoim hocie lokalnym.
Aby uruchomi serwer nazw na hocie lokalnym, musisz go oddzielnie skonfigurowa, co wyjaniamy w kolejnym podrozdziale. Jeeli pracujesz w sieci lokalnej
i masz moliwo wykorzystania istniejcego serwera nazw, nie omieszkaj tak zrobi. Jeeli uywasz komutowanego poczenia IP z Internetem, w pliku resolv.conf
zwykle podajesz serwer nazw twojego dostawcy Internetu.
Najwaniejsz opcj w pliku resolv.conf jest name server, zawierajca adres tego
serwera nazw, ktry ma by uywany. Jeeli podasz kilka serwerw nazw, wpisujc
kilkukrotnie opcj name server, bd one sprawdzane w zadanej kolejnoci.
W zwizku z tym najbardziej niezawodne serwery powiniene umieszcza na
pocztku. Bieca implementacja pozwala ci na umieszczenie w pliku resolv.conf
trzech dyrektyw name server. Jeeli nie zostanie podana opcja name server, resolver podejmie prb poczenia z serwerem nazw na hocie lokalnym.
Dwie pozostae opcje to domain i search, pozwalajce na stosowanie skrconych
nazw hostw w domenie lokalnej. Zwykle jeli czysz si za pomoc telnetu z in-

Biblioteka resolvera

89

nym hostem w domenie lokalnej, nie musisz wpisywa penej nazwy. Wystarczy poda tylko nazw krtk typu gauss. Resolver skojarzy j z pozosta czci nazwy:
mathematics.groucho.edu.
Tak wanie dziaa dyrektywa domain. Pozwala poda domyln nazw domeny, ktra ma by dodawana, gdy DNS nie znajdzie nazwy hosta. Na przykad, gdy
podamy nazw gauss, resolver nie znajdzie jej w DNS-ie, poniewa nie ma takiej domeny podstawowej. Gdy jako domen domyln wskaemy mathematics.groucho.edu, resolver powtrzy zapytanie o gauss. Tym razem wyszukiwanie si powiedzie.
Pewnie ci si to podoba, ale kiedy wyjdziesz poza domen wydziau matematyki,
musisz powrci do penych nazw domen. Oczywicie chciaby mie rwnie skrty, takie jak quark.physics dla hostw z domeny wydziau fizyki.
Tu z pomoc przychodzi lista przeszukiwania. Mona j poda za pomoc opcji search, ktra jest uoglnieniem dyrektywy domain. Ta druga umoliwia wprowadzenie pojedynczej domeny domylnej, natomiast ta pierwsza pozwala na podanie
listy domen, ktre bd po kolei sprawdzane, a poszukiwanie zakoczy si powodzeniem. Elementy listy musz by oddzielone spacjami lub tabulatorami.
Dyrektywy search i domain wzajemnie si wykluczaj i nie mog pojawi si w
pliku wicej ni raz. Jeeli zostanie podana ktra z opcji, resolver bdzie prbowa
odgadn domyln domen na podstawie nazwy lokalnego hosta za pomoc wywoania systemowego getdomainname(2). Jeeli nazwa hosta lokalnego nie zawiera
nazwy domeny, przyjmowana jest domena gwna (ang. root domain).
Jeeli zdecydujesz si umieci dyrektyw search w pliku resolv.conf, powiniene
uwaa na to, jakie domeny dodajesz do listy. Biblioteki resolvera wczeniejsze ni
BIND 4.9 tworzyy domyln list przeszukiwania na podstawie nazwy domeny, jeeli lista nie zostaa podana. Domylna lista skadaa si z samej domeny domylnej
oraz wszystkich jej domen nadrzdnych, a do domeny gwnej. Powodowao to
pewne problemy, poniewa zapytania DNS koczyy si na serwerach nazw, do
ktrych nigdy nie powinny dotrze.
Zamy, e jeste w browarze wirtualnym i chcesz zalogowa si do foot.groucho.edu. Przypumy, e omskn ci si palec i wpisae foo zamiast foot, czyli podae nazw hosta, ktra nie istnieje. Serwer nazw GMU powie ci, e nie zna takiego
hosta. W przypadku listy poszukiwa starego typu, resolver prbowaby docza
do nazwy hosta nazwy vbrew.com i com. Ta ostatnia nazwa moe by problematyczna, poniewa domena groucho.edu.com moe istnie naprawd. Co wicej, by
moe w tej domenie serwer znajdzie jakiego hosta foo i wskae nie na to, co potrzeba.
Takie faszywe wyniki poszukiwa mog zagraa systemowi bezpieczestwa niektrych aplikacji. Dlatego zwykle powiniene zawa domeny na twojej licie poszukiwa do swojej lokalnej organizacji lub czego w tym rodzaju. Na wydziale matematyki uniwersytetu Groucho Marx lista poszukiwa powinna by skonfigurowana na maths.groucho.edu i groucho.edu.

90

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

Jeeli zrozumienie domylnych domen sprawia ci kopot, przyjrzyj si poniszemu


przykadowi pliku resolv.conf dla wirtualnego browaru:
# /etc/resolv.conf
# Nasza domena
domain
#
# Jako gwnego serwera nazw uywamy vlager
name server 172.16.1.1

Przy rozwizywaniu nazwy vale, resolverowi nie uda si znale vale, ale znajdzie
vale.vbrew.com.

Sia resolvera
Jeeli obsugujesz sie lokaln w obrbie duej sieci, zdecydowanie powiniene korzysta z gwnych serwerw nazw, jeeli takie s dostpne. Serwery nazw maj obszern pami podrczn, ktra przyspiesza odpowiedzi na powtrne zapytania,
a wszystkie zapytania s kierowane wanie do tych serwerw. Jednak ten model ma
jedn wad: gdyby ogie zniszczy kabel szkieletu na uniwersytecie Olafa, nie mona
byoby pracowa w wydziaowej sieci LAN, poniewa resolver nie mgby si skomunikowa z adnym z serwerw nazw. Taka sytuacja powoduje trudnoci z wikszoci usug sieciowych, takich jak logowanie si z X terminali czy drukowanie.
Cho niezbyt czsto zdarza si, e sieci szkieletowe campusu pon, to warto zabezpieczy si przed takim wypadkiem.
Jednym z rozwiza jest skonfigurowanie lokalnego serwera nazw, ktry rozwizuje nazwy z domeny lokalnej i przekazuje wszystkie zapytania o inne hosty do
gwnych serwerw. Oczywicie ma to sens jedynie wtedy, gdy posiadasz wasn
domen.
Alternatyw moe by utrzymywanie zapasowej listy hostw dla twojej domeny czy
sieci lokalnej w pliku /etc/hosts. Mona to zrobi bardzo atwo. Po prostu konfigurujemy bibliotek resolvera tak, aby w pierwszej kolejnoci zadawaa zapytania do DNS-u, a nastpnie sprawdzaa plik hostw. W pliku /etc/host.conf powiniene wpisa:
order bind hosts, a w pliku /etc/nsswitch.conf: hosts: dns files. W ten
sposb resolver wykorzysta plik hostw, jeeli gwny serwer nazw bdzie nieosigalny.

Jak dziaa DNS


DNS porzdkuje nazwy hostw w hierarchii domen. Domena to zbir orodkw maszyn, ktre s jako powizane ze sob. Na przykad tworz sie (tak jak wszystkie maszyny w campusie lub wszystkie hosty sieci BITNET), lub nale do pewnej
organizacji (np. rzdu Stanw Zjednoczonych), lub le blisko siebie. Na przykad
uniwersytety s zwykle grupowane w domenie edu, a kady uniwersytet czy college uywa oddzielnej poddomeny, w ktrej s zebrane jego hosty. Uniwersytet Groucho Marx posiada domen groucho.edu, natomiast sie lokalna wydziau matematyki znajduje si w poddomenie maths.groucho.edu. W nazwach hostw z sieci wy-

Jak dziaa DNS

91

dziau powinny znajdowa si domeny, a wic erdos bdzie znany jako erdos. maths.groucho.edu. Taka nazwa to pena nazwa domenowa zwykle identyfikujca dany
host w skali wiata.
Rysunek 6-1 pokazuje podzia przestrzeni nazw. Wpis u gry drzewa, po prostu
kropka, jest nazywany domen gwn (ang. root domain) i obejmuje wszystkie pozostae domeny. Aby pokaza, e nazwa hosta jest pen nazw domenow, a nie nazw
wzgldn dla jakiej (ukrytej) domeny lokalnej, czasem jest ona pisana z kropk na
kocu. Kropka ta oznacza, e ostatnim czonem nazwy jest domena gwna.
W zalenoci od pooenia nazwy w hierarchii, domena moe by nazywana domen najwyszego poziomu, drugiego poziomu lub trzeciego poziomu. Poziomw
jest jeszcze wicej, ale rzadko s uywane. Ponisza lista pokazuje te kilka domen
najwyszego poziomu, z ktrymi czsto si moesz spotka:
Domena

Opis

edu
com
org
net
mil
gov
uucp

(Gwnie w USA) Instytucje edukacyjne, na przykad uniwersytety.


Organizacje i firmy komercyjne.
Organizacje niekomercyjne. Prywatne sieci UUCP czsto nale do tej domeny.
Gatewaye i inne hosty administracyjne w sieci.
Amerykaskie instytucje wojskowe.
Amerykaskie instytucje rzdowe.
Oficjalnie, wszystkie nazwy wczeniej uywane jako nazwy UUCP bez domen
zostay przeniesione do tej domeny.

Historycznie pierwsze cztery domeny byy przypisane Stanom Zjednoczonym, ale


ostatnio w praktyce nazewniczej kadzie si nacisk na globalny charakter tych domen, rwnie w znaczeniu terytorialnym, bo przecie s domenami globalnymi najwyszego rzdu (ang. global Top Level Domains gTLD). Prowadzone s negocjacje
na temat rozszerzenia zakresu gTLD, co moe zaowocuje wikszymi moliwociami
wyboru w przyszoci.
Poza Stanami Zjednoczonymi, kady kraj uywa domeny najwyszego poziomu
w postaci wasnego dwuliterowego kodu kraju zdefiniowanego w normie ISO-3166.
Na przykad Finlandia uywa domeny fi; fr to domena dla Francji, de dla Niemiec,
za au dla Australii. Na pozostaych poziomach hierarchii (tych poniej domeny najwyszego poziomu), organizacja NIC kadego kraju moe porzdkowa nazwy hostw dowolnie. Australia posiada domeny drugiego poziomu podobne do midzynarodowych domen najwyszego poziomu, czyli com.au i edu.au. Inne kraje, na
przykad Niemcy, nie wykorzystuj tego dodatkowego poziomu, a raczej wyduaj
nazw odnoszc si bezporednio do firmy, z ktr jest zwizana dana domena.
Nie jest niczym niezwykym spotkanie domeny ftp.informatik.uni-enlargen.de.
Ale to ju sprawa Niemcw.

92

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

.
.com

.edu

.net

.groucho

.maths

gauss

erdos

.physics

sophus
theory

quark

otto

niels

collider

up

down

strange

Rysunek 6-1. Fragment przestrzeni nazw domen

Oczywicie takie domeny narodowe nie oznaczaj, e host w danej domenie znajduje si fizycznie w danym kraju oznacza to jedynie, e host zosta zarejestrowany
w organizacji NIC danego kraju. Na przykad zamy, e szwedzki przemysowiec
ma fili swojej firmy w Australii, ale wszystkie hosty pracujce w tej filii mog by
zarejestrowane w domenie najwyszego poziomu se.
Uporzdkowanie przestrzeni nazw w hierarchii nazw domen to eleganckie rozwizanie problemu niepowtarzalnoci nazw. W DNS-ie wystarczy, e nazwa hosta
bdzie unikatowa we wasnej domenie, a pozostanie taka na caym wiecie. Co wicej, pene nazwy domenowe s atwe do zapamitania. Ju te kilka faktw przemawia za podziaem duej domeny na kilka domen podrzdnych.
DNS daje ci jeszcze wicej moliwoci. Pozwala take na przekazywanie wadzy
nad poddomenami ich administratorom. Na przykad osoby obsugujce centrum
komputerowe uniwersytetu Groucho Max mog stworzy poddomen dla kadego
wydziau. Ju spotkalimy poddomeny math i physics. Kiedy stwierdz, e sie na
wydziale fizyki jest zbyt dua i trudno ni zarzdza z zewntrz (w kocu wiadomo,
e fizycy to niesforna grupa ludzi), mog po prostu przekaza kontrol nad domen
physics.groucho.edu administratorom tej sieci. Administratorzy bd mieli prawo
nazywa hosty, jak chc, i przypisywa adresy IP z ich sieci w dowolnie wybrany
przez siebie sposb, bez koniecznoci uwzgldniania jakichkolwiek sugestii z zewntrz.

Jak dziaa DNS

93

W tym celu przestrze nazw jest podzielona na strefy (ang. zones) oparte na domenach.
Zwr uwag na subteln rnic pomidzy stref a domen: domena groucho.edu
zawiera wszystkie hosty z uniwersytetu Groucho Marx, natomiast strefa groucho.edu
zawiera jedynie hosty zarzdzane bezporednio przez centrum komputerowe na
przykad te na wydziale matematyki. Hosty na wydziale fizyki nale do innej strefy, a mianowicie physics.groucho.edu. Na rysunku 6-1 pocztek strefy jest zaznaczony maym kkiem przy nazwie domeny.

Poszukiwanie nazw w DNS-ie


Na pierwszy rzut oka wydaje si, e cay ten podzia na domeny i strefy bardzo komplikuje rozwizywanie nazw. W zasadzie, jeeli adna wadza centralna nie kontroluje przypisywania nazw hostom, to skd ma je zna skromna aplikacja?
Teraz przejdmy do naprawd pomysowej czci DNS-u. Gdyby chcia znale adres IP hosta erdos, DNS powiedziaby: Id, zapytaj ludzi, ktrzy go obsuguj, a oni
ci powiedz.
W rzeczywistoci DNS to gigantyczna rozproszona baza danych. Jest zaimplementowana w postaci tak zwanych serwerw nazw, ktre dostarczaj informacji o zadanej domenie lub zestawie domen. Kada strefa ma przynajmniej dwa (lub kilka)
serwerw nazw, ktre s rdem wszelkich informacji o hostach z tej strefy. Aby
uzyska adres IP erdosa, wystarczy skontaktowa si z serwerem nazw w strefie
groucho.edu, a on zwrci ci wymagane dane.
Moesz pomyle: atwo si mwi, ale trudniej to zrobi. Skd mam wiedzie, jak
znale serwer nazw uniwersytetu Groucho? Jeeli twj komputer nie jest wyposaony w wyroczni, znajdujc adresy, moe za ni posuy take DNS. Gdy twoja
aplikacja chce znale informacje o erdosie, kontaktuje si z lokalnym serwerem
nazw, ktry na jej rzecz wykonuje tak zwane zapytania iteracyjne. Rozpoczyna od
wysyania zapytania o adres erdos.maths.groucho.edu do serwera nazw domeny
gwnej. Serwer nazw domeny gwnej rozpoznaje, e nazwa nie naley do strefy
bdcej w jego wadzy, ale naley do domeny edu. Odpowiada naszemu serwerowi
nazw, eby w celu uzyskania dokadniejszych informacji, skontaktowa si z serwerem nazw strefy edu, i wysya list wszystkich serwerw nazw edu wraz z ich adresami. Twj lokalny serwer nazw dziaa dalej i wysya zapytanie do jednego z poleconych serwerw, na przykad a.isi.edu. Podobnie jak serwer nazw domeny gwnej,
tak i a.isi.edu wie, e ludzie z grouche.edu maj wasn stref i wskazuje ich serwery. Lokalny serwer nazw nastpnie kieruje zapytanie o erdosa do jednego z nich,
ktry z kolei ostatecznie identyfikuje nazw jako nalec do jego strefy i zwraca odpowiadajcy jej adres IP.
Wyglda na to, e aby znale jeden marny adres IP, trzeba wygenerowa spory
ruch, ale to i tak nic w porwnaniu z liczb danych, jaka musiaaby by przesyana,
gdybymy wci korzystali z pliku HOSTS.TXT. Schemat ten jednak daje si udoskonali.
Aby skrci czas odpowiedzi na przysze zapytania, serwer nazw zapisuje uzyskane
informacje w lokalnej pamici podrcznej. Tak wic, jeeli kto z twojej sieci lokalnej

94

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

bdzie chcia znowu znale adres hosta w domenie groucho.edu, twj serwer nazw
skontaktuje si bezporednio z serwerem nazw w tej domenie*
Oczywicie serwer nazw nie bdzie przechowywa tej informacji wiecznie. Po jakim czasie j usunie. Czas jej przechowywania jest nazywany czasem ycia (ang. time
to live), w skrcie TTL. Wszystkim danym w DNS-ie administrator danej strefy przypisuje TTL.

Typy serwerw nazw


Serwery nazw, ktre przechowuj wszystkie informacje o hostach z danej strefy, s
nazywane autorytatywnymi (ang. authoritative servers) dla tej strefy, a czasami gwnymi
serwerami nazw (ang. master name servers). Wszelkie zapytania o hosta w danej strefie
docieraj w kocu do serwerw gwnych.
Serwery gwne musz by doskonale zsynchronizowane. Tak wic administrator
strefy musi stworzy jeden serwer podstawowy (ang. primary), ktry aduje informacje o strefie z plikw z danymi, i serwery zapasowe (ang. secondary), ktre przesyaj
dane o strefie z serwera podstawowego w rwnych odstpach czasu.
Dobrze jest mie kilka serwerw nazw, gdy mona rwnomiernie rozoy obcienie i zagwarantowa lepsz niezawodno. Gdy jedna z maszyn, na ktrej
dziaa serwer nazw w agodny sposb przestanie dziaa, na przykad system operacyjny ulegnie awarii lub straci poczenie z sieci, wszystkie zapytania bd kierowane do innych serwerw. Oczywicie taki schemat nie zabezpiecza przed pomykami (wynikajcymi z bdw w oprogramowaniu lub w samym programie serwera), ktre powoduj bdne odpowiedzi na wszystkie zapytania DNS.
Moesz take uruchomi serwer nazw, ktry nie jest autorytatywny dla danej domeny**. Jest to przydatne, gdy taki serwer bdzie w stanie realizowa zapytania DNS dla aplikacji dziaajcych w sieci lokalnej i zatrzyma informacje w pamici podrcznej. Std serwery takie s nazywane serwerami pamici podrcznej (ang. caching-only servers).

Baza danych DNS


Widzielimy, e DNS nie tylko podaje adresy IP hostw, ale take wymienia informacje na temat serwerw nazw. Bazy danych DNS mog mie w praktyce wiele rnych typw wpisw.
Pojedyncza porcja informacji z bazy DNS nazywa si rekordem zasobu (ang. resource
record - RR). Kady rekord przynaley do jakiego typu i klasy rekordw. Typ opisuje
rodzaj danych reprezentowanych w rekordzie. Natomiast klasa okrela rodzaj sieci,
jakiej dotyczy. Klasa suy do obsugi rnych schematw adresowania, jak adresy
*

Jeeli informacje nie byyby gromadzone w pamici podrcznej, DNS byby rwnie nieefektywny jak
inne metody, poniewa kade zapytanie wymagaoby skontaktowania si z serwerami nazw domeny
gwnej.

** Serwer nazw musi zapewni przynajmniej usug nazewnicz dla localhost i odwrotne wyszukiwanie
dla 127.0.0.1).

Jak dziaa DNS

95

IP (klasa IN), adresy Hesiod (uywane przez system Kerberos MIT) i kilka innych.
Prototypowym rekordem zasobu jest rekord A wicy pen nazw domenow
z adresem IP.
Host moe by znany pod wicej ni jedn nazw. Na przykad moesz mie komputer, ktry posiada serwery FTP i WWW dostpne pod dwoma nazwami: ftp.machine.org i www.machine.org. Jednak jedna z tych nazw musi by oficjaln lub kanoniczn nazw hosta, natomiast pozostae s po prostu jej aliasami. Rnica polega
na tym, e kanoniczna nazwa hosta, jest zwizana z rekordem A, natomiast pozostae
maj jedynie rekord typu CNAME wskazujcy na nazw kanoniczn.
Nie bdziemy tu przedstawia wszystkich typw rekordw, ale podamy krtki
przykad. Przykad 6-4 pokazuje cz bazy danych domeny, ktra jest adowana do
serwerw nazw dla strefy physics.groucho.edu.
Przykad 6-4. Fragment pliku named.hosts wydziau fizyki
; Authoritative Information on physics.groucho.edu.
@ IN SOA niels.physics.groucho.edu. janet.niels.physics.groucho.edu {
1999090200
; numer wersji
360000
; odwieanie
3600
; ponowna prba
3600000
; wyganicie
3600
; domylny ttl
}
;
; serwery nazw
IN
NS
niels
IN
NS
gauss.maths.groucho.edu.
gauss.maths.groucho.edu. IN A 149.76.4.23
;
; fizyka teoretyczna (podsie 12)
niels
IN
A
149.76.12.1
IN
A
149.76.1.12
name server
IN CNAME
niels
otto
IN
A
149.76.12.2
quark
IN
A
149.76.12.4
down
IN
A
149.76.12.5
strange
IN
A
149.76.12.6
...
; Laboratorium Collider (podsie 14)
boson
IN
A
149.76.14.1
muon
IN
A
149.76.14.7
bogon
IN
A
149.76.14.12
...

Poza rekordami A i CNAME, moesz zobaczy na pocztku pliku specjalny rekord


zajmujcy kilka wierszy. Jest to rekord zasobw SOA (lub krcej: rekord SOA); SOA
to skrt od angielskiego start of authority poctek wadzy). Rekord ten zawiera oglne informacje o strefie, dla ktrej serwer jest autorytatywny i skada si midzy innymi z domylnego czasu ycia odnoszcego si do wszystkich rekordw.
Zauwa, e wszystkie nazwy w pliku przykadowym, ktre nie kocz si kropk,
powinny by interpretowane wzgldem domeny physics.groucho.edu. Nazwa spe-

96

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

cjalna (@) uyta w przykadowym rekordzie SOA odnosi si do samej nazwy domeny.
Wczeniej zauwaylimy, e serwery nazw domeny groucho.edu skd wiedz
o strefie physics, tak e mog zadawa pytania do jej serwerw nazw. Zwykle robi
si to za pomoc pary rekordw: rekordu NS, ktry podaje pen nazw domenow
serwera, i rekordu A, ktry wie adres z t nazw. Poniewa te rekordy wi przestrze nazw, czsto s nazywane rekordami klejcymi (ang. glue records). S to jedyne rekordy, w ktrych strefa nadrzdna w rzeczywistoci przechowuje informacje
o hostach strefy podrzdnej. Rekordy klejce wskazuj na serwery nazw domeny
physics.groucho.edu, jak pokazano w przykadzie 6-5.
Przykad 6-5. Fragment pliku named.hosts z GMU
; Dane dla strefy groucho.edu
@ IN SOA vax12.gcc.groucho.edu. joe.vax12.gcc.groucho.edu. {
1999070100
; numer wersji
360000
; odwieanie
3600
; ponowna prba
3600000
; wyganicie
3600
; domylny ttl
}
...
;
;rekordy klejce dla strefy physics.groucho.edu
physics
IN
NS
niels.physics.groucho.edu.
IN
NS
gauss.maths.groucho.edu.
niels.physics
IN
A
149.76.12.1
gauss.maths
IN
A
149.76.4.23
...

Wyszukiwanie odwrotne
Znajdowanie adresu IP nalecego do hosta jest pewnie najpowszechniejszym zastosowaniem systemu nazw domen, ale czasem chcesz znale kanoniczn nazw
hosta odpowiadajc adresowi. Znajdowanie nazwy hosta jest nazywane odwzorowaniem odwrotnym (ang. reverse mapping) i jest uywane przez pewne usugi sieciowe
do weryfikacji tosamoci klienta. Wyszukiwanie odwrotne, przeprowadzane
w oparciu o plik hosts, polega po prostu na przeszukaniu pliku i znalezieniu w nim
hosta, do ktrego naley poszukiwany adres IP. W przypadku DNS-u skrupulatne
przeszukiwanie przestrzeni nazw jest wykluczone. Zamiast tego zostaa stworzona
specjalna domena in-addr.arpa, ktra zawiera adresy IP wszystkich hostw zapisane w odwrotnej notacji kropkowej. Na przykad adres IP 149.76.12.4 odpowiada nazwie 4.12.76.149.in-addr.arpa. Rekord zasobu, ktry cz nazwy z odpowiadajcymi im kanonicznymi nazwami hostw, jest typu PTR.
Tworzenie zarzdzanej przez nas strefy zwykle oznacza, e jej administratorzy
w peni kontroluj sposb przypisywania adresw do nazw. Poniewa zwykle maj
w swoich rkach jedn lub wicej sieci lub podsieci IP, odwzorowanie stref DNS na
sieci IP jest typu jedna-na-wiele. Na przykad wydzia fizyki zawiera podsieci
149.76.8.0, 149.76.12.0 i 149.76.14.0.

Jak dziaa DNS

97

Oznacza to, e wraz ze stref physics w domenie in-addr.arpa musz by stworzone


i przekazane administratorom sieci na wydziale nowe strefy: 8.76.149.in-addr.arpa,
12.76.149.in-addr.arpa i 14.76.149.in-addr.arpa. W przeciwnym razie dodanie nowego hosta w laboratorium Collider wymagaoby skontaktowania si z domen
nadrzdn i wprowadzenia nowego adresu do pliku strefy in-addr.arpa.
Baza danych strefy dla podsieci 12 zostaa pokazana w przykadzie 6-6. Odpowiednie
rekordy klejce w bazie danych strefy nadrzdnej zostay pokazane w przykadzie 6-7.
Przykad 6-6. Fragment z pliku named.rev dla podsieci 12
; domena 12.76.149.in-addr.arpa
@ IN SOA niels.physics.groucho.edu. janet.niels.physics.groucho.edu. {
1999090200 360000 3600 3600000 3600
}
2
IN PTR
otto.physics.groucho.edu.
4
IN PTR
quark.physics.groucho.edu.
5
IN PTR
down.physics.groucho.edu.
6
IN PTR
strange.physics.groucho.edu.

Przykad 6-7. Fragment pliku named.rev dla sieci 149.76


; domena 76.149.in-addr.arpa
@ IN SOA vax12.gcc.groucho.edu. joe.vax12.gcc.groucho.edu. {
1999070100 360000 3600 3600000 3600
}
...
; posie 4: wydzia matematyki
1.4
IN
PTR
sophus.maths.groucho.edu.
17.4
IN
PTR
erdos.maths.groucho.edu.
23.4
IN
PTR
gauss.maths.groucho.edu.
...
; podsie 12: wydzia fizyki, oddzielna strefa
12
IN
NS
niels.physics.groucho.edu.
IN
NS
gauss.maths.groucho.edu.
niels.physics.groucho.edu.
IN A 149.76.12.1
gauss.maths.groucho.edu.
IN A 149.76.4.23
...

Strefy systemu in-addr.arpa mog by tworzone tylko jako nadzbiory sieci IP. Jeszcze powaniejszym ograniczeniem jest to, e maski tych sieci musz przestrzega
granic bajtowych*. Wszystkie podsieci uniwersytetu Groucho Marx maj mask sieci 255.255.255.0, a wic strefa in-addr.arpa moe by utworzona dla kadej podsieci.
Jednak, gdyby maska miaa posta 255.255.255.128, utworzenie stref dla podsieci
149.76.12.128 byoby niemoliwe, poniewa nie ma sposobu na poinformowanie
DNS-u, e domena 12.76.149.in-addr.arpa zostaa podzielona na dwie strefy, gdzie
hosty maj numery odpowiednio z zakresw: od 1 do 127 i od 128 do 255.

Ograniczenie to nie dotyczy najnowszej wersji BIND 8 (przyp. tum.).

98

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

Eksploatacja named
named (wymawiaj: nejm-di) umoliwia korzystanie z usugi DNS na wikszoci komputerw uniksowych. Jest to program serwera, oryginalnie stworzony dla BSD,
ktry suy do udostpniania usug nazewniczych klientom oraz innym serwerom
nazw. Przez jaki czas by uywany BIND w wersji 4, obecny w wielu dystrybucjach
Linuksa. Nowa wersja, o numerze 8 zostaa wprowadzona w wikszoci dystrybucji
Linuksa i znacznie rni si od poprzednich wersji*. Ma wiele nowych funkcji, takich jak dynamiczne uaktualnianie DNS-u, powiadomienie o zmianach w DNS-ie,
lepsza wydajno i nowa skadania pliku konfiguracyjnego. Szczegy znajdziesz
w dokumentacji zaczonej do pakietu dystrybucyjnego.
Ten podrozdzia wymaga rozumienia dziaania DNS-u. Jeeli czujesz si jak na tureckim kazaniu, moe warto ponownie sign do poprzedniego podrozdziau Jak
dziaa DNS.
named zwykle jest uruchamiany w czasie startu systemu i dziaa a do zatrzymania
maszyny. Implementacje wczeniejszych wersji BIND pobieray swoje informacje
z pliku konfiguracyjnego /etc/named.boot i rnych plikw zawierajcych odwzorowania nazw domen na adresy. Te ostatnie s nazywane plikami stref. Wersje BIND
od wersji 8 wzwy wykorzystuj natomiast plik o nazwie /etc/named.conf.
Aby uruchomi named, wprowad:
# /usr/sbin/named

named uruchomi si i odczyta plik named.boot oraz pliki stref w nim wskazane. Zapisze ID swojego procesu w postaci pliku ASCII o nazwie /var/run/named.pid, cignie
wszelkie pliki stref z serwerw podstawowych, o ile bdzie taka potrzeba, i zacznie
nasuchiwa na porcie 53, oczekujc na zapytania DNS.

Plik named.boot
Plik konfiguracyjny wczeniejszej wersji BIND mia bardzo prost struktur. Natomiast ten plik dla wersji 8. ma znacznie trudniejsz skadni, obsugujc wiele nowo wprowadzonych funkcji. Nazwa tego pliku zmienia si z /etc/named.boot na
/etc/named.conf . Skupimy si na konfigurowaniu starszej wersji, poniewa wikszo
dystrybucji prawdopodobnie wci jeszcze jej uywa, ale pokaemy take rwnowany plik named.conf, eby zilustrowa rnice i powiemy, jak konwertowa stary
format na nowy.
Plik named.boot jest generalnie niewielki i zawiera jedynie kilka wskaza do plikw
gwnych z informacjami o strefie i do innych serwerw. Komentarze rozpoczynaj
si hashem (#) lub rednikiem (;) i cign si do nastpnego wiersza. Zanim bardziej
szczegowo omwimy format named.boot, przyjrzymy si przykadowemu plikowi
z hosta vlager pokazanemu w przykadzie 6-8.

BIND 4.9 zosta stworzony przez Paula Vixie, paul@vix.com, ale obecnie BIND jest utrzymywany przez
Internet Software Consortium: bind-bugs@isc.org.

Eksploatacja named

99

Przykad 6-8. Plik named.boot dla hosta vlager


;
; plik /etc/named.boot dla hosta vlager.vbrew.com
;
directory
/var/named
;
;
domena
plik
;-------------------cache
.
named.ca
primary
vbrew.com
named.hosts
primary
0.0.127.in-addr.arpa
named.local
primary
16.172.in-addr.arpa
named.rev

Przyjrzyjmy si kolejno kadej dyrektywie. Sowo kluczowe directory informuje


program named, e wszystkie dalej wymienione pliki, czyli w tym przykadzie pliki
stref, znajduj si w katalogu /var/named. W rezultacie jest nieco mniej pisania.
Sowo kluczowe primary widoczne w tym przykadzie aduje informacje do named.
Informacje te s brane z plikw gwnych podanych jako ostatnie parametry w wierszu. Te pliki zawieraj rekordy zasobw DNS, ktrym przyjrzymy si dalej.
W tym przykadzie skonfigurowalimy named jako podstawowy serwer nazw dla
trzech domen, co pokazuj trzy dyrektywy primary. Pierwsza z nich nakazuje programowi named dziaa jako podstawowy serwer dla domeny vbrew.com i odczytywa dane o strefie z pliku named.hosts.
Sowo kluczowe cache ma szczeglne znaczenie i powinno by obecne na wszystkich komputerach, na ktrych dziaa serwer nazw. Powoduje ono, e named wcza
swoj pami podrczn i aduje wskazania do serwera nazw domeny gwnej (ang. root
name server hints) z pliku pamici podrcznej (w naszym przykadzie named.ca).
Wrcimy do tego w poniszej licie.
Oto lista najwaniejszych opcji, jakich moesz uywa w pliku named.boot:
directory
Ta opcja wyznacza katalog, w ktrym znajduj si pliki stref. Nazwy plikw
w innych opcjach mog by podane wzgldem tego katalogu. Wielokrotnie uywajc dyrektywy directory, mona okreli kilka katalogw. Standard systemu plikw Linuksa mwi, e powinno si uywa katalogu /var/named.
primary
Ta opcja przyjmuje jako argument nazw domeny i nazw pliku oraz mwi, e
lokalny serwer jest autorytatywny dla danej domeny. Jako serwer podstawowy,
named aduje informacje o strefie z zadanego pliku gwnego.
W kadym pliku boot bdzie istnia przynajmniej jeden wpis primary dotyczcy
odwrotnego odwzorowania sieci 127.0.0.0 lokalnej sieci ptli zwrotnej.
secondary
Ta dyrektywa jest uywana z nazw domeny, list adresw i nazw pliku jako
argumentami. Mwi, e lokalny serwer jest serwerem zapasowym (ang. secondary master server) dla danej domeny.
Serwer zapasowy take zawiera autorytatywne dane o domenie, ale nie odczytuje ich z plikw, tylko prbuje je adowa z serwera podstawowego. W licie ad-

100

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

resw naley poda named przynajmniej jeden adres IP serwera podstawowego.


Serwer lokalny kontaktuje si kolejno z kadym z nich, a uda mu si poprawnie
skopiowa baz danych stref, ktra nastpnie jest zapisywana w pliku zapasowym o nazwie podanej jako trzeci argument. Jeeli aden z serwerw gwnych
nie odpowiada, dane o strefie s odczytywane z pliku zapasowego.
named prbuje odwiea dane o strefie w regularnych odstpach czasu. Proces
ten wyjaniamy dalej w poczeniu z rekordem zasobu SOA.
cache
Ta opcja wymaga podania nazwy domeny i nazwy pliku jako argumentw. Plik
zawiera wskazania do serwerw nazw domeny gwnej, czyli list rekordw
z ich nazwami. Rozpoznawane s jedynie rekordy NS i A. domain powinno by
ustawione na nazw domeny gwnej, czyli po prostu kropk (.).
Ta informacja jest kluczowa dla named. Jeeli w pliku startowym nie wystpuje
dyrektywa cache, named nie utworzy w ogle lokalnej pamici podrcznej. Taka
sytuacja (brak tej funkcji) powanie zmniejszy wydajno i zwikszy obcienie
sieci, jeeli przepytywane serwery nie znajduj si w sieci lokalnej. Co wicej, named nie bdzie w stanie skontaktowa si z adnym z serwerw nazw domeny
gwnej, a wic nie bdzie mg rozwiza adresw innych, ni te, dla ktrych
jest autorytatywny. Wyjtkiem od tej reguy s serwery przekazujce (ang. forwarding servers; zobacz opcja forwarders opisana poniej).
forwarders
Ta dyrektywa wymaga jako argumentu listy adresw z separatorami w postaci
biaych znakw. Adresy IP na tej licie odpowiadaj serwerom nazw, ktre named
moe pyta, jeeli nie uda mu si odpowiedzie na zapytanie na podstawie lokalnej pamici podrcznej. S one sprawdzane po kolei, a ktry odpowie na zapytanie. Zwykle w tym miejscu podajesz serwer nazw swojego dostawcy sieci lub
inny dobrze znany serwer.
slave
Ta dyrektywa powoduje, e serwer nazw jest definiowany jako serwer podlegy
(ang. slave server). Nigdy sam nie realizuje zapyta rekurencyjnych, a jedynie
przekazuje je do serwerw okrelonych w dyrektywie forwarders.
Istniej dwie opcje, ktrych tutaj nie opisujemy: sortlist i domain. W plikach baz
danych mona uywa take dwch innych dyrektyw: $INCLUDE i $ORIGIN. Poniewa s one rzadko potrzebne, nie opisujemy ich tutaj.

Plik host.conf dla wersji BIND 8


BIND w wersji 8 wprowadza szereg nowych funkcji i wraz z nimi now skadni pliku konfiguracyjnego. Plik named.boot ze swoimi prostymi, jednowierszowymi dyrektywami zosta zastpiony przez plik named.conf, ktry ma skadni podobn do
gated, a wic przypominajc skadni pliku rdowego w jzyku C.
Nowa skadnia jest bardziej skomplikowana, ale na szczcie przygotowano narzdzie, ktre automatycznie konwertuje star skadni na now. W pakiecie rdowym BIND 8 dodano program named-bootconf.pl napisany w Perlu, ktry odczytu-

Eksploatacja named

101

je istniejcy plik named.boot z stdin i konwertuje go na rwnowany plik w formacie named.conf, wypisywany na stdout. Aby uy konwertera, musisz mie zainstalowany interpreter Perla.
Skryptu uywa si w nastpujcy sposb:
# cd /etc
# named-bootconf.pl <named.boot >named.conf

Tworzy on plik named.conf, podobny do pokazanego w przykadzie 6-9. Usunlimy


kilka pomocnych komentarzy, jakie dodaje skrypt, aby lepiej byo wida prawie bezporedni zwizek pomidzy star i now skadni.
Przykad 6-9. Rwnowany plik named.conf z serwera vlager dla wersji 8 BIND-a
//
// plik /etc/named.boot dla serwera vlager.vbrew.com
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "vbrew.com" {
type master;
file "named.hosts";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "16.172.in-addr.arpa" {
type master;
file "named.rev";
};

Jeeli przyjrzysz si uwaniej, spostrzeesz, e kada z jednowierszowych dyrektyw pliku named.boot zostaa zamieniona w pliku named.conf na dyrektyw w stylu
jzyka C, ujt w nawiasy {}.
Komentarze, ktre w pliku named.boot byy oznaczone rednikiem (;), tutaj s sygnalizowane dwoma ukonikami (//).
Dyrektywa directory zostaa zamieniona na akapit options, w ktrym znajduje
si klauzula directory.
Dyrektywy cache i primary zostay zamienione na akapity zone z klauzulami
type, wskazujcymi odpowiednio na hint i master.
Pliki stref nie musz by w aden sposb modyfikowane. Ich skadnia pozostaje bez
zmian.

102

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

Nowa skadnia pliku konfiguracyjnego pozwala na uycie wielu opcji, ktrych tutaj
nie omawialimy. Jeeli szukasz informacji na ich temat, najlepszym rdem jest
dokumentacja dostarczana w pakiecie rdowym BIND-a w wersji 8.

Pliki bazy danych DNS


Pliki gwne zwizane z named, takie jak named.hosts, zawsze przynale do jakiej
domeny, ktra nosi nazw pocztkowej (ang. origin). Jest to nazwa domeny okrelona
przez opcje cache i primary. W pliku gwnym moesz podawa nazwy domen
i hostw wzgldem tej domeny. Nazwy podane w pliku konfiguracyjnym s traktowane jako bezwzgldne, jeeli kocz si kropk w przeciwnym razie s one odnoszone do domeny pocztkowej. Do samej domeny pocztkowej mona si odwoywa, uywajc znaku (@).
Dane zawarte w pliku gwnym s podzielone na rekordy zasobw (ang. resource records RR). RR s najmniejszymi jednostkami informacji dostpnymi przez DNS.
Kady rekord zasobu ma typ. Rekordy typu A na przykad wi nazw hosta z adresem IP, a rekordy CNAME zawieraj alias oficjalnej nazwy hosta. Moesz to zobaczy w zamieszczonym dalej przykadzie 6-11, ktry pokazuje plik gwny named.hosts dla browaru wirtualnego.
Reprezentacja rekordu zasobu w plikach gwnych ma wsplny format:
[domena] [ttl] [klasa] typ danerek

Pola s oddzielane spacjami lub tabulatorami. Wpis moe liczy kilka wierszy, jeeli
przed pierwszym nowym wierszem i po ostatnim polu pojawi si nawiasy klamrowe. Wszystko pomidzy rednikiem a znakiem nowego wiersza jest ignorowane.
Oto opis pl:
domena
Jest to nazwa domeny, ktrej dotyczy wpis. Jeeli nazwa domeny nie jest podana,
uznaje si, e RR dotyczy domeny z poprzedniego RR.
ttl
Aby wymusi na resolverach usuwanie informacji po pewnym czasie, z kadym
RR jest zwizany czas ycia (ttl). Pole ttl okrela, w sekundach, czas wanoci informacji, liczony od momentu jej uzyskania z serwera. Jest to liczba dziesitna,
maksymalnie omiocyfrowa.
Jeeli nie zostanie podana warto ttl, przyjmowana jest domylna warto pola
minimum poprzedniego rekordu SOA.
klasa
Jest to klasa adresu, jak IN dla adresw IP czy HS dla obiektw z klasy Hesiod.
W sieci TCP/IP musisz podawa IN.
Jeeli nie zostanie podane pole klasy, przyjmowana jest klasa z poprzedniego RR.
typ
To pole opisuje typ RR. Najczciej uywane typy to A, SOA, PTR i NS. W dalszych podrozdziaach opisano rne typy RR.

Eksploatacja named

103

danerek
To pole zawiera dane zwizane z RR. Format tego pola zaley od typu RR. W dalszej czci opiszemy oddzielnie kady RR.
Oto wybircza lista RR uywanych w plikach gwnych DNS. Istnieje jeszcze kilka
innych rekordw, ktrych nie bdziemy tu opisywa, gdy s albo eksperymentalne, albo rzadko uywane:
SOA
Ten RR opisuje stref wadzy (SOA oznacza pocztek wadzy). Sygnalizuje, e
rekordy wystpujce po tym typie RR zawieraj informacje autorytatywne dla
domeny. Kady plik gwny wpisany w dyrektywie primary musi zawiera rekord SOA dla danej strefy. Dopuszczalne s nastpujce pola:
origin
To pole zawiera kanoniczn nazw hosta podstawowego serwera nazw dla tej
domeny, zwykle pisan w postaci nazwy bezwzgldnej.
contact
To pole to adres e-mail osoby odpowiedzialnej za utrzymanie domeny; w tym adresie znak @ zosta zastpiony kropk. Na przykad, gdyby osob odpowiedzialn za browar wirtualny bya janet, pole miaoby posta janet.vbrew.
com.
serial
To pole zawiera numer wersji pliku strefy wyraony w postaci jednej liczby dziesitnej. Gdy dane w pliku strefy zostan zmienione, numer ten powinien zosta zwikszony. Przyjo si, e numer ten to data ostatniego uaktualnienia z dodanym numerem wersji na wypadek kilku uaktualnie w cigu dnia. Na
przykad 2000012600 oznacza uaktualnienie numer 00 z dnia 26 stycznia 2000
roku.
Numer jest uywany przez zapasowe serwery nazw do rozpoznawania zmian
w informacjach o strefie. Aby by na bieco, serwery zapasowe co jaki czas odczytuj rekord SOA serwerw podstawowych i porwnuj numer z wasnym rekordem SOA. Jeeli numer si zmieni, serwery zapasowe cigaj ca baz danych z serwera podstawowego.
refresh
To pole okrela w sekundach, co jaki czas serwery zapasowe powinny sprawdza
rekord SOA serwera podstawowego. Znw jest to liczba dziesitna zoona maksymalnie z omiu cyfr.
Oglnie rzecz biorc topologia sieci nie zmienia si zbyt czsto, a wic ta liczba
powinna by ustawiona na okoo jeden dzie w przypadku wikszych sieci, a nawet duej w przypadku mniejszych sieci.
retry
Ta liczba okrela odstpy czasu, w ktrych serwer zapasowy powinien prbowa
kontaktowa si z serwerem podstawowym, jeeli nie uda si mu odwiey danych o strefie. Nie moe by ona zbyt maa, gdy w razie chwilowej awarii serwe-

104

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

ra lub sieci serwer zapasowy bdzie marnowa zasoby sieciowe. Zaleca si odstpy godzinne lub pgodzinne.
expire
To pole okrela czas w sekundach, po ktrym serwer zapasowy powinien ostatecznie usun wszystkie dane o strefie, jeeli nie by w stanie skontaktowa si
z serwerem gwnym. Zwykle powiniene zdefiniowa to pole na przynajmniej
tydzie (604 800 sekund), ale wyduenie do miesica lub wiksze, take ma
sens.
minimum
To pole zawiera domyln warto ttl dla rekordw zasobw, ktre nie definiuj
jej jawnie. Warto ttl okrela maksymalny czas, przez jaki inne serwery nazw
mog trzyma RR w swojej pamici podrcznej. Czas ten dotyczy tylko zwykych
poszukiwa i nie ma nic wsplnego z czasem, po ktrym serwery zapasowe powinny prbowa uaktualni swoje informacje o strefie.
Jeeli topologia twojej sieci nie zmienia si czsto, wystarczy, e ustawisz ttl na
tydzie, a nawet duszy okres czasu. Jeeli pojedynczy rekord RR zmienia si
czsto, zawsze moesz przypisa mu indywidualnie may ttl. Jeeli twoja sie
zmienia si czsto, moesz zechcie ustawi minimum na jeden dzie (86 400 sekund).
A

NS

Ten rekord wie adres IP z nazw hosta. Pole danych zasobu zawiera adres
w notacji kropkowej.
Moe istnie tylko jeden rekord A dla danego hosta. Nazwa hosta uywana w rekordzie A jest uznawana za oficjaln, inaczej kanoniczn, nazw hosta. Wszystkie
pozostae nazwy hosta to aliasy, ktre musz by odwzorowane na nazw kanoniczn za pomoc rekordu CNAME. Jeeli nazwa kanoniczna naszego hosta
brzmiaaby vlager, mielibymy rekord A wicy t nazw z adresem IP tego hosta. Poniewa czasem chcemy zwiza z adresem take inn nazw, powiedzmy
news, mamy moliwo stworzenia rekordu CNAME, ktry wie nazw alternatywn z nazw kanoniczn. Wicej na temat rekordw CNAME powiemy ju
wkrtce.
Rekordy NS s uywane do okrelenia podstawowego serwera strefy i wszystkich jej serwerw zapasowych. Rekord NS wskazuje na gwny serwer nazw danej strefy, a pole danych zasobu zawiera nazw tego serwera.
Z rekordami NS spotkasz si w dwch sytuacjach: po pierwsze, jeeli przekazujesz wadz strefie podrzdnej, a po drugie, w gwnej bazie danych samej strefy
podrzdnej. Zestaw serwerw podanych w obu strefach (nadrzdnej i podrzdnej) powinien by taki sam.
Rekord NS okrela nazw podstawowego i zapasowego serwera nazw dla strefy.
Nazwy te musz by zamienione na adresy, aby mona byo z nich korzysta.
Czasami serwery nale do domeny, ktr obsuguj, co rodzi problem jajka
i kury. Nie moemy znale adresu, dopki serwer nazw jest nieosigalny, ale

Eksploatacja named

105

te nie moemy dotrze do serwera nazw, dopki nie znajdziemy jego adresu.
Aby rozwiza ten dylemat, moemy skonfigurowa specjalne rekordy A bezporednio w serwerze nazw strefy nadrzdnej. Rekordy A pozwalaj serwerom
nazw domeny nadrzdnej rozwizywa adresy IP serwerw strefy podrzdnej.
Te rekordy s powszechnie nazywane rekordami klejcymi, poniewa daj moliwo powizania strefy podrzdnej z jej stref nadrzdn.
CNAME
Ten rekord wie alias z kanoniczn nazw hosta. Udostpnia on alternatywn
nazw, za pomoc ktrej uytkownicy mog odwoywa si do hosta, ktrego
nazwa kanoniczna jest podana jako parametr. Kanoniczna nazwa hosta to taka,
dla ktrej w pliku gwnym istnieje rekord A. Aliasy s po prostu zwizane z t
nazw poprzez rekord CNAME, ale nie maj innych wasnych rekordw.
PTR
Ten typ rekordu jest uywany do powizania nazw w domenie in-addr.arpa
z nazwami hostw. Suy do odwrotnego odwzorowania adresw IP na nazwy
hostw. Podana nazwa hosta musi by nazw kanoniczn.
MX
Ten RR okrela host wymieniajcy poczt (ang. mail exchanger) dla domeny. Hosty
wymieniajce poczt s omwione w rozdziale 17, Poczta elektroniczna. Skadnia
rekordu MX jest nastpujca:
[domena] [ttl] [klasa] MX priorytet host

Host to nazwa hosta wymieniajcego poczt dla domeny. Z kadym hostem wymieniajcym poczt zwizany jest priorytet. Agent transportowy poczty,
ktry chce dostarczy poczt do domeny, sprawdza wszystkie hosty, ktre dla
danej domeny maj rekord MX, a mu si uda z jakim skontaktowa. Najpierw
jest sprawdzany host o najniszym priorytecie, a nastpnie pozostae w rosncej kolejnoci priorytetw.
HINFO
Ten rekord zawiera informacje o sprzcie i oprogramowaniu systemu. Skadnia
jest nastpujca:
[domena] [ttl] [klasa] HINFO sprzt oprogramowanie

Pole sprzt identyfikuje sprzt uywany w danym hocie. Do jego opisania


stosowane s specjalne konwencje. Lista dopuszczalnych nazw maszyn
jest podana w RFC Assigned Numbers (RFC-1700). Jeeli pole zawiera spacje, musi
by ujte w cudzysw. Pole oprogramowanie opisuje system operacyjny uywany przez dany host. Znw dopuszczalne nazwy s opisane w RFC Assigned
Numbers.
Rekord HINFO opisujcy komputer oparty na procesorze Intel z zainstalowanym
Linuksem powinien wyglda nastpujco:
tao

36500

IN HINFO

IBM-PC

LINUX2.2

106

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

Natomiast rekord HINFO dla Linuksa dziaajcego na komputerze z procesorem


Motorola 68000 mgby wyglda tak:
cevad
jedd

36500
36500

IN HINFO
IN HINFO

ATARI-104ST
AMIGA-3000

LINUX2.0
LINUX2.0

Konfiguracja named jako serwera pamici podrcznej


Istnieje szczeglny typ konfiguracji named, ktry naley omwi, zanim wyjanimy, jak w peni skonfigurowa serwer nazw. Jest to konfiguracja serwera pamici podrcznej. W rzeczywistoci nie obsuguje on domeny, ale dziaa jako przekanik dla wszystkich zapyta DNS wygenerowanych przez hosty. Zalet takiego schematu jest tworzenie pamici podrcznej, a wic tylko pierwsze zapytanie o zadane
hosty jest w rzeczywistoci wysyane do serwera nazw w Internecie. Odpowiedzi na
wszelkie powtrne zapytania bd wysane bezporednio z pamici podrcznej
twojego lokalnego serwera nazw. Moe teraz nie wydaje si to zbyt uyteczne, ale
zmienisz zdanie, jeeli zaczniesz czy si z Internetem przez telefon, co opisano
w rozdziale 7, IP cza szeregowego, i rozdziale 8, Protok punkt-punkt.
Plik named.boot dla serwera pamici podrcznej wyglda nastpujco:
; plik named.boot dla serwera pamici podrcznej
directory
/var/named
primary
0.0.127.in-addr.arpa
named.local
cache
.
named.ca

; sie hosta lokalnego


; serwery domeny gwnej

Poza powyszym plikiem named.boot, musisz te skonfigurowa plik named.ca,


w ktrym bdzie si znajdowaa poprawna lista serwerw nazw domeny gwnej.
Moesz skopiowa i wykorzysta do tego celu przykad 6-10. Do konfiguracji serwera nazw jako serwera pamici podrcznej nie s potrzebne adne inne pliki.

Tworzenie plikw gwnych


Przykady od 6-10 do 6-13 pokazuj przykadowe pliki serwera nazw sieci browaru,
umieszczonego na hocie vlager. Ze wzgldu na charakter omawianej sieci (pojedyncza sie lokalna) przykad jest do prosty.
Plik pamici podrcznej named.ca, podany jako przykad 6-10, pokazuje przykadowe rekordy wskazujce serwer nazw domeny gwnej. Typowy plik pamici
podrcznej zwykle zawiera list kilku serwerw. Aktualn list serwerw nazw
domeny gwnej moesz uzyska za pomoc narzdzia nslookup opisanego w nastpnym podrozdziale*.

Zauwa, e nie moesz zapyta serwera nazw o serwery nazw domeny gwnej, jeeli nie masz zainstalowanych adnych wskaza na serwery domeny gwnej. Aby rozwiza ten problem, moesz ustawi
nslookup tak, aby skorzysta z innego serwera nazw, albo uy przykadowego pliku z przykadu 6-10
jako punktu wyjcia, a nastpnie uzyska pen list dopuszczalnych serwerw.

Eksploatacja named

Przykad 6-10. Plik named.ca


;
; /var/named/named.ca
Plik pamici podrcznej dla browaru.
;
Nie jestemy podczeni do Internetu, a wic
;
nie potrzebujemy adnych serwerw nazw domeny
;
gwnej. Aby uaktywni te rekordy, usu redniki.
;
;.
3600000
IN NS
A.ROOT-SERVERS.NET.
;A.ROOT-SERVERS.NET.
3600000
A
198.41.0.4
;.
3600000
IN NS
B.ROOT-SERVERS.NET.
;B.ROOT-SERVERS.NET.
3600000
A
128.9.0.107
;.
3600000
IN NS
C.ROOT-SERVERS.NET.
;C.ROOT-SERVERS.NET.
3600000
A
192.33.4.12
;.
3600000
IN NS
D.ROOT-SERVERS.NET.
;D.ROOT-SERVERS.NET.
3600000
A
128.8.10.90
;.
3600000
IN NS
E.ROOT-SERVERS.NET.
;E.ROOT-SERVERS.NET.
3600000
A
192.203.230.10
;.
3600000
IN NS
F.ROOT-SERVERS.NET.
;F.ROOT-SERVERS.NET.
3600000
A
192.5.5.241
;.
3600000
IN NS
G.ROOT-SERVERS.NET.
;G.ROOT-SERVERS.NET.
3600000
A
192.112.36.4
;.
3600000
IN NS
H.ROOT-SERVERS.NET.
;H.ROOT-SERVERS.NET.
3600000
A
128.63.2.53
;.
3600000
IN NS
I.ROOT-SERVERS.NET.
;I.ROOT-SERVERS.NET.
3600000
A
192.36.148.17
;.
3600000
IN NS
J.ROOT-SERVERS.NET.
;J.ROOT-SERVERS.NET.
3600000
A
198.41.0.10
;.
3600000
IN NS
K.ROOT-SERVERS.NET.
;K.ROOT-SERVERS.NET.
3600000
A
193.0.14.129
;.
3600000
IN NS
L.ROOT-SERVERS.NET.
;L.ROOT-SERVERS.NET.
3600000
A
198.32.64.12
;.
3600000
IN NS
M.ROOT-SERVERS.NET.
;M.ROOT-SERVERS.NET.
3600000
A
202.12.27.33
;

Przykad 6-11. Plik named.hosts


;
; /var/named/named.hosts
Hosty lokalne w browarze
;
domena vbrew.com
;
@
IN SOA
vlager.vbrew.com. janet.vbrew.com {
2000012601 ; numer kolejny
86400
; odwieanie: raz dziennie
3600
; ponowna prba: co godzin
3600000
; wyganicie: 42 godziny
604800
; minimum: 1 tydzie
}
IN NS
vlager.vbrew.com.
;
; poczta lokalna jest dystrybuowana na vlager
IN MX
10 vlager
;
; adres ptli zwrotnej
localhost. IN A
127.0.0.1
;
; Ethernet browaru wirtualnego
vlager
IN A
172.16.1.1
vlager-if1
IN CNAME
vlager
; vlager to take serwer grup dyskusyjnych

107

108

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

news
IN CNAME
vlager
vstout
IN A
172.16.1.2
vale
IN A
172.16.1.3
;
; Ethernet winiarni wirtualnej
vlager-if2
IN A
172.16.2.1
vbardolino
IN A
172.16.2.2
vchianti
IN A
172.16.2.3
vbeaujolais IN A
172.16.2.4
;
; Ethernet wirtualnej fabryki napojw alkoholowych
; (dodatkowych)
vbourbon
IN A
172.16.3.1
vbourbon-if1 IN CNAME
vbourbon

Przykad 6-12. Plik named.local


;
; /var/named/named.local
Odwzorowanie odwrotne sieci 127.0.0
;
domena pocztkowa 0.0.127.in-addr.arpa.
;
@
IN SOA
vlager.vbrew.com. joe.vbrew.com. {
1
; numer kolejny
360000
; odwieanie: co 100 godzin
3600
; ponowna prba: co godzin
3600000
; wyganicie: 42 dni
360000
; minimum: 100 godzin
}
IN NS
vlager.vbrew.com.
1
IN PTR
localhost.

Przykad 6-13. Plik named.rev


;
; /var/named/named.rev
Odwzorowanie odwrotne naszych adresw IP
;
domena pocztkowa to 16.172.in-addr.arpa.
;
@
IN SOA
vlager.vbrew.com. joe.vbrew.com. {
16
; numer kolejny
86400
; odwieanie: raz dziennie
3600
; ponowna prba: co godzin
3600000
; wyganicie: 42 dni
604800
; minimum: 1 tydzie
}
IN NS
vlager.vbrew.com.
; browar
1.1
2.1
3.1
; winiarnia
1.2
2.2
3.2
4.2

IN PTR
IN PTR
IN PTR

vlager.vbrew.com.
vstout.vbrew.com.
vale.vbrew.com.

IN
IN
IN
IN

vlager-if2.vbrew.com.
vbardolino.vbrew.com.
vchianti.vbrew.com.
vbeaujolais.vbrew.com.

PTR
PTR
PTR
PTR

Eksploatacja named

109

Weryfikowanie konfiguracji serwera nazw


nslookup jest doskonaym narzdziem do sprawdzania dziaania twojego serwera
nazw. Mona go uywa zarwno interaktywnie z monitem, jak i w formie polecenia natychmiast wypisujcego wynik. W tym ostatnim przypadku po prostu wywoujesz polecenie tak:
$ nslookup nazwahosta

nslookup zadaje zapytanie o nazwhosta do serwera nazw okrelonego w pliku resolv.conf. (Jeeli w pliku znajduje si wicej ni jeden serwer, nslookup wybiera jaki
losowo).
Jednak tryb interaktywny jest duo ciekawszy. Poza poszukiwaniem poszczeglnych
hostw, moesz zadawa zapytania o dowolny typ rekordu DNS i przesya cae informacje o strefie dla danej domeny.
Po wywoaniu nslookup bez argumentw, wywietla on uywany serwer nazw
i przechodzi do trybu interaktywnego. Po monicie > moesz wpisa nazw domeny,
o ktr chcesz pyta. Domylnie zadawane s zapytania o klas rekordw A tych
zawierajcych adres IP odnoszcy si do nazwy domeny.
Innych typw rekordw moesz poszuka nastpujco:
> set type=typ

gdzie typ to jedna z nazw rekordu zasobu opisanych wczeniej lub dyrektywa
ANY.
Mona sobie wyobrazi nastpujc sesj z programem nslookup:
$ nslookup
Default Server: tao.linux.org.au
Address: 203.41.101.121
> metalab.unc.edu
Server: tao.linux.org.au
Address: 203.41.101.121
Name: metalab.unc.edu
Address: 152.2.254.81
>

Wynik najpierw pokazuje serwer DNS, do ktrego s kierowane zapytania, a nastpnie odpowied na zapytanie.
Jeeli sprbujesz zapyta o nazw, z ktr nie jest zwizany adres IP, ale w bazie
DNS znajduj si inne rekordy, nslookup zwrci komunikat o treci No type A records found. (nie znaleziono rekordw typu A). Jednak moesz zada zapytanie
nie tylko o rekordy A trzeba tylko wyda polecenie set type. Aby uzyska rekord
SOA z domeny unc.edu, musisz napisa:
> unc.edu
Server: tao.linux.org.au
Address: 203.41.101.121
*** No address (A) records available for unc.edu
> set type=SOA

110

Rozdzia 6: Usugi nazewnicze i konfigurowanie resolvera

> unc.edu
Server: tao.linux.org.au
Address: 203.41.101.121
unc.edu
origin = ns.unc.edu
mail addr = host-reg.ns.unc.edu
serial = 1998111011
refresh = 14400 (4H)
retry = 3600 (1H)
expire = 1209600 (2W)
minimum ttl = 86400 (1D)
unc.edu name server = ns2.unc.edu
unc.edu name server = ncnoc.ncren.net
unc.edu name server = ns.unc.edu
ns2.unc.edu
internet address = 152.2.253.100
ncnoc.ncren.net
internet address = 192.101.21.1
ncnoc.ncren.net
internet address = 128.109.193.1
ns.unc.edu
internet address = 152.2.21.1

W podobny sposb moesz zapyta o rekordy MX:


> set type=MX
> unc.edu
Server: tao.linux.org.au
Address: 203.41.101.121
unc.edu preference = 0, mail exchanger = conga.oit.unc.edu
unc.edu preference = 10, mail exchanger = imsety.oit.unc.edu
unc.edu name server = ns.unc.edu
unc.edu name server = ns2.unc.edu
unc.edu name server = ncnoc.ncren.net
conga.oit.unc.edu
internet address = 152.2.22.21
imsety.oit.unc.edu
internet address = 152.2.21.99
ns.unc.edu
internet address = 152.2.21.1
ns2.unc.edu
internet address = 152.2.253.100
ncnoc.ncren.net
internet address = 192.101.21.1
ncnoc.ncren.net
internet address = 128.109.193.1

Uycie typu ANY zwrci wszystkie rekordy zasobw zwizane z dan nazw.
Innym praktycznym zastosowaniem nslookup, poza debugowaniem, jest uzyskiwanie aktualnej listy serwerw nazw domeny gwnej. W tym celu naley zada zapytanie o wszystkie rekordy NS zwizane z domen gwn.
> set type=NS
> .
Server: tao.linux.org.au
Address: 203.41.101.121
Non-authoritative answer:
(root)
name server = A.ROOT-SERVERS.NET
(root)
name server = B.ROOT-SERVERS.NET
(root)
name server = C.ROOT-SERVERS.NET
(root)
name server = D.ROOT-SERVERS.NET
(root)
name server = E.ROOT-SERVERS.NET
(root)
name server = F.ROOT-SERVERS.NET
(root)
name server = G.ROOT-SERVERS.NET
(root)
name server = H.ROOT-SERVERS.NET
(root)
name server = I.ROOT-SERVERS.NET

Eksploatacja named
(root)
(root)
(root)
(root)

name
name
name
name

111
server
server
server
server

=
=
=
=

J.ROOT-SERVERS.NET
K.ROOT-SERVERS.NET
L.ROOT-SERVERS.NET
M.ROOT-SERVERS.NET

Authoritative answers can be found from:


A.ROOT-SERVERS.NET
internet address = 198.41.0.4
B.ROOT-SERVERS.NET
internet address = 128.63.2.53
C.ROOT-SERVERS.NET
internet address = 128.9.0.107
D.ROOT-SERVERS.NET
internet address = 192.33.4.12
E.ROOT-SERVERS.NET
internet address = 128.8.10.90
F.ROOT-SERVERS.NET
internet address = 192.203.230.10
G.ROOT-SERVERS.NET
internet address = 192.36.148.17
H.ROOT-SERVERS.NET
internet address = 192.5.5.241
I.ROOT-SERVERS.NET
internet address = 192.112.36.4
J.ROOT-SERVERS.NET
internet address = 198.41.0.10
K.ROOT-SERVERS.NET
internet address = 193.0.14.129
L.ROOT-SERVERS.NET
internet address = 198.32.64.12
M.ROOT-SERVERS.NET
internet address = 202.12.27.33

Aby zobaczy peny zestaw dostpnych polece, uyj w nslookup komendy help.

Inne przydatne narzdzia


Istnieje kilka narzdzi, ktre mog pomc w wypenianiu obowizkw administratora BIND. Pokrtce opiszemy dwa z nich. Wicej informacji na ten temat znajdziesz
w doczonej do nich dokumentacji.
hostcvt pomaga we wstpnej konfiguracji BIND, konwertujc plik /etc/hosts na pliki
gwne dla named. Program generuje wpisy normalne (A) i odwrotne (PTR); obsuguje take aliasy. Oczywicie nie zrobi za ciebie wszystkiego, gdy musisz chociaby dopasowa wartoci czasw w rekordzie SOA, czy doda rekordy MX. Ale i tak
zaoszczdzisz sobie kilku tabletek od blu gowy. hostcvt jest czci pakietu BIND,
ale w linuksowych orodkach FTP mona go znale take w postaci samodzielnego
programu.
Po skonfigurowaniu swojego serwera nazw, na pewno bdziesz chcia sprawdzi jego konfiguracj. Istniej dobre narzdzia, ktre znacznie uatwiaj to zadanie:
pierwszym z nich jest dnswalk pakiet w jzyku Perl. Drugi nazywa si nslint. Oba
programy przegldaj baz DNS w poszukiwaniu popularnych bdw i weryfikuj, czy znalezione informacje s spjne. Dwa inne przydatne narzdzia to: host
i dig s to narzdzia oglnego przeznaczenia do zadawania zapyta do bazy DNS.
Moesz je wykorzysta do rcznego sprawdzania i diagnozowania wpisw w bazie
danych DNS.
Wymienione narzdzia s dostpne w postaci pakietw. dnswalk i nslint s dostpne
w postaci kodu rdowego pod adresami: http://www.visi.com/~barr/dnswalk/
i ftp://ftp.ee.lbl.gov/nslint.tar.Z. Kody rdowe narzdzi host i dig mona znale pod
adresami ftp://ftp.nikhef.nl/pub/network/ i ftp://ftp.is.co.za/networking/ip/dns/dig/.

IP cza szeregowego
Rozdzia 7: IP cza szeregowego

Protokoy pakietowe, takie jak IP czy IPX, dziaaj w oparciu o to, e host odbierajcy
wie, gdzie si zaczyna i koczy kady pakiet w strumieniu danych. Mechanizm uywany do zaznaczania i wykrywania pocztku i koca pakietw nazywa si rozgraniczaniem (ang. delimitation). Za dziaanie tego mechanizmu w sieciach lokalnych odpowiada protok Ethernet, natomiast w czach szeregowych protokoy SLIP i PPP.
Stosunkowo may koszt wolnych modemw komutowanych i sieci telefonicznych
spowodowa, e protokoy IP cza szeregowego stay si bardzo popularne, szczeglnie do zapewniania cznoci uytkownikom kocowym Internetu. Sprzt potrzebny do uruchomienia SLIP czy PPP jest prosty i atwo dostpny. Wystarczy mie
modem i port szeregowy z buforem FIFO.
Protok SLIP jest bardzo prosty w implementacji i swego czasu by popularniejszy
ni PPP. Obecnie jednak prawie kady chtniej siga po protok PPP, ktry udostpnia bardziej wyrafinowane funkcje. Waniejszym z nich przyjrzymy si pniej.
Linux obsuguje sterowniki dla protokow SLIP i PPP oparte na jdrze. Sterowniki
te, ktre powstay jaki czas temu, s stabilne oraz niezawodne. W tym i nastpnym
rozdziale omwimy oba protokoy i sposb ich konfiguracji.

Wymagania oglne
Aby korzysta z protokou SLIP lub PPP, musisz skonfigurowa podstawowe funkcje sieciowe opisane w poprzednich rozdziaach, a take interfejs ptli zwrotnej
i resolver. Przy podczeniu do Internetu bdziesz chcia korzysta z DNS-u. Moliwoci wyboru s tu identyczne jak przy PPP: moesz zadawa zapytania DNS, albo
przez cze szeregowe, jeli wczeniej skonfigurujesz w pliku /etc/resolv.conf adres IP
serwera nazw swojego dostawcy Internetu, albo konfigurujc serwer nazw pamici
podrcznej zgodnie z opisem w rozdziale 6.

114

Rozdzia 7: IP cza szeregowego

Dziaanie SLIP-a
Serwery IP podczone do cza komutowanego czsto udostpniaj usug SLIP
przez specjalne konta uytkownikw. Po zalogowaniu si na takie konto, nie dostajesz typowej powoki, tylko uruchamiany jest program lub skrypt powoki, ktry
wcza sterownik SLIP serwera dla cza szeregowego i konfiguruje odpowiedni interfejs sieciowy. Nastpnie musisz zrobi to samo po swojej stronie cza.
W niektrych systemach operacyjnych sterownik SLIP jest programem dziaajcym
w przestrzeni uytkownika. W Linuksie jest to cz jdra, co powoduje, e dziaa on
duo szybciej. Prdko ta jednak wymaga, by cze szeregowe byo jawnie przeczone w tryb SLIP. To przeczenie jest realizowane przez specjalny protok
obsugi cza tty, SLIPDISC. Gdy tty jest w trybie normalnego protokou obsugi
(DISC0), wymienia dane tylko z procesami uytkownika, uywajc zwykych wywoa read(2) i write(2), a sterownik SLIP nie jest w stanie ani zapisywa do tty, ani
z niego odczytywa. W trybie SLIPDISC role si odwracaj: teraz procesy przestrzeni uytkownika s blokowane przed zapisywaniem do tty lub odczytywaniem z niego, natomiast wszystkie dane przychodzce na port szeregowy s przekazywane
bezporednio do sterownika SLIP.
Sam sterownik SLIP jest w stanie pracowa z wieloma odmianami protokou SLIP.
Poza zwykym SLIP-em rozumie take CSLIP, ktry realizuje tak zwan kompresj
nagwkw Van Jacobsona wychodzcych pakietw IP (opisan w RFC-1144). Kompresja ta znacznie poprawia przepustowo cza podczas sesji interaktywnych. Istniej take szeciobitowe wersje obu tych protokow.
Prostym sposobem na przeczenie cza szeregowego w tryb SLIP jest uycie narzdzia slattach. Zamy, e twj modem jest ju podczony pod /dev/ttyS3 i poprawnie zalogowae si do serwera SLIP. Teraz musisz wyda polecenie:
# slattach /dev/ttyS3 &

Narzdzie to przeczy protok obsugi ttyS3 na SLIPDISC i podczy urzdzenie


do jednego z interfejsw sieciowych SLIP. Jeeli jest to twoje pierwsze aktywne cze
SLIP, zostanie ono podczone do sl0. Drugie byoby podczone do sl1 i tak dalej.
Aktualne jdra obsuguj domylnie maksymalnie 256 jednoczenie aktywnych
czy SLIP.
Domylny protok obsugi cza wybierany przez slattach to CSLIP. Moesz wybra
dowolny inny, uywajc przecznika -p. Aby uy zwykego SLIP-a (bez kompresji),
wydaj polecenie:
# slattach -p slip /dev/ttyS3 &

Dostpne protokoy obsugi s wymienione w tabeli 7-1. Masz take do dyspozycji


specjalny pseudoprotok obsugi o nazwie adaptive, ktry powoduje, e jdro
automatycznie wykrywa, jaka enkapsulacja SLIP jest wczona po drugiej stronie.

Dziaanie SLIP-a

115

Tabela 7-1. Protokoy obsugi SLIP w Linuksie


Protok obsugi Opis
slip
cslip
slip6

cslip6
adaptive

Tradycyjna enkapsulacja SLIP.


Enkapsulacja SLIP z kompresj nagwkw Van Jacobsona.
Enkapsulacja SLIP z kodowaniem 6-bitowym. Metoda kodowania jest
podobna do uywanej przez polecenie uuencode i powoduje, e datagram
SLIP jest konwertowany do drukowalnych znakw ASCII. Konwersja
ta jest przydatna, jeeli nie masz 8-bitowego cza szeregowego.
Enkapsulacja SLIP z kompresj nagwkw Van Jacobsena i kodowaniem
6-bitowym.
Nie jest to typowy protok obsugi, ale powoduje, e jdro prbuje
zidentyfikowa protok uywany na odlegej maszynie i dopasowa
si do niego.

Zauwa, e musisz uywa tej samej enkapsulacji co twj partner. Na przykad, jeeli host cowslip uywa CSLIP, ty take musisz go uywa. Gdyby twoje poczenie
SLIP nie dziaao, to przede wszystkim powiniene sprawdzi, czy oba koce cza
uwzgldniy uywanie kompresji nagwkw. Jeeli nie jeste pewien, czego uywa
drugi koniec, sprbuj skonfigurowa swj host na adaptive slip. By moe jdro prawidowo odgadnie typ.
slattach pozwala ci na wczenie nie tylko SLIP-a, ale take innych protokow wykorzystujcych cze szeregowe, takich jak PPP czy KISS (inny protok uywany
przez fanw ham radio). Mimo to nie jest powszechnie stosowany, gdy s lepsze
narzdzia do obsugi tych protokow. Szczegy znajdziesz na stronie podrcznika
elektronicznego slattach(8).
Po przeczeniu cza na sterownik SLIP, musisz skonfigurowa interfejs sieciowy.
Znw, robisz to za pomoc standardowych polece ifconfig i route. Zamy, e
poczylimy si telefonicznie z hosta vlager do serwera o nazwie cowslip. Na hocie vlager powiniene napisa:
# ifconfig sl0 vlager-slip pointopoint cowslip
# route add cowslip
# route add default gw cowslip

Pierwsze polecenie konfiguruje interfejs jako cze punkt-punkt do cowslip, a nastpne dwa polecenia dodaj tras do cowslip i tras domyln wykorzystujc
cowslip jako gateway.
Warto zwrci uwag na dwie rzeczy w wywoaniu ifconfig: opcj pointopoint
okrelajc adres drugiego koca cza punkt-punkt i wykorzystanie vlager-slip
jako adresu lokalnego interfejsu SLIP.
Wspomnielimy, e dla cza SLIP moesz uy tego samego adresu, ktry przypisae interfejsowi Ethernet na hocie vlager. W tym przypadku vlager-slip mgby
by po prostu aliasem adresu 172.16.1.1. Jednak moliwe jest rwnie uycie zupenie innego adresu dla cza SLIP. Jedn z takich sytuacji jest sie uywajca nie
zarejestrowanego adresu IP sieci, tak jak si to dzieje w naszym wirtualnym browa-

116

Rozdzia 7: IP cza szeregowego

rze. Powrcimy do tej sytuacji i opiszemy j bardziej szczegowo w nastpnym


podrozdziale.
W pozostaej czci tego rozdziau zawsze bdziemy uywa vlager-slip, odwoujc
si do adresu lokalnego interfejsu SLIP.
Przy wyczaniu cza SLIP powiniene najpierw usun wszystkie trasy wiodce
przez cowslip za pomoc polecenia route z opcj del, a nastpnie zamkn interfejs
i wysa programowi slattach sygna zawieszenia. Nastpnie musisz rozczy modem, uywajc ponownie programu swojego terminala:
#
#
#
#

route del default


route del cowslip
ifconfig sl0 down
kill -HUP 516

Pamitaj, aby 516 zastpi numerem ID procesu (pokazywanym w wyniku dziaania


ps ax) polecenia slattach kontrolujcego urzdzenie slip, ktre chcesz zamkn.

Korzystanie z sieci prywatnych


Pewnie pamitasz z rozdziau 5, Konfigurowanie sieci TCP/IP, e browar wirtualny
ma sie IP wykorzystujc niezarejestrowane numery sieci zastrzeone do uytku
wewntrznego. Pakiety kierowane z lub do tych sieci nie s rutowane do Internetu.
Gdyby vlager czy si z cowslip i dziaa jako ruter dla sieci browaru wirtualnego,
hosty w sieci browaru nie mogyby si bezporednio komunikowa z prawdziwymi
hostami z Internetu, poniewa ich pakiety byyby po cichu odrzucane przez pierwszy powaniejszy ruter.
Aby rozwiza ten problem, skonfigurujemy vlager tak, aby dziaa jako swego rodzaju przekanik udostpniajcy usugi internetowe. W wiecie zewntrznym bdzie si
on przedstawia jako normalny host podczony do Internetu za porednictwem protokou SLIP, z zarejestrowanym adresem IP (prawdopodobnie przypisanym przez dostawc usug, do ktrego naley cowslip). Kady, kto zaloguje si do vlagera, moe
uywa programw dziaajcych w trybie tekstowym, takich jak ftp, telnet czy nawet
lynx, i za ich pomoc korzysta z Internetu. Kady, kto naley do sieci lokalnej browaru wirtualnego, moe zatem wywoa telnet i zalogowa si do vlagera, a nastpnie
uywa na nim programw. Dla niektrych aplikacji mog istnie rozwizania, ktre
nie wymagaj logowania si do vlagera. Na przykad w przypadku uytkownikw
WWW moglibymy na hocie vlager uruchomi tak zwany serwer proxy, ktry przekazywaby wszystkie dania od uytkownikw do odpowiednich serwerw.
Wymg zalogowania si do vlagera celem korzystania z Internetu jest nieco niewygodny. Ale ma te swoje zalety. Po pierwsze, eliminuje konieczno rejestrowania
si w sieci IP, co wymaga wypeniania papierw i jest kosztowne, a po drugie daje
dodatkowe korzyci przy konfigurowaniu firewalla. Firewalle s dedykowanymi
hostami, ktre dajc ograniczony dostp do Internetu uytkownikom twojej sieci lokalnej, rwnoczenie zabezpieczaj twoje wewntrzne hosty przed atakami ze wiata zewntrznego. Prosta konfiguracja firewalla zostaa szczegowo opisana w rozdziale 9, Firewall TCP/IP. W rozdziale 11, Maskowanie IP i translacja adresw sieciowych,

Korzystanie z polecenia dip

117

omawiamy funkcj Linuksa zwan maskowaniem IP, ktre moe by doskona alternatyw dla serwerw proxy.
Zamy, e browar ma przypisany adres IP 192.168.5.74 dla dostpu przez SLIP.
Aby uzyska omwion powyej konfiguracj, musisz jedynie wprowadzi ten adres do pliku /etc/hosts z nazw vlager-slip. Procedura wczenia interfejsu SLIP pozostaje bez zmian.

Korzystanie z polecenia dip


Dotychczas opisane czynnoci nie byy trudne. Niemniej jednak zapewne wolaby
je zautomatyzowa. Duo lepiej byoby mie proste polecenie, ktre realizuje
wszystkie wymienione kroki niezbdne do otworzenia urzdzenia szeregowego,
zadzwonienia do dostawcy, zalogowania si, wczenia protokou obsugi SLIP
i skonfigurowania interfejsu sieciowego. Takim poleceniem jest dip.
Nazwa dip to skrt od angielskiego terminu dialup IP (IP cza komutowanego). Polecenie to zostao napisane przez Freda van Kempena i rozwinite dosy znacznie
przez wiele osb. Obecnie prawie wszyscy uywaj wersji dip337p-uri, ktra jest
doczana do wikszoci wspczesnych dystrybucji Linuksa, a take jest dostpna
w archiwum FTP metalab.unc.edu.
dip udostpnia interpreter prostego jzyka skryptowego, ktry moe obsuy modem, zmieni tryb SLIP i skonfigurowa interfejsy. Jzyk skryptowy jest wystarczajco silny, by sprosta wikszoci konfiguracji.
Aby skonfigurowa interfejs SLIP, dip potrzebuje przywilejw uytkownika root.
Moe ci kusi, aby nada programowi dip prawo setuid root, tak by wszyscy uytkownicy (bez koniecznoci posiadania uprawnie roota) mogli dzwoni do serwera
SLIP. Jest to bardzo niebezpieczne, poniewa ustawienie faszywych interfejsw
i domylnych tras za pomoc polecenia dip moe uszkodzi ruting w twojej sieci. Co
gorsza, da to twoim uytkownikom moliwo podczenia si do dowolnego serwera SLIP i wykonywania z twojej sieci niebezpiecznych atakw. Jeli chcesz pozwoli
uytkownikom na uruchamianie poczenia SLIP, napisz mae programy dodatkowe dla kadego potencjalnego serwera SLIP i z nich wywouj dip ze specjalnym
skryptem nawizujcym poczenie. Poprawnie napisanemu programowi tego typu
mona bezpiecznie nada prawo setuid root *. Alternatywnym, bardziej elastycznym podejciem jest nadanie zaufanym uytkownikom uprawnie roota do dip poprzez program typu sudo.

Przykadowy skrypt
Zamy, e host, z ktrym czysz si przez SLIP, to cowslip. Napisalimy skrypt
dla dipa cowslip.dip ktry realizuje nasze poczenie. Wywoujemy dip z nazw
skryptu jako argumentem:

diplogin te musi by uruchamiany z prawem setuid root, jak dowiesz si jeszcze z tego rozdziau.

118

Rozdzia 7: IP cza szeregowego

# dip cowslip.dip
DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93)
Written by Fred N. van Kempen, MicroWalt Corporation.
connected to cowslip.moo.com with addr 192.168.5.74
#

Sam skrypt pokazano w przykadzie 7-1.


Przykad 7-1: Przykadowy skrypt dip
# Przykadowy skrypt dip dzwonicy do cowslip
# Ustawienie lokalnych i zdalnych nazw i adresw
get $local vlager-slip
get $remote cowslip
port ttyS3
# wybr portu szeregowego
speed 38400
# ustawienie prdkoci na maksimum
modem HAYES
# ustawienie typu modemu
reset
# wyzerowanie modemu i tty
flush
# wyczyszczenie bufora modemu
# Przygotowanie do dzwonienia
send ATQ0V1E1X1\r
wait OK 2
if $errlvl !=0 goto error
dial 41988
if $errlvl !=0 goto error
wait CONNECT 60
if $errlvl !=0 goto error
# Ok, jestemy podczeni
sleep 3
send \r\n\r\n
wait ogin: 10
if $errlvl !=0 goto error
send $vlager\n
wait ssword: 5
if $errlvl !=0 goto error
send knockknock\n
wait running 30
if $errlvl !=0 goto error
# Zalogowalimy si i po drugiej stronie uruchamiany jest SLIP.
print Connected to $remote with address $rmtip
default
# Ustawienie rutingu domylnego na to cze
mode SLIP
# Przechodzimy take do trybu SLIP
# tu trafiamy w razie wystpienia bdu
error:
print SLIP to $remote failed.

Po podczeniu do cowslip i wczeniu SLIP, dip odcza si od terminala i przechodzi do pracy w tle. Moesz zacz uruchamia normalne usugi sieciowe na czu
SLIP. Aby zakoczy poczenie, po prostu wywoaj dip z opcj -k, co spowoduje
wysanie sygnau do dip. Wykorzystane zostanie do tego ID procesu, ktre dip zapisuje w pliku /etc/dip.pid.
# dip -k

W jzyku skryptowym polecenia dip sowa kluczowe poprzedzone znakiem dolara


oznaczaj nazwy zmiennych. dip posiada predefiniowany zestaw zmiennych, ktre
zostan omwione poniej. Na przykad $remote i $local zawieraj odpowied-

Korzystanie z polecenia dip

119

nio nazwy hostw lokalnego i zdalnego, znajdujcych si po obu stronach cza


SLIP.
Pierwsze dwie dyrektywy w przykadowym skrypcie to polecenia get, za pomoc
ktrych dip definiuje zmienne. Nazwy hostw lokalnego i zdalnego s tu ustawiane odpowiednio na vlager i cowslip.
Nastpne pi dyrektyw konfiguruje terminal i modem. reset wysya do modemu
cig zerujcy. Kolejna dyrektywa czyci bufor modemu tak, aby dialog logowania
umieszczony w kolejnych kilku wierszach zadziaa poprawnie. Dialog ten jest dosy prosty: po prostu dzwoni pod numer 41988 (numer telefonu cowslip) i loguje si
na konto $vlager za pomoc hasa knockknock. Polecenie wait powoduje, e dip
czeka na cig znakw podany jako pierwszy argument. Liczba podana jako drugi argument okrela, po ilu sekundach koczy si oczekiwanie, jeeli dany cig nie zostanie
odebrany. Polecenia if wystpujce w procedurze logowania sprawdzaj, czy nie
wystpi bd w wykonywanym poleceniu.
Ostatnie polecenia wywoywane po zalogowaniu si to: default, ustawiajce domylny ruting na zestawione wanie cze SLIP, i mode, wczajce tryb SLIP na
czu i konfigurujce interfejs oraz tablic rutingu.

dip
W tym podrozdziale podamy opis wikszoci polece dip. List wszystkich polece
moesz zobaczy, wywoujc dip w trybie testowym i wprowadzajc help. Aby
pozna skadni polecenia, moesz je wprowadzi bez adnych argumentw. Pamitaj, e nie sprawdzisz tak skadni tych polece, ktre nie potrzebuj argumentw.
Poniszy przykad ilustruje polecenie help:
# dip -t
DIP: Dialup IP Protocol Driver version 3.3.7p-uri (25 Dec 96)
Written by Fred N. van Kempen, MicroWalt Corporation.
Debian version 3.3.7p-2 (debian).
DIP> help
DIP knows about the following commands:
beep
databits
flush
inc
onexit
psend
securid
speed

bootp
dec
get
init
parity
port
send
stopbits

break
default
goto
mode
password
quit
shell
term

chatkey
dial
help
modem
proxyarp
reset
skey
timeout

config
echo
if
netmask
print
secureidfixed
sleep
wait

DIP> echo
Usage: echo on|off
DIP>

W kolejnych podrozdziaach przykady zawierajce monit DIP> pokazuj, jak


wprowadza polecenia w trybie testowym i jaki daj one wynik. Przykady bez tego
monitu naley traktowa jako fragmenty skryptw.

120

Rozdzia 7: IP cza szeregowego

Polecenia dotyczce modemu


dip udostpnia szereg polece konfigurujcych cze szeregowe i modem. Niektre
z nich s oczywiste, np. port, sucy do wyboru portu szeregowego, czy speed,
databits, stopbits i parity, ustawiajce typowe parametry cza. Polecenie
modem wybiera typ modemu. Aktualnie jedynym obsugiwanym trybem jest HAYES
(wymagane pisanie duymi literami). Musisz okreli programowi dip typ modemu,
gdy w przeciwnym razie nie bdzie moliwe wykonanie polece dial i reset.
Polecenie reset wysya cig znakw zerujcy modem. Stosowany cig zaley od
wybranego typu modemu. W przypadku modemw kompatybilnych ze standardem Hayesa, cigiem tym jest ATZ.
Polecenie flush moe by wykorzystane do usunicia z bufora wszystkich odpowiedzi wysanych przez modem do tej pory. W przeciwnym razie skrypt dialogowy
wystpujcy po poleceniu reset mgby zgupie, poniewa odczytaby odpowiedzi OK z poprzednich polece.
Polecenie init okrela cig inicjacyjny przekazywany do modemu przed rozpoczciem dzwonienia. Domylny cig dla modemw Hayesa to ATE0 Q0 V1 X1, wcza
on wypisywanie polece i dzwonienie na lepo (bez sprawdzania sygnau na linii).
Nowsze modemy posiadaj dobr konfiguracj fabryczn, a wic jest to zbdne,
cho w niczym nie przeszkadza.
Polecenie dial wysya cig inicjacyjny do modemu i dzwoni do zdalnego systemu.
Domylne polecenie dzwonienia dla modemw Hayesa to ATD.
Polecenie echo
Polecenie echo jest doskona pomoc przy debugowaniu. Wywoanie echo on powoduje, e dip powtarza na konsoli wszystko, co wysya do urzdzenia szeregowego.
Mona to z powrotem wyczy, wydajc polecenie echo off.
dip pozwala take na chwil wyj z trybu skryptowego i wej do trybu terminalowego. W tym trybie uywasz dip tak jak zwykego programu terminala, wysyajc
wpisywane znaki na cze szeregowe, odczytujc dane z cza szeregowego i wywietlajc znaki. Aby wyj z tego trybu, nacinij [CTRL+]].
Polecenie get
Za pomoc polecenia get dip nadaje warto zmiennej. Najprostsze jest przypisanie
zmiennej staej wartoci, co robilimy w skrypcie cowslip.dip. Moesz jednak poprosi
uytkownika o wprowadzenie czego, uywajc sowa kluczowego ask zamiast wartoci:
DIP> get $local ask
Enter the value for $local: _

Trzecia metoda to uzyskanie wartoci ze zdalnego hosta. W pierwszej chwili wyglda to dziwacznie, ale nieraz si bardzo przydaje. Niektre serwery SLIP nie pozwol ci uywa wasnego adresu IP na czu SLIP, a po poczeniu bd przypisywa ci adres z puli, wypisujc komunikat informujcy o otrzymanym adresie. Jeeli

Korzystanie z polecenia dip

121

otrzymasz komunikat: Your address: 192.168.5.74, poniszy fragment kodu dip pozwoli ci przypisa ten adres:
# zakoczenie logowania si
wait address: 10
get $locip remote

Polecenie print
Jest to polecenie uywane do wywietlania tekstw dip na konsoli, z ktrej zosta
uruchomiony. W poleceniu print mog by uyte wszystkie zmienne dip. Oto
przykad:
DIP> print Using port $port at speed $speed
Using port ttyS3 at speed 38400

Nazwy zmiennych
dip rozumie tylko predefiniowany zestaw zmiennych. Nazwy zmiennych zawsze
zaczynaj si od znaku dolara i musz by pisane maymi literami.
Zmienne $local i $locip zawieraj nazw i adres lokalnego hosta. Jeeli w zmiennej $local zapiszesz kanoniczn nazw hosta, dip bdzie automatycznie prbowa
zamieni nazw hosta na jego adres IP i zapisa go w zmiennej $locip. Podobny,
aczkolwiek odwrotny proces zachodzi, gdy przypiszesz adres IP zmiennej $locip:
dip bdzie prbowa wyszukiwania odwrotnego, czyli bdzie chcia zidentyfikowa
nazw hosta i zapisa j w zmiennej $local.
Zmienne $remote i $rmtip dziaaj w ten sam sposb dla adresu i nazwy hosta
zdalnego. $mtu zawiera warto MTU dla poczenia.
Te pi zmiennych to jedyne zmienne, ktrym wartoci mog by przypisywane
bezporednio za pomoc polecenia get. Szereg innych zmiennych jest ustawianych
w wyniku dziaania polece konfiguracyjnych o tej samej nazwie, a mog one by
uywane w dyrektywie print. Nale do nich $modem, $port i $speed.
$errlvl jest zmienn, przez ktr uzyskujesz wynik wykonania ostatniego polecenia. Poziom bdu 0 oznacza poprawne wykonanie, natomiast wartoci rne od zera
oznaczaj bd.
Polecenia if i goto
Polecenie if to tradycyjne rozgazienie warunkowe, a nie w peni wyposaona
programistyczna dyrektywa if. Skadnia jest nastpujca:
if zm op liczba goto etykieta

Wyraenie musi by prostym porwnaniem jednej ze zmiennych: $errlvl, $locip lub $rmtip. zm musi by liczb cakowit, operator op moe by jednym ze
znakw ==, !=, <, >, <= i >=.
Polecenie goto powoduje, e wykonywanie skryptu jest kontynuowane od wiersza,
ktry nastpuje po etykiecie. Etykieta musi by pierwszym sowem w wierszu
i musi by zakoczona dwukropkiem.

122

Rozdzia 7: IP cza szeregowego

send, wait i sleep


Te polecenia pomagaj zaimplementowa proste skrypty dialogowe w dip. Polecenie
send wysya argumenty do cza szeregowego. Nie obsuguje zmiennych, ale rozumie wszelkie sekwencje ze znakami ukonika odwrotnego znane z jzyka C, takie
jak \n oznaczajce nowy wiersz i \b oznaczajce cofnicie. Znak tyldy (~) moe by
zastosowany jako skrt cigu znakw: powrt karetki/nowy wiersz.
Polecenie wait jako argument przyjmuje sowo i odczytuje wszystkie dane wejciowe na czu szeregowym, a wykryje cig znakw pasujcy do zadanego sowa. Samo sowo nie moe zawiera spacji. Opcjonalnie, jako drugi argument, moesz poda w poleceniu wait warto czasu oczekiwania. Jeeli oczekiwane sowo nie zostanie odebrane w tym czasie, polecenie zwrci w zmiennej $errlvl warto 1. Polecenie to jest uywane do wykrywania monitu logowania i innych.
Polecenie sleep moe by uywane do odczekania pewnego czasu. Na przykad,
aby cierpliwie zaczeka na zakoczenie sekwencji logowania. Znw czas jest podawany w sekundach.
mode i default
Te polecenia s uywane do przeczania cza szeregowego w tryb SLIP i konfigurowania interfejsu.
Polecenie mode jest ostatnim poleceniem wykonywanym przez dip przed przejciem
w tryb demona. Dopki nie wystpi bd, polecenie nie koczy si.
mode przyjmuje jako argument nazw protokou. Obecnie dip rozpoznaje SLIP,
CSLIP, SLIP6, CSLIP6, PPP i TERM. Jednak aktualna wersja dip nie rozumie trybu
adaptive SLIP.
Po przeczeniu cza szeregowego do trybu SLIP, dip wywouje polecenie ifconfig
w celu skonfigurowania interfejsu jako cza punkt-punkt i polecenie route do skonfigurowania rutingu do zdalnego hosta.
Jeeli skrypt dodatkowo wywoa polecenie default przed poleceniem mode, dip
tworzy domylny ruting wskazujcy na cze SLIP.

Dziaanie w trybie serwera


Skonfigurowanie klienta SLIP byo trudniejszym zadaniem. Skonfigurowanie twojego hosta, aby dziaa jako serwer SLIP jest duo atwiejsze.
Istniej dwa sposoby skonfigurowania serwera SLIP. Oba wymagaj utworzenia
jednego konta logowania dla kadego klienta SLIP. Zamy, e udostpniasz
usug SLIP Arthurowi Dentowi z dent.beta.com. Dodajc poniszy wiersz do twojego pliku passwd, moesz stworzy konto o nazwie dent:
dent:*:501:60:Konto SLIP Arthura Denta:/tmp:/usr/sbin/diplogin

Nastpnie za pomoc polecenia passwd musisz ustawi haso uytkownika dent.


Polecenie dip moe by uruchomione w trybie serwera przez wywoanie diplogin.
Zwykle diplogin jest dowizaniem do dip. Jego gwnym plikiem konfiguracyjnym

Dziaanie w trybie serwera

123

jest /etc/diphosts, w ktrym zwykle wpisujesz adres IP przypisywany uytkownikowi, gdy zadzwoni. Alternatywnie moesz take uy polecenia sliplogin, narzdzia
pochodzcego z BSD i posiadajcego bardziej elastyczny schemat konfiguracji pozwalajcy ci na wywoywanie skryptw powoki, gdy host si podcza lub rozcza.
Gdy nasz uytkownik SLIP-a, dent, zaloguje si, dip jest uruchamiany jako serwer.
Aby stwierdzi, czy dany uytkownik naprawd ma prawo uywa SLIP-a, szuka
on nazwy uytkownika w pliku /etc/diphosts. Plik ten zawiera szczegowe prawa
dostpu i parametry poczenia dla kadego uytkownika SLIP-a. Oglny format
wpisu w /etc/diphosts jest nastpujcy:
# /etc/diphosts
uytkownik:haso:adres-zdalny:adres-lokalny:maska:komentarze:protok,MTU
#

Kade z pl jest opisane w tabeli 7-2.


Tabela 7-2. Opis pl pliku /etc/diphosts
Pole

Opis

uytkownik
Haso

Pole to okrela nazw uytkownika wywoujcego dip.


Drugie pole pliku /etc/diphosts jest uywane do zapewnienia dodatkowej warstwy bezpieczestwa przy czeniu si na podstawie hasa.
Moesz tu umieci haso w zaszyfrowanej postaci (tak jak w pliku
/etc/passwd), a diplogin poprosi uytkownika o wprowadzenie hasa, zanim pozwoli mu na dostp SLIP. Zauwa, e jest to haso uzupeniajce,
uywane obok zwykego hasa wprowadzanego w monicie login.
Adres, ktry zostanie przypisany zdalnej maszynie. Adres ten moe
by podany take w postaci nazwy hosta, ktra zostanie zamieniona na
numer IP, albo bezporednio w postaci numeru IP w notacji kropkowej.
Adres IP, ktry bdzie uywany dla lokalnego koca poczenia SLIP.
Moe by podany w postaci nazwy hosta lub numeru IP.
Maska sieci, ktra bdzie uywana do rutingu. Wiele osb le interpretuje to pole. Maska sieci nie dotyczy samego cza SLIP, ale jest uywana w
poczeniu z adresem-zdalnym do utworzenia trasy do zdalnej sieci.
Maska sieci powinna by taka sama jak maska uywana przez sie
obsugiwan przez zdalnego hosta.
Jest to pole tekstowe, w ktrym mona wprowadzi dowolny opis i jest
ono traktowane jako pomoc w dokumentowaniu pliku /etc/diphosts.
Pole to nie ma innych zastosowa.
W tym polu okrela si, jakiego protokou obsugi chcesz uywa dla
danego poczenia. Poprawne wpisy s identyczne z uywanymi z argumentem -p polecenia slattach.
Maksymalna jednostka transmisji, ktr mona przesa przez cze. To
pole opisuje najwikszy datagram przesyany przez cze. Kady datagram rutowany przez urzdzenie SLIP, ktry jest wikszy ni MTU,
zostanie podzielony na datagramy nie wiksze, ni ta warto. MTU
zwykle jest konfigurowane tak samo na obu kocach cza.

adres-zdalny

adres-lokalny
maska

komentarze
protok
MTU

124

Rozdzia 7: IP cza szeregowego

Przykadowy wpis dla dent mgby wyglda tak:


dent::dent.beta.com:vbrew.com:255.255.255.0:Arthur Dent:CSLIP,296

Ten przykad daje naszemu uytkownikowi dent dostp do SLIP-a bez potrzeby
wprowadzania dodatkowego hasa. Bdzie mu przypisany adres IP zwizany
z nazw dent.beta.com i maska sieci 255.255.255.0. Domylny ruting powinien by
przekierowany na adres IP vbrew.com. Poczenie bdzie wykorzystywao protok
CSLIP z MTU rwnym 296 bajtw.
Gdy dent si zaloguje, diplogin odczyta informacje na jego temat z pliku diphosts.
Gdyby drugie pole zawierao warto, diplogin poprosiby o dodatkowe haso.
Wprowadzony przez uytkownika cig znakw zostaby zaszyfrowany i porwnany z hasem z pliku diphosts. Gdyby cigi si nie zgadzay, prba zalogowania nie powiodaby si. Gdyby pole hasa zawierao cig znakw s/key, a dip byby skompilowany z obsug S/Key, uruchomione byoby uwierzytelnianie S/Key. Jest ono opisane w dokumentacji zawartej w pakiecie rdowym dip.
Po poprawnym zalogowaniu si, diplogin przecza cze szeregowe w tryb CSLIP
lub SLIP i konfiguruje interfejs oraz ruting. Poczenie pozostaje zestawione, dopki
uytkownik go nie rozczy i modem nie zostanie odczony od linii telefonicznej.
diplogin przywraca cze szeregowe do normalnego protokou obsugi i koczy prac.
diplogin wymaga praw uytkownika uprzywilejowanego. Jeeli dip nie dziaa z prawem setuid root, powiniene spowodowa, eby diplogin by oddzieln kopi dip,
a nie dowizaniem. diplogin moe wtedy mie nadane prawo setuid bez zmiany statusu samego dip.

Protok punkt-punkt
Rozdzia 8: Protok punkt-punkt

Podobnie jak SLIP, protok PPP jest uywany do wysyania datagramw przez
cze szeregowe, jednak nie ma on wielu wad SLIP-a. Po pierwsze, pozwala na przesyanie wikszej liczby protokow i nie jest ograniczony do protokou IP. Ma moliwo wykrywania bdw na samym czu, gdzie SLIP akceptowa i przekazywa
uszkodzone datagramy, chyba e uszkodzony zosta nagwek. Ponadto, pozwala
stronom poczenia negocjowa na pocztku opcje, takie jak adres IP i maksymalny
rozmiar datagramu, oraz zapewnia uwierzytelnianie klienta. Taka wbudowana moliwo negocjacji pozwala na niezawodn automatyzacj przy zestawianiu
poczenia, natomiast dziki uwierzytelnianiu nie s potrzebne sztuczne konta uytkownikw, ktre byy stosowane w przypadku SLIP-a. Kada z tych moliwoci jest
w PPP obsugiwana przez oddzielny protok. W tym rozdziale krtko omwimy
podstawowe moduy PPP. Niniejszy opis PPP jest daleki od kompletnoci, a wic jeeli chcesz wiedzie wicej, zachcamy ci do przeczytania specyfikacji protokou
w odpowiednim dokumencie RFC i szeregu uzupeniajcych RFC. Istnieje rwnie
caa ksika powicona temu tematowi: Using & Managing PPP napisana przez Andrew Suna (O'Reilly).
Na samym dole PPP znajduje si protok wysokopoziomowego sterowania czem
danych (High-Level Data Link Control HDLC), ktry definiuje granice pojedynczych
ramek PPP i zapewnia 16-bitow sum kontroln*. W przeciwiestwie do prymitywnej enkapsulacji SLIP, ramka PPP moe zawiera pakiety rnych protokow,
nie tylko IP, czyli na przykad IPX Novella czy AppleTalk. PPP dodaje bowiem do
podstawowej ramki HDLC pole protokou identyfikujce typ pakietu przesyanego
w ramce.
Nad HDLC znajduje si protok sterowania czem (Link Control Protocol LCP) negocjujcy opcje dotyczce cza danych, na przykad maksymaln jednostk odbioru (Maximum Receive Unit MRU) wyznaczajc maksymalny rozmiar datagramu, jaki jedna strona cza zgodzia si odbiera.
*

W rzeczywistoci, HDLC jest protokoem oglnego przeznaczenia stworzonym przez midzynarodow organizacj standaryzacyjn ISO; jest on rwnie istotnym skadnikiem specyfikacji X.25.

126

Rozdzia 8: Protok punkt-punkt

Wanym krokiem naprzd w konfiguracji cza PPP jest autoryzacja (uwierzytelnienia) klienta. Cho nie jest ona obowizkowa, powinna by uywana w przypadku linii komutowanych, aby nie dopuci intruzw do systemu. Zazwyczaj wywoywany host (serwer) prosi klienta o podanie tajnego klucza. Jeeli host wywoujcy nie
wygeneruje odpowiedniego klucza, poczenie jest zrywane. W PPP autoryzacja
dziaa w obie strony. Host wywoujcy moe rwnie poprosi o autoryzacj serwera. Te procedury s zupenie niezalene od siebie. Dla dwch rnych sposobw autoryzacji istniej dwa protokoy, ktre bdziemy dokadniej omawiali w tym rozdziale: protok uwierzytelniania hasem (Password Authentication Protocol PAP) i protok uwierzytelnienia przez uzgodnienie (Challenge Handshake Authentication Protocol CHAP).
Kady protok sieciowy rutowany przez cze danych (jak IP i AppleTalk) jest konfigurowany dynamicznie za pomoc odpowiedniego protokou sterowania sieci (Network Control Protocol NCP). Aby wysa datagram IP przez cze, obie strony
uczestniczce w poczeniu PPP musz najpierw wynegocjowa uywane przez kad z nich adresy IP. Protok sterujcy uywany w tej negocjacji to protok sterowania protokoem internetowym (Internet Protocol Control Protocol IPCP).
Poza wysyaniem standardowych datagramw IP przez cze, PPP take obsuguje
kompresj nagwkw (Van Jacobsona) datagramw IP. Technika ta zmniejsza
nagwki pakietw IP do zaledwie trzech bajtw. Jest ona take stosowana w CSLIP
i potocznie nazywa si j kompresj nagwkw VJ. Uycie kompresji moe by
rwnie negocjowane za pomoc protokou IPCP.

PPP w Linuksie
W Linuksie do funkcjonowania PPP s potrzebne dwie rzeczy: element jdra
obsugujcy protokoy niskopoziomowe (HDLC, IPCP, IPXCP itp.) i demon pppd
dziaajcy w przestrzeni uytkownika i obsugujcy rne protokoy wyszego poziom, takie jak PAP i CHAP. Aktualna wersja oprogramowania PPP dla Linuksa zawiera demon pppd i program o nazwie chat, ktre automatyzuj poczenie telefoniczne z systemu zdalnego.
Sterownik PPP jdra zosta napisany przez Michaela Callahana i przerobiony przez
Paula Mackerrasa. pppd powstao na podstawie darmowej implementacji PPP* dla
Suna i komputerw 386BSD, napisanej przez Drew Perkinsa i innych i utrzymywanej przez Paula Mackerrasa. Zostao przeniesione na Linuksa przez Ala Longyeara.
Program chat napisa Karl Fox**.
Podobnie jak SLIP, tak i PPP zosta zaimplementowany przez specjalny protok
obsugi cza. Aby wykorzysta cze szeregowe jako cze PPP, musisz najpierw jak
zwykle zestawi poczenie przez modem, a nastpnie przeczy cze w tryb PPP.
W tym trybie wszystkie przychodzce dane s przekazywane sterownikowi PPP,
*

Jeeli masz jakiekolwiek oglne pytania na temat PPP, kieruj je do listy dyskusyjnej Linux-net na adres
vgert.rutgers.edu.

** Z Karlem mona si skontaktowa pod adresem karl@morningstar.com.

Eksploatacja pppd

127

ktry sprawdza poprawno przychodzcych ramek HDLC (kada ramka HDLC


zawiera 16-bitow sum kontroln), rozpakowuje je oraz obsuguje. Obecnie PPP
jest w stanie przesya zarwno protok IP, opcjonalnie z kompresj nagwkw
Van Jacobsona, jak i protok IPX.
pppd wspomaga sterownik jdra, wykonujc obowizkow faz inicjacyjn i uwierzytelniajc, zanim rzeczywisty ruch sieciowy zostanie przesany przez cze. Zachowanie pppd mona regulowa szeregiem opcji. Poniewa PPP jest raczej
zoonym protokoem, niemoliwe jest wyjanienie wszystkich opcji w jednym rozdziale. Dlatego ta ksika nie omawia wyczerpujco pppd, a tylko podaje oglny zarys. Dokadniejsze informacje znajdziesz we wspomnianej ju ksice Using & Managing PPP lub na stronach podrcznika elektronicznego pppd oraz we wspomnianych ju plikach README pakietu rdowego pppd. Pomog ci one odpowiedzie
na wikszo pyta, ktre tutaj nie zostay uwzgldnione. Pomocny moe by take
dokument PPP-HOWTO.
Prawdopodobnie w konfigurowaniu PPP najbardziej pomog ci inni uytkownicy tej
samej dystrybucji Linuksa. Pytania o konfiguracj PPP s dosy powszechne, a wic
sprawd swoj lokaln grup dyskusyjn lub kana linuksowy na IRC-u. Jeeli masz
problemy nawet po przeczytaniu dokumentacji, moesz sprbowa je rozwiza poprzez grup dyskusyjn comp.protocols.ppp. Jest to miejsce, gdzie spotyka si wikszo osb zaangaowanych w rozwj pppd.

Eksploatacja pppd
Gdy chcesz si podczy do Internetu przez cze PPP, musisz skonfigurowa
podstawowe funkcje sieciowe, jak urzdzenie ptli zwrotnej i resolver. Obie zostay
omwione w rozdziale 5, Konfigurowanie sieci TCP/IP, i w rozdziale 6, Usugi nazewnicze i konfigurowanie resolvera. Moesz po prostu skonfigurowa serwer nazw swojego
dostawcy Internetu w pliku /etc/resolv.conf, ale bdzie to oznaczao, e kade danie
DNS jest wysyane przez cze szeregowe. Ta sytuacja nie jest optymalna. Im jeste
bliej (w sensie sieci) swojego serwera nazw, tym szybciej s realizowane wyszukiwania nazw. Alternatywnym rozwizaniem jest skonfigurowanie serwera nazw pamici podrcznej na hocie w twojej sieci. Oznacza to, e pierwsze zapytanie DNS
o okrelonego hosta jest wysyane przez cze szeregowe, ale odpowied na kade
kolejne bdzie wysyana bezporednio z twojego lokalnego serwera nazw i bdzie
realizowana duo szybciej. Konfiguracja ta jest opisana w podrozdziale Konfiguracja
named jako serwera pamici podrcznej rozdziau 6.
Dla potrzeb naszego przykadu realizacji poczenia PPP z pppd zamy, e znw
jeste na hocie vlager. Najpierw dzwonisz do serwera PPP, c3po, i logujesz si na
koncie ppp. Serwer c3po uruchamia swj sterownik PPP. Po zakoczeniu pracy
z programem komunikacyjnym uywanym do dzwonienia, jest wykonywane nastpujce polecenie, w ktrym musisz zastpi pokazan nazw urzdzenia szeregowego ttyS3 swoj nazw.
# pppd /dev/ttyS3 38400 crtscts defaultroute

128

Rozdzia 8: Protok punkt-punkt

Polecenie to przecza cze szeregowe ttyS3 na protok obsugi PPP i negocjuje


cze IP z c3po. Prdko uywana na tym porcie szeregowym wynosi 38400 bitw
na sekund.
Opcja crtscts wcza na porcie uzgadnianie sprztowe, ktre jest bezwzgldnie
wymagane przy prdkociach powyej 9600 bps.
Po uruchomieniu pppd w pierwszej kolejnoci negocjuje kilka charakterystyk cza
z drug stron za pomoc LCP. Zwykle wystarcza domylny zestaw opcji pppd,
a wic nie bdziemy tu rozwija tego tematu. Wystarczy powiedzie, e ta negocjacja
czciowo dotyczy dania lub przypisania adresw IP dla kadej ze stron poczenia.
Na razie zakadamy, e serwer c3po nie wymaga od nas adnego uwierzytelnienia,
a wic faza konfiguracji koczy si penym sukcesem.
pppd bdzie nastpnie negocjowa parametry IP z drug stron, uywajc IPCP
protokou sterujcego IP. Poniewa wczeniej nie okrelilimy adnego szczeglnego adresu IP dla pppd, to bdzie on prbowa wykorzysta adres uzyskany od resolvera sprawdzajcego lokaln nazw hosta. Nastpnie obie strony przeka sobie
wzajemnie swoje adresy.
Zwykle w ustawieniach domylnych nie ma nic zego. Nawet jeeli twj komputer
znajduje si w sieci Ethernet, moesz mie ten sam adres IP zarwno dla interfejsu
Ethernet, jak i PPP. Jednak pppd pozwala uywa innego adresu, a nawet zasugerowa drugiej stronie uycie jakiego okrelonego adresu. Opcje te omawiamy dalej,
w podrozdziale Opcje konfiguracyjne IP.
Po przejciu przez faz konfiguracji IPCP, pppd przygotuje warstw sieciow twojego hosta do dziaania w roli cza PPP. Najpierw konfiguruje interfejs sieciowy PPP
jako cze punkt-punkt, uywajc ppp0 dla pierwszego aktywnego cza PPP, ppp1
dla drugiego i tak dalej. Nastpnie dokonuje wpisu w tablicy rutingu, tak by wskazywa on na hosta po drugiej stronie cza. W poprzednim przykadzie pppd ustawi
domylny ruting do sieci na c3po, poniewa podalimy go w opcji defaultroute*.
Obecno trasy domylnej upraszcza ruting, gdy wszelkie datagramy IP nie przeznaczone dla hosta lokalnego s wysyane do c3po. Ma to sens, poniewa jest to jedyna trasa, ktr mona do niego dotrze. Istnieje szereg rnych schematw rutingu obsugiwanych przez pppd. Omwimy je szczegowo w dalszej czci tego rozdziau.

Uywanie plikw opcji


Zanim pppd dokona analizy skadniowej argumentw wiersza polece, przeglda
kilka plikw w poszukiwaniu opcji domylnych. Pliki te mog zawiera wszelkie
dopuszczalne argumenty wiersza polece rozrzucone po wielu wierszach. Znaki
hasha (#) oznaczaj komentarze.
Pierwszym plikiem opcji jest /etc/ppp/options. Jest on zawsze przegldany podczas
uruchamiania pppd. Uycie tego pliku do ustawienia kilku globalnych wartoci do*

Domylna trasa do sieci jest instalowana tylko wtedy, gdy adna inna nie jest do tej pory zdefiniowana.

Stosowanie chat do automatycznego dzwonienia

129

mylnych jest dobrym pomysem, poniewa pozwala powstrzyma uytkownikw


od zrobienia pewnych rzeczy, ktre mog zagraa bezpieczestwu systemu. Na
przykad, aby wczy w pppd wymg uwierzytelniania (PAP czy CHAP) dla drugiej strony, wystarczy doda w tym pliku opcj auth. Opcja ta nie moe by zmieniona przez uytkownika, a wic niemoliwe staje si zrealizowanie poczenia PPP
z jakimkolwiek systemem, ktry nie znajduje si w autoryzacyjnej bazie danych. Zauwa jednak, e niektre opcje mona zmieni. Dobrym przykadem jest cig znakw opcji connect.
Inny plik opcji odczytywany po /etc/ppp/options, to .ppprc w katalogu macierzystym
uytkownika. Pozwala on kademu uytkownikowi okreli wasny zestaw opcji
domylnych.
Przykadowy plik /etc/ppp/options mgby wyglda tak:
# Globalne opcje dla pppd dziaajcego na vlager.vbrew.com
lock
# uyj blokowania urzdzenia w stylu UUCP
auth
# wymg uwierzytelnienia
usehostname
# uyj lokalnej nazwy hosta dla CHAP
domain vbrew.com
# nazwa naszej domeny

Sowo kluczowe lock powoduje, e pppd obsuguje metod blokowania urzdzenia


zgodn ze standardem UUCP. W tej konwencji kady proces, ktry ma dostp do
urzdzenia szeregowego, na przykad /dev/ttyS3, tworzy w specjalnym katalogu
plik blokujcy o nazwie postaci LCK..ttyS3 i w ten sposb informuje, e urzdzenie
jest uywane. Jest to jedyna moliwo, aby inne programy, takie jak minicom czy
uucico, nie otwieray urzdze szeregowych uywanych przez PPP.
Kolejne trzy opcje odnosz si do uwierzytelniania i co za tym idzie s zwizane
z bezpieczestwem systemu. Opcje uwierzytelniania najlepiej umieci w globalnym pliku konfiguracyjnym, poniewa jest on uprzywilejowany i ma wyszy
priorytet ni pliki opcji uytkownikw ~/.ppprc (nie mog oni zmienia ustawionych
w nim opcji).

Stosowanie chat do automatycznego dzwonienia


Jedn z rzeczy w poprzednim przykadzie, ktra moga wyda ci si niewygodna,
jest to, e musisz rcznie zrealizowa poczenie, zanim bdziesz mg uruchomi
pppd. W odrnieniu od dip, pppd nie ma wasnego jzyka skryptowego pozwalajcego na dzwonienie i logowanie si do zdalnych systemw, ale korzysta z zewntrznego programu lub skryptu powoki. Polecenie do wykonania moe by podane pppd
za pomoc opcji wiersza polece connect. pppd przekieruje standardowe wejcie
i wyjcie polecenia do cza szeregowego.
Pakiet oprogramowania pppd zawiera bardzo prosty program chat, ktry moe by
uywany do automatyzacji prostych sekwencji logowania. Polecenie to omwimy
bardziej szczegowo.
Jeeli twoja sekwencja logowania jest zoona, bdziesz potrzebowa czego lepszego ni chat. Na pewno wart rozwaenia jest expect, napisany przez Dona Libesa. Ma
bardzo wydajny jzyk oparty na Tcl i zosta przewidziany wanie do takich zada.

130

Rozdzia 8: Protok punkt-punkt

Jeli masz sekwencj logowania, ktra wymaga na przykad uwierzytelnienia typu


wywoanie/odpowied, opatrego na kalkulatorowych generatorach kluczy, przekonasz si, e expect jest wystarczajco dobry, by zrealizowa to zadanie. Poniewa
moliwoci s tutaj due, nie bdziemy opisywali, jak stworzy odpowiedni skrypt
expecta. Do powiedzie, e swj skrypt expect moesz wywoa, podajc jego nazw w opcji connect pppd. Trzeba take wiedzie, e gdy skrypt zostanie uruchomiony, standardowe wejcie i wyjcie zostan podczone do modemu, a nie do terminala, z ktrego zosta wywoany pppd. Jeeli wymagana jest interakcja z uytkownikiem, powiniene j obsuy, otwierajc dodatkowy wirtualny terminal lub w jaki inny sposb.
Polecenie chat pozwala ci stworzy skrypt dialogowy w stylu UUCP. Zasadniczo
skrypt chat skada si z kolejnych sekwencji cigw znakw, ktrych oczekujemy od
zdalnego systemu, i odpowiedzi, ktre na nie wysyamy. Nazywamy je odpowiednio
cigiem oczekiwanym (ang. expect string) i cigiem wysyanym (ang. send string). Oto
typowy fragment skryptu dialogowego:
ogin: b1ff ssword: s3|<r1t

Ten skrypt informuje chat, eby czeka, a system zdalny przyle monit logowania,
i w odpowiedzi wysa nazw uytkownika b1ff. Oczekujemy tylko na ogin:,
a wic nie ma znaczenia, czy monit logowania zaczyna si du, czy ma liter l.
Nastpny cig powoduje, e chat czeka na monit hasa i wysya w odpowiedzi nasze
haso.
W zasadzie jest to wszystko, co robi skrypty dialogowe. Peny skrypt dzwonicy do
serwera PPP oczywicie musiaby zawiera odpowiednie polecenia modemu.
Zamy, e twj modem rozumie zestaw polece Hayesa, a numer telefonu serwera to 318714. Pene wywoanie chat realizujce poczenie z c3po byoby nastpujce:
$ chat -v '' ATZ OK ATDT318714 CONNECT '' ogin: ppp word: GaGariN

Z definicji pierwszy cig musi by cigiem oczekiwanym, ale poniewa modem nic
nie przyle, zanim go nie zainicjujemy, ustawilimy chat tak, aby pomija pierwszy
oczekiwany cig znakw, podajc cig pusty. Nastpnie wysyamy ATZ polecenie
zerowania modemw kompatybilnych ze standardem Hayesa i czekamy na odpowied (OK). Kolejny cig znakw wysya do chat polecenie dial wraz z numerem telefonu i oczekuje w odpowiedzi komunikatu CONNECT. Dalej znw nastpuje pusty
cig znakw, poniewa nie chcemy teraz nic wysya, a raczej czekamy na monit logowania. Pozostaa cz skryptu dialogowego dziaa dokadnie tak, jak opisalimy
wczeniej. Opis ten prawdopodobnie wyglda na nieco zagmatwany, ale za chwil
zobaczymy, e istnieje sposb na stworzenie skryptw dialogowych duo atwiejszych do zrozumienia.
Opcja -v powoduje, e chat loguje wszystkie dziaania przez funkcj local2* demona syslog.
*

Jeeli dokonasz edycji pliku syslog.conf i przekierujesz te komunikaty do pliku, sprawd, czy plik ten
nie jest czytelny dla wszystkich, gdy chat domylnie wpisuje tam rwnie cay skrypt dialogowy
wcznie z hasami.

Stosowanie chat do automatycznego dzwonienia

131

Podanie skryptu dialogowego w wierszu polece jest ryzykowne, poniewa uytkownicy mog podejrze wiersz polece za pomoc ps. Ryzyka tego moesz unikn, umieszczajc skrypt dialogowy w pliku na przykad dial-c3po. Nastpnie zmuszasz chat do czytania skryptu z pliku zamiast z wiersza polece, podajc opcj -f,
a po niej nazw pliku. Takie podejcie ma dodatkow zalet uatwia zrozumienie
sekwencji skryptu dialogowego. Po zamianie naszego przykadu na plik dial-c3po
bdzie on wyglda nastpujco:
''
OK
CONNECT
ogin:
word:

ATZ
ATDT318714
''
ppp
GaGariN

W tej postaci skryptu dialogowego oczekiwany cig znakw znajduje si po lewej


stronie, a to co wysyamy w odpowiedzi po prawej. Co pokazanego w taki sposb
czyta si duo atwiej.
Pene wywoanie pppd teraz wygldaoby nastpujco:
# pppd connect "chat -f dial-c3po" /dev/ttyS3 38400 -detach \
crtscts modem defaultroute

Poza opcj connect okrelajc skrypt, podalimy w wierszu polece dwie dodatkowe opcje: -detach, ktra mwi pppd, by nie odcza si od konsoli i nie stawa si
procesem dziaajcym w tle, oraz sowo kluczowe modem, ktre realizuje dziaania
specyficzne dla modemu widocznego jako urzdzenie szeregowe, czyli rozczenie
linii przed dzwonieniem i po nim. Jeeli nie uyjesz tego sowa kluczowego, pppd nie
bdzie sprawdzao linii DCD portu i nie wykryje, czy przypadkiem druga strona si
nie zawiesia.
Pokazane przykady s raczej proste. chat pozwala na tworzenie duo bardziej
skomplikowanych skryptw. Na przykad mona okreli cig znakw, przy ktrym dialog zostanie przerwany z bdem. Typowe cigi przerywajce komunikat
BUSY czy NO CARRIER. Modem zwykle je generuje, gdy wywoywany numer jest
zajty albo nie odpowiada. Aby chat rozpoznawa te komunikaty natychmiast,
moesz je wpisa na pocztku skryptu, uywajc sowa kluczowego ABORT:
$ chat -v ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ...

Podobnie moesz zmieni wartoci czasu oczekiwania dla czci skryptw dialogowych, wstawiajc tam opcje TIMEOUT.
Czasami potrzebne jest take warunkowe wykonywanie czci skryptu chat: gdy nie
otrzymasz monitu logowania drugiej strony, zapewne zechcesz wysa BREAK lub
powrt karetki. Moesz to zrobi, dodajc podskrypt do oczekiwanego cigu. Podskrypt skada si z oddzielonych kresk sekwencji cigw wysyanego i oczekiwanego, tak jak normalny skrypt. Podskrypt jest wykonywany wtedy, gdy oczekiwany
cig znakw, do ktrego jest doklejony, nie nadejdzie na czas. Powyszy przykad
moglibymy zmodyfikowa nastpujco:
ogin:-BREAK-ogin: ppp ssword: GaGariN

132

Rozdzia 8: Protok punkt-punkt

Gdy chat nie zobaczy monitu logowania zdalnego systemu, wywoywany jest podskrypt, ktry najpierw wysya BREAK, a nastpnie czeka ponownie na monit logowania. Jeeli teraz monit si pojawi, skrypt dziaa dalej normalnie. W przeciwnym
razie koczy dziaanie z bdem.

Opcje konfiguracyjne IP
Protok IPCP jest uywany do negocjowania szeregu parametrw IP w czasie konfiguracji cza. Zwykle kada ze stron wysya pakiet dania konfiguracji IPCP (ang.
IPCP configuration request) zawierajcy zmienne, ktrych warto domyln chce
zmieni. Po jego otrzymaniu strona zdalna sprawdza kad opcj po kolei i potwierdza j albo odrzuca.
pppd daje ci du kontrol nad opcjami IPCP, ktre prbuje negocjowa. Moesz je
dostosowywa przez rne opcje wiersza polece, ktre omawiamy poniej.

Wybr adresw IP
Wszystkim interfejsom trzeba przypisa adresy IP. Urzdzenie PPP zawsze ma adres
IP. W zestawie protokow PPP znajduje si mechanizm pozwalajcy na automatyczne przypisanie adresw IP do interfejsw PPP. Program PPP po jednej stronie cza
punkt-punkt moe przypisa adres IP drugiemu kocowi, ale moliwe jest take, by
kady uywa wasnego adresu IP.
Niektre serwery PPP obsugujce wiele klientw przypisuj adresy dynamicznie.
S one przypisywane do systemw tylko wtedy, gdy te zadzwoni, a odbierane im,
gdy si wyloguj. Pozwala to na ograniczenie liczby adresw IP do liczby linii komutowanych. Cho ograniczenie to jest wygodne dla zarzdcw komutowanego
serwera PPP, czsto jest mniej wygodne dla dzwonicych do niego uytkownikw.
W rozdziale 6 omwilimy sposb odzorowywania nazw hostw na adresy IP za pomoc bazy danych. Aby ludzie mogli podczy si do twojego hosta, musz zna jego adres IP lub nazw. Jeeli jeste uytkownikiem usugi PPP, ktra przypisuje ci
adres dynamicznie, trudno bdzie ci si tego dowiedzie bez uzyskania czego w rodzaju pozwolenia na uaktualnianie bazy danych DNS po przypisaniu adresu IP. Takie systemy istniej, ale nie bdziemy ich tu szczegowo omawia. Przyjrzymy si
natomiast preferowanemu podejciu, ktre polega na uyciu tego samego adresu IP
za kadym razem, gdy ustanawiasz swoje poczenie sieciowe*.
W poprzednim przykadzie mielimy host c3po, na ktrym dziaa demon pppd,
i z nim zestawilimy poczenie IP. Nie postawilimy warunku, by po jakiejkolwiek
stronie poczenia zosta wybrany konkretny adres IP. Zamiast tego pozwolilimy
pppd na realizacj swojego dziaania domylnego. Demon ten prbowa znale adres IP dla nazwy hosta lokalnego, w naszym przykadzie vlager, ktry wykorzysta
po stronie lokalnej oraz pozwoli maszynie zdalnej c3po na ustalenie wasnego adresu. PPP obsuguje kilka rnych sposobw przypisywania numerw IP.
*

Wicej informacji na temat dwch mechanizmw dynamicznego przypisywania hostw znajdziesz


pod adresami: http://www.dynip.com i http://www.justlinux.com/dynamic_dns.html.

Opcje konfiguracyjne IP

133

Aby uzyska konkretne adresy, wywoujesz pppd z nastpujc opcj:


adres_lokalny:adres_zdalny

adres_lokalny i adres_zdalny mog by podane zarwno w postaci liczbowej,


jak i w postaci nazw hostw*. Ta opcja powoduje, e pppd prbuje uywa pierwszego z dostarczonych adresw jako wasnego adresu IP, a drugiego jako adresu
partnera. Jeeli partner odmwi przyjcia ktregokolwiek adresu w czasie negocjacji IPCP, cze nie zostanie uaktywnione**.
Jeeli dzwonisz do serwera po adres IP, powiniene sprawdzi, czy pppd nie prbuje
wynegocjowa adresu dla siebie. W tym celu uyj opcji noipdefault i pozostaw pole
adres_lokalny puste. Opcja noipdefault powstrzyma demona pppd przed prb uycia adresu IP zwizanego z nazw hosta jako adresu lokalnego.
Gdyby chcia ustawi tylko adres lokalny oraz przyj adres uywany przez partnera, po prostu pozostaw puste pole adres_zdalny. Aby vlager uywa adresu IP
130.83.4.27 zamiast swojego wasnego, podaj w wierszu polece 130.83.4.27:. Podobnie, aby ustawi jedynie adres zdalny, pozostaw puste pole adres_lokalny. Domylnie pppd uyje adresu zwizanego z nazw twojego hosta.

Ruting przez cze PPP


Po skonfigurowaniu interfejsu sieciowego, pppd zwykle konfiguruje jedynie tras
hosta do jego partnera. Jeeli zdalny host jest w sieci LAN, pewnie chcesz czy si
take z hostami poza twoim partnerem. W takiej sytuacji naley skonfigurowa take
tras dla sieci.
Widzielimy ju, e za pomoc opcji defaultroute, mona poprosi pppd o skonfigurowanie trasy domylnej. Opcja ta jest bardzo przydatna, jeeli serwer PPP, do ktrego
zadzwonie, dziaa jako twj gateway internetowy.
Odwrotny przypadek, w ktrym twj system dziaa jako gateway dla pojedynczego
hosta, jest take stosunkowo atwo zrealizowa. Na przykad wemy pracownika
browaru wirtualnego, ktrego maszyna domowa nazywa si oneshot. Zamy take, e skonfigurowalimy vlager jako wdzwaniany serwer PPP. Jeeli skonfigurowalimy vlager do dynamicznego przypisywania adresu IP nalecego do podsieci
browaru, moemy uy w pppd opcji proxyarp, ktra zainstaluje wpis proxy ARP dla
oneshota. Automatycznie oneshot stanie si dostpny ze wszystkich hostw w browarze i winiarni.
Jednak nie zawsze jest to takie proste. Poczenie dwch sieci lokalnych zwykle wymaga dodania szczeglnego rutingu do sieci, poniewa sieci te mog mie wasne
trasy domylne. Poza tym, gdyby obie strony cza PPP byy domylnymi trasami
dla kadej z sieci, mogaby powsta ptla, w ktrej wszystkie pakiety o nieznanym
*

Uycie nazw hostw w tej opcji ma wpyw na uwierzytelnianie CHAP. Zajrzyj do podrozdziau Uwierzytelnianie w PPP w dalszej czci tego rozdziau.
** Opcje ipcp-accept-local i ipcp-accept-remote mwi twojemu demonowi pppd, aby zaakceptowa lokalny
i zdalny adres IP oferowany przez zdalne PPP, nawet jeeli podae jakie adresy w swojej konfiguracji.
Jeeli te opcje nie s skonfigurowane, twj demon pppd odrzuci wszelkie prby negocjacji adresw IP.

134

Rozdzia 8: Protok punkt-punkt

przeznaczeniu odbijayby si pomidzy kocami cza PPP, a do wyganicia ich


czasu ycia.
Zamy, e browar wirtualny otwiera oddzia w innym miecie. Ten oddzial ma
wasn sie Ethernet o adresie IP 172.16.3.0, ktra jest trzeci podsieci sieci klasy B
browaru. Filia chce podczy si do sieci browaru przez PPP w celu uaktualniania baz klientw. Znw vlager dziaa jako gateway dla sieci browaru i obsuguje
cze PPP. Jego drugi koniec w oddziale nazywa si vbourbon i ma adres IP
172.16.3.1. Sie ta jest pokazana na rysunku A-2 w dodatku A, Przykadowa sie: browar wirtualny.
Gdy vbourbon czy si z vlagerem, ustawia tras domyln tak, by wskazywaa jak
zwykle na vlager. Jednak na vlagerze bdziemy mieli tylko tras punkt-punkt do
vbourbon i bdziemy musieli specjalnie skonfigurowa ruting sieci dla podsieci 3
wykorzystujcy vbourbon jako gateway. Moemy to zrobi rcznie, uywajc polecenia route po zestawieniu poczenia PPP, ale nie jest to zbyt praktyczne rozwizanie. Na szczcie moemy skonfigurowa tras automatycznie, uywajc funkcji
pppd, ktrej jeszcze nie omawialimy: polecenia ip-up. Polecenie to jest skryptem
powoki albo programem ulokowanym w katalogu /etc/ppp i jest uruchamiane przez
pppd po skonfigurowaniu interfejsu PPP. Jest wywoywane z nastpujcymi parametrami:
ip-up interfejs urzdzenie prdko adr_lok adr_zdal

Ponisza tabela podaje znaczenie kadego argumentu (w pierwszej kolumnie pokazujemy liczb uywan przez skrypt powoki przy odwoywaniu si do kadego
z argumentw):
Argument

Nazwa

Przeznaczenie

$1
$2

interfejs
urzdzenie

$3
$4
$5

prdko
adr_lok
adr_zdal

Uywany interfejs sieciowy, np. ppp0.


cieka do pliku uywanego urzdzenia szeregowego
(/dev/tty jeeli jest uywane stdin/stdout).
Prdko urzdzenia szeregowego w b/s.
Adres IP lokalnego koca cza w postaci liczbowej.
Adres IP zdalnego koca cza w postaci liczbowej.

W naszym przypadku skrypt ip-up moe zawiera nastpujcy fragment kodu*:


#!/bin/sh
case $5 in
172.16.3.1)
# to jest vbourbon
route add -net 172.16.3.0 gw 172.16.3.1;;
...
esac
exit 0

Gdybymy chcieli mie ruting do innych orodkw stworzonych przy ich wdzwanianiu si, dodalibymy w przykadzie odpowiednie dyrektywy case w miejscach wykropkowanych.

Opcje sterowania czem

135

Podobnie /etc/ppp/ip-down moe by uyte do cofnicia wszelkich dziaa ip-up po


rozczeniu cza PPP. Tak wic w naszym skrypcie /etc/ppp/ip-down moglibymy
mie polecenie route usuwajce tras stworzon w skrypcie /etc/ppp/ip-up.
Jednak nie jest to jeszcze peny schemat rutingu. Stworzylimy wpisy w tablicy rutingu na obu hostach PPP, ale do tej pory aden host w adnej z tych sieci nic nie wie
o czu PPP. Nie stanowi to problemu, jeeli wszystkie hosty w oddziale maj
wasny ruting domylny wskazujcy na vbourbon, a wszystkie hosty w browarze
maj domylny ruting na vlager. Jeeli jednak w twojej sytuacji nie jest to dobre rozwizanie, jedn moliwoci jest zwykle zastosowanie demona rutingu, na
przykad gated. Po utworzeniu trasy do vlagera, demon rutingu rozgasza j wszystkim hostom w podczonych podsieciach.

Opcje sterowania czem


Spotkalimy si ju z protokoem sterowania czem (LCP), ktry jest uywany do
negocjacji charakterystyk i testowania cza.
Dwie najwaniejsze opcje negocjowane przez LCP to: mapa znakw sterujcych w
transmisji asynchronicznej (Asynchronous Control Character Map) i maksymalna jednostka
odbioru (Maximum Receive Unit). Istnieje szereg innych opcji konfiguracyjnych LCP,
ale s one zbyt specjalistyczne, by je tu omawia.
Mapa znakw sterujcych w transmisji asynchronicznej, potocznie zwana map
asynchroniczn (ang. async map), jest uywana w czach asynchronicznych, takich
jak linie telefoniczne, do identyfikowania znakw sterujcych, ktre musz by maskowane (zastpowane przez specyficzn sekwencj dwuznakow), aby nie zostay
zinterpretowane przez urzdzenia uywane do zestawiania poczenia. Na
przykad mona w ten sposb unikn znakw XON i XOFF uywanych przy programowym uzgadnianiu, poniewa le skonfigurowane modemy mogyby si zawiesi po otrzymaniu XOFF. Inny potencjalnie niebezpieczny znak to [CTRL+l]
(znak ucieczkowy telnet). PPP pozwala na maskowanie wszelkich znakw o kodach
ASCII od 0 do 31 przez umieszczenie ich w mapie asynchronicznej.
Mapa asynchroniczna jest 32-bitowym cigiem wyraonym w postaci liczby szesnastkowej. Najmniej znaczcy bit odpowiada znakowi NULL ASCII, a najbardziej
znaczcy bit odpowiada znakowi o dziesitnym kodzie 31 w zestawie ASCII. Te 32
znaki ASCII s znakami sterujcymi. Jeeli bit w cigu jest ustawiony, sygnalizuje,
e odpowiadajcy mu znak musi by zamaskowany przed przesaniem przez cze.
Aby powiadomi partnera, e nie musi maskowa wszystkich znakw sterujcych,
a tylko te kilka, moesz wprowadzi map asynchroniczn do pppd za pomoc opcji
asyncmap. Na przykad jeeli musz by maskowane tylko znaki ^S i ^Q (ASCII 17
i 19, powszechnie uywane dla XON i XOFF), uyj poniszej opcji:
asyncmap 0x000A0000

Konwersja jest prosta, gdy polega jedynie na zamianie liczby binarnej na szesnastkow. Narysuj sobie 32 bity. Skrajny bit z prawej strony odpowiada znakowi ASCII
00 (NULL), a z lewej strony znakowi ASCII 32 (dziesitnie). Ustaw bity odpowia-

136

Rozdzia 8: Protok punkt-punkt

dajce znakom, ktre chcesz maskowa, a wszystkie inne pozostaw wyzerowane.


Aby zamieni ten cig na liczb szesnastkow, ktrej oczekuje pppd, po prostu we
kade 4 bity i wyra je w postaci liczby szesnastkowej. Powiniene uzyska osiem
cyfr szesnastkowych. U z nich cig i poprzed znakami 0x, aby wskaza, e jest
to liczba szesnastkowa. I gotowe.
Pocztkowo mapa asynchroniczna jest ustawiona na 0xffffffff, czyli wszystkie
znaki sterujce s zamaskowane. Jest to bezpieczna warto domylna, ale zwykle
jest to duo wicej, ni potrzebujesz. Kady znak, ktry znajduje si w mapie asynchronicznej, daje dwa znaki w czasie przesyania przez cze, a wic maskowanie
jest realizowane kosztem zwikszonego wykorzystania cza i zmniejszenia wydajnoci.
Zwykle dobrze dziaa mapa asynchroniczna o wartoci 0x0. W takim przypadku
adne maskowanie nie jest realizowane.
Maksymalna jednostka odbioru (MRU) przekazuje partnerowi informacj o maksymalnym rozmiarze ramek HDLC, ktre chcemy odbiera. Cho MRU moe ci si kojarzy z maksymaln jednostk transmisji (MTU), ma z ni jednak niewiele wsplnego. MTU to parametr urzdzenia sieciowego jdra i opisuje maksymalny rozmiar
ramki, ktr jest w stanie wysa interfejs. MRU to informacja dla zdalnego koca,
mwic mu, aby nie generowa ramek wikszych ni MRU. Mimo to interfejs musi
mie moliwo odbierania ramek o wielkoci do 1500 bajtw.
Wybr MRU nie jest wic kwesti tego, co cze moe przenie, ale raczej tego, co
daje najlepsz przepustowo. Jeeli zamierzasz korzysta z aplikacji interaktywnych, ustawienie MRU na wartoci tak mae jak 296 bajtw jest dobrym pomysem, a sporadyczne wiksze pakiety (powiedzmy sesji FTP) nie spowoduj, e twj
kursor bdzie skaka. Aby pppd dao MRU o wartoci 296, musisz poda opcj
mru 296. Jednak mae MRU ma sens tylko, jeeli masz kompresj nagwkw VJ
(jest ona domylnie wczona), poniewa w przeciwnym razie tracisz spor cz
cza na przesyanie nagwka IP kadego datagramu.
pppd rozumie take kilka opcji LCP konfigurujcych oglne zachowanie procesu negocjacji, takich jak maksymalna liczba da konfiguracyjnych, ktre mog by wymienione przed rozczeniem cza. Dopki dokadnie nie wiesz, co robisz, pozostaw te opcje w spokoju.
I na koniec, istniej dwie opcje, ktre dotycz powtarzania komunikatw LCP. PPP
definiuje dwa komunikaty Echo Request i Echo Response. pppd uywa tej funkcji do
sprawdzania, czy cze wci dziaa. Moesz j wczy za pomoc opcji lcp-echo-interval, podajc czas w sekundach. Jeeli w zadanym przedziale czasu z hosta zdalnego nie zostan odebrane adne ramki, pppd wygeneruje Echo Request i bdzie oczekiwa a partner zwrci Echo Response. Jeeli partner nie odpowie, poczenie jest
przerywane po wysaniu pewnej liczby da. Liczba ta moe by ustalona za pomoc opcji icp-echo-failure. Domylnie funkcja ta jest wyczona.

Uwierzytelnianie w PPP

137

Uwagi na temat bezpieczestwa


]le skonfigurowany demon PPP moe stanowi powane zagroenie. Moe pozwoli kademu na podczenie swojego komputera do twojej sieci Ethernet (co jest bardzo niebezpiecznie). W tym podrozdziale omwimy kilka rodkw zaradczych,
dziki ktrym konfiguracja twojego PPP bdzie bezpieczna.
Do skonfigurowania urzdzenia sieciowego i tablicy rutingu s potrzebne uprawnienia
roota. Zwykle rozwizuje si ten problem, uruchamiajc pppd z prawem setuid root.
Jednak pppd pozwala uytkownikom na ustawianie rnych opcji majcych wpyw na
bezpieczestwo.

Aby si zabezpieczy przed atakami, na ktre moe narazi nas uytkownik grzebicy w opcjach demona pppd, powiniene ustawi kilka domylnych wartoci w pliku globalnym /etc/ppp/options, na przykad w sposb pokazany w przykadowym
pliku we wczeniejszym podrozdziale Uywanie plikw opcji. Niektre z nich, takie
jak opcje uwierzytelniania, nie mog by zmienione przez uytkownika i dziki temu daj sensowne zabezpieczenie przed manipulacjami. Wan opcj zabezpieczajc jest connect. Jeeli masz zamiar pozwoli uytkownikom nie majcym
uprawnie roota na wywoywanie pppd i czenie si z Internetem, powiniene zawsze doda opcje connect i noauth w globalnym pliku opcji /etc/ppp/options. Jeeli
tego nie zrobisz, uytkownicy bd mogli uruchamia rne polecenia z prawami
uytkownika root, podajc je jako polecenia connect w wierszu polece pppd albo
umieszczajc w swoim prywatnym pliku opcji.
Innym dobrym pomysem jest ograniczenie liczby uytkownikw, ktrym wolno
uruchamia pppd. W tym celu naley utworzy grup w pliku /etc/group i doda do
niej tylko tych, ktrzy mog uruchamia demona PPP. Nastpnie trzeba zmieni
prawa do demona pppd, tak aby miaa do niego dostp ta grupa i usun prawo uruchamiania dla pozostaych osb. Zakadajc, e nazwae swoj grup dialout,
moesz zrobi co takiego:
# chown root /usr/sbin/pppd
# chgrp dialout /usr/sbin/pppd
# chmod 4750 /usr/sbin/pppd

Oczywicie musisz si zabezpieczy take przed systemami, z ktrymi czysz si


przez PPP. Aby obroni si przed hostami udajcymi kogo innego, powiniene zawsze wymaga od drugiej strony jakiego uwierzytelnienia. Nie powiniene pozwala
obcym hostom na uywanie wybranych przez nie adresw IP. Naley im natomiast
wskaza kilka dogodnych dla ciebie adresw. Nastpny podrozdzia szczegowo
opisuje te tematy.

Uwierzytelnianie w PPP
W PPP kady system moe zada uwierzytelnienia partnera za pomoc jednego
z dwch protokow uwierzytelniajcych: protokou uwierzytelniania hasem (Password
Authentication Protocol PAP) i protokou uwierzytelnienia przez uzgodnienie (Challenge

138

Rozdzia 8: Protok punkt-punkt

Handshake Authentication Protocol CHAP). Gdy poczenie zostanie zestawione, kada strona moe zada od drugiej uwierzytelnienia si, bez wzgldu czy jest
stron wywoujc, czy wywoywan. W dalszym opisie bdziemy luno mwili
o kliencie i serwerze, gdy bdziemy chcieli rozrni system wysyajcy danie uwierzytelnienia od systemu na nie odpowiadajcego. Demon PPP moe
zada uwierzytelnienia partnera, wysyajc danie konfiguracyjne LCP identyfikujce wybrany protok uwierzytelniania.

PAP a CHAP
PAP, oferowany przez wielu usugodawcw internetowych, dziaa w zasadzie w
ten sam sposb jak normalna procedura logowania. Klient uwierzytelnia si, wysyajc nazw uytkownika i (opcjonalnie zaszyfrowane) haso do serwera, ktry
porwnuje je z baz danych sekretw*. Ta technika nie stanowi zabezpieczenia
przed podsuchiwaczami, ktrzy mog sprbowa uzyska haso, suchajc danych
przesyanych przez cze szeregowe, i atakowa metod prb i bdw.
CHAP nie ma tych niedostatkw. W przypadku CHAP serwer wysya losowo wygenerowany cig wywoania do klienta wraz ze swoj nazw hosta. Klient wykorzystuje nazw hosta do wyszukania odpowiedniego sekretu, czy go z wywoaniem i szyfruje cig za pomoc jednokierunkowej funkcji mieszajcej. Wynik
jest zwracany do serwera wraz z nazw hosta klienta. Serwer teraz wykonuje te same obliczenia i potwierdza wiarygodno klienta, jeeli uzyska ten sam wynik.
CHAP rwnie nie wymaga, by klient sam uwierzytelnia si tylko na pocztku, ale
wysya wywoania w regularnych odstpach czasu w celu sprawdzenia, czy za
klienta nie zosta podstawiony kto niepodany, na przykad przez przeczenie
linii telefonicznych, lub czy nie wystpi bd konfiguracji modemu, ktry spowodowa, e demon PPP nie zauway, e oryginalne poczenie zostao zerwane, a kto inny wdzwoni si na to miejsce.
pppd przechowuje sekrety dla PAP i CHAP w dwch oddzielnych plikach /etc/ppp/
pap-secrets i /etc/ppp/chap-secrets. Wpisujc zdalnego hosta w jednym lub drugim
z nich, kontrolujesz, ktry z tych protokow (PAP czy CHAP) jest uywany do
uwierzytelniania si u twojego partnera i odwrotnie.
Domylnie pppd nie wymaga uwierzytelniania zdalnego hosta, ale zgodzi si sam
uwierzytelni, gdy zada tego zdalny host. Poniewa CHAP jest duo silniejszym
protokoem ni PAP, pppd prbuje zawsze go uywa, o ile to jest tylko moliwe. Jeeli druga strona nie obsuguje CHAP, albo jeeli pppd nie moe znale w pliku
chap-secrets sekretu CHAP dla zdalnego systemu, przecza si na PAP. Jeeli nie istnieje sekret PAP dla drugiej strony, pppd w ogle odmawia uwierzytelnienia. W konsekwencji poczenie jest zrywane.
Zachowanie to moesz zmieni na kilka sposobw. Gdy podasz sowo kluczowe
auth, pppd zada, by druga strona sama si uwierzytelnia. pppd zgadza si uy
*

Sekret to po prostu okrelenie hasa stosowane w PPP. W odrnieniu od hase w Linuksie, sekretw
PPP nie obowizuje ograniczenie dugoci.

Uwierzytelnianie w PPP

139

PAP lub CHAP, dopki posiada w bazie danych odpowiednie sekrety drugiej strony. Istniej inne opcje pozwalajce na wczenie lub wyczenie zadanego protokou
uwierzytelniania, ale nie bdziemy ich tutaj opisywa.
Gdyby wszystkie systemy, z ktrymi czysz si przez PPP, zgadzay si same
uwierzytelnia, powiniene umieci opcj auth w globalnym pliku /etc/ppp/options
i zdefiniowa hasa dla kadego z tych systemw w pliku chap-secrets. Jeeli system
nie obsuguje CHAP, dodaj dla niego wpis w pliku pap-secrets. Dziki temu nieautoryzowane systemy nie podcz si do twojego hosta.
Dwa nastpne podrozdziay omawiaj dwa pliki sekretw PPP: pap-secrets i chap-secrets. Znajduj si one w katalogu /etc/ppp i zawieraj trjki klient, serwer i haso, po
ktrych opcjonalnie nastpuje lista adresw IP. Interpretacja pl klienta i serwera
jest rna dla CHAP i PAP i zaley od tego, czy sami si uwierzytelniamy u partnera,
czy damy, aby serwer uwierzytelni si u nas.

Plik sekretw CHAP


Gdy pppd musi si uwierzytelni na serwerze za pomoc CHAP, przeszukuje plik
chap-secrets w poszukiwaniu wpisu, w ktrym pole klienta jest takie samo jak lokalna
nazwa hosta, a pole serwera jest takie samo jak nazwa hosta zdalnego wysana
w wywoaniu CHAP. Gdy wymagane jest samodzielne uwierzytelnienie si partnera, role po prostu si odwracaj: pppd wtedy szuka wpisu, w ktrym pole klienta jest
takie samo jak nazwa hosta zdalnego (wysana w odpowiedzi CHAP klienta), a pole
serwera jest takie samo jak nazwa hosta lokalnego.
Poniej pokazano przykadowy plik chap-secrets dla hosta vlager*.
# Sekrety CHAP dla vlager.vbrew.com
#
# klient
serwer
sekret
adresy
#-------------------------------------------------------------------------vlager.vbrew.com
c3po.lucas.com
"Use The Source Luke" vlager.vbrew.com
c3po.lucas.com
vlager.vbrew.com "arttoo! arttoo!"
c3po.lucas.com
*
vlager.vbrew.com "TuXdrinksVicBitter"
pub.vbrew.com

Gdy vlager zestawi poczenie PPP z c3po, ten poprosi vlagera o uwierzytelnienie
si przez wysanie wywoania CHAP. pppd na hocie vlager sprawdzi nastpnie plik
chap-secrets w poszukiwaniu wpisu, w ktrym pole klienta ma warto vlager.
vbrew.com, a pole serwera ma warto c3po.lucas.com, i znajdzie pierwszy wiersz
pokazany w przykadzie**. Nastpnie na podstawie cigu wywoania generuje odpowied i sekret CHAP (Use The Source Luke) i wysya je do c3po.
pppd tworzy take wywoanie CHAP dla c3po, zawierajce unikatowy cig wywoania i pen nazw domenow hosta, vlager.vbrew.com. Host c3po tworzy odpowied CHAP w omwiony sposb i zwraca j do vlagera. pppd nastpnie wydobywa nazw hosta klienta (c3po.vbrew.com) z odpowiedzi i przeszukuje plik
chap-secrets w celu znalezienia wiersza zawierajcego klienta c3po i serwer vlager.
* Podwjne cudzysowy nie s czci sekretu maj uatwi poprawn interpretacj biaych znakw.
** Nazwa hosta jest wzita z wywoania CHAP.

140

Rozdzia 8: Protok punkt-punkt

Drugi wiersz pasuje, a wic pppd czy wywoanie CHAP i sekret arttoo! arttoo!, szyfruje je i porwnuje wynik z odpowiedzi CHAP klienta c3po.
Czwarte pole opcjonalne zawiera adresy IP, ktre s dopuszczalne dla klienta o nazwie zawartej w pierwszym polu. Adresy mog by podane w zapisie liczbowym
lub jako nazwy hostw, ktre s nastpnie rozwizywane przez resolver. Na
przykad, gdyby w czasie negocjacji IPCP, klient c3po zada uycia adresu IP,
ktrego nie ma na licie, danie zostaoby odrzucone, a sesja IPCP zakoczona. Dlatego w pokazanym powyej przykadowym pliku c3po moe uywa wasnego adresu IP. Gdyby pole adresu byo puste, dopuszczalne byyby wszystkie adresy, a warto - zapobiegaaby w ogle uyciu adresu IP w przypadku tego klienta.
Trzeci wiersz w przykadowym pliku chap-secrets pozwala, aby dowolny host stworzy poczenie PPP z vlagerem, poniewa pole klienta lub serwera zawiera znak *,
ktry pasuje do dowolnej nazwy hosta. Jedynym wymogiem jest to, e podczajcy
si host musi zna sekret i uywa adresu IP zwizanego z hostem pub.vbrew.com.
Wpisy z wyraeniami regularnymi w nazwie hosta mog pojawi si w dowolnym
miejscu pliku sekretw, poniewa pppd zawsze bdzie uywa tego, co najlepiej pasuje do pary serwer-klient.
pppd moe potrzebowa nieco pomocy przy tworzeniu nazw hostw. Jak wczeniej
wyjanilimy, nazwa hosta zdalnego jest zawsze dostarczana przez drug stron
w wywoaniu CHAP lub w pakiecie z odpowiedzi. Nazwa hosta lokalnego jest
uzyskiwana przez domylne wywoanie funkcji gethostname(2). Gdyby ustawi nazw systemu na niepen nazw hosta, musiaby dostarczy pppd take nazw domeny, uywajc opcji domain:
# pppd ... domain vbrew.com

Ta klauzula dodaje nazw domeny browaru do vlagera w przypadku wszelkich


dziaa zwizanych z uwierzytelnianiem. Inne opcje modyfikujce pojcie nazwy
hosta lokalnego pppd to usehostname i name. Gdy w wierszu polece podasz lokalny
adres IP, uywajc lokalny:zdalny i lokalny w postaci nazw, a nie liczb, pppd
uznaje za nazw hosta lokalnego.

Plik sekretw PAP


Plik sekretw PAP jest bardzo podobny do pliku CHAP. Pierwsze dwa pola zawsze zawieraj nazw uytkownika i nazw serwera. Trzecie pole zawiera sekret
PAP. Gdy zdalny host wysya swoje informacje uwierzytelniajce, pppd wykorzystuje wpis, w ktrym pole serwera odpowiada nazwie lokalnego hosta, a pole uytkownika odpowiada nazwie uytkownika wysanej w daniu. Gdy musimy
wysa swoje referencje do partnera, pppd wykorzystuje sekret z wiersza, w ktrym
pole uytkownika odpowiada nazwie lokalnego hosta, a pole serwera nazwie hosta zdalnego.

Debugowanie twojej konfiguracji PPP

141

Przykadowy plik sekretw PAP moe wyglda nastpujco:


# /etc/ppp/pap-secrets
#
# uytkownik
serwer
vlager-pap
c3po
c3po
vlager

sekret
cresspahl
DonaldGNUth

adresy
vlager.vbrew.com
c3po.lucas.com

Pierwszy wiersz jest uywany do uwierzytelnienia si przy komunikacji z c3po.


Drugi opisuje, jak uytkownik c3po ma si uwierzytelni u nas.
Nazwa vlager-pap w pierwszej kolumnie to nazwa uytkownika, ktr wysyamy do c3po. Domylnie jako nazw uytkownika pppd przyjmuje nazw hosta
lokalnego, ale moesz poda take inn nazw, wpisujc opcj user, a za ni nazw.
Przy wybieraniu wpisu z pliku pap-secrets w celu zidentyfikowania nas na hocie
zdalnym, pppd musi zna nazw hosta zdalnego. Poniewa pppd samo nie ma moliwoci si tego dowiedzie, musisz wpisa j w wierszu polece, uywajc sowa kluczowego remotename, a po nim nazwy hosta. Aby za pomoc powyszego wpisu na
przykad uwierzytelni si na c3po, musimy doda ponisz opcj do wiersza polece pppd:
# pppd ... remotename c3po user vlager-pap

W czwartym polu pliku sekretw PAP (i wszystkich kolejnych polach) moesz wpisa adresy IP, ktre maj prawo komunikowa si z danym hostem, podobnie jak
w pliku sekretw CHAP. Partner bdzie mia prawo da tylko adresw z tej listy.
W przykadowym pliku wpis, ktrego c3po uywa, gdy si wdzwania wiersz,
gdzie c3po jest klientem pozwala na uycie jego rzeczywistego adresu IP i adnego
innego.
Zauwa, e PAP jest raczej sab metod uwierzytelniania i powiniene uywa
CHAP, gdzie to tylko moliwe. Dlatego nie bdziemy dokadniej omawiali PAP: jeeli chcesz go uywa, wicej na temat jego funkcji znajdziesz na stronach podrcznika elektronicznego pppd(8).

Debugowanie twojej konfiguracji PPP


Domylnie pppd zapisuje wszelkie ostrzeenia i bdy za pomoc funkcji daemon
programu syslog. Do pliku syslog.conf musisz doda wpis, ktry przekierowuje komunikaty do pliku lub na konsol. W przeciwnym razie syslog bdzie je po prostu
ignorowa. Poniej pokazany wpis powoduje wysyanie wszystkich komunikatw
do pliku /var/log/ppp-log:
daemon.*

/var/log/ppp-log

Jeeli twoja konfiguracja PPP nie dziaa poprawnie, powiniene zajrze do tego pliku. Jeeli zawarte w nim komunikaty nie pomog, moesz wczy dodatkowe
debugowanie, uywajc opcji debug. Spowoduje to, e pppd bdzie zapisywa zawarto wszystkich pakietw sterujcych, wysanych lub odebranych przez syslog.
Wszystkie komunikaty bd nastpnie przekierowywane do funkcji daemon.

142

Rozdzia 8: Protok punkt-punkt

I na koniec najbardziej drastyczny sposb na poradzenie sobie z problemem, czyli wczenie debugowania na poziomie jdra robi si to, wywoujc pppd z opcj
kdebug. Za ni wpisujemy argument liczbowy bdcy sum nastpujcych wartoci:
1 oglne komunikaty debugujce, 2 wypisywanie zawartoci wszystkich przychodzcych ramek HDLC i 4 sterownik wypisuje wszystkie wychodzce ramki
HDLC. Aby przechwyci komunikaty debugujce jdra, musisz uruchomi demona
syslogd, ktry czyta plik /proc/kmsg albo demona klogd. Oba te sposoby powoduj
przekierowanie komunikatw debugujcych do funkcji kernel demona syslog.

Bardziej zaawansowana konfiguracja PPP


Cho konfigurowanie PPP tak, by dzwoni do sieci Internet, jest najpowszechniejszym zastosowaniem, s wrd was tacy, ktrzy maj bardziej zaawansowane wymagania. W tym podrozdziale omwimy kilka zaawansowanych konfiguracji moliwych do uzyskania w PPP w Linuksie.

Serwer PPP
Uruchomienie pppd jako serwera jest jedynie kwesti skonfigurowania urzdzenia
szeregowego tty na wywoywanie pppd z odpowiednimi opcjami, gdy zostan odebrane przychodzce dane. Aby przeprowadzi tak konfiguracj, mona utworzy
specjalne konto, powiedzmy ppp, i jako powok logowania poda program
wywoujcy pppd z tymi opcjami. Alternatywnie, jeeli chcesz korzysta z uwierzytelniania PAP lub CHAP, moesz uy programu mgetty do obsugi swojego modemu i wykorzysta jego funkcj /AutoPPP/.
Aby stworzy serwer wykorzystujcy metod logowania, do pliku /etc/passwd musisz doda wiersz podobny do pokazanego poniej*:
ppp:x:500:200:Public PPP Account:/tmp:/etc/ppp/ppplogin

Jeeli twj system obsuguje system hase shadow, musisz doda take wpis do pliku /etc/shadow:
ppp:!:10913:0:99999:7:::

Oczywicie uyte przez ciebie identyfikatory UID i GID zale od tego, ktry uytkownik ma by wacicielem poczenia i jak je utworzye. Za pomoc polecenia passwd musisz take nada haso wspomnianemu kontu.
Skrypt ppplogin mgby wyglda tak:
#!/bin/sh
# ppplogin skrypt uruchamiajcy pppd po zalogowaniu
mesg n
stty -echo
exec pppd -detach silent modem crtscts

Polecenie mesg wycza innym uytkownikom moliwo zapisu do tty, na przykad


za pomoc polecenia write. Polecenie stty wycza powtarzanie znakw. Jest ono nie*

Narzdzia useradd lub adduser, o ile je posiadasz, uatwi wykonanie zadania.

Bardziej zaawansowana konfiguracja PPP

143

zbdne, gdy w przeciwnym razie wszystko, co wyle druga strona, bdzie powtarzane. Najwaniejsz opcj podan w pppd jest -detach, poniewa zapobiega
odczeniu pppd od kontrolujcego tty. Gdybymy nie podali tej opcji, program przeszedby do pracy w tle, powodujc zakoczenie skryptu powoki. Na skutek tego
nastpioby rozczenie linii i utrata poczenia. Opcja silent sprawia, e przed rozpoczciem wysyania, pppd czeka na odebranie pakietu od dzwonicego systemu. Ta
opcja nie pozwala te na pojawienie si w transmisji czasw oczekiwania, jeli system dzwonicy jest zbyt wolny przy uruchamianiu klienta PPP. Opcja modem powoduje, e pppd steruje liniami kontrolnymi modemu podczonego do portu szeregowego. Zawsze powiniene wcza t opcj, gdy uywasz pppd z modemem. Opcja
crtscts wcza uzgadnianie sprztowe.
Oprcz wymienionych, s te jeszcze opcje o innym dziaaniu. Na przykad podajc
auth w wierszu wywoania pppd lub w globalnym pliku opcji, moesz wymusi jakie uwierzytelnienie. Strona podrcznika elektronicznego omawia bardziej szczegowe opcje wczania i wyczania poszczeglnych protokow uwierzytelniania.
Gdyby chcia uywa demona mgetty, trzeba jedynie skonfigurowa go tak, aby
obsugiwa urzdzenie szeregowe, do ktrego podczony jest modem (szczegy
znajdziesz w podrozdziale Konfigurowanie demona mgetty w rozdziale 4), skonfigurowa pppd na uwierzytelnianie przez PAP lub CHAP za pomoc odpowiednich opcji
w pliku options i wreszcie doda do pliku /etc/mgetty/login.config co takiego:
# Konfigurowanie mgetty do automatycznego wykrywania
# przychodzcych wywoa PPP i uruchomienie demona pppd do
# obsugi poczenia
#
/AutoPPP/ ppp
/usr/sbin/pppd auth -chap +pap login

Pierwsze pole to takie magiczne zaklcie uywane do wykrywania, czy nadchodzce poczenie jest typu PPP. Nie moesz zmienia pisowni tego cigu, gdy
istotne s w nim due i mae litery. Trzecia kolumna to nazwa uytkownika, ktry
pojawia si na licie who, gdy kto si zaloguje. Pozostaa cz wiersza to polecenie
do wywoania. Za pomoc takiego zapisu jak w naszym przykadzie wczamy
uwierzytelnianie PAP, wyczamy CHAP i mwimy, e plik passwd powinien by
uyty do znalezienia uytkownikw do uwierzytelnienia. Zapewne co podobnego
chcesz uzyska. Pamitaj moesz okreli opcje w pliku options lub jeeli wolisz,
w wierszu polece.
Oto krtka lista kolejnych zada do wykonania, jeeli chcesz uruchomi na swoim
komputerze wdzwaniany serwer PPP. Sprawd, czy kady krok zosta poprawnie
zrealizowany, zanim przejdziesz do nastpnego:
1. Skonfigurowanie modemu do trybu automatycznego odpowiadania. W modemach kompatybilnych ze standardem Hayesa, trzeba poda komend
ATS0=3. Jeeli zamierzasz uywa demona mgetty, nie jest to konieczne.
2. Skonfigurowanie urzdzenia szeregowego za pomoc polecenia getty, aby odpowiadao na przychodzce poczenia. Powszechnie stosowan odmian getty jest
mgetty.

144

Rozdzia 8: Protok punkt-punkt

3. Rozwaenie uwierzytelniania. Czy te klienty bd uwierzytelnia si za pomoc


PAP, CHAP, czy logowania systemowego?
4. Skonfigurowanie pppd jako serwera zgodnie z tym, co napisalimy w tym podrozdziale.
5. Rozwaenie rutingu. Czy bdziesz musia udostpni klientom tras do sieci?
Mona to zrobi za pomoc skryptu ip-up.

Dzwonienie na danie
Jeeli istnieje ruch IP, ktry ma by przesyany przez cze, zestawianie poczenia
ze zdalnym hostem mona zrealizowa przez dzwonienie na danie (ang. demand dialing). Jest ono najbardziej uyteczne, gdy nie moesz na stae pozostawi swojej linii
telefonicznej w stanie poczenia z dostawc Internetu. Na przykad gdyby musia
paci za rozmowy lokalne wedug czasu, taniej byoby uywa linii tylko wtedy,
gdy jest potrzebna, i rozcza si, gdy nie korzystasz z Internetu.
Tradycyjne rozwizania w Linuksie wykorzystyway polecenie diald, ktre dziaao
dobrze, ale miao nieco skomplikowan konfiguracj. Wersje 2.3.0 i nowsze demona
PPP maj wbudowan obsug dzwonienia na danie i konfiguruje si j do
atwo. Aby dziaaa, musisz uy take nowszego jdra. Nadaj si wszystkie jdra
nowsze ni 2.0.
Aby skonfigurowa demonowi pppd dzwonienie na danie, wystarczy doda opcje
w swoim pliku options lub w wierszu polece pppd. Ponisza tabela stanowi skrtowy opis opcji zwizanych z dzwonieniem na danie:
Opcja

Opis

demand

Ta opcja mwi, e cze PPP powinno by przeczone do trybu


dzwonienia na danie. Zostanie utworzone urzdzenie sieciowe
PPP, ale polecenie connect nie bdzie uywane, dopki z lokalnego
hosta nie zostanie wysany datagram. Ta opcja jest obowizkowa, aby
dzwonienie na danie dziaao.
Ta opcja pozwala ci okreli, ktre pakiety danych s uznawane za
aktywny ruch. Wszelki ruch pasujcy do zadanej reguy bdzie restartowa zegar dzwonienia na danie, a pppd bdzie dalej czeka,
zanim rozczy lini. Skadnia filtru zostaa zapoyczona z polecenia
tcpdump. Domylny filtr pasuje do wszystkich datagramw.
Ta opcja pozwala na okrelenie minimalnego czasu (w sekundach), jaki
naley odczeka przed rozczeniem linii, jeeli nie ma transmisji. Jeeli
poczenie nie dziaa, a pppd myli, e jest ono cay czas aktywne, zostanie ono ponownie uruchomione, kiedy upynie czas okrelony t opcj.
Nie dotyczy ona jednak ponownego poczenia po upyniciu czasu
jaowego oczekiwania.
Jeeli ta opcja jest skonfigurowana, pppd rozczy lini, gdy upynie
podany czas. Czasy jaowego oczekiwania s okrelane w sekundach.
Kady nowy pakiet danych zeruje ten licznik.

archive-filter
wyraenie

holdoff n

idle n

Bardziej zaawansowana konfiguracja PPP

145

Prosta konfiguracja dzwonienia na danie mogaby wyglda jako tak:


demand
holdoff 60
idle 180

Ta konfiguracja powoduje wczenie dzwonienia na danie, odczekanie 60 sekund


przed ponownym zestawieniem nieudanego poczenia i rozczenie, jeeli w cigu
180 sekund nie pojawi si adne aktywne dane na czu.

Stae poczenie telefoniczne


Poczenie stae oznacza, e linia jest cay czas w stanie aktywnoci, czyli jest podczona do sieci. Istnieje niewielka rnica pomidzy dzwonieniem na danie a poczeniem staym. Poczenie stae jest automatycznie zestawiane zaraz po uruchomieniu demona PPP, a gdy linia telefoniczna obsugujca cze ulegnie rozczeniu, podejmowana jest ponowna prba poczenia. Poczenie stae gwarantuje, e cze jest dostpne przez cay czas dziki automatycznemu odtwarzaniu uszkodzonego poczenia.
Moesz by w tej szczliwej sytuacji, e nie musisz paci za rozmowy telefoniczne.
By moe s to rozmowy lokalne i dlatego s darmowe, albo s opacone przez twoj
firm. Opcja staego poczenia jest niezmiernie przydatna w takiej sytuacji. Jeeli
pacisz za swoje rozmowy, musisz by bardziej ostrony. Jeeli pacisz za czas na
linii, stae z ca pewnoci nie jest dla ciebie, chyba e naprawd musisz je mie
poczenia przez dwadziecia cztery godziny na dob. Jeeli pacisz za nawizanie
poczenia, a nie za czas trwania rozmowy, musisz zabezpieczy si przed sytuacjami, ktre mog powodowa, e twj modem bdzie bez koca nawizywa nowe
poczenia. Demon pppd ma tak opcj.
Aby uruchomi stae poczenie telefoniczne, musisz doczy opcj persist w jednym z plikw opcji pppd. To wystarczy, aby pppd automatycznie wywoywao polecenie okrelone w opcji connect, ktre odtworzy poczenie w razie jego zerwania.
Jeeli martwisz si o zbyt czste dzwonienie modemu (w przypadku, gdy modem
lub serwer po drugiej stronie zostan uszkodzone), moesz uy opcji holdoff, aby
ustawi minimalny czas, jaki pppd musi odczeka przed prb ponownego poczenia. Opcja ta nie rozwizuje problemu utraty pienidzy za poczenia w czasie awarii, ale przynajmniej redukuje sum.
Typowa konfiguracja mogaby mie ustawione nastpujce opcje zwizane ze staym poczeniem:
persist
holdoff 600

Czas oczekiwania na ponowne wybranie numeru jest okrelony w sekundach. W naszym przykadzie pppd czeka pene pi minut od momentu zerwania poczenia,
zanim zacznie ponownie dzwoni.
Stae poczenie telefoniczne moe wspwystpi z dzwonieniem na danie. Aby
tak si stao, naley uy opcji idle do rozczania linii, gdy jest nieaktywna przez
zadany okres czasu. Nie wydaje nam si, by wiele osb chciao stosowa to rozwizanie, ale scenariusz ten jest w skrcie opisany na stronie podrcznika elektronicznego pppd, gdyby chcia go wykorzysta.

Firewall TCP/IP

Rozdzia 9: Firewall TCP/IP

Bezpieczestwo jest coraz waniejsze zarwno dla firm, jak i osb prywatnych. Internet daje wszystkim doskonae narzdzia do rozpowszechniania informacji o sobie i uzyskiwania informacji od innych, ale rwnoczenie niesie ze sob zagroenia,
ktrych wczeniej nie byo: przestpstwa komputerowe, kradzie informacji i zoliwe zniszczenia.
Nieuprawnione i nieuczciwe osoby, ktre uzyskuj dostp do systemu komputerowego, mog zgadn hasa czy wykorzysta bdy i naturalne zachowanie pewnych
programw, aby zaoy sobie konto na danym komputerze. Gdy ju mog si zalogowa, maj dostp do rnych informacji, nawet do wanych informacji handlowych, takich jak plany marketingowe, szczegy dotyczce nowego projektu czy bazy danych o klientach, ktre mog wykorzysta na szkod ich waciciela. Uszkodzenie lub modyfikacja tego typu danych moe narazi na powane kopoty firm.
Najbezpieczniejszym sposobem uniknicia takich powszechnych zagroe jest
uniemoliwienie dostpu do sieci osobom nieuprawnionym. Z pomoc przychodz
tutaj firewalle.
Stworzenie bezpiecznych firewalli jest sztuk. Wymaga dobrego zrozumienia technologii, ale co rwnie wane, wymaga zrozumienia filozofii sigajcej poza ich konstrukcj. Nie bdziemy tu opisywali wszystkiego, co musisz wiedzie. Radzimy, by
wykona pewne dodatkowe badania, zanim zaufasz jakiej szczeglnej architekturze firewalla, rwnie tej, ktr tutaj pokazujemy.

Istnieje wystarczajco duo materiau na temat konfiguracji i budowy firewalla, by


wypeni nim ca ksik; do naprawd doskonaych rde nale midzy innymi:
Building Internet Firewalls
autorstwa D. Chapmana i E. Zwicky (O'Reilly; wyd. polskie nakadem Wydawnictwa RM w przygotowaniu). Przewodnik wyjaniajcy, jak stworzy i zainstalowa firewalle w Uniksie, Linuksie i Windows NT oraz jak skonfigurowa
usugi internetowe do pracy z firewallami.

148

Rozdzia 9: Firewall TCP/IP

Firewalls and Internet Security


autorstwa W. Cheswicka i S. Bellovina (wyd. Addison Wesley). Ta ksika
omawia filozofi budowy i implementacji firewalli.
W tym rozdziale skupimy si na zagadnieniach technicznych, specyficznych dla
Linuksa. Pniej pokaemy przykadow konfiguracj firewalla, ktra powinna
suy jako uyteczny punkt wyjcia do wasnej konfiguracji, ale jak to bywa w zagadnieniach bezpieczestwa, nigdy nikomu nie ufaj. Dwa razy sprawd projekt,
upewnij si, e go rozumiesz, a nastpnie zmodyfikuj tak, aby pasowa do twoich
potrzeb. Pewno to bezpieczestwo.

Metody ataku
Dla administratora sieci wane jest, by rozumia istot potencjalnych atakw zagraajcych bezpieczestwu komputera. Pokrtce opiszemy najwaniejsze typy atakw, tak by lepiej zrozumia, przed czym chroni ci firewall IP w Linuksie. Aby by
pewnym, e jeste w stanie zabezpieczy swoj sie przed innymi typami atakw,
powiniene sign po dodatkow lektur. Oto najwaniejsze metody ataku i sposoby zabezpieczania si przed nimi:
Nieautoryzowany dostp
Oznacza po prostu, e ludzie, ktrzy nie powinni korzysta z usug oferowanych
przez twj komputer, s w stanie si do niego podczy i z nich korzysta. Na
przykad ludzie spoza firmy mog prbowa poczy si z komputerem obsugujcym ksigowo twojej firmy lub z twoim serwerem NFS.
Istniej rne sposoby uniknicia tego ataku. Trzeba precyzyjnie okreli, kto
moe mie dostp do danych usug. Moesz zabroni dostpu do sieci wszystkim
poza wyznaczonymi przez ciebie osobami.
Wykorzystanie znanych dziur w programach
Wczasach kiedy powstaway niektre programy i usugi sieciowe, nie uwzgldniano jeszcze rygorystycznych zasad bezpieczestwa. Te wanie s z natury bardziej podatne na zagroenia. Usugi zdalne BSD (rlogin, rexec itp.) s tu doskonaym przykadem.
Najlepszym sposobem na zabezpieczenie si przed tego typu atakiem jest wyczenie wszelkich podatnych usug lub znalezienie alternatywy. W przypadku
Open Source czasem moliwe jest zaatanie dziury w programie.
Odmowa obsugi
Ataki typu odmowa obsugi powoduj, e usuga lub program przestaj dziaa
lub nie pozwalaj innym z siebie korzysta. Moe to by spowodowane wysyaniem w warstwie sieciowej starannie przygotowanych, zoliwych datagramw, ktre powoduj awarie pocze sieciowych. Ataki mog by te realizowane w warstwie aplikacji, gdzie starannie przygotowane polecenia aplikacji
podane programowi powoduj, e staje si on nadzwyczaj zajty lub przestaje
dziaa.

Co to jest firewall

149

Uniemoliwienie podejrzanym pakietom sieciowym dotarcia do twojego hosta


oraz zapobiegnicie uruchamianiu podejrzanych polece i da s najlepszymi
sposobami na zminimalizowanie ryzyka ataku odmowy obsugi. Warto dobrze
zna metody ataku, a wic powiniene sam doksztaca si na temat wszystkich
nowych atakw, gdy ich opis zostanie opublikowany.
Podszywanie si
Ten typ ataku powoduje, e host lub aplikacja naladuj dziaanie innego.
Zwykle atakujcy udaje niewinny host, przesyajc sfaszowane adresy IP w pakietach sieciowych. Na przykad dobrze udokumentowany sposb wykorzystania
usugi rlogin BSD stosuje t metod do udawania poczenia TCP z innego hosta.
Robi to, odgadujc numery kolejnych pakietw TCP.
Aby zabezpieczy si przed tego typu atakiem, weryfikuj wiarygodno datagramw i polece. Wycz moliwo rutowania datagramw o zym adresie
rdowym. Wprowad nieprzewidywalno do mechanizmu kontroli poczenia, na przykad stosowanie kolejnych numerw TCP lub alokacj dynamicznych
adresw portw.
Podsuchiwanie
Jest to najprostszy typ ataku. Host jest skonfigurowany na suchanie i zbieranie
danych nie nalecych do niego. Dobrze napisane programy podsuchujce
mog odczyta z pocze sieciowych nazwy uytkownikw i hasa. Sieci
rozgoszniowe, takie jak Ethernet, s szczeglnie podatne na tego typu atak.
Lepiej wic unikaj rozwiza opartych o sieci rozgoszeniowe i wprowadzaj szyfrowanie danych.
Firewalle IP s bardzo uyteczne; s w stanie zapobiec nieautoryzowanym dostpom, odmowom obsugi w warstwie sieciowej i atakom przez podszywanie si lub
znacznie zmniejszy ryzyko ich wystpienia. Niezbyt dobrze zabezpieczaj przed
wykorzystywaniem dziur w usugach sieciowych czy programach oraz nie zapobiegaj podsuchiwaniu.

Co to jest firewall
Firewall to bezpieczny i zaufany komputer, ktry jest umieszczony pomidzy sieci
prywatn a sieci publiczn*. Komputer-firewall jest skonfigurowany w oparciu
o zestaw regu, ktre okrelaj, jaki ruch sieciowy moe by przepuszczony, a jaki
ma by blokowany lub odrzucany. W niektrych duych firmach moesz znale
nawet firewalle umieszczone wewntrz sieci firmowej, ktre oddzielaj wane obszary firmy od innych pracownikw. Wiele przestpstw komputerowych zdarza si
wewntrz firmy, a nie jest powodowane atakami z zewntrz.
Firewalle mona budowa na rne sposoby. Najbardziej wyrafinowane konstrukcje wykorzystuj kilka oddzielnych komputerw i s znane pod nazw sieci wydzie*

Okrelenie firewall (ang.) zostao przejte od urzdzenia uywanego do zabezpieczania ludzi przed
ogniem. Firewall to osona z ognioodpornego materiau umieszczana pomidzy miejscem zagroonym
poarem a czowiekiem, ktrego ma chroni.

150

Rozdzia 9: Firewall TCP/IP

lonej (ang. perimeter network). Dwie maszyny dziaaj jako filtry pozwalajce tylko
na przepuszczanie pewnych typw ruchu sieciowego. Pomidzy tymi maszynami
znajduj si serwery sieciowe, takie jak gateway pocztowy czy serwer proxy WWW.
Konfiguracja taka moe by bardzo bezpieczna i atwo pozwala na osignicie
znacznej kontroli nad tym, kto czy si zarwno z zewntrz do wewntrz, jak i z wewntrz na zewntrz. Tego typu konfiguracja moe by stosowana w duych firmach.
Zwykle jednak firewalle to pojedyncze maszyny penice wszystkie te funkcje. S
one nieco mniej bezpieczne, poniewa jeeli w maszynie penicej rol firewalla
znajdzie si dziura, ktra pozwala na uzyskanie dostpu do niej, to bezpieczestwo
caej sieci zostaje naruszone. Jednak tego typu firewalle s tasze i prostsze
w zarzdzaniu ni opisane wczeniej, bardziej wyrafinowane rozwizania. Rysunek
9-1 pokazuje dwie najpopularniejsze konfiguracje firewalla.

Serwer
aplikacji
Internet

Intranet

LAN
Filtr IP
Serwer
aplikacji

Internet

Intranet
Filtr IP
i serwer aplikacji

Rysunek 9-1.

wie p staw we arc itekt r irewalli

Jdro Linuksa udostpnia szereg wbudowanych funkcji pozwalajcych mu na prac


w roli firewalla IP. Implementacja sieci zawiera kod do wykonywania filtrowania IP
na szereg rnych sposobw i udostpnia mechanizm pozwalajcy na dokadne
skonfigurowanie zasad, jakimi chcesz si kierowa przy takim filtrowaniu. Firewall
w Linuksie jest wystarczajco elastyczny, by mona go byo zastosowa w obu konfiguracjach pokazanych na rysunku 9-1. Oprogramowanie firewalla w Linuksie
udostpnia dwie inne przydatne funkcje, ktre omwimy w oddzielnych rozdziaach: liczenie ruchu IP (rozdzia 10, Liczenie ruchu IP) i maskowanie IP (rozdzia
11, Maskowanie IP i translacja adresw sieciowych).

Co to jest filtrowanie IP

151

Co to jest filtrowanie IP
Filtrowanie IP to prosty mechanizm decydujcy o tym, ktre typy datagramw IP
maj by przetwarzane normalnie, a ktre maj by odrzucone. Przez odrzucenie
(ang. discard) rozumiemy, e datagramy s usuwane i zupenie ignorowane, tak jakby nigdy nie zostay odebrane. Moesz wskaza wiele rnych kryteriw okrelajcych, ktre datagramy chcesz filtrowa. Oto kilka przykadw:

typ protokou: TCP, UDP, ICMP itp.;


numer gniazda (dla TCP/UDP);
typ datagramu: SYN/ACK, dane, ICMP Echo Request itp.;
adres rdowy datagramu: skd pochodzi;

adres docelowy datagramu: dokd jest wysyany;


Wane jest zrozumienie w tym miejscu, e filtrowanie IP jest funkcj warstwy sieciowej. Oznacza to, e nie ma ono nic wsplnego z aplikacj wykorzystujc poczenia
sieciowe, a dotyczy tylko samych pocze. Na przykad moesz zabroni uytkownikom dostpu do swojej sieci wewntrznej przez standardowy port telnet, ale jeeli
opierasz si na samym filtrowaniu IP, nie moesz spowodowa, eby przestali uywa programu telnet na porcie, ktry przepuszczasz przez swj firewall. Aby
unikn tego typu problemw, zastosuj serwery proxy dla kadej usugi, ktr
chcesz przepuci przez firewall. Serwery proxy rozumiej aplikacje, dla ktrych
maj peni rol porednikw i w ten sposb mog zapobiec naduyciom, polegajcym na przykad na wykorzystywaniu telnetu do poczenia z portem WWW
poprzez firewall. Jeeli twj firewall obsuguje WWW proxy, poczenia telnet do tej
usugi bd zawsze obsugiwane przez proxy i dopuszczalne bd tylko dania
HTTP. Istnieje szereg programw typu serwer proxy. Niektre s darmowe, ale jest
te wiele komercyjnych. Firewall-HOWTO omawia jeden z popularnych zestaww
takich programw, ktrego tu nie przedstawiamy, poniewa wykracza to poza zakres tej ksiki.
Zestaw regu filtrowania IP skada si z wielu kombinacji wymienionych powyej
kryteriw. Na przykad wyobramy sobie, e chciaby pozwoli uytkownikom
WWW z sieci browaru wirtualnego na dostp do Internetu, ale tylko na korzystanie
z innych serwerw WWW. Musiaby skonfigurowa firewall, tak by pozwala na
przekazywanie:

datagramw z adresem rdowym z sieci browaru wirtualnego i dowolnym ad-

resem docelowym oraz z portem docelowym 80 (WWW),


datagramw z adresem docelowym browaru wirtualnego i portem rdowym 80
(WWW) z dowolnego adresu rdowego.
Zauwa, e uylimy tutaj dwch regu. Pozwalamy na wychodzenie naszych danych oraz na przyjmowanie odpowiedzi. W praktyce, jak wkrtce zobaczymy, Linux upraszcza to i pozwala na okrelenie tych regu jednym poleceniem.

152

Rozdzia 9: Firewall TCP/IP

Skonfigurowanie Linuksa w roli firewalla


Aby stworzy firewall IP w Linuksie, potrzebne jest jdro z wbudowan obsug firewalla IP i odpowiedni program konfiguracyjny. We wszystkich jdrach do serii 2.0
uywa si narzdzia ipfwadm. Jdra 2.2.x wprowadziy trzeci generacj firewalla IP
dla Linuksa o nazwie IP Chains (acuchy IP). acuchy IP uywaj programu podobnego do ipfwadm, ale noszcego nazw ipchains. Jdra w wersji 2.3.15 i nowsze
obsuguj czwart generacj firewalli o nazwie netfilter. Kod netfilter jest wynikiem
powanej zmiany w sposobie obsugi pakietw w Linuksie. netfilter jest tworem uniwersalnym, zapewnia bowiem bezporednio wsteczn kompatybilno zarwno
z ipfwadm, jak i ipchains oraz nowe alternatywne polecenie iptables. W nastpnych
podrozdziaach omwimy rnice pomidzy tymi trzema rozwizaniami.

Jdro skonfigurowane z firewallem IP


Jdro Linuksa trzeba odpowiednio skonfigurowa, aby obsugiwao firewall IP.
Oznacza to po prostu wybr odpowiednich opcji po wywoaniu make menuconfig
przy kompilacji jdra*. Jak to zrobi, opisalimy w rozdziale 3, Konfigurowanie sprztu sieciowego. W jdrach 2.2 powiniene wybra nastpujce opcje:
Networking
[*]
[*]
[*]
[*]

options --->
Network firewalls
TCP/IP networking
IP: firewalling
IP: firewall packet logging

W jdrach 2.4.0 i nowszych powiniene wybra ponisze opcje:


Networking options --->
[*] Network packet filtering (replaces ipchains)
IP: Netfilter Configuration ---?
.
<M> Userspace queueing via NETLINK (EXPERIMENTAL)
<M> IP tables support (required for filtering/masq/NAT)
<M> limit match support
<M> MAC address match support
<M> netfilter MARK match support
<M> Multiple port match support
<M> TOS match support
<M> Connection state match support
<M> Unclean match support (EXPERIMENTAL)
<M> Owner match support (EXPERIMENTAL)
<M> Packet filtering
<M>
REJECT target support
<M>
MIRROR target support (EXPERIMENTAL)
.
<M> Packet mangling
<M>
TOS target support
<M>
MARK target support
<M> LOG target support
<M> ipchains (2.2-style) support
<M> ipfwadm (2.0-style) support
*

Logowanie pakietw przez firewall jest specjaln funkcj, ktra zapisuje wiersz informacji o kadym
datagramie odpowiadajcym regule do specjalnego urzdzenia, przez ktre moesz go zobaczy.

Skonfigurowanie Linuksa w roli firewalla

153

Narzdzie ipfwadm
Narzdzie ipfwadm (IP Firewall Administration) jest uywane do tworzenia regu firewalla dla wszystkich jder starszych od wersji 2.2.0. Skadnia polecenia bywa zagmatwana, poniewa moe ono realizowa wiele skomplikowanych zada, ale podamy kilka przykadw popularnych zastosowa.
Narzdzie ipfwadm jest zawarte w wikszoci wspczesnych dystrybucji Linuksa,
ale niekoniecznie standardowo. Mog istnie szczeglne pakiety oprogramowania,
ktre musisz zainstalowa, aby mie to polecenie. Jeeli nie ma go w twojej dystrybucji, moesz zdoby pakiet rdowy z orodka ftp.xos.nl z katalogu /pub/linux/
ipfwadm/ i skompilowa go samodzielnie.

Narzdzie ipchains
Podobnie jak ipfwadm, tak ipchains moe sprawi na pocztku nieco kopotw. Udostpnia ca elastyczno ipfwadm, ale za pomoc polece o znacznie uproszczonej
skadni, a ponadto oferuje mechanizm czenia w acuchy (ang. chaining), pozwalajcy na zarzdzanie wieloma zestawami regu i ich czenie. czenie regu
omwimy w oddzielnym podrozdziale pod koniec tego rozdziau, poniewa jest to
pojcie zaawansowane.
Polecenie ipchains istnieje w wikszoci dystrybucji Linuksa opartych na jdrach 2.2.
Gdyby chcia skompilowa je samodzielnie, moesz znale pakiet rdowy pod
adresem: http://www.rustcorp.com/linux/ipchains/. W pakiecie tym znajduje si dodatkowy skrypt ipfwadm-wrapper, ktry naladuje polecenie ipfwadm, ale w rzeczywistoci
wywouje polecenie ipchains. Migracja istniejcej konfiguracji firewalla jest duo
mniej bolesna, jeeli posiada si taki skrypt.

Narzdzie iptables
Skadnia narzdzia iptables jest bardzo podobna do ipchains. Rnice wynikaj
z wprowadzonych udoskonale i daj przeprojektowane narzdzie, ktre jest rozszerzalne przez biblioteki dzielone. Tak jak w przypadku ipchains, tak i przy iptables
podamy skonwertowane przykady, aby mg porwna i zestawi skadni tego
i innych polece.
Narzdzie iptables znajduje si w pakiecie netfilter, ktry jest dostpny pod adresem
http://www.samba.org/netfilter/. Bdzie take zawarte we wszystkich dystrybucjach
Linuksa opartych o jdra serii 2.4.
Nieco wicej o netfilter powiemy w jednym z nastpnych podrozdziaw powiconych tylko temu pakietowi.

154

Rozdzia 9: Firewall TCP/IP

Trzy sposoby realizacji filtrowania


Rozwamy, w jaki sposb maszyna uniksowa, czy w praktyce dowolna inna obsugujca ruting IP, przetwarza datagramy IP.

Pozostaa cz jdra
Gniazda sieciowe

Protokoy TCP/UDP

Pozostae protokoy

Oprogramowanie rutujce IP

?
1 Sterownik Ethernet

Rysunek 9-2.

3
Sterownik PPP

Inny sterownik

Etapy przetwarzania datagramu IP

Podstawowe kroki, pokazane na rysunku 9-2, to:


Datagram IP jest odbierany (1).
Przychodzcy datagram IP jest analizowany w celu ustalenia, czy jest przeznaczony dla tej maszyny.
Jeeli datagram jest dla tej maszyny, jest przetwarzany lokalnie (2).
Jeeli nie jest dla tej maszyny, w tablicy rutingu jest poszukiwana odpowiednia
trasa. Datagram jest przekazywany do odpowiedniego interfejsu lub odrzucany,
jeeli trasy nie mona znale (3).

Datagramy z lokalnych procesw s wysyane do oprogramowania rutujcego


w celu przekazania do odpowiedniego interfejsu (4).
Wychodzcy datagram IP jest analizowany w celu ustalenia, czy istnieje dla niego
odpowiednia trasa; jeeli nie, jest odrzucany.
Datagram IP jest wysyany (5).
W naszym diagramie, przepyw 1 3 5 przedstawia maszyn rutujc dane pomidzy hostem w naszej sieci Ethernet a hostem osigalnym przez cze PPP.
Przepyw 1 2 i 4 5 przedstawia dane przychodzce i wychodzce z programu sieciowego dziaajcego na naszym hocie lokalnym. Przepyw 4 3 2 przedstawia
przepyw danych przez poczenie ptli zwrotnej. Oczywicie dane przepywaj
w obie strony, do i z urzdze sieciowych. Znak zapytania na diagramie przedstawia punkty, gdzie warstwa IP podejmuje decyzje co do rutingu.
Firewall jdra Linuksa moe stosowa filtry na rnych etapach tego procesu. To
znaczy, e moesz filtrowa datagramy IP przychodzce do twojej maszyny, albo te

Oryginalny firewall IP (jdra 2.0)

155

datagramy, ktre s przez ni przekazywane, albo te te, ktre s gotowe do


wysania.
W programach ipfwadm i ipchains regua wejciowa (Input) dotyczy przepywu 1 na
diagramie, regua przekazywania (Forwarding) przepywu 3, a regua wyjciowa
(Output) przepywu 5. Zobaczymy pniej, przy omawianiu netfilter, e punkty
przechwytywania zmieniy si tak, e regua wejciowa dotyczy przepywu 2, a regua wyjciowa przepywu 4. Ma to istotny wpyw na tworzenie regu, ale oglne
zasady pozostaj takie same dla wszystkich wersji firewalla w Linuksie.
Na pierwszy rzut oka moe to wyglda na niepotrzebn komplikacj, ale zapewnia
elastyczno, ktra pozwala na tworzenie bardzo wyrafinowanych i wydajnych
konfiguracji.

Oryginalny firewall IP (jdra 2.0)


Pierwsza generacja obsugi firewalla IP w Linuksie pojawia si w serii jder 1.1.
Byo to przeniesienie ipfw z BSD dokonane przez Alana Coxa. Obsuga firewalla
w jdrach serii 2.0, okrelana mianem drugiej generacji, zostaa rozszerzona przez
Josa Vos, Pauline Middelink i innych.

Korzystanie z ipfwadm
Polecenie ipfwadm byo narzdziem konfiguracyjnym dla drugiej generacji firewalla
IP w Linuksie. Najlepiej jest opisa uycie ipfwadm na przykadach. Na pocztek zakodujmy pokazany wczeniej przykad.
Prosty przykad
Zamy, e mamy w naszej firmie sie i uywamy firewalla na komputerze z Linuksem, przez ktry czymy nasz sie z Internetem. Przyjmijmy te, e chcemy, aby
uytkownicy sieci mieli dostp do serwerw WWW w Internecie, ale nie dopuszczamy adnego innego ruchu.
Zdefiniujemy regu przekazywania pozwalajc na przepuszczanie na zewntrz
datagramw o adresie rdowym nalecym do naszej sieci i gniedzie docelowym
80 oraz na przekazywanie przez firewall odpowiedzi przesyanych z powrotem.
Zamy, e nasza sie ma 24-bitow mask (klasa C) i adres 172.16.1.0. Reguy
wygldaj tak:
#
#
#
#

ipfwadm
ipfwadm
ipfwadm
ipfwadm

-F
-F
-F
-F

-f
-p deny
-a accept -P tcp -S 172.16.1.0/24 -D 0/0 80
-a accept -P tcp -S 0/0 80 -D 172.16.1.0/24

Argument wiersza polece F mwi ipfwadm, e jest to regua przekazywania.


Pierwsze polecenie mwi ipfwadm, aby usun wszystkie dotychczasowe reguy
przekazywania ze swojej konfiguracji. W ten sposb rozpoczynamy od znanego stanu.

156

Rozdzia 9: Firewall TCP/IP

Druga regua okrela domyln polityk przekazywania. Mwimy jdru, by odrzucao lub nie pozwalao na przekazywanie datagramw IP. Bardzo wane jest ustawienie polityki domylnej, poniewa opisuje ona, co si stanie z datagramami, ktre
nie s w aden szczeglny sposb obsugiwane przez inne reguy. Zwykle konfigurujc firewall, bdziesz ustawia domyln polityk na odmow, tak jak to pokazano tutaj, po to, aby przez firewalla przechodzi tylko dopuszczalny ruch.
Trzecia i czwarta regua implementuj nasze wymaganie: trzecie polecenie pozwala
na wysyanie naszych datagramw, a czwarte na przyjmowanie odpowiedzi.
Przyjrzyjmy si kolejno argumentom:
-F

Jest to regua przekazujca.

-a accept
Regua z dopisan polityk akceptowania oznacza, e bdziemy przekazywa
wszystkie datagramy, ktre do niej pasuj.
-P tcp
Ta regua dotyczy datagramw tcp (w przeciwiestwie do UDP lub ICMP).
-S 172.16.1.0/24
Adres rdowy musi mie pierwsze 24 bity odpowiadajce adresowi sieci
172.16.1.0.
-D 0/0 80
Adres docelowy musi mie zero bitw pasujcych do adresu 0.0.0.0. Tak naprawd
jest to skrtowy zapis wszystkiego. Port docelowy to 80, co w tym przypadku
oznacza WWW. Do opisania portu moesz uy take wszelkich wpisw znajdujcych si w pliku /etc/services, a wic -D 0/0 www dziaaoby rwnie dobrze.
ipfwadm wymaga maski sieci w postaci, ktra moe nie by ci znana. Zapis /nn oznacza liczb istotnych bitw w podanym adresie lub rozmiar maski. Bity s zawsze liczone od lewej do prawej. W tabeli 9-1 podano czsto spotykane przykady masek.
Tabela 9-1. Czsto spotykane maski sieci
Maska sieci

Bity

255.0.0.0
255.255.0.0
255.255.255.0
255.255.255.128
255.255.255.192
255.255.255.224
255.255.255.240
255.255.255.248
255.255.255.252

8
16
24
25
26
27
28
29
30

Oryginalny firewall IP (jdra 2.0)

157

Wczeniej wspomnielimy, e ipfwadm implementuje ma sztuczk, ktra uatwia


dodawanie tego typu regu. Ta sztuczka to opcja b, ktra sprawia, e polecenie jest
dwukierunkowe.
Opcja dwukierunkowoci pozwala na poczenie naszych dwch regu w jedn:
# ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80 -b

Wana poprawka
Przyjrzyj si bliej naszemu zestawowi regu. Czy widzisz, e wci nie ma zabezpieczenia przed jedn metod ataku, ktr kto z zewntrz moe wykorzysta do
pokonania naszego firewalla?
Nasze reguy pozwalaj na przyjmowanie z zewntrz wszystkich datagramw
z portem rdowym 80. Uwaga! Bd do nich naleay take datagramy z ustawionym bitem SYN! Bit SYN oznacza, e jest to datagram TCP z daniem poczenia.
Jeeli osoba z zewntrz miaaby uprzywilejowany dostp do swojego hosta,
mogaby poczy si przez nasz firewall z dowolnym z naszych hostw, pod warunkiem, e uywaj one portu 80. Nie to chcielimy osign.
Na szczcie istnieje rozwizanie tego problemu. Polecenie ipfwadm posiada inn
opcj, ktra pozwala nam budowa reguy odfiltrowujce datagramy z ustawionym
bitem SYN. Zmiemy nasz przykad tak, aby uwzgldnia t regu:
# ipfwadm -F -a deny -P tcp -S 0/0 80 -D 172.16.10.0/24 -y
# ipfwadm -F -a accept -P tcp -S 172.16.1.0/24 -D 0/0 80 -b

Opcja y powoduje, e regua pasuje tylko wtedy, jeeli bit SYN w datagramie jest
ustawiony. A wic nasza nowa regua mwi: Nie przepuszczaj adnych datagramw TCP przeznaczonych dla naszej sieci, ktre pochodz z jakiego miejsca i maj
port rdowy 80 i ustawiony bit SYN albo Nie przepuszczaj adnych da od
hostw na port 80.
Dlaczego umiecilimy t szczegln regu przed regu gwn? Reguy firewalla
dziaaj tak, e s dopasowywane kolejno. Obie reguy bd pasoway do
datagramw, ktrych nie chcemy przepuci, a wic musimy by pewni, e regua
deny jest przed regu accept.
Listowanie naszych regu
Po wprowadzeniu naszych regu moemy je wylistowa, wywoujc ipfwadm w nastpujcy sposb:
# ipfwadm -F -l

To polecenie da w wyniku wszystkie skonfigurowane reguy przekazywania. Rezultat powinien by podobny do tego:
# ipfwadm -F -l
IP firewall forward rules, default policy: accept
type
prot
source
destination
ports
deny
tcp
anywhere
172.16.10.0/24
www -> any
acc
tcp
172.16.1.0/24
anywhere
any -> www

158

Rozdzia 9: Firewall TCP/IP

Polecenie ipfwadm bdzie prbowao tumaczy numer portu na nazw usugi za pomoc pliku /etc/services, o ile istnieje w nim wpis.
W domylnie pokazywanym wyniku brakuje kilku wanych dla nas szczegw.
Nie wida tam mianowicie dziaania argumentu -y. Polecenie ipfwadm potrafi pokaza dokadniejszy wynik, jeeli podamy take opcj -e (wynik rozszerzony). Nie
pokaemy caego wyniku, poniewa jest zbyt szeroki i nie mieci si na stronie, ale
zawiera kolumn opt (opcje), ktra pokazuje opcj y kontrolujc pakiety SYN:
# ipfwadm -F -l -e
IP firewall forward rules, default policy:
pkts bytes type prot opt tosa tosx ifname
0
0 deny tcp --y- 0xFF 0x00 any
0
0 acc tcp b--- 0xFF 0x00 any

accept
ifaddress
any
any

source
...
anywhere
...
172.16.1.0/24 ...

Bardziej skomplikowany przykad


Poprzedni przykad by prosty. Nie wszystkie usugi sieciowe s tak atwe do skonfigurowania jak WWW. W rzeczywistoci typowa konfiguracja firewalla bdzie duo bardziej zoona. Przyjrzyjmy si innemu powszechnie spotykanemu przykadowi, tym razem FTP. Chcemy, aby uytkownicy naszej wewntrznej sieci mogli logowa si do serwerw FTP w Internecie po to, by odczytywa i zapisywa pliki. Nie
chcemy jednak, aby ludzie z Internetu logowali si do naszych serwerw FTP.
Wiemy, e FTP uywa dwch portw TCP: portu 20 (ftp-data) i portu 21 (ftp), a wic:
#
#
#
#
#

ipfwadm -a deny -P tcp -S 0/0 20 -D 172.16.1.0/24 -y


ipfwadm -a accept -P tcp -S 172.16.1.0/24 -D 0/0 20 -b
ipfwadm -a deny -P tcp -S 0/0 21 -D 172.16.1.0/24 -y
ipfwadm -a accept -P tcp -S 172.16.1.0/24 -D 0/0 21 -b

Dobrze? Nie cakiem. Serwery FTP mog dziaa w dwch rnych trybach: w trybie
biernym (ang. passive mode) i czynnym (ang. active mode)*. W trybie biernym serwer
FTP oczekuje na poczenie od klienta. W trybie czynnym serwer realizuje poczenie do klienta. Tryb czynny jest zwykle domylny. Rnice ilustruje rysunek 9-3.
Wiele serwerw FTP dziaajcych w trybie czynnym tworzy poczenie z portu 20,
co nieco upraszcza spraw, ale niestety nie wszystkie tak robi**.
Jakie to ma jednak dla nas znaczenie? Przyjrzyjmy si naszej regule dla portu 20,
czyli portu FTP-data. Obecna regua zakada, e poczenie bdzie inicjowane
przez naszego klienta do serwera. Bdzie to dziaao, jeeli uyjemy trybu biernego.
Ale bardzo trudno jest nam skonfigurowa poprawn regu pozwalajc na uycie
trybu czynnego, poniewa nie jestemy w stanie z gry przewidzie, jakie porty
bd uywane. Jeeli otworzymy firewall, pozwalajc na poczenia przychodzce
na dowolny port, narazimy nasz sie na atak poprzez wszystkie usugi przyjmujce
poczenia.
*

Tryb czynny FTP jest czym nieintuicyjnie wczanym za pomoc polecenia PORT. Tryb bierny jest
wczany za pomoc polecenia PASV.
** Demon ProFTPd jest dobrym przykadem serwera FTP, ktry dziaa inaczej, przynajmniej w starszych
wersjach.

Oryginalny firewall IP (jdra 2.0)

159

W tej sytuacji najlepiej jest wymusi na naszych uytkownikach prac w trybie biernym. Wikszo serwerw FTP i wiele klientw FTP dziaa w ten sposb. Popularny
klient ncftp take obsuguje tryb bierny, ale moe wymaga niewielkiej zmiany w konfiguracji, by by to jego tryb domylny. Wiele przegldarek WWW, takich jak Netsccape, take obsuguje bierny tryb FTP, a wic znalezienie odpowiedniego oprogramowania nie powinno by zbyt trudne. Mona te postpi zupenie inaczej: uy serwera proxy FTP, ktry bdzie przyjmowa poczenia z sieci wewntrznej i realizowa
poczenia z sieci zewntrzn.

Rysunek 9-3. Tryby serwera FTP

Przy projektowaniu firewalla prawdopodobnie napotkasz niejeden taki problem.


Powiniene zawsze dokadnie przeanalizowa, jak naprawd dziaa dana usuga, by
by pewnym, e umiecie odpowiedni zestaw regu w odpowiednim miejscu.
Konfiguracja prawdziwego firewalla moe by do skomplikowana.

Podsumowanie argumentw ipfwadm


Polecenie ipfwadm ma wiele rnych argumentw odnoszcych si do konfiguracji
firewalla IP. Oglna skadnia jest nastpujca:
ipfwadm kategoria polecenie parametry [opcje]

Przyjrzyjmy si kolejno kademu z czonw.


Kategorie
Musi by podana jedna i tylko jedna z poniszych kategorii. Kategoria mwi firewallowi, jakiego typu regu konfigurujesz:

160

-I
-O
-F

Rozdzia 9: Firewall TCP/IP

Regua wejciowa.
Regua wyjciowa.
Regua przekazywania.

Polecenia
Przynajmniej jedno z poniszych polece musi by podane i musi si ono odnosi do
okrelonej wczeniej kategorii. Polecenia mwi firewallowi, co ma robi.
-a [polityka]
Dodanie nowej reguy.
-i [polityka]
Wstawienie nowej reguy.
-d [polityka]
Usunicie istniejcej reguy.
-p polityka
Ustawienie polityki domylnej.
-l

Wylistowanie wszystkich istniejcych regu.

-f

Usunicie wszystkich istniejcych regu.


Polityki istotne dla firewalla IP i ich znaczenie jest nastpujce:
accept
Pozwala na odbir, przekazywanie lub wysyanie pasujcych datagramw.
deny
Nie pozwala na odbir, przekazywanie lub wysyanie pasujcych datagramw.
reject
Nie pozwala na odbir, przekazywanie lub wysyanie pasujcych datagramw
i wysya komunikat bdu ICMP do hosta, ktry przesa datagram.
Parametry
Musi by podany przynajmniej jeden z poniszych parametrw. Uywaj parametrw do okrelania datagramw, ktrych dotycz reguy:
-P protok
Moe mie warto TCP, UDP, ICMP lub all. Przykad:
-P tcp
-S adres/maska/[port]
]rdowy adres IP, do ktrego pasuje ta regua. Jeeli nie podasz maski sieci, zostanie przyjta maska /32. Opcjonalnie moesz okreli, ktrego portu dotyczy

Oryginalny firewall IP (jdra 2.0)

161

regua. Musisz take poda protok za pomoc opisanego wyej argumentu P,


aby ta opcja zadziaaa. Jeeli nie podasz portu lub zakresu portw, przyjmuje
si, e wszystkie porty pasuj. Porty mog by podane w postaci nazwy zgodnej
z wpisem w /etc/services. W przypadku protokou ICMP pole portu jest uywane
do oznaczenia typu datagramu ICMP. Moliwe jest podanie zakresu portw,
a suy do tego nastpujca skadnia: pierwszyport:ostatniport. Oto
przykad:
-S 172.29.16.1/24 ftp:ftp-data
-D adres/maska/[port]
Okrelenie adresu docelowego IP, do ktrego pasuje ta regua. Adres docelowy
jest zapisywany na tej samej zasadzie co adres rdowy opisany poprzednio.
Oto przykad:
-D 172.29.16.1/24 smtp
-V adres
Okrelenie adresu interfejsu sieciowego, na ktrym pakiet jest odbierany (-I) lub
z ktrego jest wysyany (-O). Pozwala to na stworzenie regu dotyczcych tylko
niektrych interfejsw sieciowych komputera. Oto przykad:
-V 172.29.16.1
-W nazwa
Okrelenie nazwy interfejsu sieciowego. Ten argument dziaa w ten sam sposb
co V, ale podajesz nazw urzdzenia zamiast adresu. Oto przykad:
-W ppp0
Argumenty opcjonalne
Te argumenty s czasem bardzo przydatne:
-b

-o

-y

-k

Jest uywany dla trybu dwukierunkowego. Do tej opcji pasuje ruch w obie strony
pomidzy zadanymi adresami rdowym i docelowym. Zaoszczdza ci ona
tworzenia dwch regu: jednej do wysyania i drugiej do odbierania.
Pozwala na zapisywanie pasujcych datagramw do logu jdra. Wszelkie datagramy pasujce do reguy bd zapisywane jako komunikaty jdra. Jest to uyteczna opcja do wykrywania nieautoryzowanego dostpu.
Ta opcja jest uywana do filtrowania poczeniowych datagramw TCP. Dziki
niej regua filtruje tylko datagramy podejmujce prb zestawienia pocze
TCP. Pasowa bd jedynie datagramy posiadajce ustawiony bit SYN i wyzerowany bit ACK. Jest to uyteczna opcja do filtrowania prb pocze TCP i ignorowania innych protokow.
Jest uywana do filtrowania datagramw-potwierdze TCP (ang. acknowledgement). Ta opcja powoduje, e do reguy pasuj tylko datagramy bdce potwier-

162

Rozdzia 9: Firewall TCP/IP

dzeniem odbioru pakietw prbujcych zestawi poczenie TCP. Bd pasowa


jedynie datagramy, ktre maj ustawiony bit ACK. Opcja ta jest uyteczna do filtrowania prb pocze TCP i ignorowania wszystkich pozostaych protokow.
Typy datagramw ICMP
Kade polecenie konfiguracyjne firewalla pozwala ci okrela typy datagramw
ICMP. W odrnieniu od portw TCP i UDP, nie ma odpowiedniego pliku konfiguracyjnego, ktry zawieraby spis typw datagramw i opisywa ich znaczenie. Typy
datagramw ICMP s zdefiniowane w RFC-1700 (RFC Assigned Numbers). S one
take spisane w jednym z plikw nagwkowych standardowej biblioteki C. Typy
datagramw mona te znale w pliku /usr/include/netinet/ip_icmp.h, nalecym do
pakietu standardowej biblioteki GNU i uywanym przez programistw C do pisania oprogramowania sieciowego wykorzystujcego protok ICMP. Dla twojej wygody pokazalimy je w tabeli 9-2. Interfejs polecenia iptables pozwala ci take okrela typy ICMP poprzez nazw, a wic podalimy take ich mnemonik.
Tabela 9-2. Typy datagramw ICMP
Typ

Mnemonika iptables

Opis typu

0
3
4
5
8
11
12
13
14
15
16
17
18

echo-reply
destination-unreachable
source-quench
redirect
echo-request
time-exceeded
parameter-problem
timestamp-request
timestamp-reply
none
none
address-mask-request
address-mask-reply

Powtrzenie odpowiedzi
Cel nieosigalny
]rdo nieaktywne
Przekierowanie
danie powtrzenia
Czas upyn
Problem z parametrem
danie znacznika czasu
Wysanie znacznika czasu w odpowiedzi
danie informacji
Wysanie informacji w odpowiedzi
danie maski adresu
Wysanie maski adresu w odpowiedzi

acuchy firewalla IP (jdra 2.2)


Linux rozwija si, by sprosta rosncym wymaganiom jego uytkownikw. Firewall
IP nie stanowi tu wyjtku. Tradycyjna implementacja firewalla IP jest dobra,
ale moe by niewydolna przy konfiguracji bardziej zoonych rodowisk. Aby
sprosta nowym wymaganiom, opracowano now metod konfigurowania firewalla IP i rozwinito zwizane z ni waciwoci. Ta nowa metoda otrzymaa nazw
acuchy firewalla IP (w skrcie acuchy IP) pierwszy raz zostaa wprowadzona
do uytku w jdrze Linuksa 2.2.0.

acuchy firewalla IP (jdra 2.2)

163

acuchy IP zostay opracowane przez Paula Russella i Michaela Neulinga*. Paul


udokumentowa oprogramowanie acuchw IP w IPCHAINS-HOWTO.
acuchy IP pozwalaj na tworzenie klas regu, do ktrych moesz nastpnie dodawa hosty albo sieci lub je stamtd usuwa. czenie regu w acuchy jest o tyle
lepsze, e poprawia wydajno firewalla w konfiguracjach, gdzie uywa si wielu
regu.
acuchy IP s obsugiwane przez jdra serii 2.2, ale s take dostpne w postaci at
do jder 2.0.*. Dokument HOWTO podaje, gdzie mona zdoby aty i zawiera wiele
wskazwek, jak efektywnie uywa narzdzia konfiguracyjnego ipchains.

Uywanie ipchains
Korzysta z narzdzia konfiguracyjnego ipchains mona na dwa sposoby. Pierwszy
polega na uyciu skryptu ipfwadm-wrapper, ktry w zasadzie udaje ipfwadm, bo wywouje w tle program ipchains. Jeeli chcesz tak uywa ipchains, ten podrozdzia nie
jest ci potrzebny. Lepiej wrci do poprzednich, opisujcych ipfwadm, i tylko zastpi
go przez ipfwadm-wrapper. Skrypt ten bdzie dziaa, ale nie ma gwarancji, e bdzie
utrzymywany, a poza tym nie bdziesz czerpa korzyci z zaawansowanych funkcji
acuchw IP.
Mona te uywa ipchains inaczej. Trzeba si nauczy nowej skadni i zmodyfikowa istniejc konfiguracj do postaci zgodnej z now skadni. Chwila zastanowienia i zauwaysz, e w czasie konwersji jest moliwe zoptymalizowanie twojej
konfiguracji. Skadnia ipchains jest prostsza do nauczenia si ni ipfwadm, a wic to
dobry wybr.
Program ipfwadm do skonfigurowania firewalla musia operowa na trzech reguach. W przypadku acuchw IP moesz stworzy dowoln liczb zestaww regu, gdzie kada bdzie poczona z inn, ale wci s obecne trzy zestawy regu
zwizane z firewallem. Standardowe zestawy regu s bezporednimi odpowiednikami tych uywanych w ipfwadm, poza tym, e maj nazwy: input, forward
i output.
Najpierw przyjrzymy si oglnej skadni polecenia ipchains, a nastpnie zobaczymy,
jak uywa ipchains zamiast ipfwadm, przy czym nie uwzgldnianiamy zaawansowanych funkcji czenia w acuchy. Zrobimy to, przegldajc nasze poprzednie
przykady.

Skadnia polecenia ipchains


Skadnia polecenia ipchains jest prosta. Przyjrzymy si teraz najwaniejszym jej elementom. Oglna skadnia wikszoci polece ipchains jest nastpujca:
ipchains polecenie okrelenie-reguy opcje

Z Paulem mona si skontaktowa pod adresem Paul.Russell@rustcorp.com.au.

164

Rozdzia 9: Firewall TCP/IP

Polecenia
Istnieje szereg sposobw na operowanie na reguach i zestawach regu za pomoc
polecenia ipchains. Istotne dla firewalla IP s:
-A acuch
Dodanie jednej lub kilku regu na koniec zadanego acucha. Jeeli jest podana
nazwa rdowego lub docelowego hosta i tumaczy si na wicej ni jeden adres
IP, zostanie dodana regua dla kadego z tych adresw.
-I acuch numerreguy
Wstawienie jednej lub kilku regu na pocztek zadanego acucha. Znw, jeeli
w okreleniu reguy zostanie podana nazwa hosta, bdzie dodawana do kadego
adresu.
-D acuch
Usunicie jednej lub kilku regu z zadanego acucha, ktry pasuje do reguy.
-D acuch numerreguy
Usunicie reguy znajdujcej si na pozycji numerreguy w zadanym acuchu.
Numeracja regu zaczyna si od pierwszej reguy w acuchu.
-R acuch numerreguy
Zastpienie reguy na pozycji numerreguy w zadanym acuchu podan
regu.
-C acuch
Sprawdzenie zadanym acuchem datagramu opisanego regu. Polecenie to
zwraca komunikat opisujcy, jak datagram by przetwarzany przez acuch. Jest
to bardzo uyteczna opcja to testowania konfiguracji firewalla i nieco pniej
przyjrzymy si jej bardziej szczegowo.
-L [acuch]
Listowanie regu zadanego acucha lub wszystkich acuchw, jeeli aden nie
zostanie zadany.
-F [acuch]
Usunicie regu z zadanego acucha lub usunicie wszystkich regu, jeeli aden
acuch nie zostanie zadany.
-Z [acuch]
Wyzerowanie licznikw datagramw i bajtw dla wszystkich regu zadanego
acucha lub wszystkich acuchw, jeeli aden nie zostanie zadany.
-N acuch
Stworzenie nowego acucha o zadanej nazwie. Nie moe istnie drugi acuch o tej samej nazwie. W ten sposb tworzone s acuchy definiowane przez
uytkownika.
-X [acuch]
Usunicie zadanego acucha zdefiniowanego przez uytkownika lub wszystkich acuchw zdefiniowanych przez uytkownika, jeeli aden nie zostanie zadany. Aby to polecenie zadziaao, nie moe by odwoa do zadanego acucha
z adnych innych regu.

acuchy firewalla IP (jdra 2.2)

165

-P acuch polityka
Ustawienie domylnej polityki dla zadanego acucha. Dopuszczalne polityki to
ACCEPT, DENY, REJECT, REDIR i RETURN. Polityki ACCEPT, DENY i REJECT
maj takie samo znaczenie jak w tradycyjnych implementacjach firewalla. REDIR
oznacza, e datagram powinien by niewidocznie przekierowany na port firewalla. RETURN powoduje, e kod firewalla IP powraca do tego acucha firewalla, ktry wywoa acuch zawierajcy t regu, i kontynuuje dalsze dziaanie,
poczwszy od nastpnej reguy.
Parametry okrelajce regu
Na regu ipchains skada si wiele parametrw, ktre okrelaj, jakie typy pakietw
maj do niej pasowa. Jeeli ktry z tych parametrw zostanie w regule pominity,
zakadana jest jego warto domylna.
-p [!] protok
Okrela protok datagramu, ktry bdzie pasowa do tej reguy. Dopuszczalne
nazwy protokow to tcp, udp, icmp lub all. Moesz take poda numer protokou. Na przykad mgby uy 4, aby dopasowa protok enkapsulacji
ipip. Jeeli podasz !, regua zostanie zanegowana i datagram bdzie dopasowywany do wszystkich protokow poza zadanymi. Jeeli parametr nie zostanie podany, zostanie przyjta warto all.
-s [!]adres[/maska][!][port]
Okrela adres rdowy i port w datagramie, ktry ma pasowa do tej
reguy. Adres moe by podany w postaci nazwy hosta, nazwy sieci lub adresu
IP. Opcja mask pozwala na zadanie uywanej maski sieci, ktra moe by podana albo w tradycyjnej postaci (tj. /255.255.255.0), albo w postaci wspczesnej
(tj. /24).
Opcjonalny port okrela port TCP lub UDP albo typ dopasowywanego datagramu ICMP. Numer portu moesz wskaza tylko wtedy, gdy uye wczeniej parametru p, podajc jeden z protokow: tcp, udp lub icmp. Mona te poda zakres portw jego doln i grn granic rozdzielone dwukropkiem. Na przykad
20:25 opisuje wszystkie porty od 20 do 25 wcznie. Znak ! moe by wykorzystany do zanegowania wartoci.
-d [!]adres[/maska][!][port]
Okrela adres i port docelowy zawarte w datagramie, ktry ma pasowa do tej
reguy. Kodowanie tego parametru jest identyczne jak parametru s.
-j cel
Okrela dziaanie do wykonania, jeeli regua bdzie pasowaa. Parametr ten
moesz sobie przetumaczy jako skocz do (ang. jump to). Dopuszczalne cele to
ACCEPT, DENY, REJECT, REDIR i RETURN. Ich znaczenie opisalimy wczeniej.
Jednak moesz poda take nazw acucha zdefiniowanego przez uytkownika, w ktrym bdzie wykonywane dalsze przetwarzanie. Jeeli ten parametr zostanie pominity, to nawet jeli datagram pasuje do reguy, nie zostanie podjte
adne inne dziaanie, oprcz uaktualnienia datagramu i licznikw bajtw.

166

Rozdzia 9: Firewall TCP/IP

-i[!]nazwa-interfejsu
Okrela interfejs, ktry przyj datagram lub przez ktry zostanie on wysany.
Znw znak ! odwraca wynik dopasowania. Jeeli nazwa interfejsu koczy si
znakiem +, pasowa bdzie kady interfejs, ktrego nazwa rozpoczyna si zadanym cigiem. Na przykad, -i ppp+ bdzie pasowa do dowolnego urzdzenia sieciowego PPP, a -i ! eth+ bdzie pasowa do wszystkich urzdze poza
Ethernetem.
[!]-f
Mwi, e regua ta dotyczy wszystkiego poza pierwszym fragmentem datagramu podzielonego na fragmenty.
Opcje
Poniej pokazane opcje ipchains s bardziej oglne. Niektre z nich steruj raczej ezoterycznymi funkcjami oprogramowania acuchw IP:
-b

-v
-n

-l

Powoduje, e polecenie generuje dwie reguy. Jedna regua uwzgldnia podane


parametry, a druga uwzgldnia je w odwrotnym kierunku.
Powoduje, e ipchains wywietla bogate wyniki, czyli podaje wicej informacji.
Powoduje, e ipchains wywietla adres IP i porty jako liczby bez prby ich zamiany na odpowiadajce im nazwy.

Wcza zapisywanie przez jdro pasujcych datagramw. Wszystkie datagramy


pasujce do reguy s zapisywane przez jdro za pomoc funkcji printk(). Zwykle
jest to obsugiwane przez program syslogd zapisujcy do pliku log. Funkcja ta
przydaje si do ogldania niestandardowych datagramw.
-o[maxrozmiar]
Powoduje, e oprogramowanie acuchw IP kopiuje datagramy pasujce do reguy
do urzdzenia netlink, ktre dziaa w przestrzeni uytkownika. Argument
maxrozmiar ogranicza liczb bajtw kadego datagramu, ktra zostanie przekazana
do urzdzenia netlink. Opcja ta jest najchtniej stosowana przez programistw, ale
moe by w przyszoci wykorzystana w pakietach oprogramowania.
-m wartoznakowania
Powoduje, e pasujce datagramy s oznaczane zadan wartoci. Te wartoci to
32-bitowe liczby bez znaku. W obecnych implementacjach opcja ta nie dziaa, ale
w przyszoci moe decydowa o obsudze datagramu przez inne oprogramowanie, takie jak na przykad kod rutujcy. Jeeli wartoznakowania rozpoczyna
si od znaku + albo -, jest ona dodawana lub odejmowana od aktualnej wartoci
znakowania.

acuchy firewalla IP (jdra 2.2)

167

-t maskaand maskaxor
Pozwala na operowanie na bitach typ usugi w nagwku IP kadego datagramu pasujcego do reguy. Bity typu usugi s uywane przez inteligentne rutery do nadawania priorytetw datagramom, zanim zostan dalej przekazane.
Oprogramowanie rutujce Linuksa potrafi realizowa takie nadawanie priorytetw. Wartoci maskaand i maskaxor oznaczaj maski bitowe, ktre bd poddawane odpowiednio logicznej operacji AND i OR z bitami typu usugi datagramu. Jest to zaawansowana funkcja, ktra szczegowo zostaa omwiona
w IPCHAINS-HOWTO.
-x

-y

Powoduje, e wszelkie liczby w wyniku ipchains s pokazywane dokadnie, bez


zaokrglania.
Powoduje, e do reguy pasuj wszystkie datagramy TCP z ustawionym bitem
SYN i wyzerowanymi bitami ACK i FIN. Jest uywana do filtrowania da
nawizania poczenia TCP.

Poprawiona wersja naszego prostego przykadu


Powrmy do przykadu z sieci firmow, w ktrej dziaa firewall oparty na komputerze z Linuksem. Umoliwia on uytkownikom dostp do serwerw WWW w Internecie, ale nie pozwala na aden inny ruch.
Gdyby nasza sie miaa 24-bitow mask (klasa C) i adres 172.16.1.0, uylibymy nastpujcych regu ipchains:
#
#
#
#

ipchains
ipchains
ipchains
ipchains

-F
-P
-A
-A

forward
forward DENY
forward -s 0/0 80 -d 172.16.1.0/24 -p tcp -y -j DENY
forward -s 172.16.1.0/24 -d 0/0 80 -p tcp -b -j ACCEPT

Pierwsze polecenie czyci wszystkie reguy z zestawu forward, a drugie definiuje domyln polityk zestawu regu forward na DENY. Trzecie i czwarte polecenie realizuj wymagane przez nas filtrowanie. Czwarte polecenie pozwala datagramom kierowanym do i z serwerw WWW na przechodzenie do naszej sieci, a trzecie zapobiega przyjmowaniu przychodzcych pocze TCP z portem rdowym 80.
Gdybymy teraz chcieli doda reguy pozwalajce na dostp do zewntrznych serwerw FTP w trybie biernym, musielibymy wpisa:
#
#
#
#

ipchains
ipchains
ipchains
ipchains

-A
-A
-A
-A

forward
forward
forward
forward

-s
-s
-s
-s

0/0 20 -d 172.16.1.0/24
172.16.1.0/24 -d 0/0 20
0/0 21 -d 172.16.1.0/24
172.16.1.0/24 -d 0/0 21

-p
-p
-p
-p

tcp
tcp
tcp
tcp

-y
-b
-y
-b

-j
-j
-j
-j

DENY
ACCEPT
DENY
ACCEPT

168

Rozdzia 9: Firewall TCP/IP

Listowanie regu za pomoc ipchains


Do wylistowania regu za pomoc ipchains uywamy argumentu L. Podobnie jak to
byo w ipfwadm, istniej argumenty kontrolujce liczb szczegw pokazywanych
w wyniku. W najprostszej postaci ipchains generuje nastpujcy wynik:
# ipchains -L -n
Chain input (policy ACCEPT):
Chain forward (policy DENY):
target
prot opt
source
DENY
tcp
-y---- 0.0.0.0/0
ACCEPT
tcp
------ 172.16.1.0/24
ACCEPT
tcp
------ 0.0.0.0/0
ACCEPT
tcp
------ 172.16.1.0/24
ACCEPT
tcp
------ 0.0.0.0/0
ACCEPT
tcp
------ 172.16.1.0/24
ACCEPT
tcp
------ 0.0.0.0/0

destination
172.16.1.0/24
0.0.0.0/0
172.16.1.0/24
0.0.0.0/0
172.16.1.0/24
0.0.0.0/0
172.16.1.0/24

ports
80 -> *
* -> 80
80 -> *
* -> 20
20 -> *
* -> 21
21 -> *

Chain output (policy ACCEPT):

Jeeli nie podasz nazwy acucha, ktry chcesz obejrze, ipchains wywietli
wszystkie reguy ze wszystkich acuchw. Argument -n w naszym przykadzie powoduje, e ipchains nie prbuje konwertowa adresw i portw na nazwy. Pokazana
informacja powinna by oczywista.
Bogatsza forma wyniku, uzyskiwana przez opcj u, pokazuje duo wicej szczegw.
Dodatkowe pola zawieraj liczniki datagramw i bajtw, znaczniki AND i XOR typu
usugi, nazw interfejsu, znakowanie i rozmiar wynikowy.
Ze wszystkimi reguami utworzonymi za pomoc ipchains zwizane s liczniki bajtw i datagramw. W ten sposb jest zaimplementowane liczenie ruchu IP, ktre zostanie szczegowo omwione w rozdziale 10. Domylnie liczniki s pokazywane w
postaci zaokrglonej z przyrostkami K i M oznaczajcymi odpowiednio jednostki: tysic i milion. Jeeli zostanie podany argument -x, liczniki s rozwijane do ich penej,
niezaokrglonej postaci.

Korzystanie z acuchw
Wiesz ju, e polecenie ipchains zastpuje ipfwadm, ma prostsz skadni i kilka ciekawych rozszerze, ale bez wtpienia chcesz wiedzie, gdzie i po co uywa acuchw definiowanych przez uytkownika. Zapewne jeste te ciekawy, jak posugiwa si dodatkowymi skryptami towarzyszcymi poleceniu ipchains w pakiecie.
Przyjrzymy si teraz tym tematom i postaramy si odpowiedzie na pytania.
acuchy definiowane przez uytkownika
Trzy zestawy regu dla tradycyjnego firewalla IP stanowi mechanizm tworzenia
prostych konfiguracji firewalla, ktrymi atwo jest zarzdza w maych sieciach
o niewielkich wymaganiach wobec systemu bezpieczestwa. Gdy wymagania konfiguracyjne wzrastaj, pojawia si szereg problemw. Po pierwsze, due sieci czsto
wymagaj duo wicej regu firewalla, ni tych kilka, z ktrymi si do tej pory spotkalimy. Nieuchronnie rosn potrzeby dodawania do firewalla regu obsugujcych
przypadki szczeglne. Gdy liczba regu ronie, wydajno firewalla pogarsza si, bo

acuchy firewalla IP (jdra 2.2)

169

na kadym datagramie jest przeprowadzanych coraz wicej testw; problemem staje si te zarzdzanie. Po drugie, nie jest moliwe wczanie i wyczanie zestawu regu w sposb rozdzielny. Gdy jeste w trakcie przebudowy zestawu regu, naraasz
sie na ataki.
Zasady budowy acuchw IP pomagaj zagodzi te problemy, gdy umoliwiaj
administratorowi tworzenie dowolnych zestaww regu firewalla, ktre mona nastpnie docza do trzech wbudowanych zestaww regu. Do utworzenia nowego
acucha mona uy opcji N programu ipchains. Trzeba poda jego nazw, skadajc
si z 8 (lub mniej) znakw. (Ograniczenie nazwy do maych liter jest dobrym pomysem). Opcja j konfiguruje dziaanie podejmowane wtedy, gdy datagram pasuje
do wymaga reguy. Mwi, e jeeli datagram bdzie pasowa do reguy, dalsze testowanie powinno by realizowane w acuchu zdefiniowanym przez uytkownika. Pokaemy to na wykresie.
Rozwamy nastpujce polecenia ipchains:
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains

-P
-N
-A
-A
-A
-A
-A

input
tcpin
tcpin
tcpin
tcpin
input
input

DENY
-s
-p
-p
-p
-p

! 172.16.0.0/16
tcp -d 172.16.0.0/16 ssh -j ACCEPT
tcp -d 172.16.0.0/16 www -j ACCEPT
tcp -j tcpin
all

Domyln polityk acucha wejciowego ustawiamy na deny. Drugie polecenie


tworzy definiowany przez uytkownika acuch o nazwie tcpin. Trzecie polecenie
dodaje do acucha tcpin regu, do ktrej pasuj wszystkie datagramy pochodzce spoza naszej sieci lokalnej. Nie jest podejmowane adne dodatkowe dziaanie. Jest to regua zliczajca i zostanie omwiona bardziej szczegowo w rozdziale
10. Do nastpnych dwch regu pasuj datagramy przeznaczone dla naszej sieci lokalnej na porty ssh lub www. Pasujce datagramy s akceptowane. W nastpnej regule tkwi prawdziwa magia ipchains. Regua ta powoduje, e oprogramowanie firewalla sprawdza kady datagram TCP za pomoc acucha tcpin, zdefiniowanego
przez uytkownika. Na koniec dodajemy regu do naszego acucha input, do
ktrego pasuje kady datagram. Jest to kolejna regua zliczajca. W ten sposb uzyskujemy acuchy firewalla pokazane na rysunku 9-4.
Nasze acuchy input i tcpin s zapeniane reguami. Przetwarzanie datagramu
zawsze rozpoczyna si w jednym z acuchw wbudowanych. Zobaczymy, jak zdefiniowany przez nas acuch jest uywany przy przetwarzaniu rnych typw datagramw.
Najpierw przyjrzymy si, co si dzieje, gdy zostanie odebrany datagram UDP dla
jednego z naszych hostw. Rysunek 9-5 pokazuje przepyw przez reguy.
Datagram zostaje odebrany przez acuch input, ale nie pasuje do dwch pierwszych regu, poniewa pasuj do nich tylko datagramy protokow ICMP i TCP. Zostaje dopasowany do trzeciej reguy acucha input, ktra nie zawiera celu. S wic
uaktualniane liczniki bajtowy i datagramw, ale nie jest podejmowane adne inne

170

Rozdzia 9: Firewall TCP/IP

dziaanie. Datagram dociera do koca acucha input, speniajc warunki jego domylnej polityki i zostaje odrzucony.

Rysunek 9-4. Prosty zestaw regu acucha IP

Rysunek 9-5. Kolejno sprawdzania regu dla odebranego datagramu UDP

Aby zobaczy zdefiniowany przez nas acuch w dziaaniu, rozwamy, co si dzieje,


gdy zostanie odebrany datagram TCP przeznaczony dla portu ssh jednego z naszych hostw. Kolejno pokazano na rysunku 9-6.

Rysunek 9-6. Kolejno regu dla odebranego pakietu TCP dla portu ssh

acuchy firewalla IP (jdra 2.2)

171

Tym razem datagram pasuje do drugiej reguy w acuchu input, ktra kieruje go
do celu tcpin acucha zdefiniowanego przez uytkownika. Podanie acucha
zdefiniowanego przez uytkownika jako celu powoduje, e datagram bdzie sprawdzany przez zawarte w nim reguy, a wic nastpn sprawdzan regu bdzie
pierwsza regua z acucha tcpin. Do tej reguy pasuj datagramy, ktre maj adres
rdowy spoza sieci lokalnej i nie zawieraj adresu przeznaczenia, a wic jest to take regua zliczajca i testowanie przechodzi do nastpnej reguy. Druga regua w naszym acuchu tcpin pasuje do datagramu i okrela cel ACCEPT. Dotarlimy do celu, a wic nie bdzie ju adnego przetwarzania przez firewall. Datagram zostaje
przepuszczony.
Na koniec zobaczmy, co si stanie, gdy dotrzemy do koca zdefiniowanego przez
nas acucha. Aby to zobaczy, musimy pokaza przepyw datagramu TCP przeznaczonego dla portu innego ni dwa przez nas obsugiwane. Pokazujemy to na rysunku 9-7.
Input

tcpin

-p icmp -j ACCEPT

-s ! 172.16.0.0/16

-p tcp -j tcpin

-p tcp -d 172.16.0.0/16 ssh -j ACCEPT

-p all

-p tcp -d 172.16.0.0/16 www -j ACCEPT

DENY

Rysunek 9-7. Kolejno regu dla odebranego pakietu TCP dla telnet

acuchy zdefiniowane przez uytkownika nie maj polityki domylnej. Gdy wszystkie
zawarte w nich reguy zostan sprawdzone i adna nie pasuje, firewall dziaa tak, jakby istniaa regua RETURN, a wic jeeli nie tego chciae, powiniene na kocu acucha uytkownika umieci dane dziaanie. W naszym przykadzie sprawdzanie powraca do reguy z zestawu input nastpnej po tej, przez ktr przeszlimy do acucha zdefiniowanego przez uytkownika. Ostatecznie docieramy do koca acucha
input, ktry posiada polityk domyln i datagram zostaje odrzucony.
Ten przykad jest bardzo prosty, ale pokazuje to, o co nam chodzio. W praktyce
dziaanie acuchw IP jest duo bardziej skomplikowane. Nieco bardziej wyrafinowany przykad pokazujemy poniej, w postaci listy polece.
#
# Ustawienie domylnej polityki przekazywania na REJECT
ipchains -P forward REJECT
#
# utworzenie naszego acucha
ipchains -N sshin
#

172

Rozdzia 9: Firewall TCP/IP

# utworzenie naszego acucha


ipchains -N sshin
ipchains -N sshout
ipchains -N wwwin
ipchains -N wwwout
#
# Gwarancja odrzucania pocze w zym kierunku
ipchains -A wwwin -p tcp -s 172.16.0.0/16 -y -j REJECT
ipchains -A wwwout -p tcp -d 172.16.0.0/16 -y -j REJECT
ipchains -A sshin -p tcp -s 172.16.0.0/16 -y -j REJECT
ipchains -A sshout -p tcp -d 172.16.0.0/16 -y -j REJECT
#
# Gwarancja, e wszystko, co dotrze do koca acucha
# zdefiniowanego przez uytkownika, zostanie odrzucone
ipchains -A sshin -j REJECT
ipchains -A sshout -j REJECT
ipchains -A wwwin -j REJECT
ipchains -A wwwout -j REJECT
#
# Przekierowanie usug www i ssh do odpowiedniego acucha
# zdefiniowanego przez uytkownika
ipchains -A forward -p tcp -d 172.16.0.0/16 ssh -b -j sshin
ipchains -A forward -p tcp -s 172.16.0.0/16 -d 0/0 ssh -b -j sshout
ipchains -A forward -p tcp -d 172.16.0.0/16 www -b -j wwwin
ipchains -A forward -p tcp -s 172.16.0.0/16 -d 0/0 www -b -j wwwout
#
# Umieszczenie regu sprawdzajcych hosty na drugiej pozycji w
# zdefiniowanych przez nas acuchach
ipchains -I wwwin 2 -d 172.16.1.2 -b -j ACCEPT
ipchains -I wwwout 2 -s 172.16.1.0/24 -b -j ACCEPT
ipchains -I sshin 2 -d 172.16.1.4 -b -j ACCEPT
ipchains -I sshout 2 -s 172.16.1.4 -b -j ACCEPT
ipchains -I sshout 2 -s 172.16.1.6 -b -j ACCEPT
#

W tym przykadzie uylimy acuchw definiowanych przez uytkownika do


uproszczenia zarzdzania naszym firewallem i do poprawy wydajnoci w porwnaniu z rozwizaniem wykorzystujcym jedynie acuchy wbudowane.
W naszym przykadzie s tworzone acuchy uytkownika dla kadej z usug ssh
i www w kadym kierunku poczenia. W acuchu wwwout umieszczamy reguy dla
hostw, ktre mog tworzy wychodzce poczenia WWW, a w sshin definiujemy reguy dla hostw, ktre mog przyjmowa przychodzce poczenia ssh. Zaoylimy, e potrzebujemy moliwoci przyjmowania i odrzucania pocze ssh
i www tylko dla wybranych hostw w naszej sieci. Jest to pewne uproszczenie, gdy
acuchy definiowane przez uytkownika pozwalaj na grupowanie regu wedug
pakietw przychodzcych do hosta i wychodzcych z niego, a nie na ich mieszanie.
Poprawia si wydajno, poniewa dla kadego datagramu zmniejszylimy redni
liczb testw robionych przed osigniciem celu. Wydajno zwikszy si jeszcze
bardziej, jeeli wzronie liczba hostw. Gdybymy nie mieli acuchw uytkownika, potencjalnie musielibymy przeszukiwa ca list regu, by stwierdzi, czy
dziaanie ma zosta podjte przy kadym odebranym datagramie. Nawet gdybymy zaoyli, e kada z regu zawartych na naszej licie pasuje do rwnej liczby
przetworzonych datagramw, wci musielibymy przeszukiwa rednio poow
listy. acuchy definiowane przez uytkownika pozwalaj nam unikn sprawdza-

Netfilter i tabele IP (jdra 2.4)

173

nia duej liczby regu, poniewa testowany datagram musi pasowa do prostej reguy wbudowanego acucha, aby w ogle dotrze do acucha uytkownika.
Skrypty pomocnicze ipchains
Pakiet oprogramowania ipchains jest dostarczany wraz z trzema dodatkowymi skryptami. Pierwszy z nich ju krtko omwilimy, natomiast pozostae dwa zapewniaj
atwe i wygodne sposoby zachowywania i odtwarzania konfiguracji firewalla.
Skrypt ipfwadm-wrapper emuluje skadni wiersza polece ipfwadm, ale wymaga polecenia ipchains do tworzenia regu. Jest to wygodny sposb na migracj istniejcej
konfiguracji firewalla do jdra lub alternatywa dla opanowania skadni ipchains.
Skrypt ipfwadm-wrapper zachowuje si inaczej ni polecenie ipfwadm pod dwoma
wzgldami. Po pierwsze, ipchains nie pozwala na okrelenie interfejsu przez adres,
a ipfwadm-wrapper przyjmuje argument V, ale prbuje zamieni go na waciwy dla
ipchains odpowiednik W, szukajc nazwy interfejsu skonfigurowanej pod zadanym
adresem. Skrypt ipfwadm-wrapper zawsze przypomina ci o tym, wypisujc komunikat,
gdy uyjesz opcji V. Po drugie, reguy zliczania fragmentw nie s tumaczone poprawnie.
Skrypty ipchains-save i ipchains-restore upraszczaj tworzenie i modyfikowanie konfiguracji firewalla. Polecenie ipchains-save odczytuje aktualn konfiguracj firewalla
i zapisuje uproszczon posta na standardowe wyjcie. Polecenie ipchains-restore odczytuje dane w formacie wyprowadzanym przez ipchains-save i konfiguruje firewall
IP zgodnie z odczytanymi reguami. Korzyci z uywania tych skryptw jest moliwo natychmiastowego dynamicznego tworzenia konfiguracji i jej zapisania, czego
nie daje bezporednie modyfikowanie skryptu konfigurujcego firewall i testowanie
konfiguracji. Tak konfiguracj mona nastpnie odtworzy, zmodyfikowa i zapisa ponownie.
Aby uy tych skryptw i zachowa aktualn konfiguracj firewalla, musisz napisa
co takiego:
ipchains-save >/var/state/ipchains/firewall.state

Moesz j potem odtworzy, zwykle w czasie uruchamiania systemu, w nastpujcy


sposb:
ipchains-restore </var/state/ipchains/firewall.state

Skrypt ipchains-restore sprawdza, czy istniej ju umieszczone w konfiguracji acuchy


zdefiniowane przez uytkownika. Jeli podasz opcj -f, reguy z wczeniej skonfigurowanych acuchw uytkownika bd automatycznie usunite przed wczytaniem
nowych. Natomiast przy dziaaniu domylnym jeste pytany, czy pozostawi, czy
usun dany acuch.

Netfilter i tabele IP (jdra 2.4)


Kiedy Paul Russell pracowa nad acuchami IP, doszed do wniosku, e firewalle IP
powinny by mniej skomplikowane. Wkrtce wic zaj si upraszczaniem przetwarzania datagramw w kodzie firewalla zawartym w jdrze i stworzy struktur

174

Rozdzia 9: Firewall TCP/IP

filtrujc, ktra bya duo prostsza i duo bardziej elastyczna. T now struktur nazwa netfilter.
W czasie pisania tej ksiki budowa netfilter nie bya jeszcze ustabilizowana. Mamy nadziej, e wybaczysz nam wszelkie bdy w opisie netfilter i narzdzi konfiguracyjnych,
ktre wynikaj ze zmian, jakie zaszy po przygotowaniu tego materiau. Uznalimy, e
netfilter jest tematem na tyle istotnym, by usprawiedliwi umieszczenie jego roboczego
opisu w tej ksice, bez wzgldu na fakt, e jego czci s oparte na domysach. Gdyby
mia jakiekolwiek wtpliwoci, s ju dostpne odpowiednie dokumenty HOWTO zawierajce bardziej dokadne i aktualne informacje na temat szczegowych zagadnie
zwizanych z konfiguracj netfilter.

C wic byo nie tak z acuchami IP? Poprawiy one znacznie wydajno i zarzdzanie reguami firewalla. Ale sposb przetwarzania datagramw wci by
skomplikowany, szczeglnie w poczeniu z funkcjami zwizanymi z firewallem,
takimi jak maskowanie IP (omwione w rozdziale 11) i inne formy translacji adresw.
Czciowa zoono wynikaa z faktu, e maskowanie IP i translacja adresw sieciowych powstay niezalenie od kodu firewalla w jdrze i dopiero pniej zostay
do niego doczone. Niestety nie byo to wszystko tworzone razem od pocztku
i zintegrowane w kodzie firewalla. Gdyby twrcy chcieli doda nastpne funkcje
zwizane z przetwarzaniem datagramw, mieliby trudnoci ze znalezieniem miejsca
na umieszczenie swojego kodu i musieliby dokona zmian w jdrze, aby dopi
swego.
Poza tym istniay jeszcze inne problemy. W szczeglnoci acuch input opisywa
wejcie do caej warstwy sieci IP. acuch wejciowy dotyczy zarwno datagramw przeznaczonych dla hosta, jak i datagramw rutowanych przez host. Byo to nieco
mylce, poniewa mieszao funkcj acucha wejciowego z funkcj acucha przekazujcego, dotyczcego tylko datagramw przekazywanych dalej, ale zawsze
sprawdzanych po przejciu przez acuch wejciowy. Gdyby chcia inaczej traktowa datagramy przeznaczone dla hosta ni datagramy przekazywane dalej, musiaby stworzy zoone reguy wykluczajce jedne lub drugie. Ten sam problem
dotyczy acucha wyjciowego.
Oczywicie ta zoono poniekd dotkna administratora systemu, poniewa
odbia si na sposobie tworzenia regu. Co wicej, wszelkie rozszerzenia filtrowania
wymagay bezporednich modyfikacji jdra, poniewa wszystkie polityki filtrowania
byy w nim zaimplementowane i nie byo sposobu na stworzenie przezroczystego interfejsu. netfilter radzi sobie zarwno ze zoonoci, jak i sztywnoci starszych rozwiza, implementujc w jdrze ogln struktur okrelajc sposb przetwarzania
datagramw i zapewniajc moliwo rozbudowy polityki filtrowania bez potrzeby modyfikacji jdra.
Przyjrzyjmy si dwm kluczowym zmianom, ktre zostay dokonane. Rysunek 9-8
pokazuje, jak datagramy s przetwarzane w implementacji acuchw IP, natomiast
rysunek 9-9 pokazuje, jak s one przetwarzane przez netfilter. Zasadnicze rnice to
usunicie z gwnego kodu funkcji maskowania i zmiana umiejscowienia acu-

Netfilter i tabele IP (jdra 2.4)

175

chw wejciowego i wyjciowego. Zmianom tym towarzyszy nowe, dajce si rozbudowa narzdzie o nazwie iptables.
W acuchach IP acuch wejciowy dotyczy wszystkich datagramw odebranych
przez host bez wzgldu na to, czy byy one dla niego przeznaczone, czy rutowane do
innego hosta. W netfilter acuch wejciowy dotyczy tylko datagramw przeznaczonych dla hosta lokalnego, a acuch przekazujcy dotyczy tylko datagramw
przeznaczonych dla innego hosta. Podobnie w acuchach IP, acuch wyjciowy dotyczy wszystkich datagramw wychodzcych z hosta lokalnego bez wzgldu na to,
czy s to datagramy na nim stworzone, czy przez niego rutowane z innego hosta.
W netfilter acuch wyjciowy dotyczy tylko datagramw wygenerowanych na danym hocie, a nie dotyczy datagramw przez niego rutowanych. Sama ta zmiana
stanowi powane uproszczenie wielu konfiguracji firewalla.
Na rysunku 9-8 elementy opisane jako demasq i masq s oddzielnymi elementami jdra odpowiedzialnymi za przetwarzanie przychodzcych i wychodzcych
datagramw maskowanych. Zostay one ponownie zaimplementowane w netfilter
jako moduy.

checksum

sanity

input
chain

Demasq?

routing
decision

Masq?

forward
chain

output
chain

local
process

Rysunek 9-8. acuch przetwarzania datagramw w acuchach IP

Przyjrzyjmy si konfiguracji, w ktrej domylna polityka dla kadego acucha: wejciowego, wyjciowego i przekazujcego, jest ustawiona na deny. W acuchach IP
potrzebne jest sze regu, aby przepuszcza jakkolwiek sesj przez firewall: po
dwie w kadym acuchu: wejciowym, wyjciowym i przekazujcym (jedna obsugiwaaby przesyanie w jedn stron, a druga w drug.). Moesz sobie wyobrazi,
jak atwo mogoby to si sta nadzwyczaj skomplikowane i trudne do ogarnicia,
gdyby chcia miesza sesje rutowane i sesje pocze do hosta bez rutowania.
acuchy IP pozwalaj na tworzenie acuchw nieco upraszczajcych to zadanie,
ale ich budowa nie jest oczywista i wymaga pewnego dowiadczenia.
W implementacji netfilter ta zoono znika zupenie dziki iptables. W przypadku
usugi rutowanej przez firewalla, ale nie koczcej si na hocie lokalnym, po-

176

Rozdzia 9: Firewall TCP/IP

trzebne s tylko dwie reguy w acuchu przekazujcym: jedna w jednym kierunku


i druga w przeciwnym. Jest to oczywisty sposb tworzenia regu dla firewalla
i znacznie upraszcza jego konfiguracj.
W dokumencie PACKET-FILERING-HOWTO znajdziesz szczegow list zmian,
dokonywanych w czasie tworzenia oprogramowania, a wic tam szukaj bardziej
praktycznych zagadnie zwizanych z tym tematem.

checksum

sanity

routing
decision

forward
chain

input
chain

routing
decision

output
chain

local
process
Rysunek 9-9. acuch przetwarzania datagramw w netfilter

Wsteczna zgodno z ipfwadm i ipchains


Niezwyka elastyczno netfilter w Linuksie uwidacznia si w moliwoci emulowania interfejsw ipfwadm i ipchains. Dziki emulacji przejcie na oprogramowanie firewalla nowej generacji jest duo prostsze.
Dwa moduy jdra netfilter, zwane ipfwadm.o i ipchains.o, zapewniaj kompatybilno
wsteczn dla ipfwadm i ipchains. Moesz zaadowa tylko jeden z nich na raz i uywa
tylko wtedy, gdy modu ip_tables.o nie jest zaadowany. Gdy odpowiedni modu zostanie zaadowany, netfilter dziaa dokadnie tak jak poprzednia implementacja firewalla.
netfilter naladuje interfejs ipchains po wydaniu nastpujcych polece:
rmmod ip_tables
modprobe ipchains
ipchains

Netfilter i tabele IP (jdra 2.4)

177

Uywanie iptables
Program iptables jest uywany do konfigurowania regu filtrowania netfilter. Jego
skadnia ma wiele wsplnego z ipchains, ale rni si pod jednym bardzo szczeglnym
wzgldem: jest rozszerzalna. Oznacza to, e jej funkcjonalno mona roszerzy bez ponownej kompilacji. Su do tego biblioteki dzielone. Istniej standardowe rozszerzenia, ktre omwimy za chwil.
Zanim bdziesz mg uywa polecenia iptables, musisz zaadowa modu jdra netfilter niezbdny do jego obsugi. Najprociej zrobisz to za pomoc polecenia modprobe:
modprobe ip_tables

Polecenie iptables jest uywane do konfigurowania zarwno filtrowania IP, jak


i translacji adresw sieciowych (Network Address Translation). Aby temu sprosta, istniej dwie tablice regu: filter i net. Tablica filter jest uywana domylnie, jeeli nie
podasz opcji t zmieniajcej to zachowanie. W netfilter udostpniono pi wbudowanych acuchw. acuchy INPUT i FORWARD s dostpne dla tablicy filter, a PREROUTING i POSTROUTING s dostpne dla tablicy nat, natomiast acuch OUTPUT jest
dostpny dla obu tablic. W tym rozdziale omwimy tylko tablice filter. Tablicom net
przyjrzymy si w rozdziale 11.
Oglna skadnia wikszoci polece iptables jest nastpujca:
iptables polecenie okrelenie-reguy rozszerzenia

Teraz przyjrzymy si szczegowo kilku opcjom, po czym podamy przykady.


Polecenia
Istnieje szereg sposobw operowania na reguach i ich zestawach za pomoc polecenia iptables. Istotne dla filtrowania IP s nastpujce:
-A acuch
Dodanie jednej lub kilku regu na koniec zadanego acucha. Jeeli zostanie
podana nazwa hosta rdowego lub docelowego, z ktr zwizany jest wicej
ni jeden adres IP, regua zostanie dodana do kadego adresu.
-I acuch num_reguy
Wstawienie jednej lub kilku regu na pocztku zadanego acucha. Znw, jeeli
w opisie reguy zostanie podana nazwa hosta, regua bdzie dodana dla kadego
adresu IP odpowiadajcego temu hostowi.
-D acuch
Usunicie jednej lub kilku regu z zadanego acucha, ktry takie reguy zawiera.
-D acuch num_reguy
Usunicie reguy znajdujcej si na pozycji num_reguy w zadanym acuchu.
Liczenie regu zaczyna si od 1 w przypadku pierwszej reguy w acuchu.
-R acuch num_reguy
Zastpienie reguy na pozycji num_reguy w zadanym acuchu regu o podanej charakterystyce.

178

Rozdzia 9: Firewall TCP/IP

-C acuch
Sprawdzenie zadanym acuchem datagramu opisanego przez regu. To polecenie zwrci komunikat opisujcy, w jaki sposb acuch przetworzy datagram.
Jest bardzo przydatne do testowania konfiguracji firewalla i za chwil przyjrzymy si mu bardziej szczegowo.
-L[acuch]
Wylistowanie regu z zadanego acucha lub ze wszystkich acuchw, jeeli
aden nie zostanie wybrany.
-F [acuch]
Usunicie regu z zadanego acucha lub ze wszystkich acuchw, jeeli aden
nie zostanie wybrany.
-Z [acuch]
Wyzerowanie licznikw bajtw i datagramw dla wszystkich regu w zadanym
acuchu lub we wszystkich acuchach, jeeli aden nie zostanie wybrany.
-N acuch
Utworzenie nowego acucha o zadanej nazwie. Nie mog istnie acuchy o tej
samej nazwie. W ten sposb tworzy si acuch definiowany przez uytkownika.
-X [acuch]
Usunicie zadanego acucha zdefiniowanego przez uytkownika lub wszystkich takich acuchw, jeeli aden nie zostanie wybrany. Aby to polecenie zadziaao, nie moe by odwoa do usuwanego acucha z adnych innych acuchw regu.
-P acuch polityka
Ustawienie domylnej polityki dla zadanego acucha. Dopuszczalne polityki to
ACCEPT, DROP, QUEUE i RETURN. ACCEPT pozwala na przepuszczenie datagramu.
DROP powoduje, e datagram jest odrzucany. QUEUE powoduje, e datagram jest
przekazywany do przestrzeni uytkownika w celu dalszego przetwarzania.
RETURN powoduje, e kod firewalla IP wraca do acucha, ktry go wywoa,
i kontynuuje dziaanie od nastpnej reguy.
Parametry definicji reguy
Istnieje kilka parametrw iptables uywanych do definiowania reguy. Gdy wymagane jest zdefiniowanie reguy, musi zosta podana warto kadego z nich albo zostan
przyjte wartoci domylne.
-p[!]protok
Okrela protok datagramu, ktry ma pasowa do tej reguy. Dopuszczalne nazwy protokow to: tcp, udp, icmp lub numer, jeeli znasz numery protokou
IP*. Na przykad mgby uy liczby 4 do okrelenia enkapsulacji ipip. Gdyby poda znak !, regua zostaaby zanegowana, a datagram pasowaby do kadego protokou poza podanym. Gdy ten parametr nie zostanie okrelony, domylnie przyjte bd wszystkie protokoy.
*

Nazwy i numery protokow znajdziesz w pliku /etc/protocols.

Netfilter i tabele IP (jdra 2.4)

179

-s[!]adres[/maska]
Okrela adres rdowy datagramu, ktry bdzie pasowa do tej reguy. Adres
moe by podany w postaci nazwy hosta, nazwy sieci lub adresu IP. Opcjonalny
parametr maska definiuje mask sieci, ktra ma by zastosowana. Moe by ona
podana w postaci tradycyjnej (tj. /255.255.255.0) lub w postaci wspczesnej (tj.
/24).
-d[!]adres[/maska]
Okrela adres przeznaczenia i port datagramu, ktry bdzie pasowa do tej
reguy. Kodowanie tego parametru jest takie samo jak parametru s.
-j cel
Okrela, jakie dziaanie ma zosta podjte, gdy regua zostanie dopasowana. Parametr ten moesz sobie przetumaczy jako skocz do (ang. jump to). Dopuszczalne cele to ACCEPT, DROP, QUEUE i RETURN. Ich znaczenie opisalimy wczeniej w sekcji Polecenia. Jednak moesz poda take nazw acucha zdefiniowanego przez uytkownika acucha, w ktrym bdzie wykonywane dalsze
przetwarzanie. Moesz take poda cel obsugiwany przez rozszerzenie. Wkrtce opiszemy rozszerzenia. Jeeli ten parametr zostanie pominity, to jeli datagram pasuje do reguy, nie zostanie podjte adne inne dziaanie oprcz uaktualnienia datagramu i licznikw bajtw.
-i[!]nazwa-interfejsu
Okrela interfejs, ktry przyj datagram. Znw znak ! odwraca wynik dopasowania. Jeeli nazwa interfejsu koczy si znakiem +, pasowa bdzie kady interfejs, ktrego nazwa rozpoczyna si zadanym cigiem. Na przykad, -i ppp+
bdzie pasowa do dowolnego urzdzenia sieciowego PPP, a -i ! eth+ bdzie
pasowa do wszystkich urzdze poza Ethernetem.
-o[!]nazwa-interfejsu
Okrela interfejs, na ktry datagram bdzie wysany. Ten argument ma tak
sam skadni jak i.
[!]-f
Mwi, e regua ta dotyczy tylko drugiego i dalszych fragmentw datagramu.
Nie dotyczy pierwszego fragmentu.
Opcje
Poniej pokazano bardziej oglne opcje iptables. Niektre z nich steruj raczej ezoterycznymi funkcjami oprogramowania netfilter.
-v
Powoduje, e iptables wywietla bogate wyniki. Podawane bdzie wicej informacji.
-n
Powoduje, e iptables wywietla adres IP i porty tylko jako liczby, nie prbuje zamienia ich na odpowiadajce im nazwy.
-x
Powoduje, e wszelkie liczby w wyniku iptables s pokazywane dokadnie, bez
zaokrglania.

180

Rozdzia 9: Firewall TCP/IP

- -numery_wierszy
Powoduje, e przy wywietlaniu zestaww regu pokazywane s numery wierszy. Numer wiersza odpowiada pozycji reguy w acuchu.
Rozszerzenia
Powiedzielimy wczeniej, e iptables jest narzdziem rozszerzalnym poprzez
opcjonalne moduy bibliotek dzielonych. Istniej standardowe rozszerzenia udostpniajce funkcje ipchains. Aby z nich skorzysta, musisz poda poleceniu iptables ich
nazw poprzez argument -m nazwa. Ponisza lista pokazuje opcje m i p okrelajce kontekst rozszerze oraz opcje udostpniane przez rozszerzenie.
Rozszerzenia TCP: uywane z m tcp p tcp
- -sport [!][port[:port]]
Okrela port, z ktrego musi pochodzi datagram, aby pasowa do reguy. Mona wyznaczy pewien zakres portw, wypisujc grny i dolny limit (naley rozdzieli je dwukropkiem). Na przykad 20:25 oznacza wszystkie porty o numerach od 20 do 25 wcznie. Znw znak ! moe by uyty do zanegowania wartoci.
- -dport[!][port[:port]]
Okrela port, do ktrego musi by skierowany datagram, aby pasowa do reguy.
Argument jest kodowany identycznie jak --sport.
- -tcp-flags [!] maska lista
Okrela, e regua pasuje, gdy znaczniki TCP w datagramie pasuj do okrelonych przez mask i list. maska to lista rozdzielonych przecinkami znacznikw, ktre powinny by sprawdzone przy przeprowadzaniu testu. lista to lista oddzielonych przecinkami, znacznikw, ktre musz by ustawione, aby
regua pasowaa. Dopuszczalne znaczniki to SYN, ACK, FIN, RST, URG, PSH,
ALL lub NONE. Jest to zaawansowana opcja. Zajrzyj do dobrego opisu protokou
TCP, na przykad do RFC-793, a znajdziesz tam opis znaczenia i dziaania kadego z tych znacznikw. Znak ! neguje regu.
[!] --syn
Powoduje, e regua pasuje tylko do datagramw z ustawionym bitem SYN i wyzerowanymi bitami ACK i FIN. Datagramy z tymi bitami s uywane do otwierania
pocze TCP i dlatego ta opcja jest uywana do obsugi da pocze. Opcja ta
to skrt od:
- -tcp-flags SYN,RST,ACK SYN
Gdy uyjesz operatora negacji, do reguy bd pasoway wszystkie datagramy,
ktre nie maj ustawionych bitw SYN i ACK.
Rozszerzenia UDP: uywane z m udp p udp
- -sport[!][port[:port]]
Okrela port, z ktrego musi pochodzi datagram, aby pasowa do reguy. Porty
mog by podane jako zakres przez okrelenie grnego i dolnego limitu zakresu,

Netfilter i tabele IP (jdra 2.4)

181

ktre naley rozdzieli dwukropkiem. Na przykad 20:25 oznacza wszystkie


porty o numerach od 20 do 25 wcznie. Znw znak ! moe by uyty do zanegowania wartoci.
- -dport[!][port[:port]]
Okrela port, do ktrego musi by skierowany datagram, aby pasowa do reguy.
Argument jest kodowany tak samo jak --sport.
Rozszerzenia ICMP: uywane z m icmp p icmp
- -icmp-type[!] nazwa_typu
Okrela typ komunikatu ICMP pasujcego do reguy. Typ moe by okrelony
przez nazw lub numer. Niektre dopuszczalne nazwy to: echo-request,
echo-reply, source-quench, time-exceeded, destination-unreachable, network-unreachable, host-unreachable, protocol-unreachable
i port-unreachable.
Rozszerzenia MAC: uywane z m mac
- -mac-source[!] adres
Okrela adres hosta Ethernet, ktry wysa datagram pasujcy do tej reguy. Ma
to sens jedynie w acuchach wejciowym i przekazujcym reguy, poniewa
wszystkie datagramy, ktre przechodz przez acuch wychodzcy, s wysyane
przez nas.

Kolejna poprawiona wersja naszego prostego przykadu


Aby zaimplementowa nasz prosty przykad za pomoc netfilter, mgby zaadowa
modu ipchains.o i wykorzysta skrypt w wersji dla ipchains. Jednak zamiast tego, zaimplementowalimy go, uywajc iptables, by pokaza, jak bardzo te dwa programy
s do siebie podobne.
Znw zamy, e mamy w firmie sie i e uywamy komputera z Liunksem jako firewalla, ktry pozwala naszym uytkownikom dostawa si do serwerw WWW
w Internecie, ale nie przepuszcza innego ruchu.
Gdyby nasza sie miaa 24-bitow mask (klasa C) i adres 172.16.1.0, uylibymy nastpujcych regu iptables:
#
#
#
#
#
#

modprobe
iptables
iptables
iptables
iptables
iptables

ip_tables
-F FORWARD
-P FORWARD
-A FORWARD
-A FORWARD
-A FORWARD

DROP
-m tcp -p tcp -s 0/0 --sport 80 -d 172.16.1.0/24 --syn -j DROP
-m tcp -p tcp -s 172.16.1.0./24 --sport 80 -d 0/0 -j ACCEPT
-m tcp -p tcp -d 172.16.1.0/24 --dport 80 -s 0/0 -j ACCEPT

W tym przykadzie polecenia iptables s interpretowane dokadnie tak jak ich rwnowane polecenia ipchains. Gwna rnica polega na tym, e musi by zaadowany
modu ip_tables.o. Zauwa, e iptables nie obsuguje opcji b, a wic musimy poda regu dla kadego kierunku.

182

Rozdzia 9: Firewall TCP/IP

Operowanie bitem TOS


Bity typu usugi (Type of Service TOS) to zestaw czterobitowych znacznikw
w nagwku IP. Gdy dowolny z tych znacznikw jest ustawiony, rutery mog obsugiwa taki datagram inaczej, ni datagramy bez ustawionych bitw TOS. Kady
z czterech bitw ma inne zadanie, a ustawiony moe by tylko jeden z nich kombinacja jest niedopuszczalna. Znaczniki s nazywane bitami typu usugi, poniewa
nakazuj aplikacji wysyajcej dane informowa sie o typie wymaganej usugi sieciowej.
Dostpne klasy usug sieciowych:
Minimalne opnienie
Uywane, gdy czas potrzebny na przejcie datagramu od hosta rdowego do
hosta docelowego (opnienie) jest bardzo wany. Dostawca usug sieciowych
moe na przykad uywa zarwno pocze wiatowodowych, jak i satelitarnych. Dane przesyane przez satelit pokonuj dusz drog, ni w przypadku
sieci naziemnej pomidzy tymi samymi punktami i ich opnienie jest duo wiksze. Dostawca usug moe spowodowa, e datagramy z tym typem usugi na
pewno nie bd przesyane przez satelit.
Maksymalna przepustowo
Uywana, gdy wana jest liczba przesyanych danych w dowolnym czasie. Istnieje wiele aplikacji sieciowych, dla ktrych opnienie nie jest szczeglnie wane, ale przepustowo tak. Na przykad masowe przesyanie plikw. Dostawca usug sieciowych moe ustawi rutowanie datagramw tego typu usugi
przez trasy o duej przepustowoci i duych opnieniach, czyli np. poczenia
satelitarne.
Maksymalna niezawodno
Uywana, gdy wane jest, by mia pewno, e dane dotr do celu bez potrzeby
ponownego przesyania. Protok IP moe by przesyany przez szereg rnych
mediw transmisyjnych. Cho SLIP i PPP te si nadaj do przenoszenia IP, nie
s tak niezawodne jak sie X.25. Dostawca usug sieciowych moe udostpni
sie alternatywn oferujc wysok niezawodno i przeznaczon do przesyania IP, jeeli zostanie wybrany ten typ usug.
Minimalny koszt
Uywany, gdy wane jest zminimalizowanie kosztu przesyania danych. Dzierawienie przepustowoci na satelicie dla pocze przez ocean jest oglnie tasze, ni
dzierawienie kanau w wiatowodzie na tej samej odlegoci, a wic dostawcy
mog udostpnia obie te moliwoci, ale rnie liczy koszty poczenia w zalenoci od tego, ktrego medium uywasz. W tym scenariuszu usuga typu minimalny koszt moe oznacza, e datagramy bd kierowane przez tanie cze satelitarne.

Operowanie bitem TOS

183

Ustawianie bitw TOS za pomoc ipfwadm i ipchains


Polecenia ipfwadm i ipchains obsuguj bity TOS prawie tak samo. W obu przypadkach podajesz regu, do ktrej maj pasowa datagramy z ustawionymi odpowiednimi bitami TOS, i uywasz argumentu t do okrelenia zmian, jakich chcesz dokona.
Zmiany s okrelane za pomoc dwch masek bitowych. Pierwsza z tych masek bitowych jest poddawana operacji logicznej AND z polem opcji IP datagramu, a druga jest
poddawana logicznej operacji XOR z wynikiem poprzedniej operacji. Moe wydawa
si to skomplikowane, ale za chwil wyjanimy, jak wcza si kady z typw usug.
Maski bitowe s okrelane za pomoc omiobitowych wartoci szesnastkowych.
Zarwno ipfwadm, jak i ipchains uywaj tej samej skadni przy zapisywaniu argumentw:
-t maskaand maskaxor
Na szczcie te same maski mog by uywane za kadym razem, gdy chcesz ustawi
dany typ usugi, co zaoszczdzi ci kadorazowego ich rozpracowywania. W tabeli 9-3
pokazano je wraz z sugerowanym zastosowaniem.
Tabela 9-3. Sugerowane zastosowanie masek bitowych TOS
TOS

MaskaAND

MaskaXOR Sugerowane zastosowanie

Minimalne opnienie
Maksymalna przepustowo
Maksymalna niezawodno
Minimalny koszt

0x01
0x01
0x01
0x01

0x10
0x08
0x04
0x02

ftp, telnet, ssh


ftp-data, www
snmp, dns
nntp, smtp

Ustawienie bitw TOS za pomoc iptables


Narzdzie iptables pozwala okreli reguy, ktre przechwytuj tylko datagramy
z bitami TOS pasujcymi do wartoci okrelonej wczeniej, za pomoc opcji m tos.
Ustawienie bitw TOS datagramw IP pasujcych do reguy nastpuje za pomoc
celu -j TOS. Bity TOS moesz ustawia tylko w acuchach FORWARD i OUTPUT. Dopasowanie i ustawienie s realizowane niezalenie od siebie. Moesz skonfigurowa
wszelkie reguy. Na przykad moesz skonfigurowa regu, ktra odrzuca wszystkie datagramy o pewnych kombinacjach bitw TOS, lub inn, ktra ustawia bity
TOS datagramu pochodzcego tylko z pewnych hostw. Najczciej bdziesz uywa regu, ktre realizuj zarwno dopasowanie, jak i zmian, by za ich pomoc
tumaczy TOS, podobnie jak moesz to zrobi w ipfwadm i ipchains.
Zamiast skomplikowanej, wykorzystujcej dwie maski, konfiguracji stosowanej przez
ipfwadm i ipchains, iptables proponuje prostsze rozwizanie. Polega ono na jawnym
okrelaniu bitw TOS, ktre powinny pasowa, i tych, ktre powinny by ustawione. Co wicej, zamiast w wartociach szesnastkowych, moesz poda bity TOS za
pomoc bardziej przyjaznych mnemonik, podanych w poniszej tabeli.
Oglna skadnia uywana do dopasowania bitw TOS wyglda tak:
-m tos --tos mnemonik [inne-typy] -j cel

184

Rozdzia 9: Firewall TCP/IP

Oglna skadnia uywana do ustawiania bitw TOS jest nastpujca:


[inne-argumenty] -j TOS --set mnemonik
Pamitaj, e zwykle powinny by one uywane razem, ale mog by uywane niezalenie, jeeli twoja konfiguracja tego wymaga.
Mnemonika

Warto szesnastkowa

Normal-Service
Minimize-Cost
Maximize-Reliability
Maximize-Throughput
Minimize-Delay

0x00
0x02
0x04
0x08
0x10

Testowanie konfiguracji firewalla


Gdy odpowiednio skonfigurowae firewall, trzeba sprawdzi, czy rzeczywicie
dziaa tak, jak chcesz. Mona w tym celu sprbowa przebi si przez firewall testowym hostem spoza twojej sieci. Jest to sposb i niezrczny, i wolny, a poza tym jest
ograniczony do testowania jedynie tych adresw, ktrych rzeczywicie uywasz.
W implementacji firewalla w Linuksie dostpna jest szybsza i prostsza metoda. Pozwala ona na rczne generowanie testw i uruchamianie ich z konfiguracj firewalla
tak, jakby testowa rzeczywiste datagramy. Wszystkie odmiany oprogramowania
firewalla w Linuksie, ipfwadm, ipchains i iptables, udostpniaj tego typu testowanie.
Implementacja wykorzystuje polecenie check.
Oglna procedura testowa wyglda nastpujco:
1. Zaprojektuj i skonfiguruj firewall, uywajc ipfwadm, ipchains lub iptables.
2. Przygotuj seri testw, ktre poka, czy twj firewall rzeczywicie dziaa tak,
jak chciae. Do tych testw moesz uy dowolnych adresw rda i przeznaczenia, a wic wybierz jak mieszank adresw, ktre bd mogy by przyjte i ktre powinny by odrzucone. Jeeli przepuszczasz i odrzucasz dane zakresy
adresw, dobrze jest testowa adresy z obu stron ogranicze, tzn. jeden adres ze
rodka zakresu i jeden spoza niego. Pomoe to upewni si, e masz skonfigurowane poprawne ograniczenia, poniewa czasem zdarza si poda w konfiguracji
niepoprawn mask. Jeeli filtrujesz wedug numerw protokow i portw,
twoje testy powinny rwnie uwzgldnia wszystkie istotne kombinacje tych
parametrw. Na przykad, jeeli zamierzasz przyjmowa tylko pakiety TCP
w pewnych warunkach, sprawdzaj, czy pakiety UDP s odrzucane.
3. Wykorzystaj reguy ipfwadm, ipchains lub iptables do implementacji kadego testu.
Na pewno warto zapisa wszystkie reguy w skrypcie, tak by mg atwo powtarza testy, gdy zrobisz bd lub zmienisz budow. Testy wykorzystuj prawie t
sam skdni co reguy, ale argumenty maj nieco inne znaczenie. Na przykad
argument adresu rdowego w regule okrela adres rdowy, ktry powinien
mie datagram, by pasowa do danej reguy. Adres rdowy w skadni testowej

Testowanie konfiguracji firewalla

185

dla odmiany oznacza adres rdowy datagramu testowego, ktry zostanie wygenerowany. W przypadku ipfwadm musisz uy opcji c, by okreli, e to polecenie jest testowe, natomiast w ipchains i iptables robisz to za pomoc opcji C. We
wszystkich przypadkach musisz zawsze podawa adres rdowy, adres docelowy, protok i interfejs, ktre maj by uyte w tecie. Inne argumenty, takie jak
numery portw czy ustawienie bitw TOS, s opcjonalne.
4. Wykonaj kade polecenie testowe i zapisz wynik. Wynik kadego testu bdzie
mia posta jednego sowa wskazujcego ostateczne przeznaczenie datagramu
po przejciu przez konfiguracj firewalla to znaczy po zakoczeniu przetwarzania. W przypadku ipchains i iptables, poza acuchami wbudowanymi, bd testowane acuchy definiowane przez uytkownika.
5. Porwnaj wynik kadego testu z oczekiwanym rezultatem. Jeeli widzisz jakie
rnice, musisz przeanalizowa swj zestaw regu, by stwierdzi, gdzie zrobie
bd. Jeeli zapisae polecenia testowe w skrypcie, moesz atwo powtrzy test
po poprawieniu wszelkich bdw w konfiguracji firewalla. Dobrze jest zupenie
skasowa zestaw regu i stworzy je od nowa, a nie dokonywa zmian dynamicznie. Pomaga to upewni si, e aktywna konfiguracja, ktr testujesz, rzeczywicie
odzwierciedla zestaw polece w twoim skrypcie konfiguracyjnym.
Przyjrzyjmy si, jak moe wyglda zapis rcznego testowania naszego przykadu
w przypadku ipchains. Pamitasz, e nasza przykadowa sie lokalna ma adres
172.16.1.0 i mask sieciow 255.255.255.0, i e pozwolilimy na realizowanie pocze do serwerw WWW w sieci. Nic wicej nie powinno przechodzi przez nasz
acuch przekazywania. Rozpocznijmy od testowania tego, o czym wiemy, e powinno dziaa poczenia z lokalnego hosta do serwera WWW na zewntrz:
# ipchains -C forward -p tcp -s 172.16.1.0 1025 -d 44.136.8.2 80 -i eth0
accepted

Zwr uwag, ktre argumenty musz by podane i w jaki sposb zostay uyte do
opisania datagramu. Wynik polecenia wskazuje, e datagram zosta przyjty do
przekazania, czyli jest zgodny z naszymi oczekiwaniami.
Teraz sprbujmy innego testu; tym razem adres rdowy nie naley do naszej sieci.
Pakiet nie powinien przej:
# ipchains -C forward -p tcp -s 172.16.2.0 1025 -d 44.136.8.2 80 -i eth0
denied

Zrbmy kilka innych testw, tym razem z kilkoma szczegami identycznymi


z pierwszym testem, ale innymi protokoami. Te pakiety te nie powinny zosta
przepuszczone.
# ipchains -C forward -p udp -s 172.16.1.0 1025 -d 44.136.8.2 80 -i eth0
denied
# ipchains -C forward -p icmp -s 172.16.1.0 1025 -d 44.136.8.2 80 -i eth0
denied

Sprawdmy inny port docelowy. Znw oczekujemy, e pakiet zostanie odrzucony:


# ipchains -C forward -p tcp -s 172.16.1.0 1025 -d 44.136.8.2 23 -i eth0
denied

186

Rozdzia 9: Firewall TCP/IP

Musisz przeby dug drog, zanim uspokoisz swoje myli, wykonujc szereg wyczerpujcych testw. Cho czasem moe to by rwnie trudne jak skonfigurowanie
firewalla, jest to najlepszy sposb, by wiedzie, e twj projekt zapewnia najlepsze
bezpieczestwo, jakiego moesz oczekiwa.

Przykadowa konfiguracja firewalla


Omwilimy podstawowe konfiguracje firewalla. Przyjrzyjmy si, jak w praktyce
taka konfiguracja moe wyglda.
Konfiguracja pokazana w tym przykadzie zostaa zaprojektowana tak, by byo j
atwo rozbudowa i dostosowa do wasnych potrzeb. Pokazalimy trzy wersje.
Pierwsza jest zaimplementowana za pomoc polecenia ipfwadm (lub skryptu
ipfwadm-wrapper), druga wykorzystuje ipchains, a trzecia iptables. Przykady nie wykorzystuj acuchw definiowanych przez uytkownika, ale pokazuj podobiestwa i rnice pomidzy starymi i nowymi skadniami narzdzi do konfiguracji firewalla:
#!/bin/bash
##############################################################
# WERSJA IPFWADM
# Ta przykadowa konfiguracja jest przeznaczona dla jednego
# hosta i nie uwzgldnia usug oferowanych przez sam komputer,
# na ktrym dziaa firewall.
##############################################################
# CZ DO KONFIGURACJI PRZEZ UYTKOWNIKA
# Nazwa i lokalizacja programu ipfwadm. Uyj ipfwadm-wrapper
# w przypadku jder 2.2.*
IPFWADM=ipfwadm
# cieka do pliku wykonywalnego ipfwadm
PATH="/sbin"
# Przestrze adresowa naszej sieci wewntrznej i urzdzenie j obsugujce
OURNET="172.29.16.0/24"
OURBCAST="172.29.16.255"
OURDEV="eth0"
# Adres zewntrzny i urzdzenie sieciowe go obsugujce
ANYADDR="0/0"
ANYDEV="eth1"
# Usugi TCP, ktre chcemy przepuszcza - "" puste oznacza wszystkie porty
# uwaga: oddzielone spacj
TCPIN="smtp www"
TCPOUT="smtp www ftp ftp-data irc"
# Usugi UDP, ktre chcemy przepuszcza - "" puste oznacza wszystkie porty
# uwaga: oddzielone spacj
UDPIN="domain"
UDPOUT="domain"

Przykadowa konfiguracja firewalla


# Usugi ICMP, ktre chcemy przepuszcza - "" puste oznacza wszystkie typy
# numery typw usug znajdziesz w pliku /usr/include/netinet/ip_icmp.h
# uwaga: oddzielone spacj
ICMPIN="0 3 11"
ICMPOUT="8 3 11"
#
#
#
#

Logowanie usu komentarz z poniszego wiersza, by wczy


zapisywanie datagramw, ktre nie s przepuszczane przez
firewall
LOGGING=1

# KONIEC CZCI KONFIGUROWALNEJ PRZEZ UYTKOWNIKA


##############################################################
# Usunicie tablicy regu przychodzcych
$IPFWADM -I -f
# Chcemy domylnie odrzuca ruch przychodzcy
$IPFWADM -I -p deny
# PODSZYWANIE SI (SPOOFING)
# Nie powinnimy przyjmowa datagramw, ktre maj adres
# rdowy z naszej sieci, ale pakiet przychodzi z
# zewntrz, a wic go odrzucamy
$IPFWADM -I -a deny -S $OURNET -W $ANYDEV
# SMURF
# Zabraniamy wysania pakietw ICMP na nasz adres
# rozgoszeniowy, by zapobiec atakowi typu "Smurf"
$IPFWADM -I -a deny -p icmp -W $ANYDEV -D $OURBCAST
# TCP
# Bdziemy przyjmowali wszystkie datagramy TCP nalece do
# istniejcego poczenia (tj. posiadajce ustawiony bit ACK)
# z portem TCP, ktry przepuszczamy. Powinno to obj
# ponad 95 % wszystkich poprawnych pakietw TCP.
$IPFWADM -I -a accept -P tcp -D $OURNET $TCPIN -k -b
# TCP - POCZENIA PRZYCHODZCE
# Bdziemy przyjmowali dania pocze z zewntrz tylko na
# dozwolone porty TCP
$IPFWADM -I -a accept -P tcp -W $ANYDEV -D $OURNET $TCPIN -y
# TCP - POCZENIA WYCHODZCE
# Przyjmujemy wszystkie dania wychodzcych pocze tcp na
# dozwolone porty TCP.
$IPFWADM -I -a accept -P tcp -W $OURDEV -D $ANYADDR $TCPOUT -y
# UDP - PRZYCHODZCE
# Przepuszczamy wszystkie datagramy UDP przychodzce na
# dozwolone porty
$IPFWADM -I -a accept -P udp -W $ANYDEV -D $OURNET $UDPIN
# UDP - WYCHODZCE
# Przepuszczamy wszystkie datagramy UDP wychodzce na
# dozwolone porty
$IPFWADM -I -a accept -P udp -W $OURDEV -D $ANYADDR $UDPOUT
# ICMP - PRZYCHODZCE
# Przepuszczamy wszystkie przychodzce datagramy ICMP o
# dopuszczalnych typach

187

188

Rozdzia 9: Firewall TCP/IP

$IPFWADM -I -a accept -P icmp -W $ANYDEV -D $OURNET $ICMPIN


# ICMP - WYCHODZCE
# Przepuszczamy wszystkie wychodzce datagramy ICMP o
# dopuszczalnych typach
$IPFWADM -I -a accept -P icmp -W $OURDEV -D $ANYADDR $ICMPOUT
# DEFAULT i LOGGING
# Wszystkie pozostae datagramy trafiaj do reguy domylnej i
# s odrzucane. Jeeli skonfigurujesz wczeniej zmienn
# LOGGING, bd one zapisywane.
#
if [ "$LOGGING" ]
then
# Zapisywanie odrzuconych pakietw TCP
$IPFWADM -I -a reject -P tcp -o
# Zapisywanie odrzuconych pakietw UDP
$IPFWADM -I -a reject -P udp -o
# Zapisywanie odrzuconych pakietw ICMP
$IPFWADM -I -a reject -P icmp -o

fi
#
#end.

Teraz zaimplementujemy to samo za pomoc polecenia ipchains:


#!/bin/bash
##############################################################
# WERSJA IPCHAINS
# Ta przykadowa konfiguracja jest przeznaczona dla jednego
# hosta i nie uwzgldnia usug oferowanych przez sam komputer,
# na ktrym dziaa firewall.
##############################################################
# CZ KONFIGUROWALNA PRZEZ UYTKOWNIKA
# Nazwa i lokalizacja programu ipchains.
IPCHAINS=ipchains
# cieka do pliku wykonywalnego ipchains
PATH="/sbin"
# Przestrze adresowa naszej sieci wewntrznej i urzdzenie j obsugujce
OURNET="172.29.16.0/24"
OURBCAST="172.29.16.255"
OURDEV="eth0"
# Adres zewntrzny i urzdzenie sieciowe go obsugujce
ANYADDR="0/0"
ANYDEV="eth1"
# Usugi TCP, ktre chcemy przepuszcza - "" puste oznacza wszystkie porty
# uwaga: oddzielone spacj
TCPIN="smtp www"
TCPOUT="smtp www ftp ftp-data irc"
# Usugi UDP, ktre chcemy przepuszcza - "" puste oznacza wszystkie porty

Przykadowa konfiguracja firewalla


# uwaga: oddzielone spacj
UDPIN="domain"
UDPOUT="domain"
# Usugi ICMP, ktre chcemy przepuszcza - "" puste oznacza wszystkie typy
# numery typw usug znajdziesz w pliku
# /usr/include/netinet/ip_icmp.h
# uwaga: oddzielone spacj
ICMPIN="0 3 11"
ICMPOUT="8 3 11"
#
#
#
#

Logowanie; usu komentarz z poniszego wiersza, by wczy


zapisywanie datagramw, ktre nie s przepuszczane przez
firewall
LOGGING=1

# KONIEC CZCI KONFIGUROWALNEJ PRZEZ UYTKOWNIKA


##############################################################
# Usunicie tablicy regu przychodzcych
$IPCHAINS -F input
# Chcemy domylnie odrzuca ruch przychodzcy
$IPCHAINS -P input deny
# PODSZYWANIE SI (SPOOFING)
# Nie powinnimy przyjmowa datagramw, w ktrych adres
# rdowy jest z naszej sieci, ale pakiet przychodzi z
# zewntrz, a wic go odrzucamy
$IPCHAINS -A input -s $OURNET -i $ANYDEV -j deny
# SMURF
# Zabraniamy wysania pakietw ICMP na nasz adres
# rozgoszeniowy, by zapobiec atakowi typu "Smurf"
$IPCHAINS -A input -p icmp -w $ANYDEV -d $OURBCAST -j deny
# Powinnimy przyjmowa fragmenty, w ipchains musimy to
# zadeklarowa jawnie
$IPCHAINS -A input -f -j accept
# TCP
# Bdziemy przyjmowali wszystkie datagramy TCP nalece do
# istniejcego poczenia (tj. posiadajce ustawiony bit ACK)
# z portem TCP, ktry przepuszczamy. Powinno to obj
# ponad 95 % wszystkich poprawnych pakietw TCP.
$IPCHAINS -A input -p tcp -d $OURNET $TCPIN ! -y -b -j accept
# TCP - POCZENIA PRZYCHODZCE
# Bdziemy przyjmowali dania pocze z zewntrz tylko na
# dozwolone porty TCP
$IPCHAINS -A input -p tcp -i $ANYDEV -d $OURNET $TCPIN -y -j accept
# TCP - POCZENIA WYCHODZCE
# Przyjmujemy wszystkie dania wychodzcych pocze tcp na
# dozwolone porty TCP.
$IPCHAINS -A input -p tcp -i $OURDEV -d $ANYADDR $TCPOUT -y -j accept
# UDP - PRZYCHODZCE
# Przepuszczamy wszystkie datagramy UDP przychodzce na
# dozwolone porty
$IPCHAINS -A input -p udp -i $ANYDEV -d $OURNET $UDPIN -j accept

189

190

Rozdzia 9: Firewall TCP/IP

# UDP - WYCHODZCE
# Przepuszczamy wszystkie datagramy UDP wychodzce na
# dozwolone porty
$IPCHAINS -A input -p udp -i $OURDEV -d $ANYADDR $UDPOUT -j accept
# ICMP - PRZYCHODZCE
# Przepuszczamy wszystkie przychodzce datagramy ICMP o
# dopuszczalnych typach
$IPCHAINS -A input -p icmp -w $ANYDEV -d $OURNET $ICMPIN -j accept
# ICMP - WYCHODZCE
# Przepuszczamy wszystkie wychodzce datagramy ICMP o
# dopuszczalnych typach
$IPCHAINS -A input -p icmp -i $OURDEV -d $ANYADDR $ICMPOUT -j accept
# DEFAULT i LOGGING
# Wszystkie pozostae datagramy trafiaj do reguy domylnej i
# s odrzucane. Jeeli skonfigurujesz wczeniej zmienn
# LOGGING, bd one zapisywane.
#
if [ "$LOGGING" ]
then\
# Zapisywanie odrzuconych pakietw TCP
$IPCHAINS -A input -p tcp -l -j reject
# Zapisywanie odrzuconych pakietw UDP
$IPCHAINS -A input -p udp -l -j reject
# Zapisywanie odrzuconych pakietw ICMP
$IPCHAINS -A input -p icmp -l -j reject

fi
#
#end.

W naszym przykadzie iptables przeszlimy na korzystanie z reguy FORWARD, ze


wzgldu na rnic w znaczeniu zestawu regu INPUT w implementaji netfilter. Jest
to dla nas istotne; oznacza, e adna z regu nie broni samego hosta firewalla. Aby
dokadnie naladowa przykad ipchains, skopiujemy kad z naszych regu do
acucha INPUT. Dla jasnoci odrzucilimy wszystkie przychodzce datagramy
odebrane po zewntrznej stronie naszego interfejsu.
#!/bin/bash
##############################################################
# WERSJA IPTABLES
# Ta przykadowa konfiguracja jest przeznaczona dla jednego
# hosta i nie uwzgldnia usug oferowanych przez sam komputer,
# na ktrym dziaa firewall.
##############################################################
# CZ KONFIGUROWALNA PRZEZ UYTKOWNIKA
# Nazwa i lokalizacja programu iptables.
IPTABLES=iptables
# cieka do pliku wykonywalnego ipchains
PATH="/sbin"

Przykadowa konfiguracja firewalla


# Przestrze adresowa naszej sieci wewntrznej i urzdzenie j
# obsugujce
OURNET="172.29.16.0/24"
OURBCAST="172.29.16.255"
OURDEV="eth0"
# Adres zewntrzny i urzdzenie sieciowe go obsugujce
ANYADDR="0/0"
ANYDEV="eth1"
# Usugi TCP, ktre chcemy przepuszcza - "" puste oznacza wszystkie porty
# uwaga: oddzielone przecinkami
TCPIN="smtp,www"
TCPOUT="smtp,www,ftp,ftp-data,irc"
# Usugi UDP, ktre chcemy przepuszcza - "" puste oznacza wszystkie porty
# uwaga: oddzielone przecinkami
UDPIN="domain"
UDPOUT="domain"
# Usugi ICMP, ktre chcemy przepuszcza - "" puste oznacza wszystkie typy
# numery typw usug znajdziesz w pliku
# /usr/include/netinet/ip_icmp.h
# uwaga: oddzielone przecinkami
ICMPIN="0,3,11"
ICMPOUT="8,3,11"
#
#
#
#

Logowanie usu komentarz z poniszego wiersza, by wczy


zapisywanie datagramw, ktre nie s przepuszczane przez
firewall
LOGGING=1

# KONIEC CZCI KONFIGUROWALNEJ PRZEZ UYTKOWNIKA


##############################################################
# Usunicie tablicy regu przychodzcych
$IPTABLES -F FORWARD
# Chcemy domylnie odrzuca ruch przychodzcy
$IPTABLES -P FORWARD deny
# Odrzucamy wszystkie datagramy pochodzce z zewntrz i
# przeznaczone dla tego hosta
$IPTABLES -A INPUT -i $ANYDEV -j DROP
# PODSZYWANIE SI (SPOOFING)
# Nie powinnimy przyjmowa datagramw, w ktrych adres
# rdowy jest z naszej sieci, ale pakiet przychodzi z
# zewntrz, a wic go odrzucamy
$IPTABLES -A FORWARD -s $OURNET -i $ANYDEV -j DROP
# SMURF
# Zabraniamy wysania pakietw ICMP na nasz adres
# rozgoszeniowy, by zapobiec atakowi typu "Smurf"
$IPTABLES -A FORWARD -m multiport -p icmp -i $ANYDEV -d $OURBCAST -j DENY
# Powinnimy przyjmowa fragmenty, w iptables musimy to
# zadeklarowa jawnie
$IPTABLES -A FORWARD -f -j ACCEPT
# TCP

191

192

Rozdzia 9: Firewall TCP/IP

# Bdziemy przyjmowali wszystkie datagramy TCP nalece do


# istniejcego poczenia (tj. posiadajce ustawiony bit ACK)
# z portem TCP, ktry przepuszczamy. Powinno to obj
# ponad 95 % wszystkich poprawnych pakietw TCP.
$IPTABLES -A FORWARD -m multiport -p tcp -d $OURNET --dports $TCPIN /
! --tcp-flags SYN,ACK ACK -j ACCEPT
$IPTABLES -A FORWARD -m multiport -p tcp -s $OURNET --sports $TCPIN /
! --tcp-flags SYN,ACK ACK -j ACCEPT
# TCP - POCZENIA PRZYCHODZCE
# Bdziemy przyjmowali dania pocze z zewntrz tylko na
# dozwolone porty TCP
$IPTABLES -A FORWARD -m multiport -p tcp -i $ANYDEV -d $OURNET $TCPIN /
--syn -j ACCEPT
# TCP - POCZENIA WYCHODZCE
# Przyjmujemy wszystkie dania wychodzcych pocze tcp na
# dozwolone porty TCP.
$IPTABLES -A FORWARD -m multiport -p tcp -i $OURDEV -d $ANYADDR /
--dport $TCPOUT --syn -j ACCEPT
# UDP - PRZYCHODZCE
# Przepuszczamy wszystkie datagramy UDP przychodzce na
# dozwolone porty
$IPTABLES -A FORWARD -m multiport -p udp -i $ANYDEV -d $OURNET /
--dports $UDPIN -j ACCEPT
$IPTABLES -A FORWARD -m multiport -p udp -i $ANYDEV -s $OURNET /
--sports $UDPIN -j ACCEPT
# UDP - WYCHODZCE
# Przepuszczamy wszystkie datagramy UDP wychodzce na
# dozwolone porty
$IPTABLES -A FORWARD -m multiport -p udp -i $OURDEV -d $ANYADDR /
--dports $UDPOUT -j ACCEPT
$IPTABLES -A FORWARD -m multiport -p udp -i $OURDEV -s $ANYADDR /
--sports $UDPOUT -j ACCEPT
# ICMP - PRZYCHODZCE
# Przepuszczamy wszystkie przychodzce datagramy ICMP o
# dopuszczalnych typach
$IPTABLES -A FORWARD -m multiport -p icmp -i $ANYDEV -d $OURNET /
--dports $ICMPIN -j ACCEPT
# ICMP - WYCHODZCE
# Przepuszczamy wszystkie wychodzce datagramy ICMP o
# dopuszczalnych typach
$IPTABLES -A FORWARD -m multiport -p icmp -i $OURDEV -d $ANYADDR /
--dports $ICMPOUT -j ACCEPT
# DEFAULT i LOGGING
# Wszystkie pozostae datagramy trafiaj do reguy domylnej i
# s odrzucane. Jeeli skonfigurujesz wczeniej zmienn
# LOGGING, bd one zapisywane.
#
if [ "$LOGGING" ]
then
# Zapisywanie odrzuconych pakietw TCP
$IPTABLES -A FORWARD -m tcp -p tcp -l -j LOG
# Zapisywanie odrzuconych pakietw UDP

Przykadowa konfiguracja firewalla

193

$IPTABLES -A FORWARD -m udp -p udp -l -j LOG


# Zapisywanie odrzuconych pakietw ICMP
$IPTABLES -A FORWARD -m icmp -p icmp -l -j LOG

fi
#
#end.

W wielu prostych sytuacjach, aby skorzysta z pokazanych przykadw, wystarczy


dokona edycji pocztkowej czci skryptu zatutyowanej CZ DO KONFIGURACJI PRZEZ UYTKOWNIKA, aby okreli, ktre protokoy i typy datagramw
chcesz przepuszcza w obie strony. Przy bardziej zoonych konfiguracjach bdziesz musia dokona take edycji pozostaej czci skryptu. Pamitaj jest to prosty przykad, a wic podczas jego implementacji przeanalizuj go bardzo uwanie, by
robi to, co chcesz.

Liczenie ruchu IP

10

Rozdzia 10: Liczenie ruchu IP

W wiecie komercyjnych usug internetowych coraz waniejsza staje si wiedza


o tym, ile danych wysyasz i ile odbierasz przez swoje poczenia sieciowe. Przyda ci
si, jeeli jeste dostawc usug internetowych i wystawiasz rachunki swoim klientom wedug iloci przesanych danych. Natomiast jeeli jeste klientem dostawcy
usug, ktry obcia ci wedug iloci przesanych danych, warto samemu zbiera
dane, aby sprawdza rachunki wystawiane przez dostawc.
S jeszcze inne zastosowania liczenia ruchu, nie majce nic wsplnego z pienidzmi
ani rachunkami. Jeeli zarzdzasz serwerem, ktry udostpnia rne typy usug sieciowych, przydatna moe by wiedza o tym, ile danych generuje kada z nich. Tego
typu informacje mog ci pomc przy podejmowaniu decyzji o tym, jaki sprzt kupi
lub ile serwerw uruchomi.
Jdro Linuksa udostpnia funkcj pozwalajc zbiera wszelkiego rodzaju przydatne
informacje o ruchu sieciowym. Funkcja ta to liczenie ruchu IP (ang. IP accounting).

Konfigurowanie jdra do liczenia ruchu IP


Funkcja liczenia ruchu IP w Linuksie jest blisko zwizana z oprogramowaniem firewalla. Miejsca, z ktrych chcesz zbiera dane rozliczeniowe, to te same miejsca,
ktre interesuj ci przy filtrowaniu przez firewall: wejcie i wyjcie z hosta do sieci
oraz oprogramowanie rutujce datagramy. Jeeli jeszcze nie przeczytae rozdziau
o firewallach, to teraz jest doskonay moment, eby to zrobi oraz wykorzysta kilka
poj opisanych w rozdziale 9, Firewall TCP/IP.
Aby wczy funkcj liczenia ruchu IP w Linuksie, powiniene najpierw zobaczy,
czy jdro jest odpowiednio skonfigurowane. Sprawd, czy istnieje plik /proc/net/
ip_acct. Jeeli istnieje, twoje jdro ju obsuguje liczenie ruchu IP. Jeeli nie istnieje,
musisz skompilowa jdro od nowa, pilnujc, by odpowiedzia Y na ponisze pytania w jdrach serii 2.0 i 2.2.

196

Rozdzia 10: Liczenie ruchu IP

Networking options --->


[*] Network firewalls
[*] TCP/IP networking
...
[*] IP: accounting

lub w jdrach serii 2.4:


Networking options --->
[*] Network packet filtering (replaces ipchains)

Konfigurowanie liczenia ruchu IP


Poniewa usuga liczenia ruchu IP jest cile zwizana z firewallem IP, do jej konfigurowania su te same narzdzia, czyli ipfwadm, ipchains lub iptables. Skadnia polecenia jest bardzo podobna jak w przypadku regu firewalla, a wic nie bdziemy si na niej skupia, a omwimy to, czego moesz si dowiedzie o swojej sieci,
uywajc tej funkcji.
Oglna skadnia polecenia liczcego ruch IP dla ipfwadm jest nastpujca:
# ipfwadm -A [kierunek] [polecenie] [parametry]

Nowy jest argument kierunku. Przyjmuje on jedn z wartoci in, out lub both. S to
kierunki ruchu z punktu widzenia samego komputera z Linuksem, a wic in oznacza
dane przychodzce z sieci do komputera, a out oznacza dane wysyane przez hosta
do sieci. Kierunek both stanowi sum danych przychodzcych i wychodzcych.
Oglna skadnia polecenia dla ipchains i iptables jest nastpujca:
# ipchains -A acuch definicja-reguy
# iptables -A acuch definicja-reguy

Polecenia ipchains i iptables pozwalaj okreli kierunek w sposb bardziej spjny


z reguami firewalla. acuchy IP nie pozwalaj na konfigurowanie regu, ktre
obejmuj oba kierunki, ale dopuszczaj skonfigurowanie regu w acuchu forward, co nie byo moliwe w starszej implementacji. W kilku przykadach pokazanych dalej zobaczymy, co z tego wyniknie.
Polecenia s w duym stopniu takie same jak w reguach firewalla, z t rnic, e nie
uywa si tu polityk. Moemy dodawa, wstawia, usuwa i listowa reguy liczenia
ruchu. W przypadku ipchains i iptables dopuszczalne s tylko reguy liczenia ruchu,
a wszelkie polecenia nie zawierajce opcji j realizuj jedynie liczenie ruchu.
Parametry w definicji reguy liczenia ruchu IP s identyczne z uywanymi dla firewalla IP. Za ich pomoc definiujemy dokadnie, jaki ruch sieciowy chcemy liczy.

Liczenie wedug adresu


Na przykadzie pokaemy, jak korzysta si z funkcji liczenia ruchu IP.
Wyobra sobie, e mamy ruter oparty na Linuksie, ktry obsuguje dwa wydziay
browaru wirtualnego. Ruter ma dwa urzdzenia Ethernet, eth0 i eth1, z ktrych kade obsuguje jeden wydzia, oraz urzdzenie PPP, ppp0, ktre czy nas za pomoc
szybkiego cza szeregowego z gwnym campusem uniwersytetu Groucho Marx.

Konfigurowanie liczenia ruchu IP

197

Wyobramy sobie rwnie, e dla celw rozliczeniowych chcemy zna cakowity


ruch generowany przez kady wydzia podczony przez cze szeregowe, a dla
celw zarzdzania chcemy zna cakowity ruch generowany pomidzy wydziaami.
Ponisza tabela pokazuje adresy interfejsw, ktrych bdziemy uywa w naszym
przykadzie:
iface

adres

maska sieci

eth0
eth1

172.16.3.0
172.16.4.0

255.255.255.0
255.255.255.0

Aby odpowiedzie na pytanie: Jak duo danych na czu PPP generuje kady wydzia ?, powinnimy uy nastpujcego zestawu regu:
# ipfwadm -A both -a W ppp0 -S 172.16.3.0/24 -b
# ipfwadm -A both -a W ppp0 -S 172.16.4.0/24 -b

lub
#
#
#
#

ipchains
ipchains
ipchains
ipchains

-A
-A
-A
-A

input -i ppp0 -d 172.16.3.0/24


output -i ppp0 -s 172.16.3.0/24
input -i ppp0 -d 172.16.4.0/24
output -i ppp0 -s 172.16.4.0/24

i w przypadku iptables:
#
#
#
#

iptables
iptables
iptables
iptables

-A
-A
-A
-A

FORWARD
FORWARD
FORWARD
FORWARD

-i
-o
-i
-o

ppp0
ppp0
ppp0
ppp0

-d
-s
-d
-s

172.16.3.0/24
172.16.3.0/24
172.16.4.0/24
172.16.4.0/24

Pierwsza poowa kadego z tych zestaww mwi: Licz wszystkie dane przechodzce w obu kierunkach przez interfejs o nazwie ppp0 z adresami rdowym
lub docelowym (pamitaj o funkcji b w przypadku ipfwadm i ipchains)
172.16.3.0/24. Druga poowa kadego zestawu regu jest taka sama, ale dotyczy drugiej sieci Ethernet.
Aby odpowiedzie na drugie pytanie: Ile danych jest przesyanych pomidzy dwoma wydziaami?, potrzebujemy nastpujcych regu:
# ipfwadm -A both -a -S 172.16.3.0/24 -D 172.16.4.0/24 -b

lub:
# ipchains -A forward -s 172.16.3.0/24 -d 172.16.4.0/24 -b

lub:
# iptables -A FORWARD -s 172.16.3.0/24 -d 172.16.4.0/24
# iptables -A FORWARD -s 172.16.4.0/24 -d 172.16.3.0/24

Te zestawy regu licz wszystkie datagramy, ktrych adres rdowy naley do siecisieci jednego wydziau, a adres docelowy do sieci drugiego wydziau.

198

Rozdzia 10: Liczenie ruchu IP

Liczenie ruchu wedug portu usugi


W porzdku, zamy teraz, e chcemy wiedzie co o tym, jaki rodzaj ruchu jest
przesyany przez nasze cze PPP. Moemy na przykad dowiedzie si, jak cz
cza zajmuj usugi FTP, smtp i WWW.
Skrypt z reguami wczajcymi zbieranie tego typu informacji moe wyglda nastpujco:
#!/bin/sh
# Zbieranie, za pomoc ipfwadm, statystyk o ruchu FTP, smtp i www niej dla
# danych przesyanych przez cze PPP
#
ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 ftp ftp-data
ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 smtp
ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 www

lub:
#!/bin/sh
# Zbieranie, za pomoc ipchains, statystyk o ruchu FTP, smtp i www niej dla
# danych przesyanych przez cze PPP
#
ipchains -A input -i ppp0 -p tcp -s 0/0 ftp-data:ftp
ipchains -A output -i ppp0 -p tcp -d 0/0 ftp-data:ftp
ipchains -A input -i ppp0 -p tcp -s 0/0 smtp
ipchains -A output -i ppp0 -p tcp -d 0/0 smtp
ipchains -A input -i ppp0 -p tcp -s 0/0 www
ipchains -A output -i ppp0 -p tcp -d 0/0 www

lub:
#!/bin/sh
# Zbieranie, za pomoc iptables, statystyk o ruchu FTP, smtp i www niej dla
# danych przesyanych przez cze PPP
#
iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport ftp-data:ftp
iptables -A FORWARD -o ppp0 -m tcp -p tcp --dport ftp-data:ftp
iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport smtp
iptables -A FORWARD -o ppp0 -m tcp -p tcp --dport smtp
iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport www
iptables -A FORWARD -o ppp0 -m tcp -p tcp --dport www

W tej konfiguracji jest kilka ciekawostek. Po pierwsze, okrelilimy protok. Gdy


w reguach podajemy numery portw, musimy take poda protok, poniewa
TCP i UDP posiadaj oddzielne zestawy portw. Poniewa wszystkie z tych usug
s oparte na TCP, podalimy go jako protok. Po drugie, podalimy dwie usugi
ftp i ftp-data w jednym poleceniu. ipfwadm pozwala na podawanie poszczeglnych portw, zakresw portw lub losowych list portw. Polecenie ipchains rwnie
pozwala na podawanie poszczeglnych portw lub zakresw portw, z czego skorzystalimy. Skadnia ftp-data:ftp oznacza porty od ftp-data (20) do ftp (21)
i jest to sposb kodowania zakresu portw w poleceniach ipchains i iptables. Gdy
w regule zliczajcej podasz list portw, oznacza to, e wszelkie dane odebrane na
wskazanych portach bd sumowane przy zliczaniu. Pamitajc, e FTP uywa
dwch portw, portu polece i danych, podalimy je razem, eby sumowa cay
ruch FTP. Na kocu podalimy adres rdowy w postaci 0/0, co jest szczegl-

Konfigurowanie liczenia ruchu IP

199

nym zapisem, do ktrego pasuj wszystkie adresy; taki zapis jest wymagany przez
polecenia ipfwadm i ipchains, aby mona byo okreli porty.
Moemy si nieco bardziej skupi na drugim punkcie, co da nam inne spojrzenie na
dane na naszym czu. Wyobramy sobie, e traktujemy ruch FTP, SMTP i WWW jako istotny, a pozostay ruch jako nieistotny. Gdybymy chcieli zna stosunek ruchu
istotnego do nieistotnego, moglibymy uy czego takiego:
# ipfwadm -A both -a W ppp0 -P tcp -S 0/0 ftp ftp-data smtp www
# ipfwadm -A both -a W ppp0 -P tcp -S 0/0 1:19 22:24 26:79 81:32767

Jeeli ju przejrzae swj plik /etc/services, wiesz, e druga regua obejmuje wszystkie porty poza wymienionymi w pierwszej (ftp, ftp-data, smtp i www).
Jak to robimy w poleceniach ipchains i iptables, skoro pozwalaj one okreli tylko jeden port jako argument? Do liczenia ruchu moemy rwnie atwo jak w reguach firewalla wykorzysta acuchy definiowane przez uytkownika. Rozwamy nastpujce podejcie:
#
#
#
#
#
#
#
#

ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains

-N
-N
-A
-A
-A
-A
-A
-A

a-essent
a-noness
a-essent -j ACCEPT
a-noness -j ACCEPT
forward -i ppp0 -p tcp -s 0/0 ftp-data:ftp -j a-essent
forward -i ppp0 -p tcp -s 0/0 smtp -j a-essent
forward -i ppp0 -p tcp -s 0/0 www -j a-essent
forward -j a-noness

Tworzymy tutaj dwa acuchy definiowane przez uytkownika, jeden o nazwie


a-essent, w ktrym zbieramy dane dla istotnych usug, oraz drugi o nazwie
a-noness, w ktrym zbieramy dane o usugach nieistotnych. Nastpnie dodajemy
reguy do naszego acucha przekazywania, ktry dopasowuje nasze istotne usugi
i przechodzi do acucha a-essent, gdzie mamy tylko jedn regu akceptujc
wszystkie datagramy i je liczc. Ostatnia regua w naszym acuchu przekazywania to regua, ktra przechodzi do acucha a-noness, w ktrym znw mamy jedn
regu przyjmujc i zliczajc wszystkie datagramy. Do reguy, ktra przechodzi
do acucha a-noness, nie dotrze adna z naszych istotnych usug, gdy zostan
one zaakceptowane przez ich wasny acuch. Rejestr istotnych i nieistotnych usug
bdzie dostpny w reguach tych acuchw. Opisalimy jeden ze sposobw, w jaki
mona liczy ruch istotny i nieistotny s oczywicie take inne. Nasza implementacja iptables wykorzystuje to samo podejcie i przedstawia si tak:
#
#
#
#
#
#
#
#

iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables

-N
-N
-A
-A
-A
-A
-A
-A

a-essent
a-noness
a-essent -j ACCEPT
a-noness -j ACCEPT
FORWARD -i ppp0 -m tcp -p tcp --sport ftp-data:ftp -j a-essent
FORWARD -i ppp0 -m tcp -p tcp --sport smtp -j a-essent
FORWARD -i ppp0 -m tcp -p tcp --sport www -j a-essent
FORWARD -j a-noness

Wyglda to do prosto. Niestety wystpuje tu niewielki, ale nieunikniony problem


przy prbie liczenia usug wedug typu. Pamitasz, e w poprzednich rozdziaach
mwilimy o roli, jak w sieci TCP/IP odgrywa MTU. MTU definiuje najwikszy datagram, jaki moe zosta przesany przez urzdzenie sieciowe. Gdy datagram zosta-

200

Rozdzia 10: Liczenie ruchu IP

nie odebrany przez ruter i jest wikszy ni MTU interfejsu, ktry musi go przetransmitowa, ruter stosuje sztuczk nazywan fragmentacj. Ruter dzieli duy datagram
na mniejsze fragmenty, nie wiksze jednak ni MTU interfejsu, a nastpnie je przesya. Ruter tworzy nowe nagwki, ktre umieszcza na pocztku kadego fragmentu. Zdalna maszyna uywa ich do odtworzenia oryginalnych danych. Niestety
w procesie fragmentacji port jest usuwany ze wszystkich fragmentw poza pierwszym. Oznacza to, e zliczanie IP nie jest w stanie poprawnie obsuy datagramw
podzielonych na fragmenty. Moe poprawnie policzy tylko pierwszy fragment. Istnieje sztuczka wykonywana przez ipfwadm, ktra pozwala zlicza dalsze fragmenty,
mimo e nie jestemy w stanie dowiedzie si dokadnie, z jakiego portu pochodz.
Wczeniejsze wersje oprogramowania zliczajcego dla Linuksa przypisyway fragmentom faszywy numer portu 0xFFFF, ktry pozwala liczy. Aby mie pewno,
e uwzgldniamy drugi i dalsze fragmenty, moemy uy nastpujcej reguy:
# ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 0xFFFF

Implementacja acuchw IP oferowaa nieco bardziej wyrafinowane rozwizanie,


ale wynik by podobny. W przypadku polecenia ipchains moglimy uy:
# ipchains -A forward -i ppp0 -p tcp -f

a w przypadku iptables:
# iptables -A FORWARD -i ppp0 -m tcp -p tcp -f

Nie pokae nam to, jaki by oryginalny port danych, ale przynajmniej bdziemy
w stanie stwierdzi, ile danych zostao podzielonych na fragmenty i policzy generowany przez nie ruch.
Podczas kompilacji jder serii 2.2 moesz wybra opcj, ktra usuwa cay ten problem, jeeli twj komputer z Linuksem dziaa jako pojedynczy punkt dostpu do sieci. Jeeli w czasie kompilacji jdra wczysz opcj IP: always defragment, wszystkie
odebrane datagramy bd skadane przez ruter linuksowy, zanim zostan przerutowane i ponownie wysane. Ta operacja jest realizowana przed filtrowaniem na firewallu i oprogramowanie zliczajce widzi datagram tak, jakby nie by podzielony na
fragmenty. W jdrach 2.4 musisz skompilowa i zaadowa modu netfilter forward-fragment.

Zliczanie datagramw ICMP


Protok ICMP nie uywa numerw portw usugi i dlatego nieco trudniej jest zbiera szczegowe dane na jego temat. ICMP wykorzystuje rnego typu datagramy.
Wiele z nich jest nieszkodliwych i normalnych, natomiast niektre powinny pojawia
si tylko w pewnych okolicznociach. Czasami ludzie, ktrzy maj zbyt wiele czasu,
prbuj zoliwie zakci uytkownikom dostp do sieci, generujc du liczb
komunikatw ICMP. Powszechnie nazywa si to zalaniem pingami (ang. ping flooding). Cho za pomoc mechanizmu zliczania ruchu IP nie mona zrobi nic, by zapobiec temu problemowi (cho moe tu pomc firewall IP!), moemy przynajmniej
stworzy reguy, ktre poka nam, czy kto prbuje takiego dziaania.

Konfigurowanie liczenia ruchu IP

201

ICMP nie uywa portw, tak jak TCP czy UDP. Natomiast ma rne typy komunikatw. Moesz stworzy reguy liczce kady typ komunikatu ICMP. W tym celu
umieszczamy komunikat ICMP i numer typu w polu portu polecenia zliczajcego
ipfwadm. Typy komunikatw ICMP wymienilimy w rozdziale 2 w podrozdziale Typy datagramw ICMP, a wic zajrzyj tam, jeeli chcesz je sobie przypomnie.
Regua liczenia ruchu IP zbierajca informacje o liczbie pingw wysyanych do naszej maszyny i z niej generowanych moe wyglda tak:
# ipfwadm -A both -a -P icmp -S 0/0 8
# ipfwadm -A both -a -P icmp -S 0/0 0
# ipfwadm -A both -a -P icmp -S 0/0 0xff

lub w przypadku ipchains tak:


# ipchains -A forward -p icmp -s 0/0 8
# ipchains -A forward -p icmp -s 0/0 0
# ipchains -A forward -p icmp -s 0/0 -f

lub w przypadku iptables tak:


# iptables -A FORWARD -m icmp -p icmp --sports echo-request
# iptables -A FORWARD -m icmp -p icmp --sports echo-reply
# iptables -A FORWARD -m icmp -p icmp -f

Pierwsza regua zbiera informacje o datagramach ICMP Echo Request (dania


ping), a druga zbiera informacje o ICMP Echo Reply (odpowiedzi na ping). Trzecia
regua zbiera informacje o fragmentach datagramw ICMP. Jest to sztuczka podobna
do opisanej w przypadku podzielonych na fragmenty datagramw TCP i UDP.
Jeeli w swoich reguach podasz adres rdowy i docelowy, moesz wyledzi,
skd pochodz pingi, z sieci wewntrznej czy zewntrznej. Gdy ju ustalisz, skd
przychodz szkodliwe datagramy, moesz rozway, czy chcesz umieci regu firewalla, ktra bdzie zapobiegaa ich przyjmowaniu, czy te podj jakie inne
dziaania, jak skontaktowanie si z wacicielem sieci, z ktrej one pochodz i powiadomienie go o problemie, a moe nawet wytoczenie sprawy, jeeli dziaanie byo
szczeglnie zoliwe.

Zliczanie wedug protokou


Wyobramy sobie teraz, e chcemy wiedzie, jak duy ruch na naszym czu generuj
protokoy TCP, UDP i ICMP. Uyjemy do tego celu nastpujcych regu:
# ipfwadm -A both -a -W ppp0 -P tcp -D 0/0
# ipfwadm -A both -a -W ppp0 -p udp -D 0/0
# ipfwadm -A both -a -W ppp0 -p icmp -D 0/0

lub:
# ipchains -A forward -i ppp0 -p tcp -d 0/0
# ipchains -A forward -i ppp0 -p udp -d 0/0
# ipchains -A forward -i ppp0 -p icmp -d 0/0

lub:
#
#
#
#

iptables
iptables
iptables
iptables

-A
-A
-A
-A

FORWARD
FORWARD
FORWARD
FORWARD

-i
-o
-i
-o

ppp0
ppp0
ppp0
ppp0

-m
-m
-m
-m

tcp
tcp
udp
udp

-p
-p
-p
-p

tcp
tcp
udp
udp

202

Rozdzia 10: Liczenie ruchu IP

# iptables -A FORWARD -i ppp0 -m icmp -p icmp


# iptables -A FORWARD -o ppp0 -m icmp -p icmp

Zgodnie z reguami, cay ruch przechodzcy przez interfejs ppp0 bdzie analizowany pod ktem ustalenia, czy jest to ruch TCP, UDP czy ICMP i bd uaktualniane odpowiednie liczniki dla kadego z protokow. W przykadzie dla polecenia iptables
ruch przychodzcy jest oddzielany od wychodzcego, gdy wymaga tego skadnia.

Wykorzystywanie wynikw zliczania ruchu IP


Bardzo dobrze, e zbieramy informacje, ale jak zobaczy wynik? Aby obejrze zebrane dane o ruchu i skonfigurowane reguy zliczajce, odwoujemy si do polece konfiguracyjnych firewalla, proszc je o pokazanie listy regu. W wyniku s pokazywane liczniki pakietw i bajtw dla kadej z naszych regu.
Polecenia ipfwadm, ipchains i iptables rnie obsuguj zebrane dane, a wic musimy je
pokaza niezalenie.

Ogldanie danych za pomoc ipfwadm


Najprostszym sposobem na obejrzenie danych o ruchu za pomoc polecenia ipfwadm
jest uycie go w nastpujcy sposb:
# ipfwadm -A -l
IP accounting rules
pkts bytes dir prot source
9833 2345K i/o all 172.16.3.0/24
56527
33M i/o all 172.16.4.0/24

destination
anywhere
anywhere

ports
n/a
n/a

Wida tu liczb pakietw wysanych w obie strony. Gdybymy uyli opcji e do pokazania wyniku w bogatszej postaci (nie pokazujemy tutaj, gdy nie zmieciby si
na stronie), musielibymy poda rwnie odpowiednie opcje i nazwy interfejsw.
Wikszo pl tego wyniku jest oczywista, ale ponisze mog wymaga wyjanienia:
dir
Kierunek, ktrego dotyczy regua. Moliwe wartoci to in, out lub i/o, co
oznacza oba kierunki.
prot
Protokoy, ktrych dotycz reguy.
opt

Zakodowana posta opcji, ktrych uywamy w wywoaniu ipfwadm.

ifname
Nazwa interfejsu, ktrego dotyczy regua.
ifaddress
Adres interfejsu, ktrego dotyczy regua.
Domylnie ipfwadm wywietla liczniki pakietw i bajtw w skrconej postaci, czyli
zaokrglone do najbliszego tysica (K) lub miliona (M). Moemy spowodowa, by
wyniki byy wywietlane bez zaokrglania. Robi si to tak:
# ipfwadm -A -l -e -x

Zerowanie licznikw

203

Ogldanie danych za pomoc ipchains


Polecenie ipchains nie wywietli zebranych danych (licznikw pakietw i bajtw),
dopki nie podamy argumentu v. Najprostszy sposb na obejrzenie danych za pomoc ipchains jest nastpujcy:
# ipchains -L -v

Znw, tak jak w ipfwadm, uywajc trybu rozszerzonego wyniku, moemy wywietli liczniki pakietw i bajtw w dokadnych jednostkach. ipchains do tego celu wykorzystuje argument -x:
# ipchains -L -v -x

Ogldanie danych za pomoc iptables


Polecenie iptables zachowuje si bardzo podobnie jak ipchains. Znw musimy uy
opcji -v, gdy chcemy obejrze nasze liczniki. Aby obejrze zebrane dane o ruchu, piszemy:
# iptables -L -v

Tak jak w poleceniu ipchains, moesz uy argumentu -x do obejrzenia wyniku


w rozszerzonej wersji, z liczbami w dokadnej postaci.

Zerowanie licznikw
Liczniki zliczajce ruch IP przepeni si, jeeli pozostawisz je wczone na duszy
czas. Gdy si przepeni, bdziesz mia trudnoci w ustaleniu ich rzeczywistej wartoci. Aby unikn tego problemu, powiniene co jaki czas odczytywa zebrane dane, zapisywa je, a nastpnie zerowa liczniki, by ponownie rozpocz zbieranie informacji o ruchu przez nastpny okres zliczeniowy.
Polecenia ipfwadm i ipchains udostpniaj prosty sposb na zerowanie licznikw:
# ipfwadm -A -z

lub:
# ipchains -Z

lub:
# iptables -Z

Moesz take poczy wywietlanie i zerowanie, by mie pewno, e w midzyczasie dane si nie zagubi:
# ipfwadm -A -l -z

lub:
# ipchains -L -Z

lub:
# iptables -L -Z -v

204

Rozdzia 10: Liczenie ruchu IP

Polecenia powysze najpierw poka dane o ruchu, a nastpnie natychmiast wyzeruj liczniki i rozpoczn zliczanie od nowa. Jeeli chcesz zbiera i wykorzystywa
informacje regularnie, prawdopodobnie umiecisz to polecenie w skrypcie uruchamianym co jaki czasu przez polecenie cron. Skrypt ten zapisuje wynik i gdzie go zachowuje.

Usuwanie zestaww regu


Ostatnie polecenie, ktre moe by przydatne, pozwala ci usun wszystkie skonfigurowane wczeniej reguy zliczajce IP. Jest najbardziej przydatne, gdy chcesz radykalnie zmieni zestaw regu bez ponownego uruchamiania komputera.
Argument -f w poczeniu z poleceniem ipfwadm wyrzuci wszystkie reguy danego
typu. ipchains obsuguje argument -F, ktry robi to samo:
# ipfwadm -A -f

lub:
# ipchains -F

lub:
# iptables -F

Powysze polecenia powoduj usunicie wszystkich skonfigurowanych regu zliczania ruchu IP, dziki czemu nie tracisz czasu na usuwanie ich pojedynczo. Zauwa, e takie usuwanie regu w przypadku ipchains nie powoduje usunicia adnego z acuchw zdefiniowanych przez uytkownika, a usuwa tylko zawarte w nich
reguy.

Bierne zbieranie danych o ruchu


Ostatnia sztuczka, ktr warto pozna: jeeli twj Linux jest podczony do Ethernetu, moesz zastosowa reguy liczenia ruchu do wszystkich danych z twojego segmentu, a nie tylko do tych, ktre s przez niego przesyane lub do niego adresowane.
Twoja maszyna moe biernie podsuchiwa wszystkie dane przesyane w segmencie sieci, do ktrego jest podczona i je zlicza.
Powiniene najpierw wyczy przekazywanie IP na twoim komputerze z Linuksem, tak by nie prbowa on rutowa odebranych datagramw*. W jdrach 2.0.36
i 2.2 robi si to za pomoc:
# echo 0>/proc/sys/net/ipv4/ip_forward

Nastpnie za pomoc polecenia ifconfig, powiniene przej na swojej karcie Ethernet


do trybu przechwytywania (ang. promiscuous). Teraz moesz stworzy reguy liczenia ruchu pozwalajce ci zbiera informacje o datagramach przesyanych w segmencie Ethernet bez wczania rutingu na swoim Linuksie.
*

Nie jest to dobre, jeeli twj Linux dziaa jako ruter. Jeeli wyczysz przekazywanie IP, maszyna przestanie rutowa pakiety! Rb to tylko na komputerach z jednym fizycznym interfejsem sieciowym.

11

Maskowanie IP
i translacja adresw
sieciowych

Rozdzia 11: Maskowanie IP i translacja adresw sieciowych

Nie musisz mie dobrej pamici, by pamita czasy, gdy tylko due instytucje mogy
pozwoli sobie na poczenie wielu komputerw w sie LAN. Obecnie technologia
sieciowa jest na tyle tania, e moemy zaobserwowa dwa zjawiska. Po pierwsze,
sieci LAN s teraz powszechne, nawet dostpne w gospodarstwach domowych.
Wielu uytkownikw Linuksa ma po kilka komputerw poczonych sieci Ethernet. Po drugie, zasoby sieciowe, szczeglnie adresy IP, kocz si i cho przyzwyczailimy si, e s za darmo, obecnie coraz czciej s kupowane i sprzedawane.
Wikszo posiadaczy sieci LAN zwykle chce take mie poczenie z Internetem,
wykorzystywane przez kady komputer w sieci. Reguy rutingu IP s dosy sztywne, jeli chodzi o dziaanie w takiej sytuacji. Tradycyjne rozwizania tego problemu
zakadaj uzyskanie adresu IP dla sieci, by moe klasy C w przypadku mniejszych
orodkw, i przypisanie adresu kademu hostowi sieci LAN , a nastpnie podczenie sieci LAN do Internetu przez ruter.
W skomercjalizowanych rodowiskach internetowych jest to do droga propozycja.
Po pierwsze, musiaby zapaci za przypisanie twojej sieci adresw IP. Po drugie,
musiaby zapaci dostawcy usug internetowych za przywilej posiadania odpowiedniego rutera dla twojej sieci, dziki ktremu reszta Internetu wiedziaaby, jak
si do niej dosta. Moe by to wci praktyczne rozwizanie dla firm, ale waciciele domowych instalacji zwykle nie s w stanie udwign jego kosztw.
Na szczcie Linux oferuje inne rozwizanie tego problemu. Rozwizanie to wymaga elementu z grupy zaawansowanych funkcji sieciowych, tak zwanej translacji adresw sieciowych (Network Address Translation NAT). Jest to proces modyfikacji adresw sieciowych zawartych w nagwkach datagramu, ktry zachodzi w czasie ich
przesyania. Na pocztku moe ci si to wydawa do dziwne, ale zobaczysz
wkrtce, e jest to idealne rozwizanie opisywanego problemu i wiele osb z niego
korzysta. Maskowanie IP (ang. IP masquerading) to nazwa nadana jednej z odmian
translacji adresw sieciowych, ktra pozwala hostom z adresem sieci prywatnej
przedstawi si w Internecie pod jednym publicznym adresem IP.

206

Rozdzia 11: Maskowanie IP i translacja adresw sieciowych

Maskowanie IP daje moliwo uywania adresu IP z sieci prywatnej (zarezerwowanego) w twojej sieci LAN, a twj ruter oparty na Linuksie wykonuje w czasie rzeczywistym pewne inteligentne tumaczenie adresw IP i portw. Gdy ruter odbierze
datagram od komputera z sieci LAN, sprawdza, czy jest to datagram typu TCP,
UDP, ICMP itp. i modyfikuje go tak, e wyglda on jakby by wygenerowany
przez sam ruter (ruter pamita, e to zrobi). Nastpnie ruter wysya datagram do Internetu, nadajc mu jeden adres IP. Gdy host docelowy odbierze datagram, uwierzy,
e przyszed on z rutera i wyle w odpowiedzi datagramy na jego adres. Gdy ruter
linuksowy z wczonym maskowaniem odbierze datagram przez swoje poczenie
sieciowe, zajrzy do swojej tablicy aktywnych, maskowanych pocze, by zobaczy,
czy datagram rzeczywicie naley do komputera w sieci LAN. Jeeli tak, odwrci
dokonan przez siebie wczeniej modyfikacj oraz wyle datagram temu komputerowi.
Prosty przykad takiego dziaania pokazano na rysunku 11-1.
192.168.1.0/255.255.255.0

Internet

ppp0

eth0

2 0 3 .1 0 .2 3 .1

192.168.1.1

PPP

danie zamaskowane
z: 203.10.23.1 port 1035
Oryginalna odpowied
do: 203.10.23.1 port 1035

Linuksowy ruter
z maskowaniem

Przetumaczone przez ruter


z funkcj maskowania pod adresem:
203.10.23.1

LAN

1 9 2 .1 6 8 .1 .2

192.168.1.3

danie oryginalne
z: 192.168.1.3 port 1234
Odpowied zdemaskowana
do: 192.168.1.3 port 1234

Rysunek 11-1. Typowa konfiguracja maskowania IP

Mamy ma sie Ethernet wykorzystujc jeden z zarezerwowanych adresw sieci.


W sieci jest linuksowy ruter z funkcj maskowania, dajcy dostp do Internetu. Jedna ze stacji roboczych w sieci (192.168.1.3) chce poczy si z hostem zdalnym o adresie 209.1.106.178 na porcie 8888. Stacja robocza kieruje swj datagram do rutera,
ktry stwierdza, e danie poczenia wymaga maskowania. Przyjmuje datagram
i alokuje port (1035), zastpuje adres i port hosta swoimi wasnymi i przesya datagram do hosta docelowego. Docelowy host myli, e otrzyma danie poczenia
od rutera linuksowego z wczonym maskowaniem i generuje datagram z odpowiedzi. Otrzymawszy datagram, ruter znajduje powizanie w tablicy maskowania
i odwraca operacje wykonane na wychodzcym datagramie. Nastpnie przesya odpowied do hosta, od ktrego pierwotnie wyszed datagram.

Skutki uboczne i dodatkowe korzyci

207

Lokalny host myli, e komunikuje si bezporednio z hostem zdalnym. Zdalny host


nic nie wie o hocie lokalnym, a myli, e poczenie nawizuje z ruterem. Ruter
z maskowaniem wie, e te dwa hosty komunikuj si ze sob, jakich portw uywaj
i dokonuje translacji adresw i portw wymaganej do uzyskania takiej komunikacji.
Moe to wydawa si nieco zagmatwane, ale dziaa i atwo si konfiguruje. Nie
przejmuj si wic, jeeli nie rozumiesz jeszcze szczegw.

Skutki uboczne i dodatkowe korzyci


Funkcji maskowania IP towarzysz pewne skutki uboczne, z ktrych niektre s
uyteczne, a inne mog przeszkadza.
Po pierwsze, aden z hostw sieci, ktra jest obsugiwana przez ruter maskujcy, nie
jest widziany bezporednio, dziki czemu potrzebujesz tylko jednego poprawnego
i rutowalnego adresu IP, aby wszystkie hosty mogy czy si z Internetem. Ma to
tak wad, e aden z hostw nie jest widoczny z Internetu i nie moesz si do niego
podczy bezporednio. Jedynym widocznym hostem w maskowanej sieci jest sama
maszyna maskujca. Jest to istotne, gdy rozwaasz usugi, takie jak poczta czy FTP.
Pomaga ustali, jakie usugi powinny by udostpniane przez ruter maskujcy, a jakie
powinny by udostpniane przez proxy lub traktowane w inny, szczeglny sposb.
Po drugie, poniewa aden z maskowanych hostw nie jest widoczny, s one w pewnym sensie zabezpieczone przed atakami z zewntrz. Zapewne upraszcza to konfigurowanie firewalla na hocie maskujcym. Moesz si nawet zastanawia, czy firewall jest w ogle potrzebny. Nie powiniene jednak zbytnio ufa maskowaniu. Caa
twoja sie jest tylko tak zabezpieczona jak host maskujcy, a wic powiniene uy
firewalla, jeeli bezpieczestwo jest dla ciebie istotne.
Po trzecie, maskowanie IP bdzie miao pewien wpyw na wydajno sieci. W typowych konfiguracjach prawdopodobnie bdzie to ledwo zauwaalne. Gdyby jednak
mia wiele aktywnych, zamaskowanych sesji, mgby zauway, e przetwarzanie
realizowane na maszynie maskujcej zaczyna wpywa na przepustowo sieci. Maskowanie IP wymaga wykonywania sporej pracy dla kadego datagramu, porwnywalnej z typowym rutingiem. Jeeli planowaepowierzy komputerowi 386SX16
obsug maskowania dla komutowanego cza do Internetu, moe to wystarczy, ale
nie spodziewaj si zbyt wiele, jeeli zdecydujesz si go uy jako rutera w sieci korporacyjnej dziaajcej z prdkociami sieci Ethernet.
Pewne usugi sieciowe nie bd dziaay przy wczonej funkcji maskowania lub
bd wymagay wsparcia. Zwykle s to usugi, ktre opieraj si na przychodzcych
sesjach, takie jak bezporednie kanay komunikacyjne (Direct Communications Channels DCC) w IRC-u czy pewne typy usug grupowych wideo i audio. Dla niektrych z nich stworzono specjalne moduy jdra pozwalajce problem rozwiza; za
chwil o tym powiemy. Moe si jednak tak zdarzy, e nie znajdziesz rozwizania,
a wic bd ostrony, gdy nie zawsze da si zastosowa maskowanie.

208

Rozdzia 11: Maskowanie IP i translacja adresw sieciowych

Konfigurowanie jdra do maskowania IP


Aby uy funkcji maskowania IP, twoje jdro musi zosta skompilowane z jej
obsug. W czasie konfigurowania jdra serii 2.2 musisz wybra nastpujce opcje:
Networking options --->
[*] Network firewalls
[*] TCP/IP networking
[*] IP: firewalling
[*] IP: masquerading
--- Protocol-specific masquerading support will be built as modules.
[*] IP: inautofw masq support
[*] IP: ICMP masquerading

Zauwa, e obsuga maskowania jest dostpna tylko jako modu jdra. Oznacza to,
e w czasie kompilacji jdra musisz pamita o wykonaniu make modules poza
zwykym make zImage.
Jdra serii 2.4 nie posiadaj obsugi maskowania IP jako opcji wybieranej w czasie kompilacji jdra. Natomiast powiniene wybra opcj filtrowania pakietw sieciowych:
Networking options --->
[M] Network packet filtering (replaces ipchains)

W czasie kompilacji jder serii 2.2 powstaje szereg moduw pomocniczych, specyficznych dla protokow. Niektre protokoy rozpoczynaj dziaanie od wysyania
da na jednym porcie, a potem oczekuj na poczenia przychodzce na innym
porcie. Protokoy takie zwykle nie mog by maskowane, gdy nie ma innego sposobu na powizanie drugiego poczenia z pierwszym, jak powizanie ich wewntrz
samych protokow. Moduy pomocnicze to wanie robi. W praktyce zagldaj do
rodka datagramw i umoliwiaj dziaanie maskowania z niektrych protokow,
co w innej sytuacji byoby niemoliwe. Obsugiwane protokoy to:
Modu

Protok

ip_masq_ftp
ip_masq_irc
ip_masq_raudio
ip_masq_cuseeme
ip_masq_vdolive
ip_masq_quake

FTP
IRC
RealAudio
CU-See-Me
For VDO Live
IdSoftware Quake

Aby uruchomi te moduy, musisz je rcznie zaadowa za pomoc polecenia insmod.


Zauwa, e moduy te nie mog by adowane przez demona kerneld. Kady z moduw przyjmuje argument, ktry okrela, na jakich portach modu bdzie nasuchiwa. Modu RealAudio mgby zaadowa w nastpujco**.
# insmod ip_masq_raudio.o ports=7070,7071,7072

Numery portw zale od protokou. Dokument mini-HOWTO o maskowaniu IP


napisany przez Ambrose Au, podaje wicej szczegw na temat moduw maskowania IP i omawia, jak je konfigurowa**.
* RealAudio jest znakiem towarowym Progressive Networks Corporation.
** Z Ambrose moesz si skontaktowa pod adresem ambrose@writeme.com.

Konfigurowanie maskowania IP

209

Pakiet netfilter zawiera moduy dziaajce podobnie. Na przykad, aby udostpni


poczenie ledzce sesje FTP, powiniene zaadowa moduy ip_conntrack_ftp
i ip_nat_ftp.o i uy ich.

Konfigurowanie maskowania IP
Jeeli ju przeczytae rozdziay na temat firewalla i liczenia ruchu IP, nie bdziesz
zaskoczony, e do konfigurowania regu maskowania IP s uywane rwnie polecenia ipfwadm, ipchains i iptables.
Reguy maskowania s szczegln klas regu filtrujcych. Moliwe jest maskowanie
jedynie tych datagramw, ktre s odbierane na jednym interfejsie i rutowane do innego interfejsu. W celu utworzenia reguy maskowania musisz skonstruowa regu
bardzo podobn do reguy przekazywania dla firewalla, ale z wykorzystaniem specjalnych opcji, ktre mwi jdru, by maskowao datagram. Polecenie ipfwadm wykorzystuje opcj m, ipchains opcj -j MASQ, a iptables opcj -j MASQUERADE, by pokaza, e datagram pasujcy do reguy powinien by zamaskowany.
Spjrzmy na przykad. Student informatyki z uniwersytetu Groucho Marx ma w domu kilka komputerw poczonych w sie Ethernet. Zdecydowa si na uycie jednego z prywatnych, zarezerwowanych adresw sieci. Mieszka razem z innymi studentami, ktrzy te chc mie dostp do Internetu. Poniewa ich warunki yciowe
s do skromne, nie mog pozwoli sobie na stae poczenie z Internetem, a wic
uywaj zwykego, komutowanego poczenia PPP. Wszyscy chcieliby wspdzieli cze, by pogada na IRC-u, pooglda strony WWW czy pobra pliki przez FTP
bezporednio na swoje komputery maskowanie IP jest tu dobrym rozwizaniem.
Student konfiguruje najpierw komputer z Linuksem obsugujcy cze komutowane
i dziaajcy jako ruter dla sieci LAN. Adres IP, jakiego uywa przy dzwonieniu, nie
jest istotny. Konfiguruje ruter z maskowaniem IP i uywa jednego z adresw sieci
prywatnej dla swojej sieci LAN: 192.168.1.0. Zapewnia kademu hostowi w sieci
LAN ustawienie domylnego rutingu tak, by wskazywa na ruter linuksowy.
Ponisze polecenia ipfwadm wystarcz, by maskowanie zadziaao w takiej konfiguracji:
# ipfwadm -F -p deny
# ipfwadm -F -a accept -m -S 192.168.1.0/24 -D 0/0

lub w przypadku ipchains:


# ipchains -P forward -j deny
# ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ

lub w przypadku iptables:


# iptables -t nat -P POSTROUTING DROP
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Teraz, gdy tylko jaki z hostw z sieci LAN sprbuje poczy si z usug na hocie
zdalnym, jego datagramy zostan automatycznie zamaskowane przez ruter z Linuksem. Pierwsza regua w kadym z przykadw zapobiega przed rutowaniem
wszelkich innych datagramw i zapewnia pewne bezpieczestwo.
Aby zobaczy wanie utworzon list regu maskowania, uyj argumentu -l w poleceniu ipfwadm zgodnie z tym, co opisalimy, omawiajc firewalle.

210

Rozdzia 11: Maskowanie IP i translacja adresw sieciowych

Oto, jak naley zapisa to polecenie:


# ipfwadm -F -l -e

W wyniku otrzymujemy:
# ipfwadm -F -l -e
IP firewall forward rules, default policy: accept
pkts bytes type prot opt tosa tosx ifname ifaddress ...
0
0 acc/m all ---- 0xFF 0x00 any
any
...

Symbol /m w wyniku pokazuje wanie regu maskowania.


Aby zobaczy list regu maskowania w przypadku polecenia ipchains, uyj argumentu L. Wynik bdzie nastpujcy:
# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
target
prot
opt
source
MASQ
all ------ 192.168.1.0/24
Chain output (policy ACCEPT):

destination
anywhere

ports
n/a

Wszelkie reguy, w ktrych pole target ma warto MASQ, to reguy maskowania.


No i aby zobaczy reguy za pomoc iptables, musisz uy czego takiego:
# iptables -t net -L
Chain PREROUTING (policy ACCEPT)
target
prot
opt
source

destination

Chain POSTROUTING (policy DROP)


target
prot
opt
source
MASQUERADE all -anywhere

destination
anywhere

Chain OUTPUT (policy ACCEPT)


target
prot
opt
source

destination

MASQUERADE

Znw, reguy maskowania s oznaczone sowem MASQUERADE w polu target.

Ustawianie parametrw czasowych dla maskowania IP


Gdy jest nawizywane kade nowe poczenie, oprogramowanie maskowania IP
tworzy w pamici powizanie pomidzy kadym z hostw w nim uczestniczcych.
Moesz obejrze te powizania w dowolnej chwili, zagldajc do pliku /proc/net/
ip_masquerade. Powizania wygasn po pewnym czasie nieaktywnoci.
Za pomoc polecenia ipfwadm moesz ustawi wartoci czasu ich wyganicia. Oglna skadnia jest nastpujca:
ipfwadm -M -s <tcp> <tcpfin> <udp>

i dla polecenia ipchains jest tak:


ipchains -M -S <tcp> <tcpfin> <udp>

Implementacja iptables wykorzystuje liczniki czasowe o duo wikszej wartoci i nie


pozwala na ich ustawianie.
Kada z tych wartoci okrela licznik czasu uywany przez oprogramowanie maskowania IP i jest wyraona w sekundach. Ponisza tabela podsumowuje liczniki
i ich znaczenie:

Wicej na temat translacji adresw sieciowych

211

Nazwa

Opis

tcp

Czas przerwy w sesji TCP. Mwi, jak dugo poczenie TCP moe pozostawa
jaowe, zanim powizanie zostanie usunite.
Czas oczekiwania TCP po napotkaniu FIN. Mwi, jak dugo powizanie pozostanie w tablicy po rozczeniu poczenia TCP.
Czas przerwy w sesji UDP. Mwi, jak dugo poczenie UDP moe pozostawa jaowe, zanim powizanie zostanie usunite.

tcpfin
udp

Obsugiwanie przeszukiwania serwerw nazw


Obsugiwanie przeszukiwania serwerw nazw z hostw w sieci z maskowaniem IP
zawsze stanowio problem. Istniej dwa sposoby na dostosowanie DNS-u do rodowiska z maskowaniem. Moesz powiedzie kademu z hostw, eby uywa tego
samego DNS-u co ruter i niech maskowanie IP obsuguje ich zapytania DNS. Albo
moesz uruchomi linuksowy serwer pamici podrcznej i ustawi go tak, by kady
z hostw uywa go jako swojego DNS-u. Jest to bardziej agresywne dziaanie, ale
o tyle korzystniejsze, e redukuje rozmiar ruchu DNS przesyanego do cza internetowego i bdzie nieco szybsze, poniewa wikszo zapyta bdzie obsugiwana
z pamici podrcznej. Wad tej konfiguracji jest to, e jest bardziej skomplikowana.
Podrozdzia Konfiguracja named jak serwera pamici podrcznej w rozdziale 6 opisuje
przebieg konfiguracji takiego serwera.

Wicej na temat translacji adresw sieciowych


Oprogramowanie netfilter jest w stanie obsuy wiele rnych typw translacji
adresw sieciowych. Maskowanie IP jest jednym z prostszych jego zastosowa.
Moliwe jest na przykad stworzenie takich regu translacji, ktre bd tumaczy
tylko pewne adresy lub zakresy adresw, a reszta pozostanie nietknita lub bd
tumaczy adresy na pule adresw, a nie na pojedyncze adresy, tak jak w maskowaniu. W praktyce moesz uy polecenia iptables do stworzenia regu translacji, ktre
odwzorowuj wszystko, wykorzystujc poczenie rnych atrybutw, takich jak
adres rdowy, adres docelowy, typ protokou, numer portu, itp.
W dokumentacji netfilter tumaczenie adresu rdowego datagramu nazywa si
SNAT (Source NAT). Tumaczenie adresu docelowego datagramu jest nazywane
DNAT (Destination NAT). Tumaczenie portu TCP lub UDP jest znane pod pojciem
REDIRECT. SNAT, DNAT i REDIRECT to cele, ktrych moesz uywa w poleceniu
iptables do tworzenia bardziej wyrafinowanych i skomplikowanych regu.
Opisem odmian translacji adresw sieciowych mona by wypeni cay oddzielny
rozdzia*. Niestety my nie mamy tu do miejsca. Jeeli chcesz si dowiedzie wicej
o tym, jak uywa translacji adresw sieciowych, powiniene przeczyta IPTABLES-HOWTO.

... lub nawet ca ksik!

Wane funkcje
sieciowe

12

Rozdzia 12: Wane funkcje sieciowe

Po pomylnym skonfigurowaniu IP i resolvera, warto przyjrze si usugom, ktre


moesz udostpnia w sieci. Ten rozdzia omawia konfiguracj kilku prostych zastosowa sieci, midzy innymi serwera inetd i programw z rodziny rlogin. Krtko
omwimy take interfejs zdalnego wywoania procedur (RPC Remote Procedure
Call), na ktrym oparte s usugi, takie jak sieciowy system plikw (NFS Network
File System) i system informacji sieciowej (NIS Network Information System). Jednak
konfiguracja NFS-a i NIS-a s bardziej zoone i omwimy je w oddzielnych rozdziaach, podobnie jak poczt elektroniczn oraz grupy dyskusyjne.
Oczywicie nie moemy w tej ksice opisa wszystkich zastosowa sieci. Gdyby
chcia zainstalowa co, czego nie omawiamy, na przykad talk, gopher czy http, szukaj objanie na stronach podrcznika elektronicznego danego serwera.

Superserwer inetd
Programy udostpniajce usugi przez sie s nazywane demonami sieciowymi. Demon to program, ktry otwiera port (przewanie jest to dobrze znany port usugi)
i oczekuje na przychodzce na niego poczenia. Jeeli takie nadejdzie, demon tworzy proces potomny przyjmujcy poczenie, natomiast proces macierzysty dalej
oczekuje na kolejne dania. Mechanizm ten si sprawdza, ale ma kilka wad. Przynajmniej jedna instancja kadej moliwej usugi, ktr chcesz udostpnia, musi by
aktywna w pamici przez cay czas. Ponadto procedury oprogramowania nasuchujcego i obsugujcego port musz by replikowane w kadym demonie sieciowym.
Aby dziaanie demona stao si bardziej efektywne, wikszo instalacji Uniksa uruchamia specjalnego demona sieciowego, ktrego moesz uzna za superserwer. Demon ten tworzy gniazda w imieniu szeregu usug i nasuchuje na nich wszystkich
rwnoczenie. Gdy na ktrym z tych gniazd zostanie odebrane przychodzce
poczenie, superserwer przyjmuje je i uruchamia serwer dla okrelonego portu,
przekazujc gniazdo do obsuenia przez proces potomny. Nastpnie powraca do
nasuchiwania.

214

Rozdzia 12: Wane funkcje sieciowe

Najpopularniejszy superserwer nosi nazw inetd (z ang. Internet Daemon). Jest on


uruchamiany w czasie startu systemu i przyjmuje list usug do obsuenia na podstawie pliku o nazwie /etc/inetd.conf. Poza tymi usugami, istnieje szereg prostych
usug realizowanych przez sam inetd, nazywanych usugami wewntrznymi. Zaliczaj
si do nich chargen, generujcy po prostu cig znakw, i daytime, ktry zwraca czas
systemowy.
Wpis w tym pliku skada si z pojedynczego wiersza, w ktrym znajduj si z kolei
nastpujce pola:
usuga typ protok wait uytkownik serwer wiersz-polece
Kade z pl opisujemy poniej:
usuga
Zawiera nazw usugi. Nazwa usugi musi by przetumaczona na numer portu
na podstawie pliku /etc/services. Plik ten zostanie opisany dalej, w podrozdziale
Pliki services i protocols.
typ
Okrela typ gniazda, czyli stream (dla protokow zorientowanych poczeniowo) lub dgram (dla protokow datagramowych). Usugi oparte na TCP powinny zawsze uywa sowa stream, a usugi oparte na UDP, sowa dgram.
protok
Nazwa protokou transportowego uywanego przez usug. Musi by to dopuszczalna nazwa protokou znajdujca si w pliku protocols, opisanym dalej.
wait
Ta opcja dotyczy tylko gniazd dgram. Moe przyjmowa warto wait lub
nowait. Jeeli podano wait, inetd uruchamia tylko po jednym serwerze dla zadanego portu. W przeciwnym razie natychmiast po uruchomieniu serwera zaczyna
nasuchiwa na porcie.
Jest to przydatna opcja dla serwerw jednowtkowych, ktre czytaj wszystkie
datagramy, dopki przychodz, a nastpnie kocz prac. Wikszo serwerw
RPC jest tego typu i powinny w tym polu zawiera sowo wait. Dziaajce odwrotnie serwery wielowtkowe pozwalaj na jednoczesne uruchamianie
nieograniczonej liczby instancji. Takie serwery powinny mie tu wpisane nowait.
Gniazda stream powinny zawsze uywa sowa nowait.
uytkownik
Jest to ID uytkownika, ktry jest wacicielem procesu w czasie jego uruchamiania. Czsto bdzie to uytkownik root, ale niektre usugi mog wykorzystywa
inne konta. Dobrze jest stosowa tu zasad ograniczonego przywileju, ktra
mwi, e nie powiniene uruchamia polecenia z prawami konta uprzywilejowanego, jeeli program nie wymaga tego do poprawnego dziaania. Na przykad
serwer grup dyskusyjnych NNTP dziaa jako news, natomiast usugi, ktre mog
potencjalnie zagraa bezpieczestwu (takie jak tftp czy finger) czsto s uruchamiane jako nobody.

Superserwer inetd

215

serwer
Zawiera pen ciek do uruchamianego programu serwera. Wewntrzne
usugi s tutaj oznaczane sowem kluczowym internal.
wiersz-polece
Jest to wiersz polece przekazywany do serwera. Rozpoczyna si od nazwy
uruchamianego serwera i moe zawiera wszelkie argumenty, ktre powinny
by przekazane serwerowi. Jeeli uywasz wrappera TCP, podajesz tutaj pen
ciek do serwera. W przeciwnym razie podajesz jedynie nazw serwera, tak
jaka pojawia si na licie procesw. Wkrtce powiemy o wrapperach TCP.
W przypadku usug wewntrznych pole to jest puste.
Przykadowy plik inetd.conf zosta pokazany w przykadzie 12-1. Usuga finger jest
zakomentowana, a wic nie jest dostpna. Czsto tak si robi ze wzgldw bezpieczestwa, poniewa usuga ta moe by uywana przez osoby niepowoane do uzyskania nazw i innych szczegw na temat uytkownikw twojego systemu.
Przykad 12-1. Przykadowy plik /etc/inetd.conf
#
# usugi inetd
ftp
stream tcp nowait root
telnet
stream tcp nowait root
#finger stream tcp nowait bin
#tftp
dgram udp wait nobody
#tftp
dgram udp wait nobody
#login
stream tcp nowait root
#shell
stream tcp nowait root
#exec
stream tcp nowait root
#
#
usugi wewntrzne inetd
#
daytime stream tcp nowait root
daytime dgram udp nowait root
time
stream tcp nowait root
time
dgram udp nowait root
echo
stream tcp nowait root
echo
dgram udp nowait root
discard stream tcp nowait root
discard dgram udp nowait root
chargen stream tcp nowait root
chargen dgram udp nowait root

/usr/sbin/ftpd
/usr/sbin/telnetd
/usr/sbin/fingerd
/usr/sbin/tftpd
/usr/sbin/tftpd
/usr/sbin/rlogind
/usr/sbin/rshd
/usr/sbin/rexecd

in.ftpd -1
in.telnetd -b /etc/issue
in.fingerd
in.tftpd
in.tftpd /boot/diskless
in.rlogind
in.rshd
in.rexecd

internal
internal
internal
internal
internal
internal
internal
internal
internal
internal

Demon tftp jest rwnie zakomentowany. tftp implementuje uproszczony protok


przesyania plikw (Trivial File Transfer Protocol TFTP), ktry pozwala kademu, bez
sprawdzania hasa, pobra z systemu dowolny plik, ktry ma prawo do odczytu
ustawione dla wszystkich. Jest to szczeglnie niebezpieczne w przypadku pliku
/etc/passwd, a jeszcze bardziej, jeeli nie uywamy hase typu shadow.
TFTP jest powszechnie stosowany przez klienty bezdyskowe i Xterminale do adowania z serwera swojego kodu. Gdyby z tego powodu musia uruchomi tftpd, ogranicz
dostp tylko do tych katalogw, z ktrych klienty bd odczytywa pliki. Bdziesz
musia poda nazwy tych katalogw w wierszu polece tftpd. Pokazano to w drugim
wierszu tftp w powyszym przykadzie.

216

Rozdzia 12: Wane funkcje sieciowe

Funkcja kontroli dostpu tcpd


Poniewa udostpnianie komputera w sieci stwarza wiele zagroe dla bezpieczestwa, aplikacje s tak projektowane, by broni si przed pewnymi typami atakw.
Niektre funkcje bezpieczestwa bywaj jednak sabe (co pokaza internetowy robak RTM, ktry wykorzysta dziury w kilku programach, take w starych wersjach
demona pocztowego sendmail) lub nie rozrniaj bezpiecznych hostw, od ktrych
danie jakiej usugi mona przyj, od niebezpiecznych hostw, ktrych dania
powinny by odrzucone. Opisalimy ju krtko usugi finger i tftp. Administrator
sieci bdzie chcia, aby jedynie zaufane hosty mogy z nich korzysta, co jest niemoliwe przy typowej konfiguracji, w ktrej inetd udostpnia usug wszystkim klientom lub nie udostpnia jej nikomu.
Przydatnym narzdziem do zarzdzania dostpem ograniczonym do zadanego hosta jest tcpd, czsto nazywane demonem wrappera*. W przypadku usug TCP,
ktre chcesz monitorowa lub zabezpiecza, jest on wywoywany zamiast programu
serwera. tcpd sprawdza, czy zdalny host ma prawo uywa usugi i jeeli test zakoczy si poprawnie, uruchamia prawdziwy serwer. tcpd zapisuje rwnie dania do
demona syslog. Zauwa, e demon ten nie obsuguje usug opartych na UDP.
Na przykad, aby opakowa demona finger, musisz zmieni odpowiedni lini
w pliku inetd.conf z takiej:
# demon finger wywoywany bezporednio
finger
stream tcp nowait bin
/usr/sbin/fingerd in.fingerd

na tak:
# "opakowany" demon finger
finger
stream tcp nowait root

/usr/sbin/tcpd in.fingerd

Przy zupenym braku kontroli dostpu bdzie to wygldao z punktu widzenia


klienta tak jak zwyka konfiguracja finger, z tym wyjtkiem, e wszelkie dania
bd zapisywane przez funkcj o nazwie sysloga auth.
Kontrola dostpu jest realizowana przez dwa pliki: /etc/hosts.allow i /etc/hosts.deny.
Zawieraj one wpisy, ktre pozwalaj na dostp do pewnych usug i hostw lub go
zabraniaj. Gdy tcpd obsuguje danie usugi, na przykad finger od klienta z hosta
o nazwie biff.foobar.com, przeglda pliki hosts.allow i hosts.deny (w tej kolejnoci)
w poszukiwaniu wpisu pasujcego zarwno do usugi, jak i do hosta. Jeeli odpowiedni wpis zostanie znaleziony w pliku hosts.allow, dostp jest udzielany, a tcpd
nie sprawdza pliku hosts.deny. Jeeli w pliku hosts.allow nie zostanie znaleziony wpis,
ale zostanie on znaleziony w hosts.deny, danie jest odrzucane przez zamknicie
poczenia. danie jest jednak akceptowane, jeeli odpowiedni wpis nie zostanie
znaleziony w adnym z plikw.
Wpisy w plikach dostpu wygldaj tak:
listausug: listahostw [:polecenie]
*

Autorem tego demona jest Wietse Venema, wietse@wzv.win.tue.nl.

Funkcja kontroli dostpu tcpd

217

listausug to lista nazw usug na podstawie pliku /etc/services lub sowo kluczowe ALL. Aby pasoway wszystkie usugi poza finger i tftp, uyj ALL EXCEPT finger, tftp.
listahostw to lista nazw hostw, adresw IP lub sw kluczowych ALL, LOCAL,
UNKNOWN lub PARANOID. ALL pasuje do dowolnego hosta, natomiast LOCAL tylko
do hostw, ktre nie zawieraj kropki*. Do UNKNOWN pasuje dowolny host, ktrego
nazwy lub adresu nie znaleziono. Do PARANOID pasuje dowolny host, ktrego nazwa nie zamienia si na jego poprawny adres IP**. Do nazwy rozpoczynajcej si od
kropki pasuj wszystkie hosty z domeny o tej nazwie. Na przykad do .foobar.com
pasuje biff.foobar.com, ale nie pasuje nurks.fredsville.com. Do wzorca koczcego
si kropk pasuje dowolny host, ktrego adres IP rozpoczyna si od podanego wzorca, a wic do 172.16 pasuje 172.16.32.0, ale nie pasuje 172.15.9.1. Wzorzec postaci
n.n.n.n/m.m.m.m jest traktowany jak adres IP i maska sieci, a wic moemy zapisa poprzedni przykad jako 172.16.0.0/255.255.0.0. Wreszcie dowolny wzorzec rozpoczynajcy si od znaku / pozwala na zadanie pliku, w ktrym zawarta bdzie
lista dopasowywanych wzorcw nazw hostw lub adresw IP. Tak wic wzorzec
wygldajcy jak /var/access/trustedhosts spowodowaby, e demon tcpd odczytaby
plik, sprawdzajc, czy jakie zawarte w nim wiersze odpowiadaj podczajcemu
si hostowi.
Aby zakaza dostpu do usug finger i tcpd wszystkim oprcz hostw lokalnych, umie nastpujcy wpis w pliku /etc/hosts.deny i pozostaw plik /etc/hosts.allow
pusty:
in.tftpd, in.fingerd: ALL EXCEPT LOCAL, .twoja.domena

Opcjonalne pole polecenie moe zawiera polecenie wywoywane po dopasowaniu wpisu. Jest to przydatne do konfigurowania puapek, ktre mog ujawnia potencjalnych atakujcych. Poniszy przykad tworzy plik logu, w ktrym s wpisywani
uytkownicy i podczajce si hosty. Jeeli host nie nazywa si vlager.vbrew.com,
do nazwy zostanie dodany wynik polecenia finger:
in.ftpd: ALL EXCEPT LOCAL, .vbrew.com : \
echo "request from %d@%h: >> /var/log/finger.log; \
if [ %h != "vlager.vbrew.com:" ]; then \
finger -l @%h >> /var/log/finger.log \
fi

Argumenty %h i %d s rozwijane przez tcpd odpowiednio do nazwy hosta klienta


i nazwy usugi. Szczegy znajdziesz na stronie podrcznika elektronicznego
hosts_access(5).

* Zwykle tylko nazwy lokalne uzyskane z /etc/hosts nie zawieraj kropek.


** Chocia nazwa sugeruje, e jest to warunek ekstremalny, sowo kluczowe PARANOID jest dobr wartoci domyln, gdy zabezpiecza przed zoliwymi hostami, ktre udaj, e s kim, kim nie s. Nie
wszystkie wersje tcpd maj wkompilowan obsug PARANOID. Jeeli twoja wersja nie ma, musisz
przekompilowa tcpd.

218

Rozdzia 12: Wane funkcje sieciowe

Pliki services i protocols


Numery portw, na ktrych s udostpniane pewne standardowe usugi zostay
zdefiniowane w dokumencie RFC Assigned Numbers. Aby programy serwera i klienta mogy konwertowa nazwy usug na te numery, kady host posiada przynajmniej
cz tej listy. Znajduje si ona w pliku o nazwie /etc/services. Wpis wyglda tak:
usuga

port/protok

[aliasy]

Usuga oznacza tutaj nazw usugi, a port definiuje port, na ktrym jest ona oferowana, natomiast protok okrela uywany protok transportowy. To ostatnie pole
przewanie ma warto udp lub tcp. Zdarza si, e usuga jest udostpniana nie tylko poprzez jeden protok, oraz e na tym samym porcie udostpniane s rne
usugi, jeeli protokoy s rne. Pole aliasy pozwala okreli alternatywne nazwy
tej samej usugi.
Zwykle nie musisz zmienia pliku services, ktry jest dostarczany wraz z oprogramowaniem sieciowym twojego Linuksa. Niemniej jednak w przykadzie 12-2 pokazujemy urywek tego pliku.
Przykad 12-2. Przykadowy plik /etc/services
# Plik services:
#
# dobrze znane usugi
echo
7/tcp
echo
7/udp
discard
9/tcp sink null
discard
9/udp sink null
daytime
13/tcp
daytime
13/udp
chargen
19/tcp ttytst source
chargen
19/udp ttytst source
ftp-data
20/tcp
ftp
21/tcp
telnet
23/tcp
smtp
25/tcp
nntp
119/tcp readnews
#
# usugi UNIX
exec
512/tcp
biff
512/udp comsat
login
513/tcp
who
513/udp whod
shell
514/tcp cmd
syslog
514/udp
printer
515/tcp spooler
route
520/udp router routed

#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#

Echo
Discard
Daytime
Generator znakw
Protok transmisji plikw (dane)
Protok transmisji plikw (sterowanie)
Protok wirtualnego terminala
Prosty protok przesyania poczty elektronicznej
Protok przesyania wiadomoci w sieci USENET
zdalne wykonywanie BSD
powiadomienie o poczcie
zdalne logowanie
zdalne who i uptime
zdalne polecenie, haso nie jest uywane
zdalny syslog
zdalne buforowanie drukowania
protok informacyjny rutowania

Zauwa, e usuga echo jest udostpniana na porcie 7 zarwno protokoowi TCP, jak
i UDP, i e port 512 jest uywany przez dwie rne usugi: zdalne wykonywanie
(rexec) przez TCP i demona COMSAT na UDP, powiadamiajcego uytkownikw
o nowej poczcie (zobacz xbiff(1x)).
Podobnie jak plik services, biblioteka sieciowa potrzebuje sposobu na przetumaczenie
nazw protokow na przykad uywanych w pliku services na numery proto-

Zdalne wywoanie procedur

219

kow rozumiane przez warstw IP na innych hostach. Dlatego poszukuje nazwy


w pliku /etc/protocols. Plik ten zawiera po jednym wpisie w wierszu, a kady wpis
podaje nazw protokou i odpowiadajcy jej numer. Prawdopodobiestwo robienia
czegokolwiek z tym plikiem jest jeszcze mniejsze, ni w przypadku /etc/services.
Przykadowy plik pokazujemy poniej.
Przykad 12-3. Przykadowy plik /etc/protocols
#
# Protokoy internetowe (IP)
#
ip
0
IP
# protok internetowy, pseudonumer protokou
icmp
1
ICMP
# internetowy protok komunikatw kontrolnych
igmp
2
IGMP
# protok grupowy Internet
tcp
6
TCP
# protok sterujcy transmisj
udp
17
UDP
# protok datagramw uytkownika
raw
255
RAW
# interfejs RAW IP

Zdalne wywoanie procedur


Oglny mechanizm aplikacji klient-serwer jest udostpniany przez RPC pakiet
zdalnego wywoania procedur. RPC powsta w firmie Sun Microsystems. Jest to zbir
narzdzi i funkcji bibliotecznych. Wane aplikacje zbudowane w oparciu o RPC to
NIS system informacji sieciowej i NFS sieciowy system plikw. Oba zostan opisane w tej ksice, odpowiednio w rozdziaach 13, System informacji sieciowej i 14, Sieciowy system plikw.
Serwer RPC zawiera zbir procedur, ktre klient moe wywoywa, wysyajc dania RPC do serwera wraz z parametrami procedury. Serwer wywoa wskazan procedur w imieniu klienta i przekae mu zwrcon warto, jeeli taka bdzie. Aby
uniezaleni si od maszyny, wszystkie dane wymieniane pomidzy klientem i serwerem s konwertowane przez wysyajcego do formatu zewntrznej reprezentacji danych (External Data Representation XDR) i konwertowane z powrotem do lokalnej
reprezentacji przez odbiorc. RPC opiera si na standardowych gniazdach UDP
i TCP przy przenoszeniu danych w formacie XDR do zdalnego hosta. Firma Sun
udostpnia RPC na zasadach oprogramowania do publicznego rozpowszechniania.
Opisano je w wielu RFC.
Czasem poprawki w aplikacji RPC s niekompatybilne z interfejsem wywoania procedur. Oczywicie zwyka zmiana serwera spowoduje awari aplikacji, ktre wci
oczekuj pierwotnego dziaania. Dlatego programy RPC maj przypisane numery
wersji, zwykle rozpoczynajce si od 1, a potem, wraz z kad now wersj interfejsu
RPC, licznik ten jest zwikszany. Czsto serwer moe obsugiwa kilka wersji jednoczenie, a klienty w daniu wskazuj numer wersji implementacji, ktrej chc uywa.
Komunikacja pomidzy serwerami i klientami RPC jest w pewnym sensie szczeglna.
Serwer RPC udostpnia jeden lub kilka zbiorw procedur. Kady zestaw nazywa si
programem i jest unikalnie identyfikowany przez numer programu. Lista odwzorowujca nazwy usug na numery programw zwykle znajduje si w pliku /etc/rpc,
ktrego fragment pokazano w przykadzie 12-4.

220

Rozdzia 12: Wane funkcje sieciowe

Przykad 12-4. Przykadowy plik /etc/rpc


#
# /etc/rpc - rne usugi oparte na RPC
#
portmapper
100000 portmap sunrpc
rstatd
100001 rstat rstat_svc rup perfmeter
rusersd
100002 rusers
nfs
100003 nfsprog
ypserv
100004 ypprog
mountd
100005 mount showmount
ypbind
100007
walld
100008 rwall shutdown
yppasswdd
100009 yppasswd
bootparam
100026
ypupdated
100028 ypupdate

W sieciach TCP/IP autorzy RPC stanli wobec problemu odwzorowania numerw


programw na typowe usugi sieciowe. Zaprojektowali kady serwer tak, by udostpnia porty TCP i UDP dla kadego programu i kadej wersji. Generalnie do wysyania danych aplikacje RPC uywaj UDP, a TCP jedynie wtedy, gdy przesyane
dane nie mieszcz si w jednym datagramie UDP.
Oczywicie programy klientw musz dopasowa numer portu do numeru programu. Wykorzystanie w tym celu pliku konfiguracyjnego byoby zbyt mao elastyczne. Poniewa aplikacje RPC nie uywaj zarezerwowanych portw, nie ma gwarancji, e port, ktry pierwotnie by przeznaczony dla naszej aplikacji bazy danych, nie
zostanie zabrany przez inny proces. Dlatego aplikacje RPC bior dostpny port i rejestruj go w specjalnym programie, nazywanym demonem portmapper. Portmapper
dziaa jako usuga porednia dla wszystkich serwerw RPC funkcjonujcych na danym komputerze. Klient, ktry chce skontaktowa si z usug o danym numerze
programu, najpierw wysya zapytanie do portmappera na danym hocie, a ten zwraca mu numery portw TCP i UDP, pod ktrymi usuga jest dostpna.
Niestety portmapper moe odmwi dziaania ju wtedy, gdy zostanie uszkodzony
tylko jeden punkt, podobnie jak demon inetd dla standardowych usug Berkeley.
Jednak ten przypadek jest jeszcze gorszy, gdy jeeli portmapper nie zadziaa,
wszystkie informacje o portach RPC zostan stracone. Zwykle oznacza to, e bdziesz musia ponownie rcznie uruchomi wszystkie serwery RPC lub ca maszyn.
W Linuksie portmapper nosi nazw /sbin/portmap lub czasem /usr/sbin/rpc.portmap.
Poza sprawdzeniem, czy jest on uruchamiany przez sieciowe skrypty startowe, nie
wymaga adnej konfiguracji.

Konfigurowanie zdalnego logowania i uruchamiania


Czsto bardzo przydatne jest uruchomienie jakiego polecenia na hocie zdalnym,
ale z moliwoci wprowadzania danych i ogldania wyniku przez sie.
Tradycyjne polecenia uywane do wykonywania polece na hostach zdalnych to
rlogin, rsh i rcp. Przykad polecenia rlogin widzielimy w rozdziale 1, Wprowadzenie do
sieci. Tame, w podrozdziale Bezpieczestwo systemu krtko omwilimy zagadnie-

Konfigurowanie zdalnego logowania i uruchamiania

221

nia bezpieczestwa zwizane z tym poleceniem i zasugerowalimy zastpienie go


przez ssh. Pakiet ssh zawiera zamienniki w postaci slogin, ssh i scp.
Kade z tych polece uruchamia powok na zdalnym hocie i pozwala uytkownikowi na wykonywanie polece. Oczywicie klient musi mie konto na hocie
zdalnym, na ktrym jest wykonywane polecenie. Tak wic, wszystkie polecenia wykorzystuj proces uwierzytelniania. Polecenia r uywaj po prostu nazwy uytkownika i hasa, ktre wymieniaj pomidzy hostami bez szyfrowania, a wic kady, kto
sucha moe atwo przej hasa. Pakiet polece ssh zapewnia wyszy poziom bezpieczestwa, gdy wykorzystuje technik kodowania informacji z kluczem wielodostpu
(ang. Public Key Cryptography), ktra zapewnia uwierzytelnianie i szyfrowanie pomidzy hostami, co z kolei daje pewno, e ani hasa, ani dane sesji nie zostan
atwo przechwycone przez inne hosty.
Pewnym uytkownikom mona uatwi sprawdzanie hase. Na przykad, jeeli czsto logujesz si na komputerach w swojej sieci LAN, moesz by wpuszczany bez
potrzeby cigego wpisywania hasa. Polecenia typu r take daway tak moliwo,
ale pakiet ssh pozwala to zrobi nieco prociej. Zaznaczmy, e nie jest to adna rewelacja. Po prostu, jeeli zdobdzie si ju konto na jednej maszynie, mona uzyska
dostp do wszystkich pozostaych kont, ktre uytkownik skonfigurowa do logowania si bez hasa. Jest to dosy wygodne i dlatego uytkownicy czsto sigaj po to
rozwizanie.
Omwmy usuwanie polece r i uruchamianie zamiast nich pakietu ssh.

Wyczanie polece r
Rozpocznijmy od usuwania polece r. Najprostszym sposobem na wyczenie polece r jest poprzedzenie komentarzem (lub usunicie) wpisw w pliku /etc/inetd.conf. Interesujce nas wpisy wygldaj nastpujco:
# Shell,
shell
login
exec

login, exec i talk to


stream tcp
nowait
stream tcp
nowait
stream tcp
nowait

protokoy BSD
root /usr/sbin/tcpd /usr/sbin/in.rshd
root /usr/sbin/tcpd /usr/sbin/in.rlogind
root /usr/sbin/tcpd /usr/sbin/in.rexecd

Moesz je zakomentowa, umieszczajc znak # na pocztku kadego wiersza, lub


zupenie usun wiersze. Pamitaj, e musisz uruchomi ponownie demona inetd,
aby zmiana odniosa skutek. Najlepiej byoby usun rwnie same programy demonw.

Instalowanie i konfigurowanie ssh


OpenSSH jest darmow wersj pakietu programw ssh. Wersj dla Linuksa mona
znale pod adresem http://violet.ibs.com.au/openssh/ i w wikszoci najnowszych
dystrybucji*. Nie bdziemy opisywali tutaj kompilacji. Dobre instrukcje znajduj si
w pakiecie rdowym. Jeeli moesz zainstalowa ju skompilowany pakiet, warto
to zrobi.
*

OpenSSH zosta stworzony w ramach projektu OpenBSD i jest doskonaym przykadem korzyci z darmowego oprogramowania.

222

Rozdzia 12: Wane funkcje sieciowe

Sesja ssh angauje dwie strony. Jedna z nich to klient ssh, ktrego musisz skonfigurowa i uruchomi na hocie lokalnym, a druga to demon ssh, ktry musi dziaa na hocie zdalnym.
Demon ssh
Demon sshd to program, ktry oczekuje pocze sieciowych od klientw ssh, obsuguje uwierzytelnienie i wykonuje dane polecenia. Ma on jeden plik konfiguracyjny o nazwie /etc/ssh/sshd_config i specjalny, reprezentujcy hosta plik, ktry zawiera
klucz uywany w procesach uwierzytelniania i szyfrowania. Kady host i kady
klient maj wasny klucz.
W pakiecie umieszczane jest te narzdzie ssh-keygen, ktre suy do generowania
klucza losowego. Zwykle jest uywane w czasie instalacji do wygenerowania klucza
hosta, ktry administrator zwykle umieszcza w pliku /etc/ssh/ssh_host_key. Klucze
mog mie dowoln dugo wiksz od 512 bitw. Domylnie ssh_keygen generuje
klucze dugoci 1024 bitw, a wikszo osb t warto domyln uznaje. Aby wygenerowa klucz losowy, musisz wywoa polecenie ssh-keygen w nastpujcy sposb:
# ssh-keygen -f /etc/ssh/ssh_host_key

Zostaniesz poproszony o wprowadzenie frazy (ang. passphrase). Jednak klucze hosta


nie musz wykorzystywa frazy, a wic po prostu nacinij [Enter] i przejd dalej.
Wynik dziaania programu bdzie nastpujcy:
Generating RSA keys: ......oooooO...............................oooooO
Key generation complete.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_key
Your public key has been saved in /etc/ssh/ssh_host_key.pub
The key fingerprint is:
1024 3a:14:78:8e:5a:a3:6b:bc:b0:69:10:23:b7:d8:56:82 root@moria

Wida, e zostay utworzone dwa pliki. Pierwszy, /etc/ssh/ssh_host_key, jest nazywany


kluczem prywatnym i musi by trzymany w tajemnicy. Drugi, /etc/ssh/ssh_host_key.pub,
jest nazywany kluczem publicznym i ten moesz udostpnia.
Kiedy masz klucze ssh do komunikacji, musisz stworzy plik konfiguracyjny. Pakiet
ssh ma wiele moliwoci i plik konfiguracyjny moe zawiera wiele opcji. Pokaemy
prosty przykad, od ktrego atwo ci bdzie zacz. Aby wczy dalsze funkcje, powiniene zajrze do dokumentacji. Poniszy kod pokazuje bezpieczny i minimalny
plik konfiguracyjny sshd. Pozostae opcje konfiguracyjne s szczegowo opisane na
stronie podrcznika elektronicznego sshd(8):
# /etc/ssh/sshd_config
#
# Adresy IP, na ktrych oczekiwane s poczenia. 0.0.0.0
# oznacza wszystkie adresy lokalne.
ListenAddress 0.0.0.0
# Port TCP, na ktrym oczekiwane s poczenia. Domylnie 22.
Port 22

Konfigurowanie zdalnego logowania i uruchamiania

223

# Nazwa pliku z kluczem hosta.


HostKey /etc/ssh/ssh_host_key
# Dugo klucza w bitach.
ServerKeyBits 1024
# Czy pozwalamy na logowanie roota przez ssh?
PermitRootLogin no
# Czy demon ssh powinien sprawdza katalogi macierzyste
# uytkownikw i prawa dostpu do plikw przed pozwoleniem na
# zalogowanie?
StrictModes yes
# Czy pozwalamy na metod uwierzytelniania przez ~/.rhosts i
# /etc/hosts.equiv
RhostsAuthentication no
# Czy pozwalamy na czyste uwierzytelnienie RSA?
RSAAuthentication yes
# Czy pozwalamy na uwierzytelnienie hasem?
PasswordAuthentication yes
# Czy pozwalamy na uwierzytelnienie RSA w poczeniu z
# /etc/hosts.equiv?
RhostRSAAuthentication no
# Czy powinnimy ignorowa pliki ~/.rhosts?
IgnoreRhosts yes
# Czy pozwalamy na logowanie na konta bez hase?
PermitEmptyPasswords no

Wane jest sprawdzenie praw dostpu do plikw konfiguracyjnych, gdy ich poprawno ma wpyw na bezpieczestwo systemu. Uyj poniszych polece:
#
#
#
#
#

chown
chmod
chmod
chmod
chmod

-R root:root /etc/ssh
755 /etc/ssh
600 /etc/ssh/ssh_host_key
644 /etc/ssh/ssh_host_key.pub
644 /etc/ssh/sshd_config

Ostatnim etapem administracji sshd jest uruchomienie demona. Zwykle tworzysz


dla niego plik rc lub dodajesz go do istniejcego, aby by automatycznie uruchamiany
przy starcie komputera. Demon dziaa samodzielnie i nie potrzebuje adnego wpisu
w pliku /etc/inetd.conf. Demon musi by uruchomiony jako uytkownik root. Skadnia jest bardzo prosta:
/usr/sbin/sshd

Demon sshd automatycznie przejdzie w to zaraz po uruchomieniu. Od tej chwili jeste gotw przyjmowa poczenia ssh.
Klient ssh
Istnieje kilka programw klientw ssh: slogin, scp i ssh. Kady z nich odczytuje ten
sam plik konfiguracyjny, zwykle /etc/ssh/ssh_config. Kady czyta take pliki konfiguracyjne z podkatalogu .ssh katalogu macierzystego uytkownika uruchamiajcego
klienta. Najwaniejsze z tych plikw to .ssh/config, ktry moe zawiera opcje o wyszym priorytecie ni te w pliku /etc/ssh/ssh_config, plik .ssh/identity, ktry zawiera

224

Rozdzia 12: Wane funkcje sieciowe

prywatny klucz uytkownika, oraz odpowiedni plik .ssh/identity.pub zawierajcy


publiczny klucz uytkownika. Inne wane pliki to .ssh/known_hosts i .ssh/authorized_keys. Omwimy je dalej w podrozdziale Korzystanie z ssh. Najpierw przygotujmy globalny plik konfiguracyjny i plik klucza uytkownika.
Plik /etc/ssh/ssh_config jest bardzo podobny do pliku konfiguracyjnego serwera. Analogicznie, zawiera wiele funkcji, ktre mona konfigurowa, ale minimalna konfiguracja wyglda tak, jak pokazano w przykadzie 12-5. Pozostae opcje konfiguracyjne
s szczegowo omwione na stronach podrcznika elektronicznego sshd(8). Moesz
doda czci odpowiedzialne za okrelone hosty lub grupy hostw. Parametrem
dyrektywy Host moe by zarwno pena nazwa hosta, jak i nazwa zapisana za
pomoc znakw uniwersalnych (ang. wildcards), czego uylimy w przykadzie, by
uwzgldni wszystkie hosty. Moglibymy stworzy na przykad wpis, ktry uywaby Host *.vbrew.com; wtedy pasowayby do niego wszystkie hosty z domeny vbrew.com.
Przykad 12-5. Przykadowy plik konfiguracyjny klienta ssh
# /etc/ssh/ssh_config
# Domylne opcje uywane przy poczeniu z hostem zdalnym
Host *
# Kompresowa dane w czasie sesji?
Compression yes
# .. uywajc ktrego poziomu kompresji? (1 - szybka/saba, 9 - wolna/dobra)
CompressionLevel 6
# Czy skorzysta z rsh, jeeli poczenie bezpieczne si nie uda?
FallBackToRsh no
# Czy powinnimy wysya komunikaty o aktywnoci?
# Przydatne, jeeli korzystasz z maskowania IP
KeepAlive yes
# Prbowa uwierzytelniania RSA?
RSAAuthentication yes
# Prbowa uwierzytelniania RSA w poczeniu z
# uwierzytelnianiem .rhosts?
RhostsRSAAuthentication yes

W podrozdziale dotyczcym konfiguracji serwera wspomnielimy, e kady host


i uytkownik maj klucz. Klucz uytkownika jest umieszczony w pliku ~/.ssh/identity.
Aby wygenerowa klucz, posugujesz si tym samym poleceniem ssh-keygen, ktre
suyo do generowania klucza hosta, tylko, e tym razem nie potrzebujesz podawa
nazwy pliku, w ktrym zapisujesz klucz. ssh-keygen domylnie umieszcza go w odpowiednim miejscu, ale pyta ci o nazw pliku na wypadek, gdyby chcia go zapisa gdzie indziej. Czasem warto mie kilka kluczy tosamoci, a wic ssh na to pozwala. Tak jak przedtem, ssh-keygen pyta ci o wprowadzenie frazy. Frazy daj dodatkowy poziom bezpieczestwa i s dobrym rozwizaniem. Twoja fraza nie bdzie
wywietlana na ekranie podczas wprowadzania.

Konfigurowanie zdalnego logowania i uruchamiania

225

Nie ma moliwoci odtworzenia frazy, gdyby jej zapomnia. Wymyl wic co, co zapamitasz, ale tak jak w przypadku wszystkich hase, niech to nie bdzie co oczywistego, pospolity rzeczownik ani twoje imi. Aby fraza bya naprawd skuteczna, powinna
liczy od 10 do 30 znakw i nie moe by zwykym wyraeniem. Sprbuj wtrci kilka
nietypowych znakw. Jeeli zapomnisz frazy, bdziesz musia wygenerowa nowy
klucz.

Powiniene poprosi wszystkich swoich uytkownikw o uruchomienie polecenia


ssh-keygen, by mie pewno, e ich klucz zosta stworzony poprawnie. ssh-keygen
utworzy za nich katalogi ~/.ssh/ z odpowiednimi prawami dostpu oraz stworzy
klucze prywatny i publiczny odpowiednio w plikach .ssh/identity i .ssh/identity.pub.
Przykadowa sesja powinna wyglda tak:
$ ssh-keygen
Generating RSA keys: .......oooooO................................
Key generation complete.
Enter file in which to save the key (/home/maggie/.ssh/identity):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/maggie/.ssh/identity.
Your public key has been saved in /home/maggie/.ssh/identity.pub.
The key fingerprint is:
1024 85:49:53:f4:8a:d6:d9:05:d0:1f:23:c4:d7:2a:11:67 maggie@moria
$

Teraz ssh jest gotowe do pracy.


Korzystanie z ssh
Mamy ju zainstalowane polecenie ssh wraz z towarzyszcymi mu narzdziami
pomocniczymi. Wszystko jest gotowe do pracy. Przyjrzyjmy si teraz, jak mona je
uruchamia.
Najpierw sprbujemy zalogowa si do zdalnego hosta. Moemy posuy si programem slogin w prawie identyczny sposb, jak uywalimy programu rlogin we
wczeniejszym przykadzie w tej ksice. Gdy za pierwszym razem prbujesz si
czy z hostem, klient ssh odczytuje klucz publiczny hosta i pyta ci, czy potwierdzasz jego tosamo, pokazujc skrcon wersj klucza publicznego nazywan odciskiem palca (ang. fingerprint).
Administrator hosta zdalnego powinien wczeniej dostarczy ci odcisk palca klucza publicznego tego hosta. Ten klucz powiniene doda do swojego pliku
.ssh/known_hosts. Jeeli administrator zdalnego hosta tego nie zrobi, moesz poczy si z hostem zdalnym, ale ssh ostrzee ci, e nie ma klucza i zapyta, czy
chcesz przyj ten oferowany przez host zdalny. Zakadajc, e jeste pewien, e nikt
nie podszywa si pod DNS i e poczye si z poprawnym hostem, moesz wybra
odpowied yes. Odpowiedni klucz zostanie zapisany automatycznie w twoim pliku
.ssh/known_hosts i nie bdziesz o niego pytany po raz kolejny. Jeeli przy nastpnej
prbie poczenia klucz publiczny uzyskany z danego hosta nie bdzie pasowa do
tego, ktry przechowujesz w pliku .ssh/known_hosts, otrzymasz ostrzeenie, poniewa narusza to bezpieczestwo.

226

Rozdzia 12: Wane funkcje sieciowe

Pierwsze logowanie do zdalnego hosta bdzie wygldao jako tak:


$ slogin vchianti.vbrew.com
The authenticity of host 'vchianti.vbrew.com' can't be established.
Key fingerprint is 1024 7b:d4:a8:28:c5:19:52:53:3a:fe:8d:95:dd:14:93:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permamently added 'vchianti.vbrew.com,172.16.2.3' to the list of/
known hosts.
maggie@vchianti.vbrew.com's password:
Last login: Thu Feb 1 23:28:58 2000 from vstout.vbrew.com
$

Zostaniesz poproszony o podanie hasa, ktre powiniene wprowadzi na konto na


hocie zdalnym, a nie lokalnym. Haso to nie pojawia si na ekranie w czasie wpisywania.
Jeeli nie podamy adnych szczeglnych argumentw, slogin sprbuje zalogowa
si z tym samym identyfikatorem uytkownika, jaki jest uywany na komputerze lokalnym. Moesz to zmieni, uywajc argumentu -l, w ktrym podaje si inn nazw uytkownika logujcego si do hosta zdalnego. Tak wanie robilimy we wczeniejszym przykadzie.
Za pomoc programu scp moemy kopiowa pliki zarwno ze zdalnego hosta, jak
i do niego. Skadnia jest podobna do typowego cp z t rnic, e musisz poda nazw hosta przed nazw pliku, co oznacza, e cieka dotyczy podanego hosta. Poniszy przykad, w ktrym lokalny plik /tmp/fred jest kopiowany do katalogu /home/
maggie na hocie chianti.vbrew.com, pokazuje skadni scp:
$ scp /tmp/fred vchianti.vbrew.com:/home/maggie/
maggie@vchianti.vbrew.com's password:
fred
100% |*****************************| 50165 00:01 ETA

Znw zostaniesz poproszony o wprowadzenie hasa. Polecenie scp domylnie wywietla przydatne komunikaty informujce o postpie. Rwnie atwo moesz skopiowa plik z hosta zdalnego. Po prostu podaj nazw hosta i ciek jako plik
rdowy, a ciek lokaln jako plik docelowy. Moliwe jest rwnie skopiowanie
pliku z hosta zdalnego na inny host zdalny, ale zwykle si tego nie robi, poniewa
wszystkie dane przechodz przez twj host.
Za pomoc ssh moesz uruchamia polecenia na hocie zdalnym. Znw skadnia jest
bardzo prosta. Niech uytkownik maggie obejrzy zawarto katalogu gwnego
hosta vchianti.vbrew.com. Moe to zrobi nastpujco:
$ ssh vchianti.vbrew.com ls -CF /
maggie@vchianti.vbrew.com's password:
bin/
console@ dos/
home/
lost+found/
boot/
dev/
etc/
initrd/ mnt/
cdrom/ disk/
floppy/ lib/
proc/

pub@
root/
sbin/

tmp/
usr/
var/

vmlinuz@
vmlinuz.old@

Polecenie ssh moesz umieci w potoku polece i przekazywa wejcie/wyjcie


programu do lub z innego programu, tak jak w innych poleceniach, z t rnic, e
wejcie lub wyjcie s kierowane do lub z hosta zdalnego przez poczenie ssh. Oto
przykad, jak moesz wykorzysta t moliwo w poczeniu z poleceniem tar do
przekopiowania caego katalogu (z podkatalogami i plikami) z hosta zdalnego na
host lokalny:

Konfigurowanie zdalnego logowania i uruchamiania

227

$ ssh vchianti.vbrew.com "tar cf - /etc/" | tar xvf maggie@vchianti.vbrew.com's password:


etc/GNUstep
etc/Muttrc
etc/Net
etc/X11
etc/adduser.conf
..
..

Polecenie do wykonania wzilimy tutaj w cudzysw, aby byo jasne, co przekazujemy jako argument do ssh i co jest uywane przez lokaln powok. Polecenie to wykonuje tar na hocie zdalnym, ktre z kolei archiwizuje katalog /etc i wypisuje wynik
na standardowe wyjcie. Zastosowalimy potok, przez ktry przekazujemy standardowe wyjcie do polecenia tar dziaajcego na hocie lokalnym w trybie odczytywania ze standardowego wejcia.
Znw zostalimy poproszeni o wprowadzenie hasa. Teraz moesz zobaczy, dlaczego zachcalimy ci do skonfigurowania ssh tak, eby nie pytao o hasa za kadym razem! Skonfigurujmy teraz naszego lokalnego klienta ssh tak, by nie pyta
o haso przy czeniu si z hostem vchianti.vbrew.com. Wspomnielimy wczeniej
o pliku .ssh/authorized_keys. Wanie on jest uywany do tego celu. Plik .ssh/authorized_keys zawiera klucze publiczne wszelkich zdalnych kont uytkownikw, na ktre
chcemy si automatycznie logowa. Automatyczne logowanie moesz ustawi, kopiujc zawarto pliku .ssh/identity.pub z konta zdalnego do lokalnego pliku .ssh/authorized_keys. Istotne jest, by prawa dostpu do pliku .ssh/authorized_keys pozwalay
na dostp tylko tobie i tylko na zapis i odczyt. W przeciwnym razie kto mgby
ukra klucze i zalogowa si na zdalne konto. Aby mie pewno, e prawa dostpu
s poprawne, zmie .ssh/authorized_keys w nastpujcy sposb:
$ chmod 600 ~/.ssh/authorized_keys

Klucze publiczne to jeden dugi wiersz czystego tekstu. Jeeli uywasz funkcji kopiowania i wklejania do powielania kluczy w twoim pliku lokalnym, pamitaj o usuniciu wszelkich znakw koca wiersza, ktre mogy zosta przez przypadek wstawione. Plik .ssh/authorized_keys moe zawiera wiele takich kluczy, ale kady z nich
musi znajdowa si w oddzielnym wierszu.
Pakiet narzdzi ssh i oferuje wiele przydatnych funkcji i opcji, ktre warto pozna.
W poszukiwaniu dodatkowych informacji zajrzyj do podrcznika elektronicznego
i dokumentacji dostarczanej wraz z pakietem.

System informacji
sieciowej

13

Rozdzia 13: System informacji sieciowej

Gdy obsugujesz sie lokaln, zwykle twoim gwnym celem jest zapewnienie
swoim uytkownikom takiego rodowiska, w ktrym sie jest przezroczysta. Warunkiem jest synchronizacja na wszystkich hostach w sieci takich danych, jak informacje
o kontach uytkownikw. Wwczas uytkownicy mog swobodnie przesiada si
z komputera na komputer bez potrzeby pamitania rnych hase i kopiowania danych midzy maszynami. Dane, ktre s przechowywane centralnie, nie musz by
replikowane, jeli istnieje jaki wygodny sposb na dostanie si do nich z hosta
podczonego do sieci. Centralne przechowywanie istotnych informacji administracyjnych ma szereg zalet. Gwarantuje spjno danych. Daje wiksz swobod uytkownikom poprzez moliwo przesiadania si z hosta do hosta. Uatwia ycie administratorowi systemu, ktry zarzdza tylko jednym egzemplarzem informacji.
Wczeniej omwilimy wany przykad centralizacji danych, pochodzcy z Internetu system nazw domen (DNS). DNS udostpnia ograniczony zakres informacji,
z ktrych najwaniejsze to tumaczenie nazw hostw na adresy IP i odwrotnie. Inne
typy danych nie maj swoich specjalistycznych usug. Co wicej, jeeli zarzdzasz tylko ma sieci LAN bez dostpu do Internetu, korzyci ze skonfigurowania DNS-u
mog nie by warte pracy, jak trzeba w to woy.
Dlatego wanie firma Sun stworzya system informacji sieciowej (Network Information
System NIS). NIS to funkcje oglnego dostpu do bazy danych. Za ich pomoc mona dystrybuowa do wszystkich hostw w sieci na przykad informacje zawarte
w plikach passwd i group. Dziki temu sie jest widoczna jako jeden system, z tymi samymi kontami na wszystkich hostach. Podobnie moesz wykorzysta NIS-a do dystrybuowania informacji o nazwie hosta zawartych w pliku /etc/hosts do wszystkich
innych maszyn w sieci.
NIS jest oparty na RPC i skada si z serwera, bibliotek strony klienta i kilku narzdzi
administracyjnych. Pierwotnie nosi nazw Yellow Pages (lub YP); nadal mona spo-

230

Rozdzia 13: System informacji sieciowej

tka si z odwoaniami do niej. Jednak okazao si, e nazwa ta jest znakiem towarowym firmy British Telecom, ktra zadaa, by Sun przesta jej uywa. Jak wiadomo, niektre nazwy atwo si zapamituje i dlatego YP pozostao jako przedrostek
w wikszoci polece zwizanych z NIS-em, jak ypserv i ypbind.
Obecnie NIS jest dostpny praktycznie we wszystkich Uniksach i istniej nawet darmowe jego implementacje. BSD Net-2 zawiera implementacj, ktra pochodzi od
wzorcowej implementacji public domain finansowanej przez Suna. Kod biblioteki
klienta z tej wersji znajdowa si przez dugi czas w linuksowej bibliotece libc, a programy administracyjne zostay przeniesione do Linuksa przez Swena Thmmlera*.
Jednak we wzorcowej implementacji brakuje serwera NIS.
Peter Eriksson przygotowa now implementacj o nazwie NYS**. Obsuguje ona
zarwno NIS-a, jak i jego rozszerzon wersj NIS+. NYS nie tylko udostpnia zestaw
narzdzi i serwer NIS-a, ale take cay nowy zestaw funkcji bibliotecznych, ktre
trzeba wkompilowa w bibliotek libc, jeeli chcesz ich uywa. Naley do nich nowy sposb konfiguracji rozwizywania nazw, ktry zastpuje aktualny schemat
oparty na pliku host.conf.
Biblioteka GNU libc, znana jako libc6 w spoecznoci Linuksa, zawiera uaktualnion
wersj tradycyjnego NIS-a autorstwa Thorstena Kukuka***. Obsuguje ona wszystkie
funkcje biblioteczne udostpnione przez NYS-a i wykorzystuje rwnie rozszerzony
schemat konfiguracji NYS. Wci potrzebne ci bd narzdzia i serwer, ale uycie biblioteki GNU libc zaoszczdzi ci problemw z poprawianiem i kompilowaniem biblioteki.
Ten rozdzia jest powicony procedurom obsugi NIS-a zawartym w bibliotece
GNU libc, a nie tej z dwch pozostaych pakietw. Gdyby chcia uruchomi ktry
z tych pakietw, instrukcje zawarte w tym rozdziale mog nie wystarczy. Dodatkowych informacji szukaj w dokumencie NIS-HOWTO lub w ksice Managing NFS
and NIS autorstwa Hala Sterna (wyd. O'Reilly).

Poznawanie NIS-a
Swoj baz z informacjami NIS przechowuje w plikach zwanych mapami (ang.
maps), ktre z kolei zawieraj pary klucz-warto. Przykad pary klucz-warto to
nazwa uytkownika i zaszyfrowana posta jego hasa. Plik jest przechowywany na
centralnym hocie, na ktrym dziaa serwer NIS-a i z ktrego klienty mog pobiera
informacje, uywajc rnych wywoa RPC. Czsto mapy s przechowywane
w plikach DBM****.
*
**

Ze Swenem mona si skontaktowa pod adresem swen@uni-paderborn.de. Klienty NIS-a s dostpne


w pakiecie yp-linux.tar.gz pod adresem metalab.unc.edu w katalogu system/Network.
Z Peterem mona si skontaktowa pod adresem pen@lysator.liu.se. Obecna wersja NYS to 1.2.8.

*** Z Thorstenem mona si skontaktowa pod adresem kukuk@uni-paderborn.de).


**** DBM to prosta biblioteka do zarzdzania bazami danych, wykorzystujca techniki mieszajce do
przypieszenia operacji wyszukiwania. Istnieje darmowa implementacja DBM stworzona w ramach
projektu GNU. Nosi ona nazw gdbm i jest czci wikszoci dystrybucji Linuksa.

Poznawanie NIS-a

231

Same mapy s zwykle generowane na podstawie gwnych plikw tekstowych, takich jak /etc/hosts czy /etc/passwd. Niektre pliki potrzebuj po kilka map, po jednej
dla kadego typu klucza poszukiwa. Na przykad w pliku hosts moesz poszukiwa
nazwy hosta lub adresu IP. W zwizku z tym na jego podstawie s tworzone dwie mapy NIS o nazwach hosts.byname i hosts.byaddr. Tabela 13-1 pokazuje powszechnie
uywane mapy i pliki, na podstawie ktrych s one tworzone.
Tabela 13-1. Niektre standardowe mapy NIS-a i odpowiadajce im pliki
Plik gwny

Map(y)

Opis

/etc/hosts

hosts.byname,
hosts.byaddr
networks.byname,
networks.byaddr
passwd.byname,
passwd.byuid
group.byname,
group.bygid
services.byname,
services.bynumber
rpc.byname,
rpc.bynumber
protocols.byname,
protocols.bynumber
mail.aliases

Odwzorowuje adresy IP na nazwy hostw.

/etc/networks
/etc/passwd
/etc/group
/etc/services
/etc/rpc
/etc/protocols
/usr/lib/aliases

Odwzorowuje adresy sieci na ich nazwy.


Odwzorowuje zaszyfrowane hasa na nazwy
uytkownikw.
Odwzorowuje ID grupy na jej nazw.
Odwzorowuje opisy usug na ich nazwy.
Odwzorowuje numery usug Sun RPC na nazwy
usug RPC.
Odwzorowuje numery protokow na ich nazwy.
Odwzorowuje aliasy pocztowe na nazwy aliasw
pocztowych.

Pakiety NIS obsuguj take inne pliki i mapy. Zawieraj one zwykle informacje dla
aplikacji nie omawianych w tej ksice, tak jest mapa bootparams uywana przez
serwer Suna bootparamd.
Dla niektrych map powszechnie uywa si skrtw, ktre s atwiejsze do wpisywania. Naley jednak pamita, e jedynie ypcat i ypmatch dwa narzdzia sprawdzajce konfiguracj NIS-a potrafi rozwizywa te skrty. Aby uzyska pen list skrtw interpretowanych przez te narzdzia, uruchom nastpujce polecenie:
$ ypcat -x
Use "passwd" for "passwd.byname"
Use "group" for "group.byname"
Use "networks" for "networks.byaddr"
Use "hosts" for "hosts.byaddr"
Use "protocols" for "protocols.bynumber"
Use "services" for "services.byname"
Use "aliases" for "mail.aliases"
Use "ethers" for "ethers.byname"

Program serwera NIS jest tradycyjnie nazywany ypserv. Pojedynczy serwer zwykle
wystarcza dla sieci rednich rozmiarw. W duych sieciach moesz zdecydowa si
na uruchomienie kilku serwerw na rnych komputerach i w rnych segmentach
sieci, aby rozoy obcienie pomidzy serwerami i ruterami. Serwery s synchro-

232

Rozdzia 13: System informacji sieciowej

nizowane przez wybranie jednego serwera gwnego (ang. master server) i ustawienie
pozostaych serwerw jako podrzdnych (ang. slave servers). Mapy s tworzone tylko
na serwerze gwnym. Z niego s dystrybuowane do serwerw podrzdnych.
Dosy skrtowo omwilimy pojcie sieci. W NIS-ie istnieje wany termin na
okrelenie zbioru wszystkich hostw, ktre maj wspln konfiguracj rozpowszechnian przez NIS: domena NIS. Jednak domeny NIS nie maj nic wsplnego z domenami, ktre spotkalimy przy omawianiu DNS-u. Aby unikn dwuznacznoci,
w tym rozdziale zawsze bdziemy wskazywa typ domeny, o ktrej mwimy.
Domeny NIS peni funkcj czysto administracyjn. S w zasadzie niewidoczne dla
uytkownikw, z wyjtkiem dzielenia hase pomidzy wszystkimi maszynami
w domenie. Dlatego nazwa nadana domenie NIS jest istotna tylko dla administratorw. Zwykle moe to by dowolna nazwa: chodzi tylko o to, aby bya inna ni nazwy
pozostaych domen NIS w twojej sieci lokalnej. Na przykad administrator browaru
wirtualnego moe stworzy dwie domeny NIS, jedn dla samego browaru, a drug
dla winiarni. Mgby nada im odpowiednio nazwy brewery i winery. Innym powszechnie stosowanym schematem jest po prostu uywanie nazw domenowych
DNS take dla NIS-a.
Aby nada nazw domenie NIS, do ktrej naley twj host, i j wywietli, moesz
uy polecenia domainname. Wywoanie bez argumentw powoduje wypisanie aktualnej nazwy domeny NIS. Aby nada nazw domenie, musisz uzyska prawa
uytkownika uprzywilejowanego:
# domainname brewery

Domeny NIS okrelaj, do ktrego serwera NIS bd wysyane zapytania. Na


przykad program login na hocie winiarni powinien oczywicie wysya zapytania
o haso uytkownika tylko do serwera NIS winiarni (lub jednego z nich, jeeli jest ich
kilka), natomiast aplikacja dziaajca na hocie browaru powinna trzyma si serwera nalecego do browaru.
Pozostaa jeszcze jedna zagadka do wyjanienia: skd klient wie, z ktrym serwerem
ma si poczy? Najprostsze rozwizanie to uycie pliku konfiguracyjnego, w ktrym znajduje si nazwa hosta, na ktrym dziaa serwer. Jednak podejcie to jest mao
elastyczne, poniewa nie pozwala klientom na uywanie rnych serwerw (z tej samej domeny oczywicie) w zalenoci od ich dostpnoci. Dlatego implementacje
NIS-a opieraj si na specjalnym demonie ypbind, dziki ktremu mona wykry odpowiedni serwer NIS w danej domenie. Przed wysaniem zapyta NIS, aplikacja
najpierw ustala za pomoc ypbind, ktrego serwera ma uywa.
ypbind znajduje serwery przez rozgaszanie zapytania w lokalnej sieci IP. Pierwszy
serwer, ktry odpowie, jest uznawany za najszybszy i wykorzystywany we wszystkich kolejnych zapytaniach NIS. Po pewnym czasie ypbind ponownie szuka aktywnych serwerw. Robi tak rwnie, jeeli serwer nie jest dostpny.
Dynamiczne przypisywanie jest przydatne tylko wtedy, gdy twoja sie udostpnia
wicej ni jeden serwer NIS. Trzeba jednak pamita, e zagraa bezpieczestwu.
ypbind na lepo wierzy temu, kto odpowie, bez wzgldu na to, czy jest to oficjalny
serwer NIS, czy zoliwy intruz. Nie trzeba mwi, e jest to szczeglnie niebez-

NIS strona klienta

233

pieczne, jeeli za pomoc NIS-a zarzdzasz bazami danych hase. Aby uchroni si
przed kopotami, linuksowy program ypbind posiada opcj szukania serwera NIS
w sieci lokalnej lub podania nazwy hosta, na ktrym dziaa serwer NIS, w pliku konfiguracyjnym.

NIS kontra NIS+


Cel i nazwa to jedyne rzeczy, ktre cz NIS-a i NIS+. NIS+ jest zbudowany zupenie inaczej ni NIS. Zamiast paskiej przestrzeni nazw z chaotycznymi domenami
NIS-a, NIS+ wykorzystuje hierarchiczn struktur nazw podobn do DNS-u. Zamiast map, uywane s tak zwane tabele, ktre skadaj si z wierszy i kolumn. Kady wiersz zawiera obiekt z bazy danych NIS+, a kada kolumna opisuje wasnoci
obiektu NIS+. Kada tabela dla danej domeny NIS+ zawiera dane z domeny nadrzdnej. Ponadto wpis w tabeli moe zawiera dowizanie do innej tabeli. Te funkcje
umoliwiaj porzdkowanie informacji na wiele sposobw.
NIS+ dodatkowo obsuguje bezpieczne i szyfrowane RPC, co znacznie pomaga
w rozwizywaniu problemw z bezpieczestwem, ktre ujawniy si w przypadku
NIS-a.
Tradycyjny NIS uywa RPC w wersji 2, natomiast NIS+ w wersji 3. W czasie pisania tej ksiki nie ma jeszcze dobrze dziaajcej implementacji NIS+ dla Linuksa, dlatego nie powicamy wicej miejsca temu tematowi.

NIS strona klienta


Jeeli znasz si na pisaniu lub przenoszeniu aplikacji sieciowych, zapewne zauwaye, e wikszo przedstawionych map NIS odpowiada funkcjom bibliotecznym
z biblioteki C. Na przykad, aby uzyska informacje o passwd, uywasz funkcji getpwnam i getpwuid, zwracajcych informacje o koncie zwizane odpowiednio z dan
nazw uytkownika lub jego ID. W normalnych warunkach funkcje te realizuj
przeszukiwanie standardowego pliku, na przykad /etc/passwd.
Implementacja tych funkcji uwzgldniajca NIS-a modyfikuje jednak to zachowanie
przez dodanie do serwera NIS wywoania RPC, ktre szuka nazwy uytkownika lub
jego ID. Dzieje si to niewidocznie dla aplikacji. Funkcja moe traktowa dane NIS
tak, jakby byy zawarte w oryginalnym pliku passwd, a wic oba zestawy informacji
s dostpne dla aplikacji i przez ni wykorzystywane, lub tak, jakby zupenie zastpoway dane w passwd i wtedy je ignoruje, a wykorzystuje tylko dane NIS.
W tradycyjnych implementacjach NIS-a obowizyway pewne ustalenia co do tego,
kiedy mapy byy zastpowane innymi, a kiedy dodawane do oryginalnych informacji.
Niektre mapy, takie jak passwd, wymagay modyfikacji pliku passwd. Jeeli zostaa ona
wykonana niepoprawnie, tworzyy si dziury w bezpieczestwie. Aby unikn tych
puapek, NYS i GNU libc wykorzystuj oglny schemat konfiguracji okrelajcy, czy
dany zestaw funkcji klienta uywa oryginalnych plikw, plikw NIS czy NIS+ i w jakiej kolejnoci. Ten schemat bdzie opisany w dalszej czci tego rozdziau.

234

Rozdzia 13: System informacji sieciowej

Eksploatowanie serwera NIS


Do ju tej teoretycznej paplaniny. Czas przyjrze si, jak dziaa rzeczywista konfiguracja. W tym podrozdziale omwimy konfiguracj serwera NIS. Jeeli serwer
NIS ju dziaa w twojej sieci, nie musisz tworzy wasnego i moesz bez szkody dla
siebie pomin ten podrozdzia.
Pamitaj, e jeeli zamierzasz eksperymentowa z serwerem, musisz uwaa, by nie
zdublowa nazwy domeny NIS. Mogoby doj do awarii usugi w caej sieci. Nie
mwic ju o zdenerwowaniu wspuytkownikw.
Istniej dwie moliwe konfiguracje serwera NIS: jako serwera gwnego i jako podrzdnego. Konfiguracja serwera podrzdnego daje dziaajcy komputer zapasowy na wypadek, gdyby serwer gwny uleg awarii. Omwimy tutaj jedynie konfiguracj serwera
gwnego. Dokumentacja serwera wyjania rnice midzy tymi dwoma konfiguracjami, a wic zajrzyj do niej, gdyby musia skonfigurowa serwer podrzdny.
Obecnie istniej dwa darmowe serwery NIS dostpne dla Linuksa: jeden zawarty
w pakiecie yps Tobiasa Rebera i drugi w pakiecie ypserv Petera Erikssona. Nie gra
roli, ktry z nich uruchomisz.
Po zainstalowaniu programu serwera (ypserv) w katalogu /usr/sbin, powiniene
stworzy katalog, w ktrym bd przechowywane pliki map rozpowszechniane
przez twj serwer. Przy konfigurowaniu domeny NIS dla domeny brewery, mapy
bd umieszczone w katalogu /var/yp/brewery. Zanim serwer zdecyduje si obsugiwa konkretn domen, sprawdza, czy istnieje jej katalog map. Jeeli wyczasz
usug dla jakiej domeny NIS, pamitaj o usuniciu katalogu.
Mapy zwykle s przechowywane w plikach DBM, aby przypieszy poszukiwania.
Tworzone s na podstawie plikw gwnych za pomoc programu makedbm (dla serwera Tobiasa) lub dbmload (dla serwera Petera).
Przeksztacanie pliku gwnego do postaci, ktr moe zrozumie dbmload, zwykle
wymaga pewnych magicznych polece awk i sed, ktre s mczce przy wpisywaniu
i trudne do zapamitania. Dlatego pakiet Petera Erikssona, ypserv, zawiera plik Makefile (nazwany ypMakefile), ktry realizuje t konwersj dla wikszoci plikw
gwnych. Powiniene zainstalowa go pod nazw Makefile w katalogu map i dokona edycji, aby uwzgldnia mapy NIS-a, ktre chcesz wspdzieli. Na pocztku
pliku znajdziesz cel all, ktry zawiera usugi oferowane przez ypserv. Domylnie
wiersz wyglda tak:
all: ethers hosts networks protocols rpc services passwd group netid

Jeeli na przykad nie chcesz generowa map ethers.byname i ethers.byaddr, po prostu


usu ethers z tej reguy. Aby przetestowa swoj konfiguracj, moesz zacz od
jednej lub dwch map, na przykad services.*.
Po edycji pliku Makefile, bdc w katalogu map, wpisz make. Spowoduje to automatyczne wygenerowanie i zainstalowanie map. Musisz pamita o ich uaktualnianiu
po kadej zmianie dokonanej w plikach gwnych. W przeciwnym razie zmiany nie
bd widoczne w sieci.

Bezpieczestwo serwera NIS

235

Podrozdzia Konfigurowanie klienta NIS z GNU libc wyjania, jak skonfigurowa kod
klienta NIS. Jeeli twoja konfiguracja nie dziaa, powiniene sprbowa dowiedzie
si, czy twoje zapytania docieraj do serwera. Jeeli podasz opcj --debug w wywoaniu polecenia ypserv, wypisze ono na konsoli komunikaty o wszystkich przychodzcych zapytaniach NIS i zwracanych wynikach. Tam powiniene znale
wskazwk, gdzie ley problem. Serwer Tobiasa nie ma tej opcji.

Bezpieczestwo serwera NIS


Z punktu widzenia bezpieczestwa NIS ma podstawow wad: plik passwd jest dostpny praktycznie dla kadego w caym Internecie, czyli rwnie dla sporej liczby
potencjalnych intruzw. Kiedy intruz wie, jak nazywa si twoja domena NIS, i zna
adres serwera, moe po prostu wysa zapytanie o map passwd.byname i natychmiast
uzyska wszystkie hasa z twojego systemu (w postaci zaszyfrowanej). Z pomoc
szybkiego programu do amania hase, jak crack, i dobrego sownika, odgadnicie
hase, przynajmniej kilku uytkownikw, nie stanowi problemu.
Tu wanie przydaje si opcja securenets. Na podstawie adresw IP lub numerw sieci zezwala na dostp do twojego serwera NIS tylko pewnym hostom. Ostatnia wersja ypserv implementuje t funkcj na dwa sposoby. Pierwszy opiera si na specjalnym pliku konfiguracyjnym /etc/ypserv.securenets, a drugi uywa odpowiednich plikw /etc/hosts.allow i /etc/hosts.deny, ktre omwilimy w rozdziale 12, Wane funkcje
sieciowe*. Aby wic ograniczy dostp do hostw z browaru, administrator sieci powinien doda poniszy wiersz do pliku hosts.allow:
ypserv: 172.16.2.

Pozwoli to wszystkim hostom o adresach IP 172.16.2.0 na dostp do serwera NIS.


Aby zabroni dostpu wszystkim pozostaym hostom, musisz umieci w pliku
hosts.deny nastpujcy wpis:
ypserv: ALL

Numery IP nie s jedynym sposobem na okrelenie hostw (lub sieci) w pliku


hosts.allow i hosts.deny. Szczegy znajdziesz na stronie podrcznika hosts_access(5)
w twoim systemie. Jednak pamitaj, e nie moesz uywa nazw hosta lub domen we
wpisie ypserv. Jeeli podasz nazw hosta, serwer bdzie prbowa j rozwiza,
ale resolver z kolej wywoa ypserv i wejdziesz w nieskoczon ptl.
Aby skonfigurowa bezpieczestwo securenets za pomoc metody /etc/ypserv.
securenets, musisz stworzy plik konfiguracyjny /etc/ypserv.securenets. Ten plik konfiguracyjny ma prost struktur. Kady wiersz opisuje host lub sie, ktre maj dostp
do serwera. Wszelkie adresy nie opisane przez wpisy w tym pliku nie bd miay
dostpu do serwera. Wiersz rozpoczynajcy si do znaku # bdzie traktowany jako
komentarz. Przykad 13-1 pokazuje, jak wyglda prosty plik /etc/ypserv.securenets.

Wczenie metody /etc/hosts.allow moe wymaga ponownej kompilacji serwera. Przeczytaj instrukcje
zawarte w pliku README doczonym do pakietu dystrybucyjnego.

236

Rozdzia 13: System informacji sieciowej

Przykad 13-1. Przykadowy plik ypserv.securenets


# dopuszczenie pocze z lokalnego hosta - potrzebne
host 127.0.0.1
# to samo co 255.255.255.255 127.0.0.1
#
# dopuszczenie pocze z dowolnego hosta z sieci browaru
# wirtualnego
255.255.255.0 172.16.1.0
#

Pierwszy wpis w kadym wierszu to maska sieci, a sowo kluczowe host jest traktowane jako "maska sieci 255.255.255.255. Drugi wpis w kadym wierszu to adres
IP, ktrego dotyczy maska sieci.
Trzecia moliwo to uycie bezpiecznego portmappera zamiast securenets w ypserv.
Bezpieczny portmapper (portmap-5.0) wykorzystuje take schemat hosts.allow, ale
udostpnia go dla wszystkich serwerw RPC, a nie tylko dla ypserv*. Jednak nie powiniene uywa jednoczenie opcji securenets i bezpiecznego portmappera, poniewa
spowoduje to nadmiar uwierzytelniania.

Konfigurowanie klienta NIS z GNU libc


Opiszemy teraz i omwimy konfiguracj klienta NIS-a wykorzystujcego bibliotek
GNU libc.
Pierwszym krokiem powinno by powiadomienie klienta NIS, ktrego serwera ma
uywa. Wspomnielimy wczeniej, e to ypbind dla Linuksa pozwala ci na skonfigurowanie waciwego serwera NIS. Domylne zachowanie polega na szukaniu serwera w sieci lokalnej. Jeeli istnieje prawdopodobiestwo, e konfigurowany host (na
przykad laptop) bdzie przenoszony z jednej domeny do drugiej, powiniene pozostawi plik /etc/yp.conf pusty i poszukiwa serwera w sieci lokalnej.
Bezpieczniejsza konfiguracja hostw polega na ustawieniu nazwy serwera w pliku
konfiguracyjnym /etc/yp.conf. Bardzo prosty plik dla hosta z sieci winiarni moe
wyglda tak:
# yp.conf - Konfiguracja YP dla biblioteki GNU libc
#
ypserver vbardolino

Dyrektywa ypserver mwi twojemu hostowi, by uywa podanej nazwy jako serwera NIS dla domeny lokalnej. W tym przykadzie podalimy serwer NIS vbardolino. Oczywicie w pliku hosts musi znajdowa si adres IP odpowiadajcy vbardolino. Moesz rwnie uy samego adresu IP jako argumentu server.
W postaci pokazanej w przykadzie polecenie ypserver informuje ypbind, aby uywao serwera o zadanej nazwie bez wzgldu na to, jaka jest aktualna domena NIS. Jeeli jednak czsto przenosisz swj komputer pomidzy rnymi domenami NIS,
warto zachowa w pliku yp.conf informacje o serwerach dla kilku domen. Umiesz*

Bezpieczny portmapper jest dostpny przez anonimowy serwer FTP pod adresem ftp.win.tue.nl w katalogu /pub/security/

Konfigurowanie klienta NIS z GNU libc

237

czasz je tam za pomoc dyrektywy domain. Na przykad mgby zmieni poprzedni przykadowy plik, aby dla laptopa wyglda tak:
# yp.conf - Konfiguracja YP dla biblioteki GNU libc
#
domain winery server vbardolino
domain brewery server vstout

Pozwala ci to podczy laptopa do dowolnej z dwch domen przez ustawienie


w czasie inicjacji komputera odpowiedniej domeny NIS poleceniem domainname.
Klient NIS uywa serwera odpowiedniego dla danej domeny.
Istnieje trzecia moliwo, ktra moe si przyda. Dotyczy sytuacji, gdy nie znasz
ani nazwy, ani adresu IP serwera uywanego w okrelonej domenie, ale obstajesz
przy uywaniu staej nazwy w pewnych domenach. Wyobramy sobie, e chcemy
wymusi korzystanie z zadanego serwera w domenie winiarni, ale w domenie browaru chcemy szuka serwera w sieci. Moglibymy zmodyfikowa nasz plik yp.conf
do takiej postaci:
# yp.conf - Konfiguracja YP dla biblioteki GNU libc
#
domain winery server vbardolino
domain brewery broadcast

Sowo kluczowe broadcast mwi ypbind, by uywa w domenie dowolnego, znalezionego serwera NIS.
Po stworzeniu tego podstawowego pliku konfiguracyjnego i upewnieniu si, e jest
on czytelny dla wszystkich, powiniene wykona swj pierwszy test podczenia si
do serwera. Sprawd, czy korzystasz z map rozpowszechnianych przez twj serwer,
jak hosts.byname, i sprbuj je odczyta za pomoc narzdzia ypcat:
# ypcat hosts.byname
172.16.2.2
vbeaujolais.vbrew.com
172.16.2.3
vbardolino.vbrew.com
172.16.1.1
vlager.vbrew.com
172.16.2.1
vlager.vbrew.com
172.16.1.2
vstout.vbrew.com
172.16.1.3
vale.vbrew.com
172.16.2.4
vchianti.vbrew.com

vbeaujolais
vbardolino
vlager
vlager
vstout
vale
vchianti

Uzyskany wynik powinien przypomina to, co pokazalimy powyej. Jeeli pojawi


si komunikat bdu o treci Can't bind to server which serves domain, to
albo ustawiona przez ciebie nazwa domeny NIS nie ma serwera zdefiniowanego
w pliku yp.conf, albo serwer z jakiego powodu jest nieosigalny. W tym drugim
przypadku sprawd, czy ping do hosta daje pozytywny wynik, i czy serwer NIS rzeczywicie dziaa. Moesz to sprawdzi, uywajc polecenia rpcinfo, ktre powinno pokaza nastpujcy wynik:
# rpcinfo -u serwer ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting

238

Rozdzia 13: System informacji sieciowej

Wybr odpowiednich map


Jeeli jeste w stanie skomunikowa si z serwerem NIS, musisz zdecydowa, ktre
pliki konfiguracyjne zastpi innymi, a do ktrych doda mapy NIS-a. Przewanie
bdziesz chcia uywa dwch map NIS-a: do przeszukiwania hostw i do przeszukiwania hase. Pierwsza jest szczeglnie przydatna, jeeli nie masz usugi nazewniczej BIND. Druga pozwala na logowanie si wszystkich uytkownikw na konta
z dowolnego systemu nalecego do domeny NIS. Ma to szczeglne znaczenie, jeeli posiadasz centralny katalog /home, ktry hosty wspdziel przez NFS. Mapa hase zostanie szczegowo omwiona w nastpnym podrozdziale.
Inne mapy, takie jak services.byname, nie daj tak znacznych korzyci, ale pozwalaj
zaoszczdzi nieco pracy edycyjnej. Mapa services.byname jest cenna, jeeli instalujesz jakie aplikacje sieciowe wykorzystujce usugi o nazwach, ktrych nie ma
w standardowym pliku services.
Zapewne chciaby mie jaki wybr pomidzy tym, czy funkcja wyszukiwania uywa plikw lokalnych, zapytuje serwer NIS, czy uywa innych serwerw, jak np.
DNS. GNU libc pozwala ci skonfigurowa kolejno, w ktrej funkcja uzyskuje dostp do tych usug. Jest to kontrolowane przez plik /etc/nsswitch.conf, ktrego nazwa
jest skrtem od Name Service Switch. Plik ten oczywicie nie jest ograniczony do
usugi nazewniczej. Moe zawiera wiersze dla dowolnych usug wyszukiwania danych, obsugiwanych przez GNU libc.
Poprawna kolejno usug zaley od typu danych, oferowanych przez kad
z usug. Jest mao prawdopodobne, by mapa services.byname zawieraa wpisy rnice si od tych w lokalnym pliku services bdzie jedynie miaa dodatkowe wpisy.
A wic sensowne wydaje si korzystanie z pliku lokalnego w pierwszej kolejnoci,
a sprawdzanie NIS-a tylko wtedy, gdy nazwa usugi nie zostanie znaleziona. Z drugiej strony informacje o nazwie hosta mog si czsto zmienia, a wic serwer DNS
lub NIS powinien zawsze mie aktualne informacje, natomiast plik hosts suy jedynie jako kopia zapasowa na wypadek, gdyby DNS lub NIS nie dziaay. Dlatego
w przypadku nazw hostw, zwykle plik lokalny sprawdza si na kocu.
Poniszy przykad pokazuje, jak wymusi na funkcjach gethostbyname i gethostbyaddr, by najpierw korzystay z NIS i DNS, a potem dopiero z pliku hosts, oraz jak
sprawi, by funkcja getservbyname najpierw korzystaa z plikw lokalnych, a dopiero
potem z NIS-a. Te funkcje resolvera bd kolejno wyprbowyway kad z podanych usug. Jeeli wyszukiwanie si powiedzie, zostanie zwrcony wynik. W przeciwnym razie zostanie sprawdzona kolejna usuga z listy. Konfiguracja pliku dla takiej kolejnoci wyglda nastpujco:
# may przykadowy plik /etc/nsswitch.conf
#
hosts:
nis dns files
services:
files nis

Poniej pokazano pen list usug i lokalizacji, ktre mog by uywane we wpisie
w pliku nsswitch.conf. Rzeczywiste mapy, pliki, serwery i obiekty s zapytywane

Wybr odpowiednich map

239

w zalenoci od nazwy wpisu. Elementy z poniszej listy mog pojawia si za dwukropkiem:


nis
Zastosowanie serwera aktualnej domeny NIS. Lokalizacja serwera jest definiowana w pliku yp.conf, zgodnie z opisem w poprzednim podrozdziale. W przypadku wpisu hosts przeszukiwane s mapy hosts.byname i hosts.byaddr.
nisplus lub nis+
Zastosowanie serwera NIS+ dla tej domeny. Lokalizacja serwera jest ustalana na
podstawie pliku /etc/nis.conf.
dns
Zastosowanie serwera nazw DNS. Ten typ usugi jest przydatny tylko we wpisie
hosts. Wykorzystywane serwery nazwy s wci okrelane na podstawie standardowego pliku resolv.conf.
files
Zastosowanie pliku lokalnego, na przykad /etc/hosts, dla wpisu hosts.
compat
Kompatybilno ze starymi formatami plikw. Ta opcja moe by przydatna,
gdy do poszukiwa NIS lub NIS+ jest uywany NYS lub glibc 2.x. Cho normalnie te wersje nie potrafi interpretowa starszych wpisw NIS w plikach passwd
i group, opcja compat pozwala dziaa im z tymi formatami.
db
Poszukiwanie informacji w plikach DBM umieszczonych w katalogu /var/db. Nazwa pliku jest taka sama jak odpowiadajca jej mapa NIS.
Aktualnie obsuga NIS-a w GNU libc dotyczy nastpujcych baz danych nsswitch.conf: aliases, ethers.group, hosts, netgroup, network, passwd, protocols, publickey, rpc, services i shadow. Prawdopodobnie zostan dodane
nastpne wpisy.
Przykad 13-2 pokazuje bardziej zoone wykorzystanie innej funkcji pliku nsswitch.conf. Sowo kluczowe [NOTFOUND=return] we wpisie hosts informuje klienta
NIS, by koczy poszukiwanie, jeeli dany element nie zostanie znaleziony w bazach NIS lub DNS. To znaczy, e klient NIS bdzie kontynuowa przeszukiwanie
plikw lokalnych tylko wtedy, gdy przeszukiwanie serwerw NIS i DNS si nie uda
z jakiego innego powodu. Pliki lokalne bd uywane jedynie w czasie inicjacji i jako kopia zapasowa w sytuacji, gdy serwer NIS nie dziaa.
Przykad 13-2. Przykadowy plik nsswitch.conf
# /etc/nsswitch.conf
#
hosts:
nis dns [NOTFOUND=return] files
networks:
nis [NOTFOUND=return] files
services:
files nis
protocols: files nis
rpc:
files nis

240

Rozdzia 13: System informacji sieciowej

Biblioteka GNU libc pozwala na inne moliwe dziaania. Opisano to na stronach


podrcznika elektronicznego nsswitch.

Korzystanie z map passwd i group


Jednym z gwnych zastosowa NIS-a jest synchronizowanie informacji o kontach
i uytkownikach na wszystkich hostach w domenie NIS. W rezultacie zwykle posiadasz tylko lokalny plik /etc/passwd, do ktrego s dodawane informacje z map NIS.
Jednak proste wczenie przeszukiwania NIS dla tej usugi w pliku nsswitch.conf nie
wystarczy.
Jeeli chcesz si opiera na informacjach o hasach rozpowszechnianych przez
NIS-a, najpierw musisz sprawdzi, czy ID uytkownikw w twoim lokalnym pliku
passwd s zgodne z ID uytkownikw widzianych przez serwer NIS-a. Spjno ID
uytkownikw jest take istotna dla innych celw, jak montowanie wolumenw
NFS z innych hostw w twojej sieci.
Jeeli jaki numer ID w plikach /etc/passwd lub /etc/group rni si od ID zawartego
w mapach, musisz poprawi prawa wasnoci wszystkich plikw danego uytkownika. Najpierw powiniene zmieni wszystkie wartoci uid i gid w plikach passwd
i group na nowe, a nastpnie sprawdzi, czy wszystkie pliki nalece do uytkownika maj poprawne prawa i ewentualnie zmieni ich waciciela. Zamy, e news
ma ID uytkownika 9, a okir mia przed zmian ID uytkownika 103. Jako root
mgby wyda nastpujce polecenia:
#
#
#
#

find / -uid 9 -print >/tmp/uid.9


find / -uid 103 -print >/tmp/uid.103
cat /tmp/uid.9 | xargs chown news
cat /tmp/uid.103 | xargs chown okir

Wane, by wyda te polecenia po zainstalowaniu nowego pliku passwd i by pozna


wszystkie nazwy plikw, zanim zmienisz prawa wasnoci jakiegokolwiek z nich.
Aby uaktualni prawa wasnoci plikw dla grupy, uyj podobnej metody, ale zamiast uid, zastosuj gid, a zamiast chown chgrp.
Gdy to zrobisz, numery uid oraz gid w twoim systemie bd zgodne z numerami
na pozostaych hostach w twojej domenie NIS. Kolejnym krokiem jest dodanie wierszy konfiguracyjnych do nsswitch.conf, pozwalajcych na wyszukiwanie informacji
o uytkownikach i grupach w NIS-ie.
# /etc/nsswitch.conf - obsuga passwd i group
passwd:
nis files
group:
nis files

Od tego zaley, gdzie polecenie login i wszystkie pochodne szukaj informacji


o uytkowniku. Gdy uytkownik prbuje si zalogowa, login pyta najpierw mapy
NIS, a jeeli to poszukiwanie si nie uda, powraca do plikw lokalnych. Zwykle
z plikw lokalnych usuwasz prawie wszystkich uytkownikw i pozostawiasz jedynie wpisy dla root i kont oglnych, takich jak mail. Robi si tak dlatego, e istotne zadania systemowe wymagaj przetumaczenia wartoci uid na nazwy uytkownika
lub odwrotnie. Na przykad zadania administracyjne cron mog wykonywa polece-

Korzystanie z map passwd i group

241

nie su, by tymczasowo uzyska prawa uytkownika news, lub podsystem UUCP
moe wysya raport o stanie. Jeeli news i uucp nie bd miay wpisw w lokalnym
pliku passwd, zadania nie przejd nawet przez etap przeszukiwa NIS-a.
Jeeli uywasz te starej implementacji NIS-a (obsugiwanej przez tryb compat dla
plikw passwd i group w implementacjach NYS lub glibc), musisz wstawi w plikach
passwd dziwne wpisy specjalne. Wpisy te informuj, gdzie zostan wstawione rekordy NIS w bazie informacji. Wpisy mog zosta dodane w dowolnym miejscu pliku,
zwykle na jego kocu. Wpisy dodawane do pliku /etc/passwd s nastpujce:
+::::::

a do pliku /etc/groups:
+:::

Zarwno w glibc 2.x, jak i w NYS moesz zmienia parametry w rekordzie uytkownika uzyskanym z serwera NIS, tworzc wpisy ze znakiem + umieszczonym przed
nazw uytkownika, i usuwa pewne wpisy, dodajc znak -. Na przykad wpisy:
+stuart::::::/bin/jacl
-jedd::::::

uniewani powok zdefiniowan dla uytkownika stuart na serwerze NIS i nie


pozwol uytkownikowi jedd zalogowa si na tej maszynie. Pola puste, nie wypenione, oznaczaj wykorzystanie informacji dostarczonych przez serwer NIS.
S tu jednak dwa powane zastrzeenia. Po pierwsze, opisana do tej pory konfiguracja dziaa tylko dla logowania, ktre nie wykorzystuje hase shadow. Zawioci korzystania z hase shadow w NIS-ie zostan omwione w kolejnym podrozdziale. Po
drugie, polecenia logowania nie s jedynymi, ktre dostaj si do pliku passwd porwnaj polecenie ls, ktrego wci uywa wiele osb. W penym listingu ls wywietla nazwy symboliczne uytkownika i grupy, ktrzy s wacicielami pliku. To znaczy, e w przypadku napotkania kadego uid i gid polecenie musi zada zapytanie
do serwera NIS. Zapytanie NIS trwa nieco duej, ni rwnowane przeszukiwanie pliku lokalnego. Moe si okaza, e umieszczenie w NIS-ie informacji z plikw
passwd i group znacznie zmniejsza wydajno programw, ktre czsto korzystaj
z tych informacji.
To jeszcze nie wszystko. Wyobra sobie, co si stanie, jeeli uytkownik zechce
zmieni haso. Zwykle wywouje on polecenie passwd, ktre wczytuje nowe haso i
uaktualnia lokalny plik passwd. Jest to niemoliwe w przypadku NIS-a, gdy plik nie
jest nigdzie dostpny lokalnie, a logowanie si uytkownikw do serwera NIS za kadym razem, gdy chc oni zmieni haso, nie jest take dobrym rozwizaniem. Dlatego NIS udostpnia zastpc passwd polecenie yppasswd, ktre obsuguje zmian
hasa w NIS-ie. Aby zmieni haso na serwerze, czy si ono przez RPC z demonem
yppasswdd na tym serwerze i przekazuje mu aktualne informacje o hale. Zwykle instaluje si yppasswd, zamiast normalnego polecenia passwd, w nastpujcy sposb:
# cd /bin
# mv passwd passwd.old
# ln yppasswd passwd

242

Rozdzia 13: System informacji sieciowej

W tym samym czasie musisz zainstalowa na serwerze program rpc.yppasswdd i uruchomi go ze skryptu sieciowego. Spowoduje to ukrycie przed uytkownikami
wikszoci dziaa NIS-a.

Uywanie NIS-a z obsug hase shadow


Korzystanie z NIS-a w poczeniu z plikami hase shadow jest nieco kopotliwe. Najpierw ze wiadomoci: NIS podwaa sens uywania hase shadow. Schemat hase
shadow zosta zaprojektowany po to, by zabroni uytkownikom nie posiadajcym
prawa roota dostpu do zaszyfrowanej postaci hase. Uywanie NIS-a do
wspdzielenia danych shadow powoduje konieczno udostpnienia zaszyfrowanych hase osobom, ktre podsuchuj odpowiedzi serwera NIS w sieci. Rozwizanie polegajce na zmuszaniu ludzi do wyboru dobrych hase jest zdecydowanie
lepsze, ni prba uywania hase shadow w rodowisku NIS. Przyjrzyjmy si szybko, jak to zrobi.
W libc5 nie ma prawdziwego rozwizania pozwalajcego na wspdzielenie danych
shadow za pomoc NIS-a. Jedynym sposobem na rozpowszechnianie informacji
o uytkownikach i hasach przez NIS jest uycie standardowych map passwd.*. Jeeli
masz zainstalowane hasa typu shadow, najprostszym sposobem na ich rozsyanie
jest generowanie odpowiedniego pliku passwd na podstawie /etc/shadow za pomoc
narzdzi takich, jak pwuncov, i tworzenie map NIS-a na podstawie uzyskanego pliku.
Oczywicie wymylono kilka zabiegw, ktre umoliwiaj uywanie hase shadow
i NIS-a w tym samym czasie, jak na przykad instalacja pliku /etc/shadow na kadym
hocie w sieci i dystrybuowanie informacji o uytkownikach przez NIS-a. Jednak ta
sztuczka jest naprawd prymitywna i w zasadzie zaprzecza istocie NIS-a, ktry ma
uatwia administrowanie systemem.
Obsuga NIS-a w bibliotece GNU libc (libc6) uwzgldnia hasa typu shadow. Nie zapewnia adnego rozwizania, ktre udostpniaoby hasa, ale upraszcza zarzdzanie hasami w rodowiskach, w ktrych chcesz uywa i NIS-a, i hase shadow. Aby
to zrobi, musisz stworzy baz danych shadow.byname i doda poniszy wiersz do
swojego pliku /etc/nsswitch.conf:
# Obsuga hase typu shadow
shadow:
compat

Jeli uywasz hase shadow wraz z NIS-em, musisz przestrzega pewnej zasady
bezpieczestwa i ograniczy dostp do bazy danych NIS. Przypomnij sobie podrozdzia Bezpieczestwo serwera NIS z tego rozdziau.

Sieciowy system
plikw

14

Rozdzia 14: Sieciowy system plikw

Sieciowy system plikw (Network File System NFS) jest prawdopodobnie najbardziej
znan usug opart na RPC. Pozwala ona na dostp do plikw znajdujcych si na
hocie zdalnym dokadnie w taki sam sposb, w jaki masz dostp do plikw lokalnych. Taki dostp sta si moliwy dziki poczeniu procedur obsugi w jdrze i demonw przestrzeni uytkownika po stronie klienta z serwerem NFS po stronie serwera. Jest on zupenie przezroczysty dla klienta i dziaa pomidzy rnymi architekturami serwera i hosta.
NFS oferuje szereg przydatnych funkcji:

Dane wykorzystywane przez wszystkich uytkownikw mog by przechowywa-

ne na centralnym hocie, ktrego katalogi klienty montuj w czasie uruchamiania.


Na przykad moesz przechowywa wszystkie konta uytkownikw na jednym
hocie, z ktrego bdziesz montowa katalog /home na wszystkich pozostaych. Jeeli NFS jest zainstalowany wraz z NIS-em, uytkownicy mog logowa si do
dowolnego systemu i wci pracowa na jednym zestawie plikw.
Dane zajmujce duo miejsca na dysku mog by przechowywane na jednym
hocie. Na przykad wszystkie pliki i programy zwizane z LaTeX-em i METAFONT-em mog by przechowywane i zarzdzane w jednym miejscu.
Dane administracyjne mog by przechowywane na osobnym hocie. Nie ma potrzeby uywania rcp do instalacji tego samego gupiego pliku na dwudziestu rnych komputerach.
Konfigurowanie podstawowych operacji NFS po stronie klienta i serwera nie jest
trudne. Omawia to ten rozdzia.
NFS dla Linuksa to gwnie zasuga Ricka Sladkeya*, ktry napisa kod NFS-a dla
jdra i du cz serwera NFS. Ten ostatni zosta opracowany na podstawie serwe*

Z Rickiem moesz skontaktowa si pod adresem jrs@world.std.com.

244

Rozdzia 14: Sieciowy system plikw

ra unfsd, ktrego autorem jest Mark Shand, i na podstawie serwera NFS hnfs, napisanego przez Donalda Beckera.
Przyjrzyjmy si, jak dziaa NFS. Najpierw klient prbuje zamontowa katalog z hosta zdalnego w katalogu lokalnym, tak jakby montowa fizyczne urzdzenie. Jednak
skadnia uywana do okrelenia zdalnego katalogu jest inna. Na przykad, aby zamontowa /home z hosta vlager w katalogu /user na hocie vale, administrator wydaje nastpujce polecenie na hocie vale*:
# mount -t nfs vlager:/home /users

mount podejmie prb skomunikowania si przez RPC z demonem rpc.mountd


dziaajcym na hocie vlager. Serwer sprawdzi, czy vale ma prawo zamontowa
dany katalog. Jeeli tak, zwrci uchwyt pliku. Ten uchwyt bdzie uywany we
wszystkich kolejnych odwoaniach do plikw w katalogu /users.
Gdy kto dostaje si do pliku przez NFS, jdro wysya wywoanie RPC do rpc.nfsd
(demona NFS) na maszynie serwera. To wywoanie w parametrach zawiera uchwyt
pliku, nazw pliku, do ktrego si chcemy dosta, i ID uytkownika oraz grupy tego,
kto chce si dosta. S one wykorzystywane przy ustalaniu praw dostpu do zadanego pliku. Aby uniemoliwi nieuprawnionym uytkownikom odczytywanie lub modyfikowanie plikw, ID uytkownika i grupy musz by takie same na obu hostach.
W wikszoci implementacji uniksowych zarwno po stronie klienta, jak i serwera
NFS dziaa w formie demonw jdra uruchamianych z przestrzeni uytkownika
w czasie startu systemu. S to demony NFS (rpc.nfsd) na hocie serwera i demony blokowego wejcia/wyjcia (biod) na hocie klienta. Aby poprawi przepustowo, biod realizuje asynchroniczne operacje wejcia/wyjcia za pomoc algorytmw odczytu
z wyprzedzeniem (ang. read-ahead) i zapisywania z opnieniem (ang. write-behind).
Ponadto kilka demonw rpc.nfsd zwykle dziaa jednoczenie.
Aktualna implementacja NFS-a dla Linuksa rni si od klasycznego NFS-a, w ktrym kod serwera dziaa cakowicie w przestrzeni uytkownika, a wic uruchomienie kilku kopii jednoczenie jest nieco bardziej skomplikowane. Aktualna implementacja rpc.nfsd oferuje eksperymentaln funkcj pozwalajc na ograniczenie
obsugi dla wielu serwerw. W jdrach serii 2.2 Olaf Kirch stworzy serwer NFS
oparty na jdrze. Jego wydajno jest znacznie lepsza ni istniejcych implementacji
opartych na przestrzeni uytkownika. Opiszemy go w dalszej czci rozdziau.

Przygotowanie NFS-a
Zanim bdziesz mg uy NFS-a, czy to serwera, czy klienta, musisz sprawdzi, czy
twoje jdro jest skompilowane z jego obsug. Nowsze jdra maj prosty interfejs
oparty na systemie plikw /proc; plik /proc/filesystems, moesz wywietli za pomoc cat:
$ cat /proc/filesystems
minix
ext2
*

W rzeczywistoci moesz pomin argument -t nfs, poniewa z dwukropka mount wnioskuje, e


chodzi o wolumen NFS.

Montowanie wolumenu NFS

245

msdos
nodev proc
nodev nfs

Jeeli na tej licie brakuje nfs, musisz skompilowa jdro z obsug NFS-a lub zaadowa modu, jeeli obsuga NFS-a zostaa skompilowana w postaci moduu. Konfigurowanie opcji jdra wyjaniono w podrozdziale Konfigurowanie jdra w rozdziale 3,
Konfigurowanie sprztu sieciowego.

Montowanie wolumenu NFS


Montowanie wolumenw NFS przypomina do zudzenia montowanie normalnych
systemw plikw. Wywoaj mount, uywajc nastpujcej skadni:
# mount -t nfs wolumen_nfs katalog_lokalny opcje

wolumen_nfs jest okrelany nastpujco: zdalny_host:zdalny_katalog. Poniewa ten zapis jest unikatowy dla systemw plikw NFS, moesz nie stosowa
opcji t nfs.
Istnieje szereg dodatkowych opcji, ktre moesz poda w poleceniu mount przy
montowaniu wolumenu NFS. Mog by one podane zarwno z przecznikiem o
w wierszu polece, jak i w polu opcji wpisu /etc/fstab dla wolumenu. W obu przypadkach opcje s oddzielone przecinkami i nie mog zawiera biaych znakw. Opcje
okrelone w wierszu polece zawsze maj wyszy priorytet, ni te podane w pliku
fstab.
Oto przykadowy wpis w pliku /etc/fstab:
# wolumen
punkt montowania
news:/var/spool/news
/var/spool/news

typ
nfs

opcje
timeo=14,intr

Z kolei wolumen moe zosta zamontowany poleceniem:


# mount news:/var/spool/news

W przypadku braku wpisu w pliku fstab, wywoanie mount wyglda duo gorzej. Na
przykad zamy, e montujesz katalogi macierzyste swoich uytkownikw z komputera o nazwie moonshot, ktry wykorzystuje domylny rozmiar bloku (4 KB) dla
operacji odczytu i zapisu. Za pomoc poniszego polecenia moesz zwikszy rozmiar bloku do 8 KB, by uzyska lepsz wydajno:
# mount moonshot:/home /home -o rsize=8192,wsize=8192

Lista wszystkich dopuszczalnych opcji znajduje si na stronie podrcznika elektronicznego nfs(5). Poniej pokazano skrcon list opcji, ktrych prawdopodobnie bdziesz najczciej uywa:
rsize=n i wsize=n
Okrelaj rozmiar datagramu uywanego przez klientw NFS, odpowiednio
w daniach odczytu i zapisu. Domylna warto zaley od wersji jdra, ale zwykle wynosi 1024 bajty.

246

Rozdzia 14: Sieciowy system plikw

timeo=n
Wskazuje, ile czasu (w dziesitych czciach sekundy) klient NFS czeka na zakoczenie dania. Domylna warto wynosi 7 (0,7 sekundy). To, co si dzieje po
upyniciu tego czasu, zaley od tego, czy uywasz opcji hard czy soft.
hard
Jawnie oznacza wolumen jako zamontowany na stae. Jest wczona domylnie.
Opcja powoduje, e serwer zgasza na konsoli komunikat, gdy nie uda si mu dosta do wolumenu po upyniciu dugiego czasu oczekiwania, i wci prbuje si
do niego dosta.
soft
Ta opcja (w przeciwiestwie do montowania na stae) powoduje, e gdy upynie
dugi czas oczekiwania, do procesu prbujcego wykona operacj na pliku jest
zgaszany bd wejcia/wyjcia.
intr
Pozwala sygnaom przerywa wywoanie NFS. Przydatne do przerywania
dziaania, jeeli serwer nie odpowiada.
Wszystkie opcje, poza rsize i wsize, dotycz zachowania klienta w sytuacji, gdy serwer jest chwilowo niedostpny. Dziaaj razem w nastpujcy sposb: gdy klient
wysya danie do serwera NFS, oczekuje, e operacja zostanie zakoczona po zadanym okresie czasu (okrelonym w opcji timeout). Jeeli przez ten czas nie uzyska potwierdzenia, nastpuje tak zwany krtki czas oczekiwania (ang. minor timeout): operacja jest powtarzana, ale teraz jej czas oczekiwania jest dwukrotnie duszy. Jeli warto czasu oczekiwania dojdzie do 60 sekund, nastpuje dugi czas oczekiwania (ang.
major timeout).
Domylnie dugi czas oczekiwania powoduje, e klient wypisuje na konsoli komunikat i rozpoczyna oczekiwanie od nowa, tym razem pierwszy czas oczekiwania jest
dwukrotnie duszy od poprzedniego. Potencjalnie ten czas bdzie si wydua
w nieskoczono. Wolumeny, w odniesieniu do ktrych operacje s uparcie wykonywane powtrnie, s nazywane zamontowanymi na stae (ang. hard-mounted).
W przeciwiestwie do nich, wolumeny zamontowane nietrwale (ang. soft-mounted) generuj bd wejcia/wyjcia dla wywoujcego procesu, gdy wystpi dugi czas
oczekiwania. Poniewa bufor pamici podrcznej jest zapisywany z opnieniem,
warunek bdu nie jest dostarczany do samego procesu przed wywoaniem nastpnej funkcji write, a wic program moe w ogle nigdy nie uzyska pewnoci, e operacja zapisu na wolumen zamontowany nietrwale zakoczya si poprawnie.
To, czy montujesz wolumeny jako zamontowane na stae, czy jako nietrwae zaley
w duej mierze od twoich upodoba, ale take od typu informacji, ktre si na nich
znajduj. Na przykad, jeeli zamontujesz programy X przez NFS, pewnie nie bdziesz chcia, by twoja X-sesja zostaa przerwana dlatego, e kto zatrzyma ruch
w sieci, bo uruchomi wanie siedem kopii Dooma lub wycign na chwil wtyczk
Ethernet. W przypadku wolumenu zamontowanego na stae masz pewno, e
komputer bdzie czeka, a zaistnieje moliwo ponownego skontaktowania si
z serwerem NFS. Z drugiej strony, mao potrzebne dane, takie jak zamontowane

Demony NFS

247

przez NFS partycje z grupami dyskusyjnymi czy archiwami FTP, mona montowa
w sposb nietrway, tak e gdy zdalny host bdzie tymczasowo nieosigalny lub
wyczony, nie zawiesi twojej sesji. Jeeli poczenie sieciowe z serwerem jest niestabilne lub przechodzi przez obciony ruter, moesz zwikszy wstpny czas oczekiwania za pomoc opcji timeo lub zamontowa wolumen na stae. Wolumeny NFS s
domylnie montowane na stae.
Montowanie na stae stanowi problem, poniewa domylnie operacje na pliku nie s
przerywalne. Tak wic, jeeli proces na przykad prbuje zapisa do zdalnego serwera, a ten jest nieosigalny, aplikacja uytkownika zawiesza si i uytkownik nie
moe nic zrobi, by przerwa operacj. Jeeli uyjesz opcji intr w poczeniu z montowaniem na stae, wszelkie sygnay odebrane przez proces przerywaj wywoanie
NFS, tak e uytkownicy mog wci przerwa zawieszone dostpy do plikw i pracowa dalej (cho bez zapisania pliku).
Zwykle demon rpc.mountd w jaki sposb pilnuje, ktre katalogi zostay zamontowane
i przez jakie hosty. Informacj t mona wywietli, uywajc programu showmount,
ktry jest take doczony do pakietu serwera NFS:
# showmount -e moonshot
Export list for localhost:
/home <anon clnt>
# showmount -d moonshot
Directories on localhost:
/home
# showmount -a moonshot
All mount points on localhost:
localhost:/home

Demony NFS
Jeeli chcesz udostpni usug NFS innym hostom, musisz uruchomi na swoim
komputerze demony rpc.nfsd i rpc.mountd. Jako programy oparte na RPC nie s one
zarzdzane przez inetd, ale s uruchamiane w czasie startu systemu i rejestruj si
w portmapperze. Dlatego moesz je uruchamia tylko, jeeli masz pewno, e
dziaa rpc.portmap. Zwykle w jednym ze swoich skryptw uruchamiajcych sie powiniene mie co takiego:
if [ -x /usr/sbin/rpc.mountd ]; then
/usr/sbin/rpc.mountd; echo -n " mountd"
fi
if [ -x /usr/sbin/rpc.nfsd ]; then
/usr/sbin/rpc.nfsd; echo -n " nfsd"
fi

Informacje o prawach wasnoci plikw udostpnianych klientom przez demona


NFS zwykle zawieraj numeryczne wartoci ID uytkownika i grupy. Jeeli zarwno klient, jak i serwer kojarz te same nazwy uytkownika i grupy z ich wartociami
numerycznymi ID, mwi si, e maj wspln przestrze uid/gid. Na przykad jest

248

Rozdzia 14: Sieciowy system plikw

tak w sytuacji, gdy uywasz NIS-a do rozpowszechniania informacji passwd do


wszystkich hostw swojej sieci lokalnej.
Jednak w pewnych sytuacjach ID na rnych hostach nie zgadzaj si ze sob. Zamiast uaktualnia uid i gid klienta, tak by pasoway do uywanych przez serwer,
moesz uy demona mapowania rpc.ugidd, ktry wyrwna rozbienoci w odwzorowaniach. Korzystajc z opcji map_daemon (wyjanionej nieco dalej), moesz zmusi
rpc.nfsd, by odwzorowa przestrze uid/gid serwera na przestrze uid/gid klienta
za pomoc rpc.ugidd po stronie klienta. Niestety demon rpc.ugidd nie zawsze znajduje si w dystrybucji Linuksa, a wic jeeli go potrzebujesz, a nie ma go w twojej dystrybucji, bdziesz musia skompilowa kody rdowe.
rpc.ugidd jest serwerem opartym na RPC, uruchamianym ze startowych skryptw
sieciowych, tak jak rpc.nfsd i rpc.mountd.
if [ -x /usr/sbin/rpc.ugidd ]; then
/usr/sbin/rpc.ugidd; echo -n " ugidd"
fi

Plik exports
Teraz zobaczymy, jak konfiguruje si serwer NFS. Zwaszcza przyjrzymy si, jak naley poinformowa serwer NFS, ktre systemy plikw powinien udostpnia do
montowania. Poznamy te rne parametry, ktre kontroluj dostp klientw do
systemu plikw. Serwer okrela typ dostpu do jego plikw. W pliku /etc/exports
znajduje si lista systemw plikw, ktre serwer udostpnia klientom do montowania i uytku.
Domylnie rpc.mountd nie pozwala na montowanie wszystkich katalogw, co jest raczej rozsdnym podejciem. Jeli chcesz pozwoli jednemu lub kilku hostom na
montowanie katalogu przez NFS, musisz wyeksportowa host, to znaczy wpisa go do
pliku exports. Przykadowy plik moe wyglda tak:
# plik exports dla hosta vlager
/home
vale(rw) vstout(rw) vlight(rw)
/usr/X11R6
vale(ro) vstout(ro) vlight(ro)
/usr/TeX
vale(ro) vstout(ro) vlight(ro)
/
vale(rw,no_root_squash)
/home/ftp
(ro)

Kady wiersz definiuje katalog i hosty, ktre mog go montowa. Nazwa hosta jest
zwykle podawana w postaci penej nazwy domenowej, ale moe dodatkowo zawiera znaki uniwersalne * i ?, ktre dziaaj w sposb analogiczny do powoki
Bourne'a. Na przykad do lab*.foo.com pasuje zarwno lab01.foo.com, jak i laboratory.foo.com. Host mona take wskaza za pomoc zakresu adresw IP w postaci adres/maska_sieci. Jeeli nazwa hosta nie zostanie podana, tak jak w przypadku katalogu /home/ftp w poprzednim przykadzie, oznacza to, e pasuje kady
host i kady ma prawo montowa katalog.
Przy sprawdzaniu klienta w pliku exports, rpc.mountd szuka nazwy hosta klienta za
pomoc wywoania gethostbyaddr. Jeeli uywany jest DNS, to wywoanie zwraca
kanoniczn nazw hosta klienta, a wic musisz pamita, by nie uywa aliasw

Plik exports

249

w pliku exports. W rodowisku NIS zwracan nazw jest pierwsza pasujca nazwa
z bazy danych hostw. Nigdy ani w przypadku uycia DNS-a, ani NIS-a zwracana nazwa nie jest pierwsz nazw hosta, pasujc do adresu klienta i znalezion
w pliku hosts.
Za nazw hosta nastpuje opcjonalna lista znacznikw ujtych w nawiasy; poszczeglne
elementy listy s oddzielone przecinkami. Niektre wartoci tych znacznikw to:
secure
Ten znacznik powoduje, e danie musi pochodzi z zarezerwowanego portu
rdowego, tzn. o wartoci mniejszej ni 1024. Znacznik ten jest ustawiony domylnie.
insecure
Ten znacznik dziaa odwrotnie ni znacznik secure.
ro
Ten znacznik powoduje, e wolumen NFS jest montowany jako przeznaczony
tylko do odczytu. Znacznik jest ustawiony domylnie.
rw
Ta opcja montuje pliki do odczytu i zapisu.
root_squash
Ta funkcja, zwizana z bezpieczestwem, odmawia uytkownikom uprzywilejowanym na zadanych hostach specjalnych praw dostpu przez odwzorowanie
da z uid 0 po stronie klienta na uid 65534 (tzn. 2) po stronie serwera. Ta warto uid powinna by zwizana z uytkownikiem nobody.
no_root_squash
Nie odwzorowuje da z uid 0. Ta opcja jest ustawiona domylnie, a wic uytkownicy uprzywilejowani maj nieograniczony dostp do wyeksportowanych katalogw systemu.
link_relative
Ta opcja zamienia bezwzgldne dowizania symboliczne (gdzie dowizania rozpoczynaj si od ukonika) na dowizania wzgldne. Ta opcja ma sens tylko wtedy, gdy zamontowany jest cay system plikw hosta. W przeciwnym razie niektre dowizania mog wskazywa donikd lub co gorsza, na pliki, ktrych
nigdy nie miay wskazywa. Ta opcja jest domylnie wczona.
link_absolute
Ta opcja pozostawia dowizania symboliczne bez zmian (normalne zachowanie
serwerw NFS firmy Sun).
map_identity
Ta opcja mwi serwerowi, by zakada, e klient uywa tych samych wartoci uid
i gid co serwer. Ta opcja jest ustawiona domylnie.
map_daemon
Ta opcja mwi serwerowi NFS, by zakada, e klient i serwer nie wspdziel tej
samej przestrzeni uid/gid. Dlatego rpc.nfsd tworzy list, ktra odwzorowuje ID

250

Rozdzia 14: Sieciowy system plikw

pomidzy klientem a serwerem, zadajc zapytania demonowi rpc.ugidd na maszynie klienta.


map_static
Ta opcja pozwala na podanie nazwy pliku, ktry zawiera statyczne odwzorowanie wartoci uid i gid. Na przykad map_static=/etc/nfs/vlight.map
wskazywaby plik /etc/nfs/vlight.map jako plik zawierajcy odwzorowania
uid/gid. Skadnia pliku odwzorowa jest opisana na stronie podrcznika elektronicznego exports(5).
maps_nis
Ta opcja powoduje, e serwer NIS-a realizuje odwzorowania uid i gid.
anonuid i anongid
Te opcje pozwalaj na okrelenie uid i gid kont anonimowych. Jest to przydatne,
jeeli masz publicznie wyeksportowany wolumen.
Wszelkie bdy przy analizie skadniowej pliku exports s zgaszane do funkcji
daemon sysloga na poziomie notice, o ile s uruchomione demony rpc.nfsd i rpc.mountd.
Zauwa, e nazwy hostw s uzyskiwane na podstawie adresw IP klienta przez
odwzorowanie odwrotne, a wic resolver musi by odpowiednio skonfigurowany.
Jeeli uywasz BIND i jeste wiadomy problemw zwizanych z bezpieczestwem, powiniene wczy w swoim pliku host.conf sprawdzanie podszywania si.
Te tematy omawiamy w rozdziale 6, Usugi nazewnicze i konfigurowanie resolvera.

Serwer NFSv2 oparty na jdrze


Tradycyjnie uywany w Linuksie serwer NFS dziaajcy w przestrzeni uytkownika
jest niezawodny, ale sprawia problemy wydajnociowe, jeeli jest przeciony.
Dzieje si tak gwnie ze wzgldu na obcienie wnoszone przez interfejs wywoa
systemowych, ale te dlatego, e musi on dzieli czas z innymi, potencjalnie mniej
istotnymi procesami dziaajcymi w przestrzeni uytkownika.
Jdro 2.2.0 obsuguje ekperymentalny serwer NFS oparty na jdrze, stworzony
przez Olafa Kircha i dalej rozwijany przez H.J. Lu, G. Allana Morrisa i Tronda Myklebusta. Serwer NFS oparty na jdrze daje zdecydowan popraw wydajnoci.
W obecnych dystrybucjach moesz znale narzdzia serwera w postaci pakietw. Jeeli ich tam nie ma, moesz je znale pod adresem http://csua.berkeley.edu/~gam3/knfsd/.
Aby uywa tych narzdzi, musisz skompilowa jdro 2.2.0 z demonem NFS opartym
na jdrze. Moesz upewni si, czy twoje jdro ma wbudowanego demona NFS, sprawdzajc, czy istnieje plik /proc/sys/sunrpc/nfsd_debug. Jeeli go nie ma, moesz zaadowa
modu rpc.nfsd, uywajc narzdzia modprobe.
Demon NFS oparty na jdrze wykorzystuje standardowy plik konfiguracyjny
/etc/exports. Pakiet zawiera zastpcze wersje demonw rpc.mountd i rpc.nfsd, ktre uruchamiasz prawie tak samo, jak ich odpowiedniki dziaajce w przestrzeni uytkownika.

Server NFSv3 oparty na jdrze

251

Server NFSv3 oparty na jdrze


Powszechnie uywan wersj NFS-a jest wersja 2. Jednak technika szybko idzie naprzd i ujawnia niedoskonaoci, ktre moe poprawi tylko inna wersja protokou.
Wersja 3 sieciowego systemu plikw obsuguje wiksze pliki i systemy plikw, gwarantujc znacznie wiksze bezpieczestwo i oferujc szereg poprawek wydajnociowych, ktre przydadz si wikszoci uytkownikw.
Olaf Kirch i Trond Myklebust pracuj nad eksperymentalnym serwerem NFSv3. Jest
on umieszczany w jdrach serii 2.3. Dostpne s aty dla jdra serii 2.2. Korzysta on
z demona NFS w wersji 2, opartego na jdrze.
aty s dostpne na stronie macierzystej serwera NFS opartego na jdrze Linuksa,
znajdujcej si pod adresem http://csua.berkeley.edu/~gam3/knfsd/.

IPX i system
plikw NCP

15

Rozdzia 15: IPX i system plikw NCP

Na dugo zanim firma Microsoft zaja si sieciami i nawet zanim Internet wyszed poza krgi akademickie, firmy wspdzieliy pliki i drukarki, uywajc serwerw plikw i drukowania opartych na systemie operacyjnym Novell Netware i zwizanych
z nim protokoach*. Wielu z tych uytkownikw nadal utrzymuje sieci wykorzystujce
te protokoy i chciaoby integrowa je z nowszymi sieciami TCP/IP.
Linux obsuguje nie tylko protokoy TCP/IP, ale take zestaw protokow uywanych
przez system operacyjny NetWare firmy Novell Corporation. Protokoy te s dalekimi kuzynami TCP/IP i cho peni podobn rol, rni si pod wieloma wzgldami
i niestety nie s ze sob kompatybilne.
Linux posiada zarwno darmowe, jak i komercyjne oprogramowanie do integracji
z produktami Novella.
W tym rozdziale krtko opiszemy same protokoy, a skupimy si na konfigurowaniu i wykorzystaniu darmowego oprogramowania, ktre pozwala Linuksowi na
wspprac z produktami firmy Novell.

Xerox, Novell i historia


Przyjrzyjmy si najpierw, skd pochodz protokoy i jak wygldaj. Pod koniec lat
siedemdziesitych w firmie Xerox Corporation opracowano, a nastpnie opublikowano otwarty standard o nazwie Xerox Network Specification (XNS). Standard ten
opisywa szereg protokow obsugujcych oglnie pojt komunikacj sieciow, ze
szczeglnym uwzgldnieniem sieci lokalnych. Byy tam wykorzystane dwa gwne
protokoy sieciowe: internetowy protok datagramw (Internet Datagram Protocol
IDP), zapewniajcy bezpoczeniowe i zawodne przesyanie datagramw midzy
hostami, oraz protok komunikacyjny pakietw danych (Sequenced Packet Protocol
SPP) zaadoptowany z IDP, ale poczeniowy i niezawodny. Datagramy w sieci XNS
byy adresowane indywidualnie. Schemat adresowania opiera si na poczeniu
4-bajtowego adresu sieci IDP (ktry by unikalnie przypisany do kadego segmentu
*

Novell i NetWare s znakami towarowymi firmy Novell Corporation.

254

Rozdzia 15: IPX i system plikw NCP

sieci lokalnej Ethernet) i 6-bajtowego adresu wza (adresu karty sieciowej). Rutery
byy urzdzeniami, ktre przekazyway datagramy pomidzy dwoma lub kilkoma
oddzielnymi sieciami IDP. IDP nie obsuguje podsieci. Kady nowy zbir hostw
wymaga innego adresu sieci. Adresy sieci s dobierane tak, aby byy unikalne w obrbie intersieci. Czasem administratorzy tworz konwencje, przypisujce typy informacji (np. rejon geograficzny) do poszczeglnych bajtw adresu, a wic adresy sieci
s przydzielane w systematyczny sposb. Nie jest to jednak wymaganie protokou.
Firma Novell zdecydowaa si oprze swoj sie na pakiecie XNS. Stworzya kilka
rozszerze dla IDP i SPP, ktre otrzymay nazwy: IPX (Internet Packet eXchange)
i SPX (Sequenced Packet eXchange). Dodaa te nowe protokoy, takie jak NCP (NetWare Core Protocol), pozwalajcy na wspdzielenie plikw i drukarek w sieci IPX, czy
SAP (Service Advertisement Protocol) dajcy hostom w sieci Novell wiedz o usugach
oferowanych przez poszczeglne hosty.
Tabela 15-1 pokazuje powizanie pomidzy zestawami protokow XNS, Novell
i TCP/IP pod wzgldem funkcjonalnoci. Powizania s jedynie przyblione, ale
powinny pomc zrozumie, o co chodzi, gdy bdziemy si dalej odwoywa do tych
protokow.
Tabela 15-1. Powizania midzy protokoami XNS, Novell i TCP/IP
XNS

Novell

TCP/IP

Funkcje

IDP
SPP

IPX
SPX
NCP
RIP
SAP

UDP/IP
TCP
NFS
RIP

Bezpoczeniowe i zawodne przesyanie danych.


Poczeniowe i niezawodne przesyanie danych.
Usugi plikowe.
Wymiana informacji o rutingu.
Wymiana informacji o dostpnoci usugi.

IPX i Linux
Alan Cox jako pierwszy opracowa obsug protokou IPX w jdrze Linuksa w 1995
roku*. Na pocztku przydawao si to w zasadzie tylko do rutowania datagramw
IPX. Od tego czasu inni ludzie, gwnie Greg Page, rozbudowali t usug**. Greg
stworzy narzdzia do konfiguracji IPX-a, ktre wykorzystamy w tym rozdziale do
konfigurowania naszych interfejsw. Volker Lendecke opracowa obsug systemu
plikw NCP, co umoliwio montowanie w Linuksie wolumenw z podczonych
do sieci serwerw plikw NetWare***. Stworzy rwnie narzdzia, ktre pozwalaj
drukowa do i z Linuksa. Ales Dryak i Martin Stover niezalenie opracowali demony serwera plikw NCP dla Linuksa, ktre pozwalay klientom sieci NetWare montowa katalogi linuksowe wyeksportowane jako wolumeny NCP, podobnie jak demon NFS pozwala Linuksowi na udostpnianie klientom systemw plikw przez
protok NFS*. Firma Caldera Systems Inc. oferuje komercyjnego i w peni licencjo*

Z Alanem mona si skontaktowa pod adresem alan@lxorguk.ukuu.org.uk.

** Z Gregiem moesz si skontaktowa pod adresem gpage@sovereign.org.


*** Z Volkerem mona si skontaktowa pod adresem lendecke@namu01.gwdg.de.

IPX i Linux

255

nowanego klienta i serwer NetWare obsugujce najnowsze standardy firmy Novell,


wcznie z obsug usug katalogowych NetWare (NetWare Directory Services
NDS).
Obecnie Linux obsuguje szeroki zakres usug, ktre umoliwiaj integrowanie systemw z istniejcymi sieciami opartymi na Novellu.

Wsparcie Caldery
Cho w tym rozdziale nie omawiamy szczegowo wsparcia Caldery dla NetWare,
waniejsze jest to, e w ogle o tym mwimy. Firma Caldera zostaa zaoona przez
Raya Noorda, ktry wczeniej by dyrektorem naczelnym firmy Novell. Obsuga
NetWare przez Calder jest produktem komercyjnym i w peni serwisowanym
przez firm Caldera. Jest to cz ich firmowej dystrybucji Linuksa o nazwie Caldera
OpenLinux. Rozwizania Caldery s idealnym sposobem na wprowadzenie Linuksa do rodowisk, ktre wymagaj zarwno wsparcia komercyjnego, jak i moliwoci
integracji z istniejcymi lub nowymi sieciami Novell.
Wsparcie Caldery dla NetWare jest w peni licencjonowane przez firm Novell, co
daje du pewno, e produkty obu firm bd ze sob wsppracoway. Dwa
wyjtki od tej reguy to: tryb pure IP dla klienta oraz serwer NDS (adna z tych
opcji nie bya dostpna w czasie pisania tej ksiki). Dostpne s natomiast zarwno
klient, jak i serwer NetWare. Istnieje take zestaw narzdzi, uatwiajcych zarzdzanie nie tylko serwerami NetWare opartymi na Linuksie, ale take rzeczywistymi serwerami Novell Netware, a to dziki duym moliwociom jzykw skryptowych
Uniksa. Wicej informacji na temat Caldery mona znale na ich witrynie internetowej**.

Wicej na temat wsparcia NDS-u


W 4. wersji systemu NetWare firma Novell wprowadzia now funkcj o nazwie
usugi katalogowe NetWare (NDS). Specyfikacja NDS-u nie jest dostpna bez specjalnej umowy, co ogranicza rozwj darmowej obsugi tego systemu. Jedynie pakiet
ncpfs od wersji 2.2.0, ktry omwimy pniej, obsuguje NDS. Zosta on opracowany
na zasadzie odwrotnej analizy (ang. reverse engineering) protokou NDS. Wsparcie to
wydaje si dziaa, ale wci jest oficjalnie uznawane za eksperymentalne. Z serwerami NetWare 4 moesz uywa narzdzi nie-NDS-owych, pracujcych w trybie
emulacji bindery.
Oprogramowanie Caldery w peni obsuguje NDS, poniewa ich implementacja ma
licencj firmy Novell. Ta implementacja nie jest jednak bezpatna. A wic nie masz
dostpu do kodu rdowego i nie bdziesz w stanie dowolnie kopiowa i dystrybuowa tego oprogramowania.

Z Alesem mona si skontaktowa pod adresem A.Dryak@sh.cvut.cz, a z Martinem pod adresem


mstover@freeway.de.

** Informacje na temat firmy Caldera mona znale pod adresem http://www.caldera.com/.

256

Rozdzia 15: IPX i system plikw NCP

Konfigurowanie jdra do obsugi IPX-a i NCPFS


Konfigurowanie jdra do obsugi protokou IPX i systemu plikw NCP jest proste.
Polega na wybraniu odpowiednich opcji jdra w czasie jego kompilacji. Tak jak dzieje si z wieloma innymi skadnikami jdra, elementy IPX i NCPFS mog by albo
wbudowane w jdro, albo skompilowane w postaci moduw i adowane w razie
potrzeby poleceniem insmod.
Naley wybra ponisze opcje, jeeli chce si mie w Linuksie obsug protokou IPX
i rutingu:
General setup --->
[*] Networking support
Networking options --->
<*> The IPX protocol
Network device support --->
[*] Ethernet (10 or 100Mbit)
... and appropriate Ethernet device drivers
Gdyby chcia, eby Linux obsugiwa system plikw NCP, tak by mona byo
montowa zdalne wolumeny NetWare, musiaby dodatkowo wybra te opcje:
Filesystems --->
[*] /proc filesystem support
<*> NCP filesystem support (to mount NetWare volumes)

Gdy skompilujesz i zainstalujesz nowe jdro, jeste gotw do pracy z IPX-em.

Konfigurowanie interfejsw IPX


Tak jak w TCP/IP, musisz skonfigurowa swoje interfejsy IPX, zanim bdziesz mg
ich uywa. Protok IPX ma kilka wyjtkowych wymaga. Z tego powodu zosta
stworzony zestaw narzdzi konfiguracyjnych. Bdziemy ich uywali do konfigurowania naszych interfejsw IPX i rutingu.

Urzdzenia sieciowe obsugujce IPX


Protok IPX zakada, e hosty, ktre mog wymienia datagramy bez rutowania,
nale do tej samej sieci IPX. Wszystkie hosty nalece do jednego segmentu Ethernet nale do tej samej sieci IPX. Podobnie (ale mniej intuicyjnie), oba hosty
obsugujce cze szeregowe oparte na PPP musz nalee do sieci IPX, ktra sama
jest czem szeregowym. W rodowisku Ethernet istnieje szereg rnych typw ramek, ktre mog by uywane do przenoszenia datagramw IPX. Typy ramek reprezentuj rne protokoy Ethernet i opisuj rne sposoby przenoszenia wielu
protokow w tej samej sieci Ethernet. Najczciej bdziesz si spotyka z ramkami
802.2 i ethernet_II. Wicej o typach ramek powiemy w nastpnym podrozdziale.
Urzdzenia sieciowe Linuksa, ktre obsuguj obecnie protok IPX, to Ethernet
i PPP. Interfejsy Ethernet i PPP musz by aktywne, zanim nastpi ich konfiguracja

Konfigurowanie interfejsw IPX

257

do pracy z protokoem IPX. Zwykle kart Ethernet konfigurujesz z obsug zarwno


IP, jak i IPX-a, a wic urzdzenie ju istnieje. Ale jeeli chcesz korzysta tylko z sieci
IPX, musisz zmieni status urzdzenia Ethernet, uywajc polecenia ifconfig w nastpujcy sposb:
# ifconfig eth0 up

Narzdzia do konfiguracji interfejsu IPX


Greg Page opracowa zestaw narzdzi konfiguracyjnych dla interfejsw IPX. S one
rozpowszechniane w postaci pakietw w nowoczesnych dystrybucjach Linuksa, ale
mona je take uzyska w postaci rdowej z anonimowego orodka FTP znajdujcego si pod adresem http://metalab.unc.edu w pliku /pub/Linux/system/filesystems/ncpfs/ipx.tgz.
Narzdzia IPX s zwykle uruchamiane w czasie startu systemu z pliku rc. Twoja
dystrybucja moe to ju robi, jeeli zainstalowae oprogramowanie w postaci pakietw.

Polecenie ipx_configure
Kady interfejs IPX musi wiedzie, do ktrej sieci IPX naley i jakiego typu ramki ma
uywa dla protokou IPX. Kady host obsugujcy IPX ma przynajmniej jeden interfejs, ktrego reszta sieci bdzie uywaa do komunikacji z nim. Jest to tak zwany
interfejs podstawowy (ang. primary interface). Obsuga IPX-a w jdrze Linuksa pozwala
na automatyczne konfigurowanie tych parametrw. Polecenie ipx_configure wcza
lub wycza t funkcj automatycznej konfiguracji.
Polecenie ipx_configure wywoane bez argumentw wywietla aktualne ustawienia
znacznikw automatycznej konfiguracji:
# ipx_configure
Auto Primary Select is OFF
Auto Interface Create is OFF

Oba znaczniki (Auto Primary i Auto Interface) domylnie s wyczone. Aby


je ustawi i wczy automatyczn konfiguracj, po prostu podajesz w wywoaniu
nastpujce argumenty:
# ipx_configure --auto_interface=on --auto_primary=on

Gdy argument --auto_primary ma warto on, jdro automatycznie zapewnia,


e przynajmniej jeden aktywny interfejs dziaa jako interfejs podstawowy dla hosta.
Gdy argument --auto_interface ma warto on, sterownik IPX jdra bdzie
nasuchiwa wszystkich ramek odebranych na aktywnym interfejsie sieciowym,
i bdzie prbowa ustali adres sieci IPX oraz uywany typ ramki.
Mechanizm automatycznego wykrywania dziaa bez zarzutu w poprawnie
zarzdzanych sieciach. Czasem administratorzy sieci id na skrty i ami reguy, co
moe spowodowa problemy w kodzie automatycznego wykrywania w Linuksie.
Najczciej dochodzi do nich, gdy jedna sie IPX jest skonfigurowana do pracy w tej
samej sieci Ethernet z wieloma typami ramek. Jest to konfiguracja nieprawidowa

258

Rozdzia 15: IPX i system plikw NCP

technicznie, gdy host 802.2 nie moe bezporednio komunikowa si z hostem Ethernet-II i dlatego nie mog one by w tej samej sieci IPX. Oprogramowanie sieciowe
IPX Linuksa nasuchuje na segmencie wysanych w nim datagramw IPX. Na ich
podstawie prbuje zidentyfikowa uywane adresy sieci i zwizane z nimi typy ramek. Jeeli ten sam adres sieci jest uywany z wieloma typami ramek lub na wielu
interfejsach, kod Linuksa wykrywa kolizj adresw sieci i nie jest w stanie ustali poprawnego typu ramki. Dowiesz si, e tak si stao, jeeli w logu systemowym zobaczysz nastpujce komunikaty:
IPX: Network number collision 0x3901ab00
eth0 etherII and eth0 802.3

Jeeli napotkasz taki problem, wycz funkcj automatycznego wykrywania i skonfiguruj interfejs rcznie, uywajc polecenia ipx_interface, ktre opisujemy poniej.

Polecenie ipx_interface
Polecenie ipx_interface jest uywane do rcznego dodawania, modyfikacji i usuwania protokou IPX z istniejcego urzdzenia sieciowego. Jeeli nie zadziaa wanie
opisana metoda automatycznego wykrywania konfiguracji lub jeeli nie chcesz pozostawia konfiguracji interfejsu przypadkowi, powiniene uy ipx_interface. Pozwala ci ono na podanie adresu sieci IPX, statusu interfejsu postawowego i typu
ramki IPX, ktra bdzie uywana przez urzdzenie sieciowe. Jeeli tworzysz wiele
interfejsw IPX, dla kadego z nich musisz wykona polecenie ipx_interface.
Skadnia tego polecenia przy dodawaniu IPX do istniejcego urzdzenia jest prosta
i najlepiej wyjani j przykad. Dodajmy IPX do istniejcego urzdzenia Ethernet:
# ipx_interface add -p eth0 etherII 0x32a10103

Oto znaczenie parametrw:


-p
Ten parametr okrela, e ten interfejs powinien by interfejsem podstawowym.
Jest on opcjonalny.
eth0
Jest to nazwa urzdzenia sieciowego, do ktrego dodajemy obsug IPX.
etherII
Ten parametr to typ ramki Ethernet II. Moe tu wystpi rwnie warto:
802.2, 802.3 lub SNAP.
0x32a10103
To jest adres sieci IPX, do ktrej naley interfejs.
Ponisze polecenie usuwa obsug IPX z interfejsu:
# ipx_interface del eth0 etherII

Aby wywietli aktualn konfiguracj protokou IPX na urzdzeniu sieciowym,


uyj:
# ipx_interface check eth0 etherII

Konfigurowanie rutera IPX

259

Polecenie ipx_interface jest wyjanione dokadniej na stronie podrcznika elektronicznego.

Konfigurowanie rutera IPX


Przypomnij sobie z naszego krtkiego omwienie na temat protokow uywanych
w rodowisku IPX, e IPX jest protokoem rutowalnym i e do rozgaszania informacji o rutingu jest uywany protok RIP (Routing Information Protocol). IPX-owa wersja RIP-a jest podobna do wersji IP. Dziaaj dokadnie w ten sam sposb. Co jaki
czas rutery rozgaszaj zawarto swoich tablic rutingu, a inne rutery ucz si jej
przez nasuchiwanie i integruj otrzymane informacje. Hosty musz tylko zna
swoj sie lokaln i wysya datagramy do wszystkich innych sieci przez swj lokalny ruter. Ruter jest odpowiedzialny za przenoszenie tych datagramw i przekazywanie ich do nastpnego hopa na trasie.
W rodowisku IPX w sieci musi by rozgaszana druga klasa informacji. Protok
ogaszajcy usugi (Service Advertisement Protocol SAP) przenosi informacje o rodzajach usug udostpnianych na poszczeglnych hostach w sieci. To wanie
protok SAP pozwala uytkownikom na przykad na uzyskanie listy plikw lub
serwerw drukowania istniejcych w sieci. Protok SAP dziaa dziki hostom, ktre
co jaki czas rozgaszaj list udostpnianych usug. Rutery sieciowe IPX zbieraj te
informacje i propaguj je w sieci wraz z informacj o rutingu. Aby ruter mg zosta
uznany za zgodny z protokoem IPX, musi ogasza zarwno informacje z RIP-a, jak
i z SAP-a.
Tak jak IP, take IPX na Linuksie ma demona rutingu o nazwie ipxd, ktry realizuje
zadania zwizane z zarzdzaniem rutingiem. I znw analogicznie do IP, w rzeczywistoci to jdro obsuguje przekazywanie datagramw pomidzy interfejsami sieciowymi IPX, ale w oparciu o zestaw regu nazywany tablic rutingu IPX. Demon
ipxd pilnuje aktualnoci tego zestawu regu. Nasuchuje kadego z aktywnych interfejsw sieciowych i analizuje informacje, eby wiedzie, kiedy jest wymagana zmiana w rutingu. Demon ipxd odpowiada rwnie na dania hostw podczonych
bezporednio do sieci, ktre potrzebuj informacji o rutingu.
Polecenie ipxd jest dostpne w postaci pakietu w niektrych dystrybucjach oraz
w postaci rdowej w anonimowym orodku FTP pod adresem http://metalab.unc.edu/
w pliku /pub/Linux/system/filesystems/ncpfs/ipxripd-x.xx.tgz.
Demon ipxd nie wymaga konfiguracji. Wystarczy go uruchomi, aby automatycznie
realizowa ruting pomidzy skonfigurowanymi urzdzeniami IPX. Przed uruchomieniem ipxd, trzeba koniecznie upewni si, e urzdzenia IPX s skonfigurowane
poprawnie poleceniem ipx_interface. Automatyczne wykrywanie moe dziaa, ale
gdy wykonujesz ruting, lepiej nie polega na przypadku i rcznie skonfigurowa interfejsy, co zaoszczdzi ci bolesnego rozwizywania trudnych problemw z rutingiem. Co 30 sekund ipxd ponownie wykrywa wszystkie lokalnie podczone sieci
IPX i automatycznie nimi zarzdza. Pozwala to na zarzdzanie sieciami zbudowanymi na interfejsach, ktre nie utrzymuj aktywnoci przez cay czas, jak interfejsy
PPP.

260

Rozdzia 15: IPX i system plikw NCP

Demon ipxd zwykle jest uruchamiany w czasie startu systemu ze skryptu rc w nastpujcy sposb:
# /usr/sbin/ipxd

Nie jest potrzebny znak &, poniewa ipxd sam domylnie przejdzie do trybu ta.
Cho demon ipxd najbardziej przydaje si na komputerach dziaajcych jako rutery
IPX, bywa te uyteczny na hostach podczonych do segmentw, w ktrych znajduje si wiele ruterw. Jeli podasz parametr -p, ipxd bdzie dziaa biernie,
nasuchujc informacji o rutingu przychodzcych z segmentu i uaktualniajc tablice
rutingu, ale nie bdzie rozsya adnych informacji. W ten sposb host moe uaktualnia tablice rutingu i nie da za kadym razem informacji o trasie, gdy chce si
poczy z hostem zdalnym.

Statyczny ruting IPX za pomoc polecenia ipx_route


Istniej sytuacje, kiedy trzeba ustawi ruting IPX na sztywno. Robimy to podobnie
jak dla IP. Polecenie ipx_route zapisuje tras do tablicy rutingu IPX bez potrzeby
uczenia si jej od demona ipxd. Skadnia rutingu jest bardzo prosta (poniewa IPX
nie obsuguje podsieci) i wyglda tak:
# ipx_route add 203a41bc 31a10103 00002a02b102

Pokazane polecenie dodaje tras do zdalnej sieci IPX 203a41bc przez ruter naszej sieci lokalnej 31a10103 o adresie wza 00002a02b102.
Adres wza rutera moesz znale, robic prawdziwy uytek z polecenia tcpdump
z argumentem -e, ktre wywietla nagwki poziomu cza i wskae ruch z rutera.
Jeeli ruterem jest komputer linuksowy, moesz po prostu uy polecenia ifconfig, by
wywietli adres.
Za pomoc polecenia ipx_route moesz te usun tras:
# ipx_route del 203a41bc

Trasy aktywne w jdrze moesz wywietli, zagldajc do pliku /proc/net/ipx_route.


Nasza dotychczasowa tablica rutingu wyglda tak:
# cat ipx_route
Network
Router_Net
203A41BC
31A10103
31A10103
Directly

Router_Node
00002a02b102
Connected

Trasa do sieci 31A10103 zostaa stworzona automatycznie przy konfiguracji interfejsu


IPX. Kada z naszych sieci lokalnych bdzie reprezentowana przez podobny wpis
w pliku /proc/net/ipx_route. Oczywicie jeeli nasza maszyna dziaa jako ruter, musi
mie jeszcze przynajmniej jeden interfejs.

Wewntrzne sieci IPX i ruting


Hosty IPX o wicej ni jednym interfejsie maj unikalne poczenie adresw sieci/wza dla kadego ze swoich interfejsw. Aby podczy si do takiego hosta,
moesz uy dowolnej kombinacji adresw sieci/wza. Gdy SAP ogasza usugi,
podaje adres sieci/wza zwizany z oferowan usug. Na hocie o wielu interfej-

Konfigurowanie rutera IPX

261

sach oznacza to, e jeden z interfejsw musi by wybrany jako ten, ktry rozgasza.
Do tego suy znacznik interfejsu podstawowego, o ktrym mwilimy wczeniej.
Jest jednak pewien problem: trasa do tego interfejsu nie zawsze moe by tras optymaln, a jeeli wystpi awaria sieci, ktra odizoluje t sie od reszty sieci, host stanie
si nieosigalny, nawet jeeli istniej inne moliwe trasy do innych interfejsw. Inne
trasy nigdy nie s znane innym hostom, poniewa nigdy nie s rozgaszane i jdro
nie ma moliwoci dowiedzie si, e powinno wybra inny interfejs podstawowy.
Aby unikn tego problemu, zosta wymylony mechanizm, ktry pozwala, aby
host IPX by znany pod jednym, niezalenym od trasy adresem sieci/wza wykorzystywanym do celw rozgaszania pakietw SAP. To rozwizuje nasz problem,
gdy ten nowy adres jest dostpny wszystkim interfejsom hosta i jest jedynym adresem rozgaszanym przez SAP.
Aby zilustrowa problem i jego rozwizanie, rysunek 15-1 pokazuje serwer podczony do dwch sieci IPX, z ktrych jedna ma sie wewntrzn. Host na rysunku
15-1 definiuje jeden ze swoich interfejsw jako interfejs podstawowy, zamy
0000001a:0800000010aa. To on zostanie ogoszony jako punkt dostpu do usugi. Jest
to prawidowe rozwizanie dla hostw w sieci 0000001a. Natomiast oznacza, e
uytkownicy sieci 0000002c bd kierowani przez sie, aby dotrze do tego portu,
nawet jeeli port jest bezporednio podczony do sieci, gdy i tak widz ten serwer
na podstawie tego, co dostali przez protok SAP.
Jeli takie hosty bd miay wirtualn sie o wirtualnych adresach hosta konstruowanych w peni programowo, problem zniknie. Sie wirtualn jest najlepiej wyobrazi sobie jako istniejc wewntrz hosta IPX. Informacje SAP wystarczy wwczas
rozgasza jedynie dla adresu sieci/wza tej sieci wirtualnej. Ta sie wirtualna jest
nazywana sieci wewntrzn. Skd jednak inne hosty wiedz, jak dotrze do tej sieci
wewntrznej? Hosty zdalne trafiaj do sieci wewntrznej przez sieci, do ktrych
host jest podczony bezporednio. Oznacza to, e widzisz wpisy rutingowe odnoszce si do sieci wewntrznej hostw obsugujcych wielokrotne interfejsy IPX.
Te trasy powinny by optymalnymi trasami dostpnymi w danej chwili i jeeli jaka
z nich przestaaby dziaa, ruting automatycznie zostaby poprowadzony do nastpnego najlepszego interfejsu i trasy. Na rysunku 15-1 skonfigurowalimy wewntrzn sie IPX o adresie 0x10000010 i uylimy adresu hosta 00:00:00:00:00:01. Jest
to adres naszego interfejsu podstawowego i bdzie rozgaszany przez SAP. Nasz ruting bdzie odzwierciedla t sie jako osigaln przez ktry z naszych rzeczywistych portw sieciowych, a wic hosty bd zawsze uyway najlepszej trasy do
czenia si z naszym serwerem.
Aby utworzy tak sie wewntrzn, uyj polecenia ipx_internal_net znajdujcego
si w pakiecie narzdzi IPX Grega Page'a. Na przykad tak:
# ipx_internal_net add 10000010 000000000001

To polecenie tworzy sie wewntrzn IPX o adresie 10000010 i adresie wza


000000000001. Adres sieci, tak jak kady inny adres sieci IPX, musi by unikalny
w obrbie sieci. Adres wza jest zupenie dowolny, gdy zwykle w sieci jest tylko je-

262

Rozdzia 15: IPX i system plikw NCP

den wze. Kady host moe mie tylko jedn sie wewntrzn IPX i jeeli jest ona
skonfigurowana, zawsze bdzie sieci podstawow.

Serwer plikw podczony do dwch sieci IPX bez sieci wewntrznej

08:00:00:00:10:aa

08:00:00:00:10:bd

0x0000001a

0x0000002c

Serwer plikw podczony do dwch sieci IPX z sieci wewntrzn

08:00:00:00:10:aa

0x0000001a

08:00:00:00:10:bd

0x0000002c

Rysunek 15-1. Wewntrzna sie IPX

Aby usun sie wewntrzn IPX, uyj:


# ipx_internal_net del

Wewntrzna sie IPX absolutnie nie jest potrzebna, jeeli twj host nie udostpnia
adnych usug i ma tylko jeden aktywny interfejs IPX.

Montowanie zdalnych wolumenw NetWare

263

Montowanie zdalnych wolumenw NetWare


IPX jest powszechnie uywany do montowania wolumenw NetWare w systemie
plikw Linuksa. Pozwala to na oparte na plikach wspdzielenie danych pomidzy
innymi systemami operacyjnymi i Linuksem. Volker Lendecke opracowa klienta
NCP dla Linuksa i pakiet narzdzi, ktre umoliwiaj wspdzielenie danych.
W rodowisku NFS do montowania zdalnego systemu plikw uylibymy polecenia
mount. Niestety system plikw NCP ma szczeglne wymagania, ktre powoduj, e
jego wbudowanie w normalne polecenie mount jest nierealne. Linux posiada polecenie ncpmount, ktrego uyjemy zamiast mount. Polecenie ncpmount jest jednym z narzdzi z pakietu ncpfs Volkera, dostpnego w wikszoci najnowszych dystrybucji
lub w postaci rdowej pod adresem ftp.gwdg.de w katalogu /pub/linux/misc/ncpfs/.
W czasie pisania tej ksiki obowizywaa wersja 2.2.0.
Zanim bdziesz montowa wolumeny NetWare, musisz mie poprawnie skonfigurowany interfejs sieciowy IPX (zgodnie z tym, co opisano wczeniej). Nastpnie
musisz zna szczegy logowania do serwera NetWare, ktrego wolumeny chcesz
montowa. Potrzebne bdzie ID uytkownika i haso. Poza tym musisz wiedzie,
ktry wolumen chcesz zamontowa i w jakim katalogu lokalnym.

Prosty przykad ncpmount


Prosty przykad zastosowania ncpmount wyglda tak:
# ncpmount -S ALES_F1 -U rick -P d00-b-gud /mnt/brewery

To polecenie montuje wszystkie wolumeny z serwera ALES_F1 w katalogu /mnt/brewery, wykorzystujc uytkownika NetWare rick z hasem d00-b-gud.
Polecenie ncpmount zwykle ma prawo setuid root i dlatego moe by uywane przez
kadego uytkownika Linuksa. Domylnie uytkownik jest wacicielem poczenia
i tylko on lub root bdzie mg je odmontowa.
NetWare korzysta z pojcia wolumenu, ktre jest analogiczne do systemu plikw
w Linuksie. Wolumen NetWare stanowi logiczn reprezentacj systemu plikw NetWare, ktry moe by pojedyncz partycj dyskow podzielon na wiele partycji logicznych. Domylnie NCPFS w Linuksie traktuje wolumeny jako podkatalogi wikszego logicznego systemu plikw reprezentowanego przez cay serwer plikw. Polecenie ncpmount powoduje, e kady wolumen NetWare serwera plikw jest widoczny jako podkatalog w punkcie montowania. Jest to wygodne, jeeli chcesz mie
dostp do caego serwera, ale gdyby chcia ponownie wyeksportowa te katalogi za
pomoc NFS-a, niestety nie bdziesz w stanie tego zrobi ze skomplikowanych powodw technicznych. Za chwil omwimy inne, bardziej zoone rozwizania tego
problemu.

Polecenie ncpmount w szczegach


Polecenie ncpmount ma wiele opcji wiersza polece, ktre pozwalaj na du elastyczno w sposobie montowania NCP. Najwaniejsze z nich opisano w tabeli 15-2.

264

Rozdzia 15: IPX i system plikw NCP

Tabela 15-2. Argumenty polecenia ncpmount


Argument
-S serwer
-U nazwa_uyt

Opis

Nazwa serwera plikw, z ktrego bd montowane wolumeny.


ID uytkownika NetWare uywane do logowania do serwera plikw.
-P haso
Haso uywane do zalogowania si do systemu NetWare.
-n
Ta opcja musi by uyta w przypadku uytkownika NetWare, ktry nie posiada hasa.
-C
Ten argument wycza automatyczn konwersj hase na pisane duymi literami.
-c nazwa_klienta
Ta opcja pozwala ci poda, kto jest wacicielem poczenia
z serwerem plikw. Jest ona uyteczna przy drukowaniu
w NetWare, ktre omwimy szczegowo za chwil.
-u uid
ID uytkownika w Linuksie, ktry powinien by pokazany
jako waciciel plikw w zamontowanym katalogu. Jeeli nie
zostanie podany, domylnie bdzie to uytkownik, ktry
wywoa polecenie ncpmount.
-g gid
ID grupy w Linuksie, ktra powinna by pokazana jako
waciciel plikw w zamontowanym katalogu. Jeeli nie zostanie podana, domylnie bdzie to ID grupy, do ktrej naley uytkownik wywoujcy polecenie ncpmount.
-f prawa_dost_plikw
Ta opcja pozwala na ustawienie praw dostpu, jakie powinny
mie pliki w zamontowanym katalogu. Wartoci powinny
by okrelane semkowo, np. 0664. Rzeczywiste prawa dostpu s obliczane przez zamaskowanie praw podanych w tej
opcji z prawami uytkownika NetWare do plikw na serwerze. Musisz mie prawa na serwerze oraz musisz poda prawa w tej opcji, aby uzyska dostp do pliku. Domylna
warto jest ustalana na podstawie aktualnej wartoci umask.
-d prawa_dost_katalogw Ta opcja pozwala na ustawienie praw dostpu, jakie powinny mie katalogi w zamontowanym katalogu. Dziaa w taki
sam sposb jak opcja f, z t rnic, e domylne prawa dostpu s ustalane na podstawie aktualnej wartoci umask.
Prawa wykonywania s przydzielane wszdzie tam, gdzie
istniej prawa odczytu.
-V wolumen
Ta opcja pozwala ci poda nazw jednego wolumenu NetWare, ktry chcesz zamontowa w punkcie montowania.
W przeciwnym razie montowane s wszystkie wolumeny.
Ta opcja jest potrzebna, jeeli chcesz ponownie wyeksportowa przez NFS zamontowane wolumeny NetWare.
-t czas_oczekiwania
Ta opcja pozwala na okrelenie, ile czasu klient NCPFS czeka na odpowied z serwera. Domylna warto to 60 milisekund. Czas oczekiwania jest podawany w setnych czciach
sekundy. Jeeli napotkasz na jakie problemy ze stabilnoci
wolumenw NCP, powiniene zwikszy t warto.
-r licznik_ponownych_
Kod klienta NCP prbuje wiele razy wysya datagramy do
prb
serwera, zanim stwierdzi, e poczenie jest nieaktywne. Ta
opcja pozwala zmieni domyln liczb prb, ktra wynosi
5.

Montowanie zdalnych wolumenw NetWare

265

Ukrywanie twojego hasa uytkownika systemu NetWare


Umieszczanie hasa w wierszu polece, jak to robilimy w poleceniu ncpmount,
stwarza pewne zagroenie. Inni uytkownicy, ktrzy pracuj rwnoczenie z tob,
mogliby zobaczy haso, gdyby uruchomili takie programy, jak top czy ps. Aby
zmniejszy ryzyko podejrzenia hasa NetWare, ncpmount moe odczytywa pewne
szczegy z pliku znajdujcego si w katalogu macierzystym uytkownika. W tym
pliku uytkownik wpisuje swoj nazw i haso z ni zwizane, niezbdne do zalogowania si do serwerw plikw, ktrych wolumeny chce montowa. Plik nosi nazw
~/.nwclient i musi mie prawa dostpu 0600, eby nikt nie mg go przeczyta. Jeeli
prawa dostpu s niepoprawne, polecenie ncpmount nie pozwoli wykorzysta tego
pliku.
Plik ma bardzo prost skadni. Wszelkie wiersze rozpoczynajce si od znaku # s
traktowane jako komentarze i s ignorowane. Pozostae wiersze maj nastpujc
skadni:
serwer_plikw/uytkownik haso
serwer_plikw to nazwa serwera plikw zawierajcego wolumeny, ktre chcesz
montowa. uytkownik to nazwa konta uytkownika na serwerze NetWare. Pole
haso jest opcjonalne. Jeeli nie zostanie podane, polecenie ncpmount pyta o haso
w czasie montowania wolumenu. Jeeli w polu haso zostanie podany znak -, konto nie ma hasa. Jest to rwnowane argumentowi -n wiersza polece.
W pliku moesz umieci dowoln liczb wierszy, ale pole serwera plikw musi
by unikalne. Pierwszy wpis w pliku ma szczeglne znaczenie. Polecenie ncpmount
wykorzystuje argument wiersza polece -S, aby ustali, ktrego wpisu z pliku
~/.nwclient ma uywa. Jeeli serwer nie zostanie okrelony przez opcj -S, domylnie brany jest pierwszy serwer z pliku ~/.nwclient i jest traktowany jako serwer preferowany. Na pierwszej pozycji w pliku powiniene wic umieci ten serwer plikw,
ktrego wolumeny montujesz najczciej.

Bardziej skomplikowany przykad ncpmount


Przyjrzyjmy si bardziej skomplikowanemu przykadowi ncpmount wykorzystujcemu wanie opisane funkcje. Po pierwsze, napiszmy prosty plik ~/.nwclient:
# Szczegy logowania do serwera NetWare dla wirtualnego
# browaru i winiarni
#
# Konto browaru
ALES_F1/MATT staoicl
#
# Konto winiarni
REDS01/MATT staoicl
#
Aby upewni si, e prawa dostpu s poprawne, wykonaj:
# chmod 600 ~/.nwclient

266

Rozdzia 15: IPX i system plikw NCP

Zamontujmy jeden wolumen z serwera winiarni we wspdzielonym podkatalogu,


podajc prawa dostpu do pliku i katalogu, tak by inni mogli korzysta z tych danych:
$ ncpmount -S REDS01 -V RESEARCH -f 0664 -d 0775 /usr/share/winery/data/

To polecenie w poczeniu z pokazanym plikiem ~/.nwclient montuje wolumen RESEARCH z serwera REDS01 w katalogu /usr/share/winery/data/, uywajc konta MATT
i pobierajc haso z pliku ~/.nwclient. Prawa dostpu do zamontowanych plikw to
0664, a do katalogw 0775.

Kilka innych narzdzi IPX


Pakiet ncpfs zawiera szereg przydatnych narzdzi, ktrych do tej pory nie opisalimy. Wiele z nich naladuje narzdzia dostarczane z systemem NetWare. W tym podrozdziale przyjrzymy si najbardziej przydatnym z nich.

Lista serwerw
Polecenie slist pokazuje wszystkie serwery plikw dostpne dla hosta. Informacje s
w rzeczywistoci pobierane z najbliszego rutera IPX. W zaoeniu polecenie miao
zapewne pokaza uytkownikom, z jakich serwerw mona montowa wolumeny.
Stao si jednak przydatnym narzdziem diagnostycznym, ktre pozwala administratorom sieci obserwowa, jak s rozgaszane informacje SAP:
$ slist
NPPWR-31-CD01
V242X-14-F02
QITG_284ELI05_F4
QRWMA-04-F16
VWPDE-02-F08
NMCS_33PARK08_F2
NCCRD-00-CD01
NWGNG-F07
QCON_7TOMLI04_F7
W639W-F04
QCON_481GYM0G_F1
VITG_SOE-MAIL_F4R

23A91330
A3062DB0
78A20430
B2030D6A
35540430
248B0530
21790430
53171D02
72760630
D1014D0E
77690130
33200C30

000000000001
000000000001
000000000001
000000000001
000000000001
000000000001
000000000001
000000000001
000000000001
000000000001
000000000001
000000000001

slist nie przyjmuje adnych argumentw. Wynik pokazuje nazw serwera plikw,
adres sieci IPX i adres hosta.

Wysyanie komunikatw do uytkownikw NetWare


NetWare obsuguje mechanizm wysyania komunikatw do zalogowanych uytkownikw. Polecenie nsend implementuje t funkcj w Linuksie. Aby wysa komunikat, musisz by zalogowany do serwera, a wic musisz poda w wierszu polece
nazw serwera, szczegy dotyczce swojego konta, docelowego uytkownika oraz
komunikat do wysania:
# nsend -S vbrew_f1 -U gary -P j0yj0y supervisor "Chodmy na piwo zanim zrobimy kolejki drukowania!"

Drukowanie do kolejki NetWare

267

Uytkownik o nazwie gary wysya tu kuszce zaproszenie do osoby uywajcej


konta supervisor na serwerze ALES_F1. Jeeli nie podamy szczegw, zostanie
wykorzystany nasz domylny serwer plikw i dane o koncie.

Przegldanie i operowanie danymi bindery


Kady serwer plikw NetWare posiada baz informacji o uytkownikach i konfiguracji. Ta baza danych nosi nazw bindery. Linux posiada zestaw narzdzi do jej odczytywania, a jeeli masz prawa uytkownika supervisor na serwerze NetWare, pozwala take na wstawianie i usuwanie jej elementw. W tabeli 15-3 podajemy list
tych narzdzi.
Tabela 15-3. Narzdzia linuksowe do operacji na bindery
Nazwa polecenia

Opis polecenia

nwfstime
nwuserlist
nwvolinfo
nwbocreate
nwbols
nwboprops
nwborm
nwbpcreate
nwpbvalues
nwbpadd
nwbprm

Wywietla lub ustawia czas i dat serwera NetWare.


Pokazuje uytkownikw zalogowanych do serwera NetWare.
Wywietla informacje o wolumenach NetWare.
Tworzy obiekt bindery NetWare.
Listuje obiekty bindery NetWare.
Pokazuje wasnoci obiektu bindery NetWare.
Usuwa obiekt bindery NetWare.
Tworzy wasno obiektu bindery NetWare.
Drukuje zawarto wasnoci obiektu bindery NetWare.
Ustawia warto wasnoci obiektu bindery NetWare.
Usuwa wasno bindery NetWare.

Drukowanie do kolejki NetWare


Pakiet npcfs zawiera mae narzdzie o nazwie nprint, ktre wysya zadania do kolejki
drukowania przez poczenie NCP NetWare. To polecenie tworzy poczenie, o ile
takie nie istnieje, i wykorzystuje plik ~/.nwclient, opisany wczeniej, by ukry nazw
uytkownika i haso przed wcibskimi osobami. Argumenty wiersza polece uywane w procesie logowania s takie same jak argumenty polecenia ncpmount, a wic
nie bdziemy ich tu powtarza. W naszym przykadzie omwimy najwaniejsze
opcje wiersza polece; szczegy znajdziesz na stronach podrcznika elektronicznego nprint(1).
Jedyn wymagan opcj nprint jest nazwa pliku do wydrukowania. Jeeli nazwa pliku zostanie podana w postaci znaku lub nie zostanie w ogle podana, nprint przyjmie zadanie ze standardowego wejcia. Najwaniejsze opcje nprint to serwer plikw
i kolejka drukowania, do ktrych chcesz wysa zadanie. Tabela 15-4 zawiera najwaniejsze opcje.

268

Rozdzia 15: IPX i system plikw NCP

Tabela 15-4. Opcje wiersza polece nprint


Opcja

Opis

-S nazwa_serwera

Nazwa serwera plikw NetWare obsugujcego kolejk drukowania, do ktrej chcesz wysa zadanie. Zwykle wygodnie jest
mie wpis dotyczcy serwera w pliku ~/.nwclient. Ta opcja jest
obowizkowa.
Kolejka drukowania, do ktrej chcesz wysa zadanie. Ta opcja
jest obowizkowa.
Tekst, ktry pojawi si na konsoli drukowania na licie zakolejkowanych zada.
Liczba wierszy do wydrukowania na stronie. Domylnie 66.
Liczba kolumn do wydrukowania na stronie. Domylnie 80.
Liczba kopii do wydrukowania. Domylnie 1.

-q nazwa_kolejki
-d opis_zadania
-l wiersze
-r kolumny
-c kopie

Prosty przykad wykorzystujcy polecenie nprint wyglda tak:


$ nprint -S REDS01 -q PSLASER -c 2 /home/matt/ethylene.ps

To polecenie wydrukowaoby dwie kopie pliku /home/matt/ethylene.ps na drukarce


PSLASER podczonej do serwera REDS01 korzystajc z konta (nazwy uytkownika i hasa uzyskanego z pliku ~/.nwclient.

Uywanie nprint z demonem drukarki wierszowej


Przypomnij sobie, jak mwilimy, e opcja c polecenia ncpmount jest przydatna do
drukowania. Teraz wyjanimy dlaczego.
Linux zwykle uywa oprogramowania drukarki wierszowej w stylu BSD. Demon
drukarki wierszowej (lpd) sprawdza lokalny katalog bufora, szukajc w nim skolejkowanych zada do wydrukowania. lpd odczytuje nazw drukarki i inne parametry ze
specjalnego pliku bufora i zapisuje dane na drukark, opcjonalnie przesyajc je
przez filtr w celu zmiany lub wykonania na nich jakich operacji.
Demon lpd wykorzystuje prost baz danych /etc/printcap, w ktrej zapisane s informacje konfiguracyjne, rwnie o tym, jakie filtry uruchomi. lpd zwykle dziaa
z prawami dostpu specjalnego uytkownika systemowego lp.
nprint moesz skonfigurowa jako filtr dla lpd, co pozwoli uytkownikom Linuksa
na wysyanie danych bezporednio na drukarki zdalne, ktre s obsugiwane przez
serwery plikw NetWare. Aby to zrobi, uytkownik lp musi mie moliwo
wysania da NCP do serwera NetWare.
Prostym sposobem na zrobienie tego bez potrzeby tworzenia przez lp wasnego
poczenia i logowania si do serwera jest okrelenie lp jako waciciela poczenia
ustalonego przez innego uytkownika. Peny przykad, jak skonfigurowa system
drukowania Linuksa do obsugi zada drukowania od klientw Netware, skada si
z trzech etapw:

Drukowanie do kolejki NetWare

269

1. Tworzenie skryptu poredniego.


Plik /etc/printcap nie pozwala na podawanie filtrom opcji. Dlatego musisz napisa
prosty skrypt, ktry wywoa polecenie wraz z opcjami. Skrypt poredni moe
wyglda tak:
#!/bin/sh
# p2pslaser - prosty skrypt przekierowujcy stdin do kolejki
# PSLASER na serwerze REDS01
#
/usr/bin/nprint -S REDS01 -U stuart -q PSLASER
#

Zapisz skrypt w pliku /usr/local/bin/p2pslaser.


2. Umieszczenie wpisu w pliku /etc/printcap.
Bdziemy musieli skonfigurowa utworzony skrypt p2pslaser jako filtr wyjciowy w pliku /etc/printcap. Bdzie to wygldao tak:
pslaser|Postscript Laser Printer hosted by NetWare server:\
:lp=/dev/null:\
:sd=/var/spool/lpd/pslaser:\
:if=/usr/local/bin/p2pslaser:\
:af=/var/log/lp-acct:\
:lf=/var/log/lp-errs:\
:pl#66:\
:pw#80:\
:pc#150:\
:mx#0:\
:sh:

3. Dodanie opcji c do polecenia ncpmount.


ncpmount -S REDS01 .... -c lp ....

Lokalny uytkownik stuart musi poda uytkownika lp jako waciciela poczenia, gdy zamontuje zdalny serwer NetWare.
Teraz dowolny uytkownik Linuksa moe poda pslaser jako nazw drukarki
przy wywoaniu lp. Zadanie drukowania zostanie wysane do okrelonego serwera
NetWare i umieszczone w buforze do drukowania.

Zarzdzanie kolejkami drukowania


Polecenie pqlist pokazuje wszystkie dostpne dla ciebie kolejki drukowania na danym serwerze. Jeeli nie podasz serwera w wierszu polece, uywajc opcji S, albo
nie podasz nazwy uytkownika czy hasa, zostan przyjte domylnie wpisy z pliku
~/.nwclient:
# pqlist -S vbrew_f1 -U quest -n
Server: ALES_F1
Print queue name
Queue ID
-----------------------------------------------TEST
AA02009E
Q2
EF0200D9
NPI223761_P1
DA03007C
Q1
F1060004
I-DATA
0D0A003B
NPI223761_P3
D80A0031

270

Rozdzia 15: IPX i system plikw NCP

Nasz przykad pokazuje list kolejek drukowania dostpnych dla uytkownika guest na serwerze ALES_F1*.
Aby obejrze zadania drukowania w kolejce, uyj polecenia pqstat. Jako argument
przyjmuje ono nazw kolejki i pokazuje wszystkie znajdujce si w niej zadania.
Moesz opcjonalnie poda inny argument mwicy, ile zada z kolejki chcesz zobaczy. Poniszy przykadowy wynik zosta nieco zmniejszony, aby zmieci si na stronie w tej ksice:
$ pqsstat -S ALES_F1 NPI223761_P1
Server: ALES_F1
Queue: NPI223761_P1
Queue ID: 6A0E000C
Seq
Name
Description
Status
Form Job ID
-------------------------------------------------------------1 TOTRAN
LyX document - proposal.lyx Active
0 02660001

Widzimy, e w kolejce czeka jedno zadanie bdce wasnoci uytkownika TOTRAN. Pozostae opcje zawarte w opisie zadania to jego status i identyfikator.
Polecenie pqrm jest uywane do usuwania zada ze wskazanej kolejki drukowania.
Aby usun zadanie z kolejki, wydaj polecenie:
$ pqrm -S ALES_F1 NPI223761_P1 02660001

Polecenie jest proste, ale trudno go uy z marszu. Warto powici chwil i przygotowa sobie skrypt, ktry to uatwi.

Emulacja serwera NetWare


Istniej dwa bezpatne emulatory serwerw plikw NetWare dla Linuksa. S to: lwared, opracowany przez Alesa Dryaka, i mars_nwe, opracowany przez Martina Stovera. Oba pakiety daj podstawow emulacj serwera plikw NetWare w Linuksie,
umoliwiajc klientom NetWare montowanie katalogw Linuksa wyeksportowanych jako wolumeny NetWare. Cho serwer lwared jest atwiej skonfigurowa,
mars_nwe oferuje wicej funkcji. Instalacja i konfiguracja tych pakietw wykracza
poza ramy tego rozdziau, ale oba s opisane w dokumencie IPX-HOWTO.

Wyglda na to, e administratorzy systemu prbowali kilku produktw wirtualnego browaru przed
ustaleniem nazw kolejek drukowania. Mamy nadziej, e nazwy twoich kolejek s bardziej sensowne!

16

Zarzdzanie UUCP
Taylora
Rozdzia 16: Zarzdzanie UUCP Taylora

Protok UUCP zosta opracowany pod koniec lat siedemdziesitych przez Mike'a
Leska w AT&T Bell Laboratories. Jego zadaniem jest zapewnienie prostej sieci komutowanej przez publiczne linie telefoniczne. Mimo popularnoci pocze PPP
i SLIP do Internetu, wiele osb, ktre chc mie poczt elektroniczn i grupy dyskusyjne Usenetu na swoich domowych komputerach, wci uywa UUCP. Po prostu jest
to tasze rozwizanie, szczeglnie w krajach, gdzie uytkownicy Internetu musz
paci za kad minut miejscowej rozmowy telefonicznej lub tam, gdzie nie maj lokalnego dostawcy Internetu i musz paci za rozmowy zamiejscowe. Cho istnieje
wiele implementacji UUCP dziaajcych na wielu rnych platformach sprztowych
i systemach operacyjnych, s one ze sob kompatybilne.
Jednak tak jak z wikszoci oprogramowania, ktre w jaki sposb stao si przez
lata standardem, nie ma UUCP, ktre nazywaoby si po prostu UUCP. Od zaimplementowania pierwszej wersji w 1976 roku przeszo ono pewn ewolucj. Obecnie
istniej dwie gwne odmiany, rnice si przede wszystkim wsparciem sprztowym i sposobem konfiguracji. Maj one wasne implementacje, a kada z nich rni
si od pozostaych w bardzo niewielkim stopniu.
Jedna odmiana jest znana jako 2. wersja UUCP i jej historia siga implementacji Mike'a Leska, Davida A. Novitza i Grega Chessona z roku 1977. Mimo swoich lat wci
jest czsto uywana. Nowe implementacje tej wersji s naprawd bardziej funkcjonalne ni nowsze odmiany UUCP.
Druga odmiana zostaa opracowana w 1983 roku i jest powszechnie nazywana BNU
(Basic Networking Utilities) lub HoneyDanBer UUCP. Ta ostatnia nazwa pochodzi od
nazwisk autorw (P. Honeyman, D.A. Novitz i B. E. Redman) i czsto jest skracana
do postaci HDB; tego okrelenia bdziemy uywali w tym rozdziale. HDB miaa
usun pewne braki 2. wersji UUCP. Na przykad zostay dodane nowe protokoy
transmisji, a katalog bufora zosta podzielony tak, e teraz jest jeden wsplny katalog dla wszystkich orodkw dla ktrych obsugujesz ruch UUCP.

272

Rozdzia 16: Zarzdzanie UUCP Taylora

Implementacja UUCP dystrybuowana obecnie z Linuksem to tak zwane UUCP Taylora wersja 1.06 i o niej traktuje niniejszy rozdzia*. Pakiet Taylora zosta wydany
w sierpniu 1995 roku. Poza prac z tradycyjnymi plikami konfiguracyjnymi moe
by take skompilowany tak, by rozumie pliki konfiguracyjne nowego typu znane rwnie pod nazw Taylor.
UUCP Taylora jest zwykle kompilowane do wersji kompatybilnej z HDB, schematem konfiguracyjnym Taylora lub obydwoma. Poniewa schemat Taylora jest bardziej elastyczny ni niejasne pliki konfiguracyjne HDB, opiszemy poniej wanie
ten schemat.
Ten rozdzia nie jest pomylany jako wyczerpujcy opis opcji wiersza polece
UUCP, ale jako wprowadzenie do skonfigurowania dziaajcego wza UUCP.
Pierwszy podrozdzia informuje o tym, jak UUCP implementuje zdalne wykonywanie polece i przesyanie plikw. Jeeli nie jeste zupenym nowicjuszem w brany
UUCP, moesz go pomin i przej do dalszego podrozdziau Pliki konfiguracyjne
UUCP, ktry wyjania, jak rne pliki s wykorzystane do konfiguracji UUCP.
Zakadamy jednak, e znasz programy uytkownika pakietu UUCP, czyli uucp
i uux. Ewentualnie ich opis znajdziesz na stronach podrcznika elektronicznego.
Poza publicznie dostpnymi programami uucp i uux, pakiet UUCP zawiera szereg
polece uywanych jedynie do celw administracyjnych. Su one do monitorowania ruchu UUCP twojego wza, usuwania starych plikw log czy kompilowania
statystyk. Nie bdziemy ich tutaj opisywa, poniewa wykonuj zadania dodatkowe. Poza tym s doskonale udokumentowane i atwe w obsudze. Wicej informacji
znajdziesz na stronach podrcznika elektronicznego. Jednak istnieje trzecia kategoria programw: te, ktre odwalaj ca czarn robot UUCP. S to uucico (gdzie cico pochodzi od sw copy-in copy-out) i uuxqt, ktre wykonuje zadania przysane
przez systemy zdalne. W tym rozdziale skoncentrujemy si na tych dwch istotnych
programach.
Jeeli nie jeste zadowolony z naszego wyboru tematw, powiniene przeczyta dokumentacj dostarczan wraz z pakietem UUCP. Jest to zestaw plikw Texinfo,
ktre opisuj konfiguracj z wykorzystaniem schematu Taylora. Pliki Texinfo
moesz przeksztaci w plik dvi za pomoc texi2dvi (ktry mona znale w pakiecie
Texinfo w twojej dystrybucji) i obejrze go, uywajc polecenia xdvi.
Kolejnym doskonaym rdem informacji na temat UUCP w rodowisku Linuksa
jest UUCP-HOWTO autorstwa Guylhema Aznara. Jest ono dostpne w ramach Projektu Dokumentacji Linuksa i regularnie wysyane do grupy comp.os.linux.answers.
Istnieje rwnie grupa dyskusyjna poruszajca tematy zwizane z UUCP: comp.mail.uucp. Jeeli masz pytania szczegowe dotyczce UUCP Taylora, lepiej je zada
wanie tu, a nie w grupach z serii comp.os.linux.*.

Napisana i zastrzeona przez Iana Taylora w 1995 roku.

Przesyanie i zdalne wykonywanie w UUCP

273

Przesyanie i zdalne wykonywanie w UUCP


Dla zrozumienia UUCP istotne jest pojcie zada. Kada transmisja zainicjowana
przez uytkownika za pomoc uucp lub unx nazywa si zadaniem. Skada si ono
z polece do wykonania na hocie zdalnym, zestawu plikw do przesania midzy
orodkami lub obu tych elementw.
Jako przykad wemy ponisze polecenie, ktre kopiuje przez UUCP plik netguide.ps
do zdalnego hosta pablo i wykonuje na nim polecenie lpr drukujce plik:
$ uux -r pablo!lpr !netguide.ps

Generalnie UUCP nie wywouje natychmiast zdalnego hosta, by wykona zadanie


(co mgby zrobi za pomoc kermit). Sporzdza natomiast tymczasowy opis zadania. Nazywa si to buforowaniem (ang. spooling). Drzewo katalogw, w ktrym s
umieszczane zadania, nazywa si katalogiem buforowym i przewanie znajduje si
w katalogu /var/spool/uucp. W naszym przykadzie opis zadania bdzie zawiera informacje o zdalnym poleceniu do wykonania (lpr), uytkowniku, ktry zleci jego
wykonanie, i kilku innych elementach. Poza opisem zadania, UUCP musi zachowa
plik wejciowy netguide.ps.
Dokadna lokalizacja i nazewnictwo plikw buforowych moe si rni w zalenoci od opcji wybranych w czasie kompilacji. UUCP kompatybilne z HDB zwykle
zachowuje pliki buforowe w katalogu /var/spool/uucp w podkatalogu o nazwie
orodka zdalnego. W przypadku kompilacji z konfiguracj Taylora, UUCP tworzy
w tym katalogu podkatalogi dla rnych typw plikw buforowych.
W regularnych odstpach czasu UUCP dzwoni do zdalnego systemu. Gdy zostanie
nawizane poczenie z systemem, UUCP przesya pliki opisujce zadanie oraz
wszelkie pliki wejciowe. Przychodzce zadanie nie zostanie wykonane natychmiast,
ale po zakoczeniu poczenia. Wykonanie jest obsugiwane przez uuxqt, ktry take obsuguje przekazywanie wszelkich zada przeznaczonych dla drugiego orodka.
Aby rozrni mniej i bardziej istotne zadania, UUCP kademu z nich nadaje stopie
(ang. grade). Jest to cyfra z przedziau od 0 do 9, litera z przedziau od A do Z oraz od
a do z w kolejnoci malejcej priorytetw. Poczta jest zwykle buforowana ze stopniem B lub C, natomiast grupy dyskusyjne ze stopniem N. Zadania o wyszych stopniach s przesyane w pierwszej kolejnoci. Stopnie mog by przypisywane za pomoc opcji g w wywoaniu uucp lub uux.
W pewnych okresach czasu moesz rwnie zabroni przesyania zada o stopniu
mniejszym ni zadany. Aby to zrobi, ustaw maksymalny stopie buforowania (ang.
maximum spool grade), ktry bdzie dopuszczalny w czasie konwersacji. Maksymalny stopie buforowania domylnie ma warto z, co oznacza, e zadania o wszystkich stopniach bd przesyane za kadym razem. Zauwa, e skadnia jest tu nieco
niejasna: plik jest przesyany jedynie wtedy, gdy ma stopie rwny lub wikszy ni
maksymalny prg buforowania.

274

Rozdzia 16: Zarzdzanie UUCP Taylora

Wewntrzne dziaanie uucico


Krtki opis tego, jak w rzeczywistoci nastpuje poczenie ze zdalnym systemem,
pomoe zrozumie, dlaczego uucico musi zna pewne informacje.
Gdy uruchomisz uucico s system z wiersza polece, uucico najpierw musi zrealizowa poczenie fizyczne. Podejmowane dziaania zale od rodzaju poczenia,
jakie ma by otwarte. W przypadku linii telefonicznej wymaga to znalezienia modemu i zadzwonienia. W przypadku TCP, uucico musi wywoa gethostbyname, aby zamieni nazw na adres sieci, stwierdzi, ktry port otworzy, i powiza adres z odpowiednim gniazdem.
Po poprawnym nawizaniu poczenia nastpuje uwierzytelnienie. Ta procedura
oglnie skada si z zapytania zdalnego systemu o nazw uytkownika i ewentualnie haso. Wymiana tych danych jest powszechnie nazywana dialogiem logowania
(ang. login chat). Procedura uwierzytelniania jest wykonywana albo przez typowy
zestaw getty/login, albo przez sam uucico na gniazdach TCP. Jeeli uwierzytelnienie
powiedzie si, druga strona uruchamia uucico. Kopia uucico po stronie, ktra zainicjowaa poczenie, czyli lokalnej, jest nazywana nadrzdn (ang. master), a zdalna kopia
jest nazywana podleg (ang. slave).
Pniej nastpuje faza uzgadniania (ang. handshake phase): system nadrzdny wysya
swoj nazw hosta i kilka znacznikw. System podlegy sprawdza t nazw hosta
pod wzgldem praw logownia, wysyania i odbioru plikw itd. Znaczniki opisuj
(midzy innymi) maksymalny stopie plikw buforowych, pozwalajcy na ich
przesanie. Jeeli jest wczony licznik konwersacji lub numer kolejny wywoania (ang.
call sequence number), to s teraz sprawdzane. Dziki tej funkcji obie strony mog posiada licznik poprawnych pocze i je porwnywa. Jeeli liczniki si nie zgadzaj,
uzgadnianie si nie udaje. Jest to przydatne do zabezpieczenia si przed oszustami.
Na koniec oba uucico prbuj uzgodni wsplny protok transmisji. Protok ten decyduje o sposobie przesyania danych, sprawdzaniu ich spjnoci i retransmisji
w przypadku bdw. Potrzebne s rne protokoy, poniewa obsugiwane s
rne typy pocze. Na przykad linie telefoniczne wymagaj bezpiecznego protokou, ktry jest nieufny i wszdzie wszy bdy, natomiast transmisja TCP jest
z zaoenia niezawodna i moe uywa efektywniejszego protokou, ktry nie wykonuje dodatkowego sprawdzania bdw.
Po zakoczeniu uzgadniania rozpoczyna si faza rzeczywistej transmisji. Obie strony wczaj wybrany sterownik protokou. W tym miejscu sterowniki wykonuj sekwencj inicjacyjn specyficzn dla protokou.
Nastpnie system nadrzdny wysya wszystkie skolejkowane pliki do hosta zdalnego, ktrego stopie buforowania jest wystarczajco wysoki. Gdy skoczy, informuje
system podrzdny, e zrobi swoje i e ten moe si rozczy. W tym momencie system podrzdny moe zgodzi si na rozczenie lub przej konwersacj. Nastpuje
zamiana rl: system zdalny staje si nadrzdnym, a lokalny staje si podlegym. Nowy system nadrzdny wysya swoje pliki. Gdy zakoczy, oba uucico wymieniaj komunikaty zakoczenia i zamykaj poczenie.

Pliki konfiguracyjne UUCP

275

Jeeli potrzebujesz dodatkowych informacji na temat UUCP, zajrzyj do kodu


rdowego. Po sieci kry rwnie naprawd zabytkowy artyku, napisany przez
Davida A. Novitza, ze szczegowym opisem protokou UUCP*. Lista pyta FAQ
Taylor UUCP rwnie omawia pewne szczegy implementacji UUCP. Dokument
ten jest regularnie wysyany do grupy dyskusyjnej comp.mail.uucp.

Opcje wiersza polece uucico


Tutaj podamy najwaniejsze opcje wiersza polece uucico:
--system, -s system
Dzwonienie do zadanego systemu, dopki nie zostanie to zabronione przez
ograniczenia czasowe.
-S system
Dzwonienie do systemu bezwarunkowo.
--master, -r1
Uruchomienie uucico w trybie nadrzdnym. Jest to opcja domylna, jeeli zostanie
podane s lub S. Opcja r1 powoduje, e uucico prbuje dzwoni do wszystkich
systemw umieszczonych w pliku sys, opisanym w nastpnym podrozdziale,
dopki nie upynie czas przewidziany na rozmow lub powtrne dzwonienie.
--slave, -r0
Uruchomienie uucico w trybie podlegym. Jest to tryb domylny, jeeli nie zostan podane opcje s lub S. W trybie tym zakada si, e uywane jest standardowe wejcie/wyjcie podczone do portu szeregowego albo do portu TCP
okrelonego przez opcj p.
--ifwork, C
Ta opcja uzupenia s lub S mwic programowi uucico, by dzwoni do wymienionych systemw tylko wtedy, gdy w buforze s dla nich zadania.
--debug typ, -x typ, -X typ
Wczenie debugowania zadanego typu. Moe by podane kilka typw w postaci listy oddzielonej przecinkami. Dopuszczalne s nastpujce typy: abnormal,
chat, handshake, uucp-proto, proto, port, config, spooldir, execute,
incoming i outgoing. Uycie all wcza wszystkie opcje. Dla kompatybilnoci
z implementacjami UUCP mona poda take liczb, ktra wcza debugowanie
dla n pierwszych elementw z powyszej listy.
Komunikaty z debugowania zostan zapisane do pliku Debug w katalogu /var/spool/uucp.

Pliki konfiguracyjne UUCP


W odrnieniu od prostszych programw do przesyania plikw, UUCP zostao zaprojektowane tak, by obsugiwao automatycznie wszystkie transmisje. Jeli zostanie poprawnie skonfigurowane, to nie wymaga staej opieki administratora. Infor*

Zawiera go take ksika System Manager's Manual doczona do systemu 4.4BSD

276

Rozdzia 16: Zarzdzanie UUCP Taylora

macje potrzebne do automatycznej transmisji s przechowywane w kilku plikach


konfiguracyjnych, znajdujcych si w katalogu /usr/lib/uucp. Wikszo z nich jest
uywana tylko w czasie dzwonienia.

agodne wprowadzenie do UUCP Taylora


Powiedzenie, e konfiguracja UUCP jest trudna, bdzie niedomwieniem. W rzeczywistoci jest bardzo skomplikowana i czasem nawet zwizy format plikw konfiguracyjnych nie uatwia sprawy (cho format Taylora i tak czyta si atwo w porwnaniu ze starszymi formatami HDB lub wersji 2).
Aby pokaza, jak wspdziaaj wszystkie pliki konfiguracyjne, przedstawimy najwaniejsze z nich i przyjrzymy si prostym wpisom w tych plikach. Nie bdziemy
teraz wyjania wszystkiego szczegowo. Dokadniejsze informacje s podane
w nastpnych podrozdziaach. Gdyby chcia skonfigurowa UUCP na swoim komputerze, najlepiej zacz od przykadowych plikw i po kolei je adaptowa do
wasnych potrzeb. Moesz wykorzysta tu pokazane pliki lub te zaczone w twojej
ulubionej dystrybucji Linuksa.
Wszystkie pliki opisane w tym podrozdziale znajduj si w katalogu /etc/uucp lub jego podkatalogach. Dystrybucje Linuksa zawieraj binaria UUCP, ktre obsuguj
zarwno konfiguracj HDB, jak i schemat Taylora, ale kady zestaw plikw ma swj
wasny podkatalog. W katalogu /usr/lib/uucp zwykle bdzie znajdowa si plik README.
Aby UUCP dziaao poprawnie, pliki te musz nalee do uytkownika uucp.
Niektre z nich zawieraj hasa i numery telefonw i dlatego powinny mie prawo
dostpu 600. Zauwa, e cho wikszo polece UUCP musi mie prawo setuid
uytkownika uucp, musisz pamita, e nigdy nie moe go mie program uuchk.
W przeciwnym razie uytkownicy bd mogli wywietla hasa systemowe, nawet
jeeli pliki z hasami bd miay prawo dostpu ustawione na 600.
Gwnym plikiem konfiguracyjnym UUCP jest /etc/uucp/config, w ktrym s ustawiane parametry oglne. Najwaniejszy z nich (i w tej chwili jedyny) to nazwa twojego
hosta UUCP. W wirtualnym browarze gatewayem UUCP jest host vstout.
# /etc/uucp/config - gwny plik konfiguracyjny UUCP
nodename
vstout

Plik sys jest kolejnym wanym plikiem konfiguracyjnym. Zawiera wszystkie informacje specyficzne dla systemw, z ktrymi jeste poczony. Nale do nich nazwa orodka i informacje o samym czu, takie jak numer telefonu, jeeli jest wykorzystywane cze modemowe. Typowy wpis dla orodka pablo podczonego przez
modem wygldaby tak:
# /usr/lib/uucp/sys - nazwy ssiadw UUCP
# system: pablo
system
pablo
time
Any
phone
555-22112
port
serial1
speed
38400
chat
ogin: vstout ssword: lorca

Pliki konfiguracyjne UUCP

277

time okrela, o ktrej godzinie system zdalny moe by wywoywany. chat opisuje skrypty dialogu logowania kolejne cigi, ktre musz by wymienione, aby uucico mogo zalogowa si do pablo. Do skryptw dialogu logowania jeszcze wrcimy.
Sowo kluczowe port nadaje po prostu nazw wpisowi w pliku port (patrz rysunek
16-1). Moesz przypisa dowoln nazw, o ile odwouje si do poprawnego wpisu
w pliku port.
Plik port zawiera informacje specyficzne dla samego cza. Dla czy modemowych
opisuje specjalny plik urzdzenia, jaki ma by uyty, zakres obsugiwanych prdkoci i typ urzdzenia podczonego do portu. Poniszy wpis opisuje /dev/ttyS1 (czyli
COM2), do ktrego administrator podczy modem NakWell, ktry moe dziaa
z prdkoci do 38400 bitw na sekund. Nazwa portu jest dobrana tak, by odpowiadaa tej z pliku sys:
# /etc/uucp/port - porty UUCP
# /dev/ttyS1 (COM2)
port
serial1
type
modem
device
/dev/ttyS1
speed
38400
dialer
nakwell

Informacja na temat modemw jest przechowywana w jeszcze innym pliku o nazwie


dial. Dla kadego typu modemu zawiera on cig polece, ktre trzeba wykona, aby
poczy si z orodkiem zdalnym o zadanym numerze telefonicznym. Znw jest to
okrelone przez skrypt dialogowy. Na przykad wpis dla NakWell mgby wyglda tak:
# /etc/uucp/dial - informacje o dzwonicych
# modemy NakWell
dialer
nakwell
chat
* * AT&F OK ATDT\T CONNECT

Wiersz rozpoczynajcy si od chat okrela dialog modemu, czyli cig polece wysyanych i odbieranych przez modem w celu jego inicjacji i wykonania poczenia
z danym numerem. Sekwencja \T zostanie zastpiona przez uucico numerem telefonu.
Aby z grubsza mia pojcie, jak uucico wykorzystuje te pliki konfiguracyjne,
zamy, e wydajesz nastpujce polecenie:
$ uucico -s pablo

Pierwsza rzecz, jak robi uucico, to poszukanie pablo w pliku sys. Na podstawie wpisu pablo w pliku sys wiadomo, e poczenie naley zrealizowa przez port serial1. Plik port mwi uucico, e jest to port modemu, do ktrego podczony jest
modem NakWell.
Nastpnie uucico poszukuje w pliku dial wpisu dla modemu NakWell. Po jego znalezieniu otwiera port szeregowy /dev/cua1 i wykonuje dialog dzwonienia. Oznacza
to, e wysya AT&F, czeka na odpowied OK itd. Gdy napotka cig \T, zastpuje go
numerem telefonu (555-22112) uzyskanym z pliku sys.

278

Rozdzia 16: Zarzdzanie UUCP Taylora

Gdy modem zwrci cig CONNECT, poczenie zostaje nawizane i dialog modemu
zostaje zakoczony. uucico powraca do pliku sys i wykonuje dialog logowania. W naszym przykadzie bdzie on czeka na monit login:, a nastpnie wyle nazw uytkownika (vstout), poczeka na monit password: i wyle haso (lorca).
Zakada si, e po zakoczeniu procedury uwierzytelniania zdalny system uruchomi
uucico po swojej stronie. Nastpnie obie strony przejd do fazy uzgadniania, opisanej w poprzednim podrozdziale.
Rysunek 16-1 pokazuje zalenoci pomidzy plikami konfiguracyjnymi.
Plik sys
system

pablo

port
speed
...

serial1
38400

Plik port
port
type
speed
device
dialer
...

dialer
chat
chat-fail
...

serial1
modem
38400
/dev/cua1
nakwell

nakwell
""ATZ...
BUSY

Plik dial

Rysunek 16-1. Powizania plikw konfiguracyjnych UUCP Taylora

Co musi wiedzie UUCP


Zanim zaczniesz tworzy pliki konfiguracyjne UUCP, musisz wiedzie co nieco o jego wymaganiach.
Najpierw musisz stwierdzi, do jakiego portu szeregowego podczony jest twj
modem. Zwykle porty (DOS-a) od COM1: do COM4: odzwierciedlaj pliki specjalne
/dev/ttS0 do /dev/ttyS3. Niektre dystrybucje, takie jak Slackware, tworz dowizanie /dev/modem do odpowiedniego pliku urzdzenia ttyS* i konfiguruj programy
komunikacyjne, takie jak kermit, seyon, w ten sposb, by uyway tego dowizania.
W takim przypadku powiniene uywa /dev/modem take w swojej konfiguracji
UUCP.
A oto dlaczego siga si po dowizanie symboliczne. Wszystkie programy dzwonice uywaj tak zwanych plikw blokujcych do sygnalizowania, e port szeregowy

Pliki konfiguracyjne UUCP

279

jest zajty. Nazwy tych plikw blokujcych s poczeniem cigu LCK.. i nazwy pliku urzdzenia, na przykad LCK..ttyS1. Jeeli programy rnie nazywaj to samo
urzdzenie, nie uda im si rozpozna innych plikw blokujcych. W konsekwencji,
bd zakcay sobie wzajemnie sesje, jeeli zostan uruchomione w tym samym
czasie. Jest to moliwe, gdy zaszeregujesz wywoania UUCP za pomoc wpisu
w crontab. Szczegy konfiguracji portu szeregowego znajdziesz w rozdziale 4, Konfigurowanie urzdze szeregowych.
Nastpnie musisz stwierdzi, z jak prdkoci Linux komunikuje si z twoim modemem. Musisz ustawi t prdko na najbardziej efektywn warto, jak
chciaby uzyska. Efektywna przepustowo moe by duo wysza ni surowa
przepustowo fizyczna zapewniana przez modem. Na przykad wiele modemw
wysya i odbiera dane z prdkoci 56 kbps. Przy zastosowaniu protokow kompresji, takich jak V.42bis, rzeczywista przepustowo moe przekroczy 100 kbps.
Oczywicie jeeli UUCP ma mie niewiele do roboty, to wystarczy ci numer telefonu
do systemu, do ktrego chcesz dzwoni. Potrzebujesz take poprawnej nazwy
uytkownika i hasa na maszynie zdalnej*.
Musisz take dokadnie wiedzie, jak zalogowa si do systemu. Czy musisz nacisn
klawisz [Enter], zanim pojawi si monit logowania? Czy ma on posta login: czy
user:? Jest to wiedza niezbdna do stworzenia skryptu dialogowego. Jeeli tego nie
wiesz lub jeeli typowe skrypty nie dziaaj, sprbuj zadzwoni do systemu za pomoc programu terminala, na przykad kermit czy minicom, i zanotuj dokadnie to, co
zobaczysz.

Nazewnictwo orodkw
Tak jak w sieciach opartych na TCP/IP, twj host musi mie nazw w sieci UUCP.
Dopki chcesz wykorzystywa UUCP tylko to przesyania plikw w sieci lokalnej
lub pomidzy orodkami, do ktrych dzwonisz bezporednio, nazwa ta nie musi
by zgodna z adnymi standardami**.
Jeeli jednak uywasz UUCP do poczenia z poczt lub grupami dyskusyjnymi, powiniene pomyle o nazwie zarejestrowanej w projekcie mapowania UUCP***. Projekt mapowania UUCP jest opisany w rozdziale 17, Poczta elektroniczna. Nawet jeeli
znajdujesz si w domenie, moesz rozway posiadanie oficjalnej nazwy UUCP dla
twojego orodka.

Jeeli tylko testujesz UUCP, wykorzystaj numer pobliskiego orodka archiwum. Zapisz nazw uytkownika i haso (s one publicznie dostpne), by umoliwi anonimowe kopiowane plikw. W wikszoci przypadkw jest to co w stylu uucp/uucp lub nuucp/uucp
** Jedynym ograniczeniem jest to, e nie powinna by dusza ni siedem znakw, a wic nie mieszaj ze
sob implementacji UUCP, ktre dziaaj w systemach operacyjnych narzucajcych wiksze ograniczenia co do nazw plikw. Nazwy, ktre s dusze ni siedem znakw, s czsto przez UUCP skracane.
Niektre wersje UUCP ograniczaj nazwy nawet do szeciu znakw.
*** Projekt mapowania UUCP (UUCP Mapping Project) rejestruje wszystkie nazwy hostw UUCP z caego
wiata i zapewnia ich unikalno.

280

Rozdzia 16: Zarzdzanie UUCP Taylora

Czsto ludzie wybieraj sobie nazwy UUCP tak, by pasoway do pierwszego elementu ich penej nazwy domenowej. Zamy, e adres domeny, w ktrej jest twj
orodek, to swim.twobirds.com, a wic nazwa twojego hosta UUCP bdzie brzmiaa swim. Traktuj orodki UUCP tak, jakby znay si po imieniu. Oczywicie moesz take uy nazwy UUCP zupenie nie zwizanej z twoj pen nazw domenow.
Jednak sprawd, czy w adresach pocztowych przypadkiem nie posuye si niepen nazw orodka. Nie masz si czego obawia, jeli zarejestrowae j jako swoj
oficjaln nazw. W najlepszym wypadku poczta do niezarejestrowanego hosta
UUCP zniknie w jakie duej czarnej dziurze. Jeeli uywasz nazwy wykorzystywanej ju przez jaki inny orodek, poczta bdzie do niego przekierowana i przyprawi
administratora poczty o bl gowy.
Domylnie pakiet UUCP uywa nazwy definiowanej przez hostname jako nazwy orodka UUCP. Ta nazwa jest przewanie ustawiana w czasie inicjacji systemu
w skryptach rc i zwykle znajduje si w pliku /etc/hostname. Jeeli twoja nazwa
UUCP jest inna ni ta, ktra znajduje si w tym pliku, musisz uy opcji hostname
w pliku config, by poinformowa uucico, jaka jest twoja nazwa UUCP. Opisujemy to
dalej.

Pliki konfiguracyjne Taylora


Powrmy teraz do plikw konfiguracyjnych. UUCP Taylora pobiera swoje informacje z nastpujcych plikw:
config
Jest to gwny plik konfiguracyjny. Moesz w nim zdefiniowa nazw UUCP
swojego orodka.
sys
Ten plik opisuje wszystkie znane orodki. Dla kadego z nich posiada wpis z jego
nazw, godzinami wywoania, numerem, pod jaki naley dzwoni (o ile istnieje),
typem urzdzenia, ktrego trzeba uywa, i sposobem logowania.
port
Ten plik zawiera wpisy charakteryzujce kady z dostpnych portw wraz
z obsugiwan prdkoci i typem modemu.
dial
Ten plik opisuje typy urzdze uywane do realizacji poczenia telefonicznego.
dialcode
Ten plik zawiera rozwinicia symbolicznych numerw kierunkowych.
call
Ten plik zawiera nazw uytkownika i haso uywane przy dzwonieniu do systemu. Jest rzadko uywany.

Pliki konfiguracyjne UUCP

281

passwd
Ten plik zawiera nazwy uytkownikw i hasa, ktrymi systemy mog posugiwa si przy logowaniu. Jest uywany tylko wtedy, gdy uucico przeprowadza
wasne sprawdzanie hase.
Pliki konfiguracyjne Taylora oglnie skadaj si z wierszy zawierajcych pary
sowo_kluczowe-warto. Znak hasha oznacza wiersz z komentarzem. Aby uy
znaku # we wasnej roli, zamaskuj go odwrotnym ukonikiem, czyli tak: \#.
Istnieje szereg opcji, ktre moesz dostosowa, uywajc tych plikw konfiguracyjnych. Nie moemy przejrze wszystkich parametrw, ale omwimy tu najwaniejsze z nich. Po ich omwieniu powiniene by w stanie skonfigurowa cze
UUCP oparte na modemie. Nastpne podrozdziay opisuj modyfikacje wymagane
do uywania UUCP w sieci TCP/IP lub przez bezporednie cze szeregowe.
Peny opis znajduje si w dokumencie Texinfo doczonym do rde UUCP Taylora.
Gdy uznasz, e w peni skonfigurowae system UUCP, moesz sprawdzi swoj
konfiguracj, uywajc narzdzia uuchk (znajdujcego si w katalogu /usr/lib/uucp).
uuchk odczytuje twoje pliki konfiguracyjne i drukuje szczegowy raport o konfiguracji uywanej dla kadego z systemw.

Oglne opcje konfiguracyjne uywane w pliku config


W zasadzie tego pliku nie bdziesz uywa do niczego innego poza zdefiniowaniem
nazwy hosta UUCP. Domylnie UUCP bdzie wykorzystywa nazw ustalon poleceniem hostname, ale dobrze jest jednak ustawi nazw UUCP w sposb jawny. Oto
przykad pliku config:
# /usr/lib/uucp/config - gwny plik konfiguracyjny UUCP
hostname
vstout

W tym pliku mona ustawi take szereg innych parametrw, takich jak nazwa katalogu buforujcego czy prawa dostpu dla anonimowego UUCP. Omwimy je w dalszej czci tego rozdziau, w podrozdziale Anonimowe UUCP.

Jak za pomoc pliku sys powiedzie UUCP o innych systemach


Plik sys opisuje systemy znane twojemu komputerowi. Dowolny wpis w tym pliku
jest poprzedzany sowem kluczowym system, a kolejne wiersze, a do nastpnego
sowa system, okrelaj szczegowe parametry dla danego orodka. Przewanie
taki wpis definiuje parametry, takie jak numer telefonu i dialog logowania.
Parametry wystpujce przed pierwszym wpisem system s uywane dla wszystkich systemw. Zwykle w sekcji parametrw domylnych ustawiasz parametry protokou i tym podobne.
Najczciej spotykane pola s omwione szczegowo pniej.

282

Rozdzia 16: Zarzdzanie UUCP Taylora

Nazwa systemu
Polecenie system okrela nazw systemu zdalnego. Musisz poda jego poprawn nazw, a nie alias, poniewa uucico sprawdza w czasie logowania, jak nazw przedstawia si system zdalny*.
Nazwa kadego systemu moe pojawi si tylko raz. Gdyby chcia uy kilku zestaww konfiguracji dla tego samego systemu (na przykad rnych numerw telefonu,
ktre uucico powinno po kolei wyprbowywa), moesz uy sowa alternatives, ktre
opiszemy po podstawowych opcjach konfiguracyjnych.
Numer telefonu
Jeeli chcemy si czy z systemem zdalnym przez lini telefoniczn, pole phone
opisuje numer, pod ktry naley dzwoni. Moe zawiera kilka leksemw interpretowanych przez procedur dzwonienia uucico. Znak rwnoci (=) oznacza czekanie
na powtrny ton, a znak minus (-) generuje jednosekundow przerw. Niektre instalacje telefoniczne nie chc dziaa, jeeli nie dodasz przerwy pomidzy specjalnym kodem dostpu a numerem telefonu**.
Czsto wygodnie jest uywa nazw zamiast numerw przy opisywaniu numerw
kierunkowych. Plik dialcode pozwala powiza nazw z kodem, ktry mona nastpnie wykorzysta przy wpisywaniu numeru telefonu do hostw zdalnych.
Zamy, e masz nastpujcy plik dialcode:
# /usr/lib/uucp/dialcode - tumaczenie dialcode
Bogoham
024881
Coxton
035119

Majc takie tumaczenie, moesz uy w pliku sys numeru Bogoham7732, co prawdopodobnie spowoduje, e wszystko bdzie bardziej czytelne i atwiejsze do uaktualniania, gdyby numer kierunkowy do Bogoham kiedykolwiek si zmieni.
Port i prdko
Opcje port i speed s wykorzystywane do wskazania urzdzenia, przez ktre nawizywane jest poczenie z systemem zdalnym, i prdkoci, z jak ma dziaa*.
Wpis system moe zawiera kad z tych opcji oddzielnie lub obie razem. Przy poszukiwaniu odpowiedniego urzdzenia w pliku port, wybierane s tylko porty o pasujcej nazwie i/lub zakresie prdkoci.
Generalnie uycie samej opcji speed powinno wystarczy. Gdyby w pliku port
mia zdefiniowane tylko jedno urzdzenie szeregowe, uucico zawsze wybieraoby
poprawnie, a wic musisz mu poda tylko dan prdko. Gdyby do swojego
komputera mia podczone kilka modemw, wci nie warto nadawa nazwy kademu portowi, poniewa gdyby uucico stwierdzio, e kilka z nich pasuje, prbowaoby kadego urzdzenia po kolei, a natrafioby na nie uywane.
*

Starsze wersje 2 UUCP nie rozgaszay swoich nazw przy poczeniu. Jednak nowsze implementacje
czsto to robi, rwnie UUCP Taylora.

** Na przykad wikszo wewntrznych sieci telefonicznych w firmach wymaga, by dzwoni na


zewntrz przez 0 lub 9.

Pliki konfiguracyjne UUCP

283

Dialog logowania
Spotkalimy si ju ze skryptem logowania, ktry mwi uucico, jak zalogowa si do
systemu zdalnego. Skada si on z listy leksemw okrelajcych oczekiwane i wysyane przez lokalny proces uucico cigi znakw. uucico czeka a zdalny host wyle
monit logowania, nastpnie podaje nazw uytkownika, czeka na wysanie przez
system zdalny zapytania o haso i wysya haso. Oczekiwane i wysyane cigi znakw s umieszczone w skrypcie na zmian. uucico automatycznie dodaje znak powrotu karetki (\r) do wysyanego cigu. Prosty skrypt mgby wyglda tak:
ogin: vstout ssword: catch22

Prawdopodobnie zauwaye, e pola oczekiwanego cigu nie zawieraj caych


monitw. Dziki temu logowanie si powiedzie, nawet jeeli zdalny host przele Login: zamiast login:. Jeeli oczekiwany lub wysyany cig zawiera spacje albo inne
biae znaki, musisz wzi go w cudzysw.
uucico pozwala take na swego rodzaju wykonywanie warunkowe. Powiedzmy, e
getty na zdalnej maszynie musi by wyzerowany przed wysaniem monitu. W tym
celu moesz doczy do oczekiwanego cigu poddialog, wywoywany znakiem -.
Poddialog jest wykonywany wtedy, gdy gwny oczekiwany cig nie zostanie dopasowany, tj. zostanie przekroczony czas oczekiwania. Jednym ze sposobw na uycie
tej funkcji jest wysanie sygnau BREAK, jeeli zdalny orodek nie wywietli monitu
logowania. Poniszy przykad pokazuje skrypt dialogowy oglnego przeznaczenia,
ktry powinien dziaa take w przypadku, gdy musisz nacisn [Enter] przed pojawieniem si monitu. Pusty pierwszy argument ("") mwi UUCP, by na nic nie czekao, ale dziaao dalej, wysyajc kolejny cig znakw:
"" \n\r\d\r\n\c ogin:-BREAK-ogin: vstout ssword: catch22

W skrypcie dialogowym moe wystpi kilka znakw unikowych (ang. escape) i specjalnych cigw. Oto czciowa lista znakw dopuszczalnych w oczekiwanym cigu:
""
Cig pusty. Mwi uucico, by nie czekao na nic, ale natychmiast wysao nastpny
cig.
\t
Znak tabulacji.
\r
Znak powrotu karetki.
\s
Spacja. Potrzebne do umieszczania spacji w cigu dialogowym.
\n
Znak nowego wiersza.
\\
Odwrotny ukonik.
*

Szybko transmisji tty w bitach na sekund musi by przynajmniej tak dua, jak maksymalna przepustowo cza.

284

Rozdzia 16: Zarzdzanie UUCP Taylora

Poza powyszymi znakami w wysyanych cigach znakw dopuszczalne s ponisze znaki unikowe:
EOT
Znak koca transmisji (^D).
BREAK
Znak przerwania.
\c
\d
\E

\e
\K
\p

Zapobiega wysaniu znaku powrotu karetki na kocu cigu.


Opnienie wysyania o 1 sekund.
Wczenie sprawdzania echa. Nakazuje uucico czeka na echo wszystkiego co
wyle, zanim bdzie prowadzi dalszy dialog. Przydaje si w dialogach modemowych (co zobaczymy pniej). Sprawdzanie echa jest domylnie wyczone.
Zablokowanie sprawdzania echa.
To samo co BREAK.
Czekanie przez uamek sekundy.

Alternatywy
Czasem chcesz mie kilka wpisw dla jednego systemu, na przykad jeeli mona do
niego dotrze przez rne linie modemowe. W przypadku UUCP Taylora moesz to
zrobi, definiujc tak zwane alternatywy (ang. alternates).
Wpis alternatywny zachowuje wszystkie ustawienia gwnego wpisu charakteryzujcego system i okrela tylko te wartoci, ktre powinny by zmienione lub dodane. Wpis alternatywny jest umieszczany za wpisem opisujcym system, po wierszu ze sowem alternate.
Aby uywa dwch numerw telefonu do systemu pablo, powiniene zmodyfikowa jego opis w pliku sys do nastpujcej postaci:
system
pablo
phone
123-456
.. wpisy podobne do powyszych ...
alternate
phone
123-455

Dzwonic do pablo, uucico najpierw uywa numeru 123-456, a jeeli si nie dodzwoni, prbuje numeru alternatywnego.
Wyznaczanie czasw dzwonienia
Taylor UUCP posiada szereg sposobw wyznaczenia godzin, o ktrych s realizowane poczenia z systemem zdalnym. Moesz ich potrzebowa ze wzgldu na
ograniczenia stawiane przez system zdalny w godzinach roboczych lub po prostu

Pliki konfiguracyjne UUCP

285

by unikn godzin o wysokich cenach rozmw. Zauwa, e zawsze moliwe jest


ominicie ogranicze czasowych przez podanie uucico opcji S lub f.
Domylnie Taylor UUCP nie pozwala na poczenia o dowolnych godzinach, a wic
musisz w pliku sys wymieni jakie godziny. Jeeli nie dbasz o ograniczenia czasowe,
moesz uy w swoim pliku sys opcji time z wartoci Any.
Najprostszym sposobem na ograniczenie godzin dzwonienia jest doczenie wpisu
time, a za nim cigu skadajcego si z pl opisujcych dzie i godzin. Dzie moe
by kombinacj Mo, Tu, We, Th, Fr, Sa i Su. Moesz take uy Any, Never lub Wk
dla dni roboczych. Czas skada si z dwch wartoci w postaci 24-godzinnej, oddzielonych mylnikiem. Okrelaj one okres, w ktrym mog by wykonywane
poczenia. Poczenie tych leksemw jest zapisywane bez spacji pomidzy nimi.
Dowolne okrelenia dnia i godziny mog by pogrupowane razem i oddzielone
przecinkami w nastpujcy sposb:
time

MoWe0300-0730,Fr1805-2200

Ten przykad pokazuje, e poczenia mog by realizowane w poniedziaki i rody


od 3:00 do 7:30 oraz w pitki od 18:05 do 22:00. Gdy pole opisujce czas obejmuje
pnoc, powiedzmy Mo1830-0600, w rzeczywistoci oznacza to poniedziaek pomidzy pnoc a szst rano oraz pomidzy 18:30 i pnoc.
Specjalne cigi opisujce czas, Never i Any, oznaczaj odpowiednio, e poczenia
nie mog by realizowane lub mog by realizowane o dowolnej godzinie.
UUCP Taylora posiada rwnie szereg specjalnych leksemw, ktrych moesz uywa w opisie czasu, jak NonPeak i Night. Te szczeglne leksemy to odpowiednio
skrty od Any2300-0800,SaSu0800-1700 i Any1800-0700,SaSu.
Polecenie time przyjmuje opcjonalnie drugi argument opisujcy w minutach czas powtarzania. Gdy prba nawizania poczenia si nie powiedzie, uucico poczeka
z wykonaniem kolejnej prby przez pewien okres czasu. Na przykad gdy ustawisz
czas powtarzania na 5 minut, uucico bdzie odmawia dzwonienia do zdalnego systemu przez 5 minut, poczynajc od ostatniej nieudanej prby. Domylnie uucico uywa schematu wykadniczego, gdzie okres przed ponown prb zwiksza si przy
kadym kolejnym niepowodzeniu.
Polecenie timegrade pozwala na powizanie czasw z maksymalnym stopniem buforowania. Na przykad zamy, e we wpisie system masz nastpujce polecenia
timegrade:
timegrade
timegrade

N Wk1900-0700,SaSu
C Any

Taki zapis oznacza, e zadania o stopniu buforowania C lub wyszym (zwykle poczta jest kolejkowana ze stopniem B lub C) zostan przesane po zestawieniu poczenia, natomiast grupy dyskusyjne (zwykle zakolejkowane ze stopniem N) s przesyane tylko w nocy i w weekendy.
Podobnie jak time, tak i timegrade posiada trzeci argument opisujcy przerw (w minutach) przed ponowieniem prby.

286

Rozdzia 16: Zarzdzanie UUCP Taylora

Jednak s tu pewne zastrzeenia co do stopni buforowania. Przede wszystkim opcja


timegrade dotyczy tylko tego, co wysya twj system. System zdalny moe wci
przesya, co chce. Moesz uy opcji call-timegrade, aby jawnie zada wysyania
jedynie zada o stopniu wyszym ni zadany, ale nie ma gwarancji, e danie to
zostanie wysuchane*.
Podobnie pole timegrade nie jest sprawdzane, gdy dzwoni system zdalny, a wic
wszelkie zadania zakolejkowane dla niego zostan wysane. Jednak system zdalny
moe w jawny sposb zada, aby twoje uucico ograniczyo si do pewnego stopnia
buforowania.

Identyfikowanie dostpnych urzdze poprzez plik port


Plik port informuje uucico o dostpnych portach. S to zwykle porty modemowe, ale
obsugiwane s take inne typy portw, na przykad bezporednie cza szeregowe
i gniazda TCP.
Podobnie jak plik sys, tak i port skada si z oddzielnych wpisw rozpoczynajcych
si od sowa kluczowego port, za ktrym nastpuje nazwa portu. Nazwa nie musi
by unikalna. Jeeli istnieje kilka portw o tej samej nazwie, uucico bdzie je sprawdza po kolei, a znajdzie ten, ktry nie jest wanie uywany.
Zaraz za poleceniem port powinna wystpowa dyrektywa type wskazujca typ
opisywanego portu. Dopuszczalne typy to modem, direct dla czy bezporednich
i tcp dla gniazd TCP. Jeeli brakuje polecenia port, domylnym typem jest modem.
Tutaj omwimy tylko porty modemowe. Porty TCP i cza bezporednie s opisane
dalej.
W przypadku portw modemowych i bezporednich, w dyrektywie device musisz
poda urzdzenie, przez ktre chcesz dzwoni. Zwykle jest to nazwa specjalnego pliku urzdzenia w katalogu /dev, na przykad /dev/ttyS1.
W przypadku modemu wpis port okrela rwnie, jakiego typu modem jest
podczony. Rne typy modemw musz by odpowiednio skonfigurowane. Nawet modemy, ktre deklaruj kompatybilno ze standardem Hayesa, nie zawsze s
naprawd kompatybilne ze sob. Dlatego musisz poinformowa uucico, jak zainicjowa modem i zadzwoni na dany numer. UUCP Taylora przechowuje opis
wszystkich urzdze w pliku dial. Aby uy ktrego z nich, musisz poda jego nazw za pomoc polecenia dialer.
Czasem bdziesz chcia uywa modemu na rne sposoby, w zalenoci od tego,
do jakiego systemu dzwonisz. Na przykad niektre starsze modemy trac orientacj, gdy szybkie modemy prbuj si czy z prdkoci 56 kilobitw na sekund.
Po prostu zrywaj poczenie, zamiast negocjowa na przykad prdko 9600 bitw
na sekund. Gdy wiesz, e orodek drop uywa takich mao inteligentnych modemw, musisz inaczej skonfigurowa swj modem, gdy tam dzwonisz. Potrzebujesz
dodatkowego wpisu w pliku port, ktry wskazuje inny typ urzdzenia dzwonice*

Jeeli w systemie zdalnym dziaa UUCP Taylora, to danie zostanie wysuchane.

Pliki konfiguracyjne UUCP

287

go. W tym przypadku moesz nada nowemu portowi inn nazw, jak serial1-slow i uy dyrektywy port we wpisie dla systemu drop w pliku sys.
Porty najlepiej rozrnia si na podstawie obsugiwanych przez nie prdkoci. Na
przykad dwa opisy portw dla powyszej sytuacji mogyby wyglda tak:
# NakWell
port
type
device
speed
dialer
# NakWell
port
type
device
speed
dialer

modem; poczenie przy duej prdkoci


serial1
# nazwa portu
modem
# port modemu
/dev/ttyS1
# to jest COM2
115200
# obsugiwana prdko
nakwell
# normalny typ
modem; poczenie przy niskiej prdkoci
serial1
# nazwa portu
modem
# port modemu
/dev/ttyS1
# to jest COM2
9600
# obsugiwana prdko
nakwell-slow
# nie prbuj szybkiego poczenia

W opisie systemu drop jako nazwa portu widnieje teraz serial1, ale bdzie
obsugiwane tylko dania poczenia z prdkoci 9600 bitw na sekund. uucico
automatycznie uyje drugiego portu. Wszystkie pozostae orodki, ktre cz si
z prdkoci 115200 bitw na sekund, bd uyway pierwszego wpisu. Domylnie
bdzie uywany pierwszy wpis, ktry obsuguje odpowiedni prdko.

Jak dzwoni pod zadany numer uywajc pliku dial


Plik dial opisuje, w jaki sposb s uywane rne typy urzdze. Tradycyjnie UUCP
rozmawia z urzdzeniami, a nie z modemami, poniewa dawniej zwykle dostpne
byo jedno (drogie!) urzdzenie dzwonice, ktre obsugiwao cay zestaw modemw. Obecnie wikszo modemw ma wbudowan obsug dzwonienia, a wic
to rozrnienie przestaje by wane.
Niezalenie od tego, czy mamy do czynienia z urzdzeniami dzwonicymi, czy
z modemami, rne ich typy mog wymaga odmiennej konfiguracji. Kady z nich
moesz opisa w pliku dial. Wpisy w dial rozpoczynaj si od polecenia dialer zawierajcego nazw urzdzenia.
Najwaniejszy wpis po dialer to dialog modemu opisywany przez polecenie chat. Podobnie do dialogu logowania, skada si z wielu cigw znakw, ktre uucico wysya do urzdzenia dzwonicego, oraz z odpowiedzi, ktrych oczekuje. Zwykle jest
on uywany do ustawienia modemu w jakim znanym stanie i wykrcenia numeru.
Poniszy przykadowy wpis dialer pokazuje typowy dialog modemu dla
modemw kompatybilnych ze standardem Hayesa:
# NakWell modem; poczenie przy duej prdkoci
dialer
nakwell
# nazwa urzdzenia
chat
"" AT&F OK\r ATH1E0Q0 OK\r ATDT\T CONNECT
chat-fail
BUSY
chat-fail
ERROR
chat-fail
NO\sCARRIER
dtr-toggle
true

Dialog modemu rozpoczyna si od "", czyli oczekiwanego cigu pustego. uucico


w tej sytuacji wysya natychmiast pierwsze polecenie AT&F. Jest to polecenie Hay-

288

Rozdzia 16: Zarzdzanie UUCP Taylora

esa ustawiajce modem w konfiguracji fabrycznej. uucico nastpnie czeka, a modem wyle OK, i przekazuje nastpne polecenie, ktre z kolei wycza lokalne echo
i tym podobne. Po odebraniu z modemu kolejnego OK, uucico wysya polecenie dialogu ATDT. Sekwencja unikowa \T w cigu znakw zostaje zastpiona numerem telefonu odczytanym z wpisu w pliku sys. uucico nastpnie czeka, a modem zwrci
cig CONNECT, ktry sygnalizuje, e poczenie z modemem zdalnym zostao pomylnie nawizane.
Czasem modemom nie udaje si poczy z systemem zdalnym. Na przykad jeeli
drugi system akurat z kim si czy i linia jest zajta. W takiej sytuacji modem zwraca bd wskazujcy powd niepowodzenia. Dialogi modemowe nie s w stanie
obsuy takich bdw. uucico dalej czeka na oczekiwany cig znakw, a upynie
zadany czas. W pliku log UUCP w takiej sytuacji pokazany jest jedynie komunikat
timed out in chat script (upyn czas oczekiwania w skrypcie dialogowym), zamiast wskazania konkretnego powodu.
Jednak UUCP Taylora pozwala na poinformowanie uucico o tych komunikatach
bdw. Suy do tego polecenie chat-fail pokazane powyej. Gdy uucico wykryje
cig nieudanego dialogu podczas dialogu modemowego, przerywa poczenie i loguje komunikat do pliku log UUCP.
Ostatnie polecenie w pokazanym powyej przykadzie informuje UUCP, by przed
rozpoczciem dialogu modemowego przeczyo lini sterujc DTR (Data Terminal
Ready). Normalnie urzdzenie szeregowe uaktywnia DTR, gdy proces otworzy
urzdzenie, aby poinformowa podczony modem, e kto chce z nim si poczy.
Funkcja dtr-toggle deaktywuje DTR, czeka chwil i aktywuje go ponownie. Wiele modemw mona skonfigurowa tak, by reagoway na deaktywacj DTR przez
rozczenie, przejcie do trybu wprowadzania polece czy wyzerowanie si*.

Przesyanie UUCP przez TCP


Uywanie UUCP do przesyania danych przez TCP moe brzmie absurdalnie, ale
nie jest to zy pomys, szczeglnie gdy przesyasz due iloci danych, jak grupy dyskusyjne Usenetu. Na czach opartych o TCP grupy s przewanie wymieniane
przez protok NNTP, w ktrym dane artykuy s przesyane pojedynczo, bez
kompresji lub innej optymalizacji. Cho technika ta sprawdza si dla duych orodkw o kilku rwnolegych poczeniach grup, to nie jest zbyt lubiana przez mae
orodki, ktre odbieraj swoje grupy przez relatywnie wolne poczenia, jak ISDN.
Te orodki zwykle bd chciay poczy jako TCP z zaletami wysyania grup
w duych porcjach, ktre mog by kompresowane i przesyane bez nadmiarowych
informacji. Zwykle przesya si je za pomoc UUCP przez TCP.
W pliku sys okrelasz system wywoywany przez TCP w nastpujcy sposb:
system
address
time
port
chat
*

gmu
news.groucho.edu
Any
tcp-conn
ogin: vstout word: clouseau

Niektre modemy tego nie lubi i co jaki czas si zawieszaj.

Kontrola dostpu do funkcji UUCP

289

Polecenie address zawiera adres IP hosta lub jego pen nazw domenow. Odpowiedni wpis port wygldaby tak:
port
type
service

tcp-conn
tcp
540

Wpis ten mwi, e poczenie TCP powinno by uywane, gdy wpis sys zawiera cig
tcp-conn i e uucico powinno prbowa czy si z portem 540 hosta zdalnego
w sieci TCP. Jest to domylny port usugi UUCP. Zamiast numeru portu, w poleceniu service moesz poda take jego symboliczn nazw. Odpowiadajcy jej numer
portu bdzie poszukiwany w pliku /etc/services. Powszechnie uywan nazw dla
usug UUCP jest uucpd.

Uywanie poczenia bezporedniego


Zamy, e uywasz bezporedniego cza przy komunikacji systemu vstout z systemem tiny. Podobnie jak w przypadku modemu, musisz stworzy w pliku sys odpowiedni wpis opisujcy system. Polecenie port identyfikuje port, do ktrego jest
podczony system tiny:
system
time
port
speed
chat

tiny
Any
direct1
38400
ogin: cathcart word: catch22

W pliku port musisz opisa port szeregowy dla poczenia bezporedniego. Wpis
dialer jest zbyteczny, poniewa nie ma potrzeby dzwonienia:
port
type
speed
device

directl
direct
38400
/dev/ttyS1

Kontrola dostpu do funkcji UUCP


UUCP jest systemem do elastycznym. Dlatego trzeba kontrolowa uwanie dostp
do jego funkcji, aby zapobiec celowym lub przypadkowym naduyciom. Podstawowe funkcje UUCP, ktrymi powinien si zaj administrator, to wykonywanie zdalnych polece, przesyanie plikw i przekazywanie. UUCP Taylora pozwala na pewne ograniczenie dziaania kadej z funkcji, ktrym musi si podporzdkowa zdalny host UUCP. Starannie dobrawszy prawa dostpu, administrator UUCP moe by
pewny, e host jest bezpieczny.

Wykonywanie polecenia
Zadaniem UUCP jest przypilnowanie kopiowania plikw z jednego systemu do innego i danie wykonania pewnych polece na hostach zdalnych. Oczywicie ty jako administrtor chciaby kontrolowa prawa przydzielane innym systemom, poniewa pozwalanie im na wykonanie w twoim systemie dowolnego polecenia zdecydowanie nie jest dobrym pomysem.

290

Rozdzia 16: Zarzdzanie UUCP Taylora

Domylnie jedynymi poleceniami, jakie UUCP Taylora pozwala wykonywa innym


systemom na twoim komputerze, s rmail i rnews, powszechnie uywane do wymiany poczty i grup dyskusyjnych Usenetu przez UUCP. Aby zmieni zestaw polece dla
jakiego systemu, moesz uy sowa kluczowego commands w pliku sys. Moesz
te ograniczy ciek poszukiwa jedynie do katalogw zawierajcych dozwolone
polecenia, uywajc dyrektywy command-path. Na przykad moesz pozwoli
systemowi pablo na wykonywanie, oprcz polece rmail i rnews, take polecenia
bsmtp*:
system
...
commands

pablo
rmail rnews bsmtp

Przesyanie plikw
UUCP Taylora pozwala rwnie dostosowa przesyanie plikw dokadnie do twoich potrzeb. Moesz wyczy przesyanie plikw do i z jakiego systemu. Po prostu
ustaw request na warto no, a system zdalny nie bdzie w stanie ani odbiera, ani
wysya adnych plikw z twojego systemu. Podobnie moesz zakaza uytkownikom przesyania plikw do i z systemu, ustawiajc opcj transfer na no. Domylnie uytkownicy obu systemw, lokalnego i zdalnego, nie bd mogli przesya
plikw w adn stron.
Poza tym moesz skonfigurowa katalogi, do ktrych i z ktrych mog by kopiowane pliki. Zwykle ograniczasz dostp zdalnych systemw tylko do jednego drzewa katalogw, ale wci pozwalasz uytkownikom na wysyanie plikw z ich katalogu macierzystego. Przewanie zdalni uytkownicy maj prawo pobiera pliki jedynie z publicznego katalogu UUCP, /var/spool/uucppublic. Jest to tradycyjne miejsce
publicznego udostpniania plikw, podobnie jak serwery FTP w Internecie**.
UUCP Taylora udostpnia cztery rne polecenia do konfigurowania katalogw do
wysyania i odbierania plikw. S to: local-send okrela list katalogw, z ktrych
uytkownik moe wysya pliki przez UUCP, local-receive okrela list katalogw,
z ktrych uytkownik moe pobiera pliki, remote-send oraz remote-receive, ktre
dziaaj analogicznie, ale dla da z systemw zdalnych. Przyjrzyj si poniszemu
przykadowi:
system
...
local-send
local-receive
remote-send
remote-receive

pablo
/home ~
/home ~/receive
~ !~/incoming !~/receive
~/incoming

Polecenie local-send pozwala uytkownikom twojego hosta na wysyanie dowolnych


plikw z katalogu poniej /home i z publicznego katalogu UUCP do systemu pablo.
Polecenie local-receive pozwala na umieszczanie plikw w dostpnym do publiczne* bsmtp jest uywane do dostarczania poczty w systemie wsadowym SMTP.
** Moesz uy znaku tyldy (~), by odwoa si do katalogu publicznego UUCP, ale tylko w plikach konfiguracyjnych UUCP. Poza nimi tylda zwykle oznacza katalog macierzysty uytkownika

Kontrola dostpu do funkcji UUCP

291

go zapisu katalogu receive w uucppublic lub w dostpnych do publicznego zapisu katalogach poniej /home. Dyrektywa remote-send pozwala systemowi pablo na danie plikw z katalogu /var/spool/uucppublic, poza plikami zawartymi w katalogach
incoming i receive. Jest to sygnalizowane uucico przez poprzedzenie nazw katalogw
wykrzyknikami. Ostatni wiersz pozwala pablo na umieszczanie plikw w katalogu
incoming.
Gwnym problemem przy przesyaniu plikw za pomoc UUCP jest to, e pliki s
odbierane tylko do katalogw, ktre s publicznie dostpne do zapisu. Moe to skusi niektrych uytkownikw do zastawiania puapek na innych. Jednak nie da si
rozwiza tego problemu inaczej, ni przez cakowite zablokowanie przesyania
plikw do UUCP.

Przekazywanie
UUCP oferuje mechanizm pozwalajcy na inicjacj przesyania plikw w twoim
imieniu. Zamy na przykad, e twj system ma dostp uucp do systemu seci, ale
nie ma dostpu do systemu uchile. Za porednictwem wspomnianego mechanizmu
moesz poprosi seci, aby odebra dla ciebie pliki z uchile i wysa je do twojego systemu. Mona to zrobi poniszym poleceniem:
$ uucp -r seci!uchile!~/find-ls.gz ~/uchile.files.gz

Ta technika przekazywania zada przez kilka systemw jest nazywana po prostu


przekazywaniem (ang. forwarding). W twoim systemie UUCP moesz ograniczy
usug przekazywania do kilku hostw, o ktrych wiesz, e nie nabij ci ogromnego
rachunku telefonicznego przy ciganiu najnowszych plikw rdowych X11R6.
Domylnie UUCP Taylora w ogle wycza przekazywanie. Aby je wczy dla jakiego systemu, moesz uy polecenia forward. Polecenie to wypisuje list orodkw, ktre mog da od ciebie przekazania zada do nich i od nich. Na
przykad administrator UUCP systemu seci mgby doda nastpujce wiersze do
pliku sys, by pozwoli systemowi pablo na ciganie plikw z uchile:
########################
# pablo
system
pablo
...
forward
uchile
########################
# uchile
system
uchile
...
forward-to
pablo

Wpis forward-to dla uchile jest potrzebny po to, by wszystkie odbierane pliki
byy przekazywane do pablo. W przeciwnym razie UUCP by je odrzucao. Wpis ten
wykorzystuje odmian polecenia forward pozwalajc uchile na wysyanie plikw
tylko do pablo przez seci, a nie w inny sposb.
Aby zezwoli na przekazywanie do dowolnego systemu, uyj specjalnego sowa
kluczowego ANY (wymagane due litery).

292

Rozdzia 16: Zarzdzanie UUCP Taylora

Konfigurowanie systemu do przyjmowania pocze


komutowanych
Jeli chcesz skonfigurowa swj system tak, aby przyjmowa poczenia komutowane, musisz zezwoli na logowanie do twojego portu szeregowego i dostosowa niektre pliki systemowe do obsugi kont UUCP. Omwimy to w tym podrozdziale.

Zapewnienie kont UUCP


Na pocztek musisz skonfigurowa konta uytkownika, ktre pozwol zdalnym
orodkom logowa si do twojego systemu i realizowa poczenie UUCP. Musisz
stworzy oddzieln nazw dla kadego systemu, ktry bdzie si z tob czy. Przy
konfigurowaniu konta dla systemu pablo moesz wykorzysta nazw uytkownika
Upablo. Nie ma tutaj adnych ustalonych zasad tworzenia nazw uytkownikw,
a wic mog by dowolne; wygodniej jest, jeeli nazwa uytkownika wie si w jaki sposb z nazw hosta zdalnego.
W przypadku systemw, ktre wdzwaniaj si przez port szeregowy, zwykle dodajesz konta w pliku /etc/passwd. Dobrze jest umieci wszystkie identyfikatory UUCP
w specjalnej grupie, na przykad uuguest. Katalog macierzysty kont powinien by
ustawiony na publiczny katalog bufora /var/spool/uucppublic. Powoka logowania
musi by ustawiona na uucico.
Aby obsuy systemy UUCP czce si do ciebie przez TCP, musisz skonfigurowa
inetd tak, aby obsugiwa poczenia przychodzce na port uucp. W tym celu, dodaje
si poniszy wiersz do pliku /etc/inetd.conf*:
uucp

stream

tcp

nowait

root

/usr/sbin/tcpd

/usr/lib/uucp/uucico -l

Opcja l powoduje, e uucico przeprowadza wasn procedur uwierzytelniania. Pyta


o nazw uytkownika i haso, tak jak standardowy program login, ale wykorzystuje
swoj prywatn baz hase, zamiast /etc/passwd. Prywatny plik hase nazywa si
/etc/uucp/passwd i zawiera poczone w pary: nazwy uytkownikw i hasa:
Upablo
Ulorca

IslaNegra
co'rdoba

Plik ten musi by wasnoci uucp i mie prawa dostpu 600.


Czy ta baza danych wyglda na tyle sensownie, by chcia jej uywa take do
zwykego logowania przez cza szeregowe? Oczywicie, w pewnych sytuacjach
moesz. Potrzebujesz jedynie programu getty, ktry w przypadku uytkownikw
UUCP ma moliwo wywoania uucico zamiast /bin/login**. Wywoanie uucico wyglda tak:
/usr/lib/uucp/uucico -l -u uytkownik

Zauwa, e tcpd zwykle ma tryb 700, a wic musisz go wywoywa jako uytkownik root, a nie uucp.
tcpd jest omwione dokadniej w rozdziale 12, Wane funkcje sieciowe.
** Dobrze nadaje si do tego mgetty Gerta Doeringa. Dziaa na rnych platformach, wcznie z SCO Unix,
AIX, SunOS, HP-UX i Linuksem.

Konfigurowanie systemu do przyjmowania pocze komutowanych

293

Opcja u mwi, by uucico uywa zadanej nazwy uytkownika, zamiast o ni pyta*.


Aby zabezpieczy twoich uytkownikw UUCP przed dzwonicymi, ktrzy mogliby poda faszyw nazw systemu i przej ca poczt, powiniene doda polecenia
called-login do kadego wpisu systemu w pliku sys. Wyjaniamy to w nastpnym
podrozdziale.

Zabezpieczanie si przed kanciarzami


Gwnym problemem UUCP jest to, e dzwonicy system moe poda faszyw nazw. Po zalogowaniu si system podaje nazw, ale serwer nie ma sposobu na jej
sprawdzenie. Dlatego atakujcy mgby zalogowa si na swoje konto UUCP, udawa kogo innego i pobra poczt przeznaczon dla innego orodka. Jest to
szczeglnie problematyczne, gdy oferujesz logowanie anonimowe, gdzie haso jest
publicznie dostpne.
Musisz broni si przed oszustami. Kady system powinien uywa jakiej nazwy
uytkownika podanej w called-login w pliku sys. Przykadowy wpis mgby
wyglda tak:
system
pablo
... typowe opcje...
called-login
Upablo

Rezultat jest taki, e gdy system si zaloguje i twierdzi, e nazywa si pablo, uucico
sprawdza, czy zalogowa si jako Upablo. Jeeli nie, system dzwonicy jest wyczany, a poczenie zrywane. Dopisywanie polecenia called-login do kadego wpisu
systemowego w twoim pliku sys powinno wej ci w krew. Wane jest, by zrobi to
dla wszystkich systemw z twojego pliku sys, bez wzgldu na to, czy kiedykolwiek
bd dzwoniy do twojego orodka, czy nie. Dla tych, ktre nigdy nie dzwoni, powiniene ustawi called-login na jak cakowicie faszyw nazw uytkownika, jak neverlogsin.

Bd paranoikiem: sprawdzanie licznika pocze


Innym sposobem ochrony swojego systemu i wykrywania oszustw jest uycie licznika wywoa. Pomaga on zabezpieczy si przed intruzami, ktrzy w jaki sposb
zdobyli haso i mog si zalogowa do twojego systemu UUCP.
Sprawdzanie licznika pocze polega na tym, e obie maszyny ledz liczb zrealizowanych do tej pory pocze. Licznik jest zwikszany przy kadym poczeniu.
Po zalogowaniu si dzwonicy wysya swj kolejny numer, a odbiorca porwnuje
go z wasnym numerem. Jeeli si nie zgadzaj, prba poczenia koczy si odmow. Jeeli pierwsza liczba zostanie wybrana losowo, intruz bdzie mia problem,
by poprawnie zgadn kolejny numer poczenia.
Jednak sprawdzanie licznika pocze to co wicej. Nawet jeeli jaki mdrala wykryby twj numer poczenia i twoje haso, dowiedziaby si o tym. Gdy atakujcy
dzwoni do twojego wza pocztowego UUCP i kradnie poczt, numer porzdkowy
*

Tej opcji nie ma w wersji 1.04.

294

Rozdzia 16: Zarzdzanie UUCP Taylora

w wle zwiksza si o jeden. Nastpnie, gdy ty zadzwonisz to twojego wza i


sprbujesz si zalogowa, zdalne uucico odmwi ci, poniewa numery nie bd si
zgadzay!
Jeeli wczye sprawdzanie licznika pocze, powiniene przeglda regularnie
pliki log, poszukujc komunikatw bdw, ktre informuj o potencjalnych atakach. Jeeli twj system odrzuca numer poczenia odebrany z systemu dzwonicego, uucico umieszcza w pliku log komunikat o treci Out of sequence call rejected
(odrzucono poczenie o zym numerze porzdkowym). Jeeli twj system zostanie
odrzucony przez wze ze wzgldu na zy numer, w pliku log pojawi si komunikat
Handshake failed (RBADSEQ) (Uzgadnianie si nie powiodo).
Aby wczy sprawdzanie licznika pocze, dodaj ponisze polecenie do opisu systemu:
# wczenie sprawdzania licznika pocze
sequence
true

Ponadto musisz stworzy plik zawierajcy sam numer poczenia. UUCP Taylora
przechowuje ten numer w pliku .Sequence w katalogu buforowym hosta zdalnego.
Plik musi by wasnoci uytkownika uucp i musi mie prawa 600 (to znaczy prawa
czytania i zapisu tylko dla uytkownika uucp). Najlepiej jest zainicjowa ten plik
wczeniej uzgodnion wartoci losow. Prosty sposb na utworzenie tego pliku
jest nastpujcy:
#
#
#
#

cd /var/spool/uucp/pablo
echo 94316 > .Sequence
chmod 600 .Sequence
chown uucp.uucp .Sequence

Oczywicie zdalny orodek musi take wczy sprawdzanie licznika pocze


i rozpocz od tego samego numeru co ty.

Anonimowe UUCP
Gdyby chcia da anonimowy dostp UUCP do swojego systemu, musiaby najpierw stworzy specjalne konto zgodnie z tym, co wspomnielimy wczeniej. Powszechnie tworzy si konto o nazwie i hale uucp.
Ponadto musisz skonfigurowa kilka opcji bezpieczestwa dla nieznanych systemw. Na przykad moesz zakaza im wykonywania pewnych polece w twoim systemie. Jednak nie moesz ustawi tych parametrw w pliku sys, poniewa polecenie
system wymaga podania nazwy systemu, a tej nie znasz. UUCP Taylora rozwizuje ten problem przez polecenie unknown. Moe by ono uywane w pliku config do
okrelenia dowolnego polecenia, ktre zwykle pojawia si w opisie systemu:
unknown
unknown
unknown
unknown
unknown

remote-receive ~/incoming
remote-send ~/pub
max-remote-debug none
command-path /usr/lib/uucp/anon-bin
commands rmail

Utrudnia to nieznanym systemom pobieranie plikw z katalogu pub i wrzucanie


plikw do katalogu incoming w /var/spool/uucppublic. Nastpny wiersz powoduje, e
uucico bdzie ignorowa wszelkie dania od systemw odnoszce si do lokalnego

Protokoy niskiego poziomu w UUCP

295

wczenia debugowania. Ostatnie dwa wiersze zezwalaj nieznanym systemom


na wywoanie rmail. Jednak podana cieka zezwala uucico szuka polecenia rmail
tylko w katalogu prywatnym anon-bin. To ograniczenie pozwala na udostpnienie
specjalnego polecenia rmail, ktre na przykad przekazuje ca poczt superuytkownikowi do sprawdzenia. Pozwala to anonimowym uytkownikom na dotarcie
do waciciela systemu, ale jednoczenie zapobiega wysyaniu poczty do innych orodkw.
Aby wczy anonimowe UUCP, musisz w pliku config poda przynajmniej jedn
dyrektyw unknown. W przeciwnym razie uucico odrzuci wszystkie nieznane systemy.

Protokoy niskiego poziomu w UUCP


Aby wynegocjowa z drug stron sterowanie sesj i przesyanie plikw, uucico uywa zestawu standardowych komunikatw. Czsto nazywa si to protokoem wysokiego poziomu. W czasie fazy inicjacyjnej i fazy zawieszania s one wysyane w postaci
prostych cigw znakw. Jednak w czasie fazy rzeczywistego przesyania uywany
jest dodatkowo protok niskiego poziomu, przewanie przezroczysty dla wyszych poziomw. Protok ten daje pewne dodatkowe moliwoci, jak sprawdzanie
bdw w wysyanych danych w przypadku zawodnych czy.

Przegld protokow
UUCP jest uywane z rnymi typami pocze, jak cza szeregowe, TCP lub czasem nawet X.25. Korzystne jest przesyanie UUCP w protokoach stworzonych specjalnie dla niszych protokow sieciowych. Ponadto kilka implementacji UUCP zawiera rne protokoy, ktre robi z grubsza to samo.
Protokoy mona podzieli na dwie kategorie: strumieniowe i pakietowe. Protokoy
strumieniowe przesyaj plik w caoci, obliczajc ewentualnie jego sum kontroln.
W takiej sytuacji prawie nie istnieje nadmiarowo, ale wymagane jest niezawodne
poczenie, poniewa najmniejszy bd powoduje, e cay plik musi by przesany
ponownie. Te protokoy s przewanie uywane w poczeniach TCP, ale nie nadaj
si do uytku w liniach telefonicznych. Cho nowoczesne modemy doskonale koryguj bdy, nie s idealne. Nie ma te moliwoci wykrycia bdw wystpujcych
pomidzy twoim komputerem a modemem.
Natomiast protokoy pakietowe dziel plik na kilka rwnych czci. Kady pakiet
jest wysyany i odbierany niezalenie, obliczana jest suma kontrolna, a do nadawcy
zwracane jest potwierdzenie. Aby usprawni dziaanie tych protokow, opracowano protokoy przesuwnego okna (ang. sliding-window protocols), ktrych zadaniem
jest przyjcie pewnej ograniczonej liczby (okno) zalegych potwierdze w dowolnej
chwili. Znacznie skraca to czas przestoju uucico w czasie przesyania. Relatywnie dua nadmiarowo w porwnaniu z protokoami strumieniowymi powoduje, e protokoy pakietowe s nieefektywne we wsppracy z TCP, natomiast s idealne dla linii telefonicznych.

296

Rozdzia 16: Zarzdzanie UUCP Taylora

Rozszerzenie cieki danych take nie jest bez znaczenia. Czasem niemoliwe jest
wysyanie znakw 8-bitowych przez cze szeregowe. Na przykad poczenie
mogoby prowadzi do uproszczonego terminala serwera, ktry obcina ostatni bit.
Gdy przesyasz 8-bitowe znaki przez 7-bitowe poczenie, musz by one maskowane. W najgorszym przypadku cytowanie dwukrotnie zwiksza liczb przesyanych
danych, cho mona to wyrwna kompresj realizowan sprztowo. Linie, ktre
mog przesya dowolne znaki 8-bitowe, s zwykle nazywane 8-bit clean. Takie
wanie s wszystkie poczenia TCP oraz wikszo pocze modemowych.
UUCP Taylora w wersji 1.06 obsuguje szereg protokow UUCP. Najwaniejsze
z nich to:
g
Jest to najpopularniejszy protok i powinien by rozumiany przez praktycznie
wszystkie uucico. Gruntowny sprawdza bdy i doskonale nadaje si do szumicych linii telefonicznych. g wymaga poczenia 8-bitowego. Jest protokoem
pakietowym, wykorzystujcym technik przesuwnego okna.
i

Jest to pakietowy protok dwukierunkowy, ktry moe wysya i odbiera pliki


w tym samym czasie. Wymaga poczenia w penym dupleksie i 8-bitowej cieki danych. Aktualnie wsppracuje tylko z UUCP Taylora.
Ten protok jest przeznaczony do stosowania w poczeniach TCP lub innych
sieciach naprawd wolnych od bdw. Wykorzystuje 1024-bajtowe pakiety
i wymaga poczenia 8-bitowego.
Ten protok w zasadzie dziaa tak samo jak t. Gwna rnica polega na tym, e
e jest protokoem strumieniowym i dlatego nadaje si jedynie do stosowania
w niezawodnych sieciach.
Ten protok jest przeznaczony do stosowania w niezawodnych poczeniach
X.25. Jest to protok strumieniowy i wymaga 7-bitowej cieki danych. Znaki
8-bitowe s maskowane, co moe powodowa, e protok nie bdzie efektywny.
Jest to wersja protokou g implementowana przez 4. wydanie systemu V. Jest
obsugiwany rwnie przez inne wersje UUCP.
Ten protok jest podobny do protokou ZMODEM. Wymaga poczenia 8-bitowego, ale maskuje pewne znaki sterujce, jak XON i XOFF.

Strojenie protokou transmisji


Wszystkie protokoy toleruj pewne rnice w rozmiarach pakietw, czasach oczekiwania itp. Zwykle domylne wartoci dziaaj dobrze w standardowych warunkach, ale mog nie by optymalne w twojej sytuacji. Na przykad protok g wyko-

Rozwizywanie problemw

297

rzystuje rozmiary okien od 1 do 7 i rozmiary pakietw bdce potg 2 poczwszy


od 64 do 4096. Jeeli twoja linia telefoniczna zwykle jest tak zakcona, e gubi wicej
ni 5 procent wszystkich pakietw, powiniene zmniejszy rozmiar pakietu i okna.
Z drugiej strony przy bardzo dobrych liniach telefonicznych, potwierdzanie kadego 128-bajtowego pakietu moe by marnotrawstwem, a wic moe warto wtedy
zwikszy rozmiar pakietu do 512 lub nawet 1024 bajtw. Wikszo plikw binarnych zawartych w dystybucjach Linuksa ma domyln warto rozmiaru okna 7
i pakietu 128 bajtw.
UUCP Taylora pozwala dostroi parametry poleceniem protocol-parameter umieszczanym w pliku sys. Na przykad, aby ustawi rozmiar pakietu dla protokou g na warto 512 w czasie poczenia z pablo, musisz doda:
system
pablo
...
protocol-parameter g packet-size 512

Parametry, ktre mona zmienia, i ich nazwy nie s jednakowe dla wszystkich protokow. Ich pen list znajdziesz w dokumentacji doczonej do kodu rdowego
UUCP Taylora.

Wybr okrelonych protokow


Nie kada implementacja uucico rozumie wszystkie protokoy, a wic w fazie wstpnego uzgadniania oba procesy musz ustali jeden wsplny protok. Nadrzdny
system uucico oferuje podlegemu list obsugiwanych protokow, wysyajc
Pprotlist, z ktrej system podlegy musi co wybra.
W oparciu o typ uywanego portu (modem, TCP lub poczenie bezporednie), uucico tworzy domyln list protokow. Dla modemu i poczenia bezporedniego lista ta zwykle zawiera protokoy i, a, g, G i j. Dla pocze TCP lista zawiera t, e, i, a, g,
G, j i f. Tak domyln list wolno zmieni za pomoc polecenia protocols, ktre mona umieci w opisie zarwno systemu, jak i portu. Na przykad mgby dokona
edycji pliku port twojego modemu i zmieni go tak:
port
...
protocols

serial1
igG

Tym sposobem wszelkie przychodzce i wychodzce przez ten port poczenia bd


uyway i, g lub G. Jeeli system zdalny nie obsuguje adnego z nich, poczenie si
nie powiedzie.

Rozwizywanie problemw
Ten podrozdzia opisuje, co moe si nie uda przy poczeniu UUCP, i podpowiada, gdzie szuka bdu i jak go poprawi. Pokazujemy tu najczciej spotykane problemy, ale wystpi mog te inne po prostu nie wszystkie zdoalimy tu pokaza.
Jeeli masz problem, wcz debugowanie przez xall i przyjrzyj si wynikowi w pliku Debug w katalogu bufora. Plik ten powinien ci pomc szybko rozpozna problem.
Czsto pomocne jest wczenie gonika modemu, gdy nie nawizuje on poczenia.

298

Rozdzia 16: Zarzdzanie UUCP Taylora

W przypadku modemw kompatybilnych ze standardem Hayesa, moesz wczy


gonik, dodajc ATL1M1 OK w dialogu modemu w pliku dial.
Przede wszystkim powiniene sprawdzi, czy wszystkie prawa dostpu do plikw
s poprawne. uucico powinno mie prawo setuid uucp, a wszystkie pliki w katalogach /usr/lib/uucp, /var/spool/uucp i /var/spool/uucppublic powinny by wasnoci
uucp. Istnieje take kilka plikw ukrytych w katalogu buforowym. One take musz
by wasnoci uucp*.
Gdy jeste ju pewny, e prawa dostpu do wszystkich plikw s poprawne, a nadal
masz problemy, moesz zacz bardziej dosownie traktowa komunikaty o bdach.
Przyjrzyjmy si teraz kilku najczciej spotykanym bdom i problemom.

uucico wci mwi Wrong Time to Call


Oznacza to, e prawdopodobnie w opisie systemu w pliku sys nie podae polecenia
time ze szczegami dotyczcymi dzwonienia lub zapisae je w taki sposb, e nie
mona ich wykorzysta. Jeeli nie ma rozkadu dzwonienia, uucico uznaje, e do systemu nie mona dzwoni.

uucico zgasza, e orodek jest ju zablokowany


Oznacza to, e uucico wykrywa w katalogu /var/spool/uucp plik blokujcy dla systemu zdalnego. Plik blokujcy moe by pozostaoci po poprzednim poczeniu,
ktre ulego awarii lub zostao przerwane. Inne wytumaczenie to inny proces uucico, ktry prbowa zadzwoni do systemu zdalnego i zatrzyma si w skrypcie dialogowym lub z innego powodu.
Aby naprawi ten bd, za pomoc sygnau zawieszenia zatrzymaj wszystkie aktywne
procesy uucico dla danego orodka i usu wszelkie pozostae po nich pliki blokujce.

Moesz podczy si do orodka zdalnego, ale skrypt dialogowy nie dziaa


Przyjrzyj si komunikatowi otrzymanemu z orodka zdalnego. Jeeli jest on uszkodzony, moe to oznacza problemy z prdkoci. W przeciwnym razie potwierd, e
naprawd zgadza si z tym, czego oczekuje twj skrypt dialogowy. Pamitaj, e
skrypt dialogowy rozpoczyna od cigu oczekiwanego. Jeeli odebrae monit logowania i wysae swoj nazw, ale nigdy nie dostae pytania o haso, wstaw opnienie przed jej wysaniem lub nawet midzy literami. Moe dziaasz za szybko dla
swojego modemu.

Twj modem nie dzwoni


Jeeli twj modem nie pokazuje, e linia DTR zostaa uaktywniona, gdy uucico
dzwoni, urzdzenie uucico moe nie by poprawne. Jeeli twj modem rozpoznaje
DTR, sprawd programem termiala, e moesz pisa do modemu. Jeeli to dziaa,
wcz echo opcj \E na pocztku dialogu z modemem. Jeeli modem nie powtrzy
*

To znaczy pliki o nazwach rozpoczynajcych si od kropki. Takie pliki normalnie nie s wywietlane
przez polecenie ls.

Rozwizywanie problemw

299

twojego polecenia w czasie dialogu, sprawd, czy prdko linii jest odpowiednia.
Jeeli zobaczysz echo, sprawd, czy wyczye odpowiedzi modemu lub ustawie
kody. Zweryfikuj poprawno samego skryptu dialogowego. Pamitaj, e aby
wysa do modemu odwrotny ukonik musisz napisa dwa takie noniki.

Twj modem prbuje dzwoni, ale nie udaje mu si wyj na zewntrz


Wstaw opnienie w numerze telefonu, szczeglnie jeeli musisz wybiera specjaln sekwencj, aby wyj z sieci telefonicznej firmy na zewntrz. Upewnij si, e
uywasz poprawnego typu urzdzenia, poniewa niektre sieci telefoniczne
obsuguj tylko jeden typ dzwonienia. Sprawd dwa razy numer telefonu, by mie
pewno, e jest on poprawny.

Logowanie udaje si, ale uzgadnianie nie


Moe to oznacza wiele rnych problemw. Wynik pliku log powinien ci co podpowiedzie. Zobacz, jakie protokoy oferuje zdalny orodek (wysya on w czasie
uzgadniania cig znakw P protlist). Aby uzgadnianie si powiodo, obie strony
musz obsugiwa przynajmniej jeden wsplny protok, a wic sprawd, czy to robi.
Jeeli system zdalny wysya RLCK, oznacza to, e w orodku zdalnym, do ktrego
jeste ju podczony przez inn lini, zalega przedawniony plik blokujcy. W takiej
sytuacji popro administratora systemu zdalnego o usunicie pliku.
Jeeli zdalny system wysya RBADSEQ, to ma wczone zliczanie pocze z tob,
ale licznik si nie zgadza. Jeeli wysya RLOGIN, nie masz prawa zalogowa si z danym ID.

Pliki log i debugowanie


Gdy kompilujesz pakiet UUCP, by wykorzystywa Taylorowskie logowanie bdw,
masz tylko trzy pliki log znajdujce si w katalogu buforowym. Gwny plik log nosi
nazw Log i zawiera wszelkie informacje o zestawionych poczeniach i przesanych
plikach. Typowy fragment wyglda (po niewielkim przeformatowaniu w celu dopasowania do strony) tak:
uucico pablo - (1994-05-28 17:15:01.66 539) Calling system pablo (port cua3)
uucico pablo - (1994-05-28 17:15:39.25 539) Login successful
uucico pablo - (1994-05-28 17:15:39.90 539) Handshake successful
(protocol 'g' packet size 1024 window 7)
uucico pablo postmaster (1994-05-28 17:15:43.65 539) Receiving D.pabloB04aj
uucico pablo postmaster (1994-05-28 17:15:46.51 539) Receiving X.pabloX04ai
uucico pablo postmaster (1994-05-28 17:15:48.91 539) Receiving D.pabloB04at
uucico pablo postmaster (1994-05-28 17:15:51.52 539) Receiving D.pabloX04as
uucico pablo postmaster (1994-05-28 17:15:54.01 539) Receiving D.pabloB04c2
uucico pablo postmaster (1994-05-28 17:15:57.17 539) Receiving D.pabloX04c1
uucico pablo - (1994-05-28 17:15:59.05 539) Protocol 'g' packets: sent 15,
resent 0, received 32
uucico pablo - (1994-05-28 17:16:02.50 539) Cal complete (26 seconds)
uuxqt pablo postmaster (1994-05-28 17:16:11.41 546) Executing X.pabloX04ai
(rmail okir)

300

Rozdzia 16: Zarzdzanie UUCP Taylora

uuxqt pablo postmaster (1994-05-28 17:16:13.30 546) Executing X.pabloX04as


(rmail okir)
uuxqt pablo postmaster (1994-05-28 17:16:13.51 546) Executing X.pabloX04c1
(rmail okir)

Drugi wanym plikiem log jest Stats, ktry zawiera statystyki dotyczce przesyanych plikw. Cz Stats odpowiedzialna za powysze transfery wyglda tak
(znw wiersze podzielono, aby zmieci je na stronie):
postmaster pablo (1994-05-28 17:15:44.78)
received 1714 bytes in 1.802 seconds (951 bytes/sec)
postmaster pablo (1994-05-28 17:15:46.66)
received 57 bytes in 0.634 seconds (89 bytes/sec)
postmaster pablo (1994-05-28 17:15:49.91)
received 1898 bytes in 1.599 seconds (1186 bytes/sec)
postmaster pablo (1994-05-28 17:15:51.67)
received 65 bytes in 0.555 seconds (117 bytes/sec)
postmaster pablo (1994-05-28 17:15:55.71)
received 3217 bytes in 2.254 seconds (1427 bytes/sec)
postmaster pablo (1994-05-28 17:15:57.31)
received 64 bytes in 0.590 seconds (110 bytes/sec)

Trzeci plik to Debug. Zapisywane s w nim informacje pomocne w debugowaniu. Jeeli uywasz debugowania, upewnij si, czy plik ten ma prawa dostpu 600. W zalenoci od wybranego trybu debugowania moe zawiera nazw uytkownika
i haso uywane do poczenia ze zdalnym systemem.
Jeeli masz jakie narzdzia do przegldania plikw log w tradycyjnym formacie uywanym przez implementacje kompatybilne z HDB, moesz rwnie skompilowa
UUCP Taylora tak, by generowao logi w stylu HDB. To kwestia wczenia opcji w pliku config.h w czasie kompilacji.

17

Poczta elektroniczna
Rozdzia 17: Poczta elektroniczna

Przesyanie poczty elektronicznej pozostaje najbardziej widocznym zastosowaniem


sieci, poczwszy od jej wynalezienia. U zarania e-mail by prost usug, ktra polegaa na kopiowaniu pliku z komputera na komputer i dodawaniu go do pliku
skrzynki pocztowej odbiorcy. Idea wci jest ta sama, cho stale rozwijajca si sie ze
zoonymi zasadami rutingu i rosnc liczb wiadomoci wymusia powstanie bardziej skomplikowanych schematw dziaania.
Opracowano rne standardy wymiany poczty. Orodki w Internecie przyjy standard wyoony w RFC-822 i rozwijany w dalszych RFC. Jest to niezaleny od komputera sposb na przesyanie przez poczt elektroniczn po prostu wszystkiego,
wcznie z grafik, plikami dwikowymi i zestawami znakw specjalnych*. CCITT
zdefiniowaa inny standard, X.400, ktre jeszcze funkcjonuje w duych firmach
i organizacjach rzdowych, ale stopniowo wychodzi z uycia.
Dla systemw Unix stworzono cakiem spor liczb programw do przesyania
poczty. Jeden z najlepiej znanych to sendmail, napisany przez Erica Allmana z Uniwersytetu Kalifornijskiego w Berkeley. Eric Allman obecnie udostpnia sendmaila w
ramach komercyjnego przedsiwzicia, ale program pozostaje darmowy. sendmail
jest dostarczany jako standardowy agent pocztowy w wielu dystrybucjach Linuksa.
Konfiguracj sendmaila opisujemy w rozdziale 18, Sendmail.
Linux wykorzystuje rwnie Exima, napisanego przez Philipa Hazela z uniwersytetu w Cambridge. Konfiguracj Exima opisujemy w rozdziale 19, Exim.
W porwnaniu z sendmailem, Exim ma raczej skromne moliwoci. Wielu orodkom
potrzebujcym poczty jednak wystarczaj.
Zarwno Exim, jak i sendmail obsuguj zestaw plikw konfiguracyjnych, ktry musi
by dostosowany do potrzeb systemu. Poza informacjami, ktrych wymaga podsystem poczty (jak nazwa hosta lokalnego), istnieje wiele parametrw, ktre mona do*

Jeeli nie wierzysz, przeczytaj RFC-1437.

302

Rozdzia 17: Poczta elektroniczna

stosowywa. Przy pierwszym zetkniciu gwny plik konfiguracyjny sendmaila jest


bardzo trudny do zrozumienia. Wyglda jakby twj kot zdrzemn si na klawiaturze, nacisnwszy klawisz [Shift]. Pliki konfiguracyjne Exima s bardziej uporzdkowane i atwiejsze do zrozumienia. Jednak Exim nie obsuguje bezporednio UUCP,
lecz tylko adresy domenowe. Moe teraz nie jest to ju tak niedogodne, jak niegdy.
Wikszoci orodkw ograniczenia Exima nie przeszkadzaj. Jednak konfiguracja
obu programw jest rwnie czasochonna.
W tym rozdziale powiemy, co to jest poczta elektroniczna i z jakimi zagadnieniami
styka si jej administrator. Rozdziay 18 i 19 zawieraj instrukcje dotyczce konfiguracji sendmaila i Exima. Powinny one wystarczy do uruchomienia mniejszych
orodkw , ale oczywicie opcji jest duo wicej i moesz spdzi wiele godzin przed
swoim komputerem na konfigurowaniu wymylnych funkcji.
W tym rozdziale krtko omwimy ustawienie elma popularnego agenta pocztowego
uytkownika dla systemw uniksowych, take dla Linuksa.
Wicej informacji na temat poczty elektronicznej w Linuksie znajdziesz w Electronic
Mail HOWTO, autorstwa Guylhema Aznara*; ten dokument jest regularnie rozsyany na list dyskusyjn comp.os.linux.answers. Pakiety dystrybucyjne elma, Exima
i sendmaila take zawieraj szczegowe dokumentacje, ktre powinny odpowiedzie na wikszo pyta na temat ich konfigurowania, a my w odpowiednich rozdziaach podajemy odniesienia do tej dokumentacji. Jeeli potrzebujesz oglnych informacji na temat poczty elektronicznej, przejrzyj rne RFC.

Co to jest wiadomo pocztowa


Mwic bardzo oglnie, wiadomo pocztowa skada si z treci i specjalnych danych administracyjnych okrelajcych odbiorc, sposb przesyania, i tym podobne
informacje, ktre rwnie widzisz, gdy patrzysz na normaln kopert listu.
Te dane administracyjne pasuj do dwch kategorii. W pierwszej znajduj si wszelkie dane, waciwe dla sposobu przesyania, jak adres nadawcy i odbiorcy. Dlatego
nazywa si je kopert. Mona je zmienia przez oprogramowanie transportowe
w czasie przekazywania wiadomoci.
Druga kategoria to wszelkie dane niezbdne do obsuenia wiadomoci, nie zwizane z adnym szczeglnym mechanizmem transportowym, czyli temat wiadomoci,
lista wszystkich odbiorcw i data wysania wiadomoci. W wielu sieciach przyjo
si poprzedzanie wiadomoci tymi danymi, a wic utworzenie tak zwanego nagwka poczty. Jest on oddzielony pustym wierszem od treci wiadomoci**.
Wikszo oprogramowania do przesyania poczty w wiecie Uniksa uywa formatu nagwka zdefiniowanego w RFC-822. Pierwotnym celem tego dokumentu
byo okrelenie standardu dla sieci ARPANET, ale poniewa z zaoenia by to stan*

Z Guylhemem mona si skontaktowa pod adresem guylhem@danmark.linux.eu.org.

** Do klienta naley decyzja o doczaniu do wiadomoci pliku signature lub .sig, zwykle zawierajcego
informacje o autorze wraz z artem lub mottem. Jest on oddzielony od treci wiadomoci wierszem zawierajcym znak i spacj.

Co to jest wiadomo pocztowa

303

dard niezaleny od rodowiska, atwo zosta zaadaptowany do innych sieci, wcznie z wieloma sieciami opartymi na UUCP.
Jednak RFC-822 jest najmniejszym wsplnym mianownikiem. W ostatnich latach
wymylono nowe standardy, aby poradzi sobie z nowymi potrzebami, takimi jak
szyfrowanie danych, midzynarodowy zestaw znakw i MIME (Multipurpose Internet Mail Extensions), opisany m.in. w RFC-1341.
We wszystkich tych standardach nagwek skada si z kilku wierszy oddzielonych
sekwencj koca wiersza. Wiersz skada si z nazwy pola w pierwszej kolumnie
i samego pola oddzielonego dwukropkiem i biaym znakiem. Format i skadnia kadego pola zale od nazwy pola. Pole nagwka mona przenosi do nastpnego nowego wiersza, jeeli rozpoczyna si on od biaego znaku, np. tabulatora. Pola mog
pojawia si w dowolnej kolejnoci.
Typowy nagwek poczty moe wyglda tak:
Return-Path: <ph10@cus.cam.ac.uk>
Received: ursa.cus.cam.ac.uk (cusexim@ursa.cus.cam.ac.uk [131.111.8.6])
by al.animats.net (8.9.3/8.9.3/Debian 8.9.3-6) with ESMTP id WAA04654
for <terry@animats.net>; Sun, 30 Jan 2000 22:30:01 +1100
Received: from ph10 (helo=localhost) by ursa.cus.cam.ac.uk with local-smtp
(Exim 3.13 #1) id 12EsYC-0001EeF-00; Sun, 30 Jan 2000 11:29:52 +0000
Date: Sun, 30 Jan 2000 11:29:52 +0000 (GMT)
From: Philip Hazel <ph10@cus.cam.ac.uk>
Reply-To: Philip Hazel <ph10@cus.cam.ac.uk>
To: Terry Dawson <terry@animats.net>, Andy Oram <andyo@oreilly.com>
Subject: Electronic mail chapter
In-Reply-To: <38921283.A58948F2@animats.net>
Message-ID: <Pine.SQL.3.96.1000130111515.5800A-200000@ursa.cus.cam.ac.uk>

Zwykle wszystkie wymagane pola nagwka s generowane przez interfejs programu pocztowego, takiego jak elm, pine, mush czy mailx. Jednak niektre s opcjonalne
i mog by dodawane przez uytkownika. Na przykad elm pozwala edytowa cz
nagwka poczty. Pozostae s dodawane przez oprogramowanie przesyajce
poczt. Jeeli zajrzysz do pliku lokalnej skrzynki pocztowej, moesz zobaczy, e
kada wiadomo jest poprzedzona lini From (uwaga: bez dwukropka). Nie jest
to nagwek RFC-822. Zosta on wstawiony przez twj program pocztowy dla wygody programu czytajcego wiadomoci z twojej skrzynki. Aby unikn potencjalnych problemw z wierszami w treci wiadomoci, ktre rozpoczynaj si rwnie
od sowa From, standardow procedur jest maskowanie kadego takiego
wystpienia znakiem >.
Oto zbir popularnych pl nagwkw i ich znaczenie:
From:
Zawiera adres pocztowy nadawcy i czasem take jego prawdziwe nazwisko.
Formatowane bardzo rnie.
To:
Jest to lista adresatw wiadomoci. Lista adresw jest oddzielana przecinkami.

304

Rozdzia 17: Poczta elektroniczna

Cc:

Jest to lista adresw e-mail, na ktre zostanie wysana kopia do wiadomoci.


Lista adresw jest oddzielana przecinkami.
Bcc:
Jest to lista adresw e-mail, na ktre zostanie wysana kopia do wiadomoci.
Kluczowa rnica pomidzy Cc: i Bcc: jest taka, e adresy wpisane w Bcc:
nie pojawiaj si w nagwku dostarczonej wiadomoci u adnego odbiorcy. Jest
to sposb na powiadomienie adresatw, e wysae kopie wiadomoci do innych osb, bez mwienia do kogo. Lista adresw jest oddzielana przecinkami.
Subject:
W kilku sowach opisuje zawarto poczty.
Date:
Zawiera dat i czas wysania wiadomoci.
Reply-To:
Okrela adres, na ktry nadawca chce przekierowa odpowied odbiorcy. Moe
by to przydatne, jeeli masz kilka kont, ale chcesz otrzymywa masow poczt
na tym, ktrego uywasz najczciej. To pole jest opcjonalne.
Organization:
Organizacja bdca wacicielem komputera, z ktrego pochodzi wiadomo. Jeeli twj komputer jest wasnoci prywatn, pozostaw to pole puste lub wstaw
sowo private albo co zupenie bez sensu. To pole nie jest opisane w RFC i jest
cakowicie opcjonalne. Niektre programy pocztowe obsuguj je bezporedno,
inne tego nie robi.
Message-ID:
Cig znakw wygenerowany przez program do przesyania poczty w systemie
wyjciowym. Jest to unikalny identyfikator wiadomoci.
Received:
Kady orodek, ktry przetwarza twoj wiadomo (wcznie z maszynami
nadawcy i odbiorcy), wstawia takie pole do nagwka, podajc nazw orodka,
ID wiadomoci, czas i dat odebrania, z jakiego orodka wiadomo nadesza i jakie oprogramowanie transportowe zostao uyte. Te linie pozwalaj ci przeledzi tras poczty i zgosi reklamacj do odpowiedzialnej osoby, jeeli co poszo
nie tak.
X-cokolwiek:
aden program zwizany z poczt nie powinien narzeka na nagwek, ktry
rozpoczyna si od X-. Jest on uywany do implementacji dodatkowych funkcji,
ktre nie zostay jeszcze uwzgldnione w RFC lub nigdy nie bd. Na przykad
istnia kiedy bardzo duy serwer list pocztowych dla Linuksa, ktry pozwala
okreli, z jakim kanaem chcesz si poczy, przez wstawienie cigu znakw
X-Mn-Key: i nazwy kanau.

Jak jest dostarczana poczta

305

Jak jest dostarczana poczta


W zasadzie poczt bdziesz pisa, uywajc interfejsu pocztowego, takiego jak mail
czy mailx, albo bardziej wyrafinowanych programw, takich jak mutt, tkrat czy pine.
Programy te s nazywane agentami pocztowymi uytkownika (ang. mail user agents),
w skrcie: MUA. Gdy wydajesz polecenie wysania wiadomoci, program interfejsu
w wikszoci przypadkw przekazuje j innemu programowi dorczycielowi. S
to tak zwane agenty przesyania wiadomoci (ang. mail transport agents), w skrcie
MTA. W wikszoci systemw to samo MTA jest uywane do dostarczania zarwno
poczty lokalnej, jak i zdalnej. Zwykle jest wywoywane jako /usr/sbin/sendmail lub jako /usr/lib/sendmail w systemach niezgodnych z FSSTND. W systemach UUCP nie
jest niczym niezwykym fakt, e dostarczanie jest obsugiwane przez dwa oddzielne
programy: rmail dla poczty zdalnej i lmail dla poczty lokalnej.
Lokalne dostarczanie poczty jest oczywicie czym wicej ni doczeniem przychodzcej wiadomoci do skrzynki pocztowej odbiorcy. Zwykle lokalne MTA rozumie aliasy (konfigurowane po to, aby adresy odbiorcy wskazyway na inne adresy) i przekazywanie (przekierowywanie poczty uytkownika w inne miejsce). Poza tym wiadomoci, ktre nie mog zosta dostarczone, zwykle musz by odbite
(ang. bounced), to znaczy zwrcone do nadawcy wraz z informacj o bdzie.
W przypadku dostarczania zdalnego, oprogramowanie transportowe zaley od typu poczenia. Poczta wdrujca przez sie TCP/IP zwykle uywa protokou SMTP
(Simple Mail Transfer Protocol), ktry jest opisany w RFC-821. SMTP ma dostarcza
poczt bezporednio do komputera odbiorcy, negocjujc transfer wiadomoci z demonem SMTP strony zdalnej. Obecnie obsug poczty w firmach organizuje si
w ten sposb, e tworzy si hosty, ktre przejmuj ca poczt dla adresatw z firmy,
a nastpnie kieruj j do wskazanego odbiorcy.
W sieciach UUCP poczta zwykle nie jest dostarczana bezporednio, lecz jest przekazywana do hosta docelowego przez szereg systemw porednich. Aby wysa wiadomo przez cze UUCP, MTA po stronie nadawcy zwykle wykonuje polecenie rmail
na systemie przekazujcym, uywajc w tym celu uux, i przekazuje wiadomo na
standardowe wejcie.
Poniewa uux jest wywoywane oddzielnie dla kadej wiadomoci, moe znacznie
obcia gwne huby pocztowe oraz zamieca kolejki buforowe UUCP setkami
maych plikw zajmujcych nieproporcjonalnie wiele miejsca na dysku*. Dlatego
niektre MTA pozwalaj ci zbiera kilka wiadomoci dla systemu zdalnego w jeden
plik wsadowy. Plik wsadowy zawiera te polecenia SMTP, ktre zwykle wydaje
host lokalny, jeeli byo uyte bezporednie poczenie SMTP. Nazywa si to wsadowe SMTP lub BSMTP. Dalej plik wsadowy jest przekazywany do programu rsmtp
lub bsmtp w systemie zdalnym, ktry przetwarza dane wejciowe prawie tak samo,
jakby to byo normalne poczenie SMTP.

To dlatego, e przestrze dyskowa jest zwykle alokowana w blokach po 1024 bajty. A wic nawet kilkubajtowa wiadomo zajmuje peny kilobajt.

306

Rozdzia 17: Poczta elektroniczna

Adresy e-mail
Adresy e-mail skadaj si przynajmniej z dwch czci. Jedna cz to nazwa domeny pocztowej, ktra ostatecznie zostanie przetumaczona na host adresata lub jaki
host przyjmujcy poczt w jego imieniu. Druga cz to unikalna nazwa uytkownika. Moe to by jego nazwa logowania, rzeczywiste nazwisko, posta Imi Nazwisko albo dowolny alias, ktry zostanie przetumaczony na nazw uytkownika lub
list uytkownikw. Inne schematy adresowania, jak X.400, uywaj bardziej oglnego zestawu atrybutw, uywanych do poszukiwania hosta adresata na serwerze
usug katalogowych X.500.
To, jak adresy e-mail s interpretowane, zaley w duym stopniu od typu sieci. Nas
interesuje, jak sieci TCP/IP i UUCP interpretuj adresy e-mail.

RFC-822
Orodki internetowe stosuj standard RFC-822. Jest to dobrze znany wszystkim zapis: nazwa_uytkownika@host.domena, gdzie host.domena to pena nazwa domenowa
hosta. Poprawna nazwa znaku oddzielajcego te dwie czci to commercial at, ale
wygodniej czyta go jako at. Taki zapis nie okrela trasy prowadzcej do hosta docelowego. Ruting wiadomoci jest obsugiwany przez mechanizmy, ktre opiszemy
wkrtce.
Z RFC-822 bdziesz si stale spotyka, jeeli masz orodek podczony do Internetu.
Jego zastosowanie wychodzi poza poczt i obejmuje te inne usugi, takie jak grupy
dyskusyjne. To, jak RFC-822 jest uywane w grupach dyskusyjnych, omawiamy
w rozdziale 20, Grupy dyskusyjne.

Dawne formaty pocztowe


W pierwotnym rodowisku UUCP powszechnie stosowana bya nastpujca posta
adresu: cieka!host!uytkownik, gdzie cieka opisywaa kolejno hostw, przez ktre wiadomo musiaa przej, aby osign host docelowy. Ta konstrukcja jest nazywana wykazem trasowania (ma te zwyczajow nazw angielsk bang path, od potocznej nazwy wykrzyknika bang). Obecnie wiele sieci opartych na UUCP stosuje si do
RFC-822 i rozumie adresy oparte na domenach.
Inne sieci wci inaczej rozumiej adresowanie. Na przykad sieci oparte na DECnet
wykorzystuj dwa dwukropki jako separator w adresie o postaci host::uytkownik*. Standard X.400 wykorzystuje zupenie inny schemat, opisujc odbiorc par atrybut-warto, jak np. kraj i firma.
W sieci FidoNet kady uytkownik jest identyfikowany przez kod typu 2:320/204.9
skadajcy si z czterech liczb oznaczajcych stref (2 to Europa), sie (320 to Pary
i okolice), wze (lokalny hub) i punkt (PC indywidualnego uytkownika). Adresy
FidoNet mog by odwzorowane na adresy standardu RFC-822. Przykad powy*

Jeeli prbujesz dotrze do adresu DECnetu ze rodowiska RFC-822, moesz uy zapisu host::uytkownik@przekanik, gdzie przekanik to nazwa znanego przekanika pomidzy Internetem a DECnetem.

Adresy e-mail

307

szy mgby zosta zapisany jako Thomas.Quinot@p9.f204.n320.z2.fidonet.org. Nie musimy dodawa, e nazwy domen byy atwe do zapamitania.

czenie rnych formatw poczty


Wiadomo, e tam, gdzie spotyka si kilka rnych standardw i paru mdrych ludzi, bd oni szuka sposobu na poczenie rnych systemw, tak by mogy ze sob
wsppracowa. W rezultacie istnieje szereg gatewayw, ktre cz ze sob ze dwa
rne systemy pocztowe, tak e poczta moe by przekazywana z jednego do drugiego. Przy czeniu dwch systemw krytycznym problemem jest adresowanie.
Nie bdziemy szczegowo rozwaa samych gatewayw, ale przyjrzymy si kilku komplikacjom w adresowaniu, ktre mog wystpi przy pewnego typu gatewayach.
Zajmijmy si poczeniem dwch rnych zapisw adresw: wykazem trasowania
UUCP i RFC-822. Te dwa typy adresowania nie wsppracuj zbyt dobrze. Zamy,
e mamy adres domenaA!uytkownik@domenaB. Nie jest jasne, czy znak @ ma wyszy
priorytet ni cieka, czy odwrotnie: czy mamy wysa wiadomo do domenyB i uytkownika domenaA!uytkownik, czy moe do domenyA, ktra przekae wiadomo do
uytkownika w domenieB.
Adresy czce rne typy operatorw s nazywane adresami hybrydowymi. Wanie
pokazany, najpowszechniejszy typ adresu jest zwykle rozwizywany przez nadanie
priorytetu znakowi @, a nie ciece. W przypadku domenaA!uytkownik@domenaB,
oznacza to wysanie wiadomoci najpierw do domenyB.
Jednak istnieje sposb na okrelenie tras w RFC-822: <@domenaA,@domenaB:uytkownik@domenaC> oznacza adres uytkownika w domenieC, gdzie domenaC jest osigalna
przez domenA i domenB (w tej kolejnoci). Ten typ adresu czsto jest nazywany adresem rutowanym rdowo (ang. source routed). Nie naley jednak polega na jego
dziaaniu, gdy wersje RFC opisujce ruting poczty zalecaj, by ruting rdowy
w adresie poczty by ignorowany i by bya podejmowana prba bezporedniego dostarczenia wiadomoci do zdalnego celu.
W przypadku adresu z operatorem %: uytkownik%domenaB@domenaA, poczta najpierw jest wysyana do domenyA, a znak % jest zamieniany na @. Adres w tym momencie ma posta uytkownik@domenaB i program pocztowy przekazuje twoj
wiadomo do domenyB, w ktrej jest dostarczana do podanego uytkownika. Ten typ
adresu jest czasem nazywany Ye Olde ARPAnet Kludge. Nie radzimy go uywa.
Czasami istniej pewne wskazania do uywania rnego sposobu adresowania.
Zostan one opisane w kolejnych podrozdziaach. W rodowisku RFC-822 zalecamy adresy bezwzgldne postaci uytkownik@host.domena; raczej trzeba unika innych formatw.

308

Rozdzia 17: Poczta elektroniczna

Jak dziaa ruting poczty


Proces przekierowujcy wiadomo do hosta adresata jest nazywany rutingiem. Poza znalezieniem cieki od nadawcy do odbiorcy, uwzgldnia sprawdzanie bdw
i moe te uwzgldnia prdko i optymalizacj kosztw.
Istnieje dua rnica pomidzy sposobem, w jaki orodek UUCP obsuguje ruting,
a sposobem, w jaki robi to orodek internetowy. W Internecie gwne zadanie kierowania danych do hosta adresata (gdy ju jest znany jego adres IP) jest realizowane
przez warstw sieciow IP, natomiast w strefie UUCP trasa musi by dostarczona
przez uytkownika lub wygenerowana przez agenta przesyajcego poczt.

Ruting poczty w Internecie


W Internecie konfiguracja hosta docelowego okrela, czy jest realizowany jaki
szczeglny ruting poczty. Domylnie wiadomo jest dostarczana do celu nastpujco: stwierdza si, do jakiego hosta ma by wysana i przekazuje mu bezporednio. Wikszo orodkw internetowych chce przekierowywa ca przychodzc
poczt do serwera pocztowego, ktry jest stale dostpny i jest w stanie obsuy cay
ruch i rozesa poczt lokalnie. Aby rozgosi t usug, orodek rozdaje przez baz
DNS tak zwane rekordy MX dla swojej lokalnej domeny. Skrt MX pochodzi od Mail
Exchanger (system wymieniajcy poczt); termin ten oznacza, e serwer dziaa jako
system przekazujcy poczt dla wszystkich adresw z danej domeny. Rekordy MX
mog by uywane rwnie do obsugi ruchu na rzecz hostw, ktre same nie s
podczone do Internetu, jak sieci UUCP czy hosty FidoNet, ktrych poczta musi by
przekazywana przez gateway.
Rekordom MX zawsze jest przypisywany jaki priorytet. Jest to dodatnia liczba
cakowita. Jeeli istnieje kilka systemw wymieniajcych poczt dla jednego hosta,
agent transportowy bdzie prbowa wysa wiadomo do hosta wymieniajcego
poczt, majcego najniszy priorytet. Jeeli mu si to nie uda, sprbuje uy hosta
z wysz wartoci. Jeeli sam host lokalny jest systemem wymieniajcym poczt
dla adresu docelowego, moe przekazywa wiadomoci tylko do hostw MX o niszym priorytecie ni jego wasny. Jest to dobry sposb na uniknicie ptli. Jeeli nie
istnieje rekord MX dla domeny lub nie pozosta aden odpowiedni rekord, agent
transportowy ma prawo sprawdzi, czy domena ma zwizany z ni adres IP,
i prbuje dostarczy poczt bezporednio do tego hosta.
Zamy, e firma Foobar, Inc. chce, eby jej poczta bya obsugiwana przez ich komputer mailhub. W DNS-ie bdzie miaa nastpujce rekordy MX:
green.foobar.com

IN MX

5 mailhub.foobar.com.

Dziki temu wiadomo, e mailhub.foobar.com jest systemem wymieniajcym poczt dla hosta green.foobar.com i ma priorytet 5. Host, ktry chce dostarczy poczt do
joe@green.foobar.com, sprawdza DNS i znajduje rekord MX wskazujcy na mailhub.
Jeeli nie ma rekordu MX o priorytecie mniejszym ni 5, wiadomo jest dostarczana
do mailhub, ktry z kolei przekazuje j do green.

Jak dziaa ruting poczty

309

Jest to tylko bardzo prosty przykad dziaania rekordw MX. Po wicej informacji na
temat rutowania poczty zajrzyj do RFC-821, RFC-974 i RFC-1123 w Internecie.

Ruting poczty w wiecie UUCP


Ruting poczty w sieciach UUCP jest duo bardziej skomplikowany ni w Internecie,
poniewa oprogramowanie transportowe nie realizuje go samodzielnie. Kiedy caa
poczta bya adresowana za pomoc wykazw trasowania. Wykazy trasowania wymieniay hosty, przez ktre naleao przekazywa wiadomo; poszczeglne hosty
oddzielano wykrzyknikami, a za hostem docelowym podawano nazw uytkownika. Aby zaadresowa list do uytkownika Janet na komputerze moria, uyby cieki
eek!swim!moria!janet. Wiadomo zostaaby wysana z twojego hosta do komputera
eek, a stamtd do swim i ostatecznie do moria.
Oczywist wad tej techniki jest to, e wymaga ona od ciebie pamitania wielu rzeczy na temat topologii sieci, szybkich czy itp., czego nie wymaga ruting w Internecie. Co gorsza, jeli przeoczysz jak zmian w topologii sieci jak usunite cza lub
hosty wiadomo nie dojdzie. Gdyby za przenis si w inne miejsce, z ca pewnoci musiaby uaktualni te wszystkie trasy.
Ruting rdowy ma swoje uzasadnienie, jeli istniej dwuznaczne nazwy hostw.
Na przykad zamy, e s dwa orodki o nazwie moria, jeden w Stanach Zjednoczonych, a drugi we Francji. Do ktrego z nich odnosi si adres moria!janet? Staje si
to jednoznaczne dopiero wtedy, gdy okrelisz drog, ktr mona dotrze do moria.
Pierwszym krokiem do unikalnoci nazw hostw byo rozpoczcie projektu mapowania UUCP. Jest on prowadzony w Rutgers University. Rejestruje si wszystkie
oficjalne nazwy hostw UUCP wraz z informacj o ich ssiadach UUCP i ich lokalizacji geograficznej. Informacje zebrane w ramach projektu mapowania UUCP s publikowane jako Mapy Usenetu, ktre z kolei s regularnie rozpowszechniane przez
Usenet. Typowy opis systemu w mapie (po usuniciu komentarzy) wyglda tak*:
moria
bert(DAILY/2),
swim(WEEKLY)

Ten wpis mwi, e moria ma poczenie z bertem, z ktrym czy si dwa razy
dziennie, i ze swimem, z ktrym czy si raz w tygodniu. Format pliku map
omwimy za chwil bardziej szczegowo.
Korzystajc z informacji zawartych w mapach, moesz automatycznie generowa
pene cieki z twojego hosta do orodka docelowego. Ta informacja zwykle jest zapisywana w pliku paths, zwanym take baz danych aliasw cieek. Zamy, e z map
wynika, e moesz dotrze do berta przez ernie. Alias cieki dla hosta moria wygenerowany na podstawie poprzedniej szcztkowej mapy moe wyglda jako tak:
moria

ernie!bert!moria!%s

Mapy dla orodkw zarejestrowanych w projekcie mapowania UUCP s rozpowszechniane przez grup dyskusyjn comp.mail.maps. Inne firmy mog publikowa oddzielne mapy dla wasnych sieci.

310

Rozdzia 17: Poczta elektroniczna

Jeeli teraz podasz adres docelowy janet@moria.uucp, twj MTA wykorzysta powysz tras i wyle wiadomo do ernie z adresem postaci bert!moria!janet.
Tworzenie pliku paths na podstawie penych map Usenetu nie jest jednak dobrym
pomysem. Informacja w nich zawarta zwykle bywa znieksztacona, a czasami nieaktualna. Dlatego tylko kilka gwnych hostw uywa penych wiatowych map
UUCP do tworzenia swoich plikw paths. Wikszo orodkw utrzymuje informacje o rutingu jedynie dla orodkw z ich ssiedztwa, a poczt przeznaczon dla
orodkw, ktrych nie mog znale w swoich bazach, wysyaj do mdrzejszych
hostw, ktre maj peniejsz informacj o rutingu. Ten schemat nazywa si rutingiem do inteligentnych hostw (ang. smart-host routing). Hosty, ktre maj tylko jedno
cze UUCP (tak zwane orodki brzegowe), same nie realizuj adnego rutingu.
W peni polegaj na mdrym hocie.

czenie UUCP i RFC-822


Jak dotd najlepszym lekarstwem na problemy rutowania poczty w sieciach UUCP
jest przyjcie systemu nazw domen w sieciach UUCP. Oczywicie, nie moesz przez
UUCP zadawa zapyta do serwera nazw. Mimo to wiele orodkw UUCP stworzyo mae domeny, ktre wewntrznie koordynuj ich ruting. Domeny te ogaszaj
w mapach jeden lub dwa hosty jako swoje gatewaye, dlatego nie kady host musi
mie wpis w domenie. Gatewaye obsuguj ca poczt, ktra przychodzi do domeny i z niej wychodzi. Schemat rutingu wewntrz domeny jest zupenie niewidoczny
dla wiata zewntrznego.
Dziaa to bardzo dobrze w schemacie rutingu z inteligentymi hostami. Globalne informacje o rutingu s utrzymywane jedynie przez gatewaye. Mniejsze hosty w domenie maj jedynie mae, rcznie pisane pliki paths, ktre podaj informacje o trasach w obrbie domeny i tras do huba pocztowego. Nawet gatewaye pocztowe nie
potrzebuj ju informacji o rutingu dla kadego hosta UUCP na wiecie. Poza pen
informacj o obsugiwanej domenie, musz one posiada teraz w swojej bazie jedynie trasy do caych domen. Na przykad te aliasy cieek kieruj ca poczt dla
orodkw domeny sub.org do hosta smurf:
.sub.org

swim!smurf!%s

Poczta adresowana do claire@jones.sub.org bdzie wysyana do swim z adresem


smurf!jones!claire.
Hierarchiczny porzdek przestrzeni nazw domen pozwala serwerom pocztowym
na czenie dokadniejszych tras z oglnymi. Na przykad system we Francji moe
mie specjalne trasy dla poddomeny fr, ale ca poczt dla hostw w domenie us kierowa przez jaki system w Stanach Zjednoczonych. W ten sposb ruting oparty na
domenach (bo tak si ta technika nazywa) znacznie redukuje rozmiar baz danych
o rutingu oraz operacje administracyjne.
Gwn korzyci pync z uywania nazw domenowych w rodowisku UUCP jest
jednak zgodno z RFC-822, co pozwala atwo przekazywa poczt pomidzy sieciami UUCP a Internetem. Wiele obecnych domen UUCP ma poczenie z gatewayem
internetowym, ktry dziaa jako ich inteligentny host. Wysanie wiadomoci przez

Jak dziaa ruting poczty

311

Internet jest szybsze, a informacje o rutingu s dokadniejsze, poniewa hosty w Internecie posuguj si DNS-em zamiast map Usenet.
Gateway internetowy domeny opartej na UUCP, ktry chce by dostpny z Internetu, ogasza swj rekord MX (rekordy MX opisalimy wczeniej w tym podrozdziale,
w sekcji Ruting poczty w Internecie). Zamy, e host moria naley do domeny orcnet.org. Natomiast gcc.groucho.edu dziaa jako jej gateway internetowy. moria uywa wic gcc2 jako inteligentnego hosta, a wic caa poczta dla obcych domen jest wysyana przez Internet. Z drugiej strony gcc2 ogasza rekord MX dla domeny *.orcnet.org i dostarcza ca przychodzc poczt dla orodkw orcnet do hosta moria.
Gwiazdka w *.orcnet.org jest znakiem uniwersalnym; oznacza, e pasuj tu wszystkie hosty z domeny nie posiadajce rekordw MX. Tak zwykle dzieje si w przypadku czystych domen UUCP.
Pozosta nam do rozwizania jeszcze jeden problem, a mianowicie: programy transportowe UUCP nie mog obsugiwa penych nazw domenowych. Wikszo pakietw UUCP zostaa tak zaprojektowana, by radzi sobie z nazwami hostw o dugoci do omiu znakw (a czasem nawet krtszymi), ale zupenie nie s obsugiwane
znaki niealfanumeryczne, takie jak kropki.
Dlatego trzeba tumaczy nazwy RFC-822 na nazwy hostw UUCP. To mapowanie
jest zupenie niezalene od implementacji. Jednym z powszechnie stosowanych sposobw odwzorowania penych nazw domenowych na nazwy UUCP jest zastosowanie pliku aliasw cieek:
moria.orcnet.org

ernie!bert!moria!%s

Dziki temu, na podstawie penego adresu domenowego, zostanie wygenerowany


czysty adres UUCP w postaci wykazu trasowania. Niektre programy pocztowe robi to za pomoc specjalnego programu. Na przykad sendmail wykorzystuje uucpxtable.
Przeksztacenie odwrotne (potocznie nazywane domenizowaniem) jest czasami wymagane przy wysyaniu poczty z sieci UUCP do Internetu. Dopki nadawca poczty
uywa w adresie docelowym penej nazwy domenowej, wystarczy pozostawi nazw domeny w adresie na kopercie przy przekazywaniu wiadomoci do inteligentnego hosta. Niektre orodki UUCP jednak nie nale do domeny. S one zwykle
domenizowane przez dodanie pseudodomeny uucp.
Baza aliasw cieek zapewnia gwne informacje o rutingu w sieciach UUCP. Typowy wpis wyglda tak (nazwa orodka i cieka s oddzielone tabulatorami):
moria.orcnet.org
moria

ernie!bert!moria!%s
ernie!bert!moria!%s

Na podstawie tego wpisu kada wiadomo przeznaczona dla hosta moria jest dostarczana przez ernie i bert. Jeeli program nie ma niezalenego sposobu na odwzorowanie pomidzy przestrzeniami nazw, musi zosta podana pena nazwa domenowa hosta moria oraz jego nazwa UUCP.
Gdyby chcia przekierowa do przekanika poczty wszystkie wiadomoci przeznaczone dla hostw znajdujcych si wewntrz tej domeny, mgby poda take

312

Rozdzia 17: Poczta elektroniczna

ciek w bazie aliasw cieek, poprzedzajc nazw domeny kropk oznaczajc


cel. Na przykad, gdyby wszystkie hosty z domeny sub.org byy osigalne przez
swim!smurf, wpis w bazie aliasw cieek mgby wyglda tak:
.sub.org

swim!smurf!%s

Pisanie plikw z aliasami cieek jest dopuszczalne jedynie wtedy, gdy masz orodek,
ktry nie musi zbyt wiele rutowa. Jeeli musisz realizowa ruting dla wielu hostw,
lepiej jest uy polecenia pathalias do stworzenia pliku na podstawie plikw map.
Mapy mog by utrzymywane w duo prostszy sposb, poniewa moesz po prostu
dodawa lub usuwa system, edytujc wpis i tworzc od nowa plik map. Cho mapy
publikowane w ramach projektu mapowania Usenetu rzadko s uywane do rutingu, mniejsze sieci UUCP mog udostpnia informacje o rutingu w swoich wasnych
zestawach map.
Na plik map skada si przede wszystkim lista orodkw odpytywanych przez kady system lub tych, przez ktre jest odpytywany nasz system. Nazwa systemu rozpoczyna si w pierwszej kolumnie, a za ni nastpuje lista pocze oddzielonych
przecinkami. Lista moe cign si przez kilka wierszy, jeeli kolejne wiersze zaczynaj si od tabulatora. Kade poczenie jest opisane przez nazw orodka oraz
koszt podany w nawiasach kwadratowych. Koszt to wyraenie arytmetyczne
zoone z liczb oraz wyrae symbolicznych, takich jak DAILY lub WEEKLY. Wiersze rozpoczynajce si znakiem hasha s ignorowane.
Jako przykad rozwamy system moria, ktry odpytuje swim.twobirds.com dwa
razy dziennie, a bert.sesame.com raz w tygodniu. cze do bert wykorzystuje wolny modem (2400 b/s). moria opublikuje nastpujce wpisy w mapach:
moria.orcnet.org
bert.sesame.com(DAILY/2),
swim.twobirds.com(WEEKLY+LOW)
moria.orcnet.org = moria

Dziki ostatniemu wierszowi, host moria jest take znany pod nazw UUCP. Zauwa, e koszt musi by okrelony jako DAILY/2, poniewa poczenie dwa razy
dziennie w rzeczywistoci zmniejsza koszt o poow.
Dziki informacjom z takich plikw map, pathalias jest w stanie obliczy optymaln
tras do dowolnego orodka docelowego umieszczonego w pliku cieek i wygenerowa na tej podstawi baz aliasw cieek, ktra z kolei moe by wykorzystana
do obsugi rutingu do tych orodkw.
pathalias peni take kilka innych funkcji, jak ukrywanie orodka (tzn. powodowanie, e dostp jest moliwy tylko przez gateway). Szczegy oraz pen list kosztw
czy znajdziesz na stronie podrcznika elektronicznego pathalias.
Komentarze w pliku map przewanie zawieraj dodatkowe informacje o opisywanych orodkach. Ta informacja jest podawana wedug cile okrelonego schematu,
i dziki temu mona j uzyska z map. Na przykad program o nazwie uuwho wykorzystuje baz danych, stworzon na podstawie plikw map, do wywietlania elegancko sformatowanych informacji. Gdy zarejestrujesz swj orodek w organizacji,
ktra dystybuuje pliki map swoim czonkom, przewanie musisz wypeni wpis do

Konfigurowanie elma

313

pliku map. Poniej podajemy przykadowy wpis z pliku map (w rzeczywistoci jest
to wpis orodka Olafa):
#N
monad, monad.swb.de, monad.swb.sub.org
#S
AT 486DX50; Linux 0.99
#O
private
#C
Olaf Kirch
#E
okir@monad.swb.de
#P
Kattreinstr. 38, D-64295 Darmstadt, FRG
#L
49 52 03 N / 08 38 40 E
#U
brewhq
#W
okir@monad.swb.de (Olaf Kirch); Sun Jul 25 16:59:32 MET DST 1993
#
monad
brewhq(DAILY/2)
# Domeny
monad = monad.swb.de
monad = monad.swb.sub.org

Biay znak wystpujcy po pierwszych dwch znakach w wierszu to tabulator. Znaczenie wikszoci pl jest oczywiste. Szczegowy opis dostaniesz z domeny,
w ktrej si zarejestrujesz. Najzabawniejsze jest pole L:, podaje twoj pozycj geograficzn (szeroko/dugo) i jest uywane do rysowania map postscriptowych pokazujcych wszystkie orodki w kadym kraju oraz na wiecie*.

Konfigurowanie elma
elm to skrt od sw electronic mail (poczta elektroniczna). Jest to jedno z bardziej sensownie nazwanych narzdzi w Uniksie. Zapewnia penoekranowy interfejs z dobrze
opracowan funkcj pomocy. Nie bdziemy tutaj dawali instrukcji, jak uywa elma,
ale zajmiemy si jego konfiguracj.
Teoretycznie moesz uruchomi elma bez konfiguracji i wszystko bdzie dobrze
dziaao jeeli masz szczcie. Jest jednak kilka opcji, ktre musz by ustawione,
cho przydaj si tylko czasem.
Przy uruchamianiu elm odczytuje zestaw zmiennych konfiguracyjnych z pliku elm.rc
w katalogu /etc/elm. Nastpnie prbuje odczyta plik .elm/elmrc z twojego katalogu
macierzystego. Zwykle sam nie tworzysz tego pliku. Jest on tworzony, gdy wybierzesz w menu opcji elma Save new options.
Zestaw opcji dla prywatnego pliku elmrc jest dostpny rwnie w pliku globalnym
elm.rc. Wikszo ustawie z twojego pliku prywatnego elmrc moe zastpi ustawienia w pliku globalnym.

Opcje globalne elma


W pliku globalnym elm.rc musisz ustawi opcje zwizane z nazw twojego hosta. Na
przykad w browarze wirtualnym plik hosta vlager jest nastpujcy:
#
# Nazwa hosta
hostname = vlager
*

Mapy te s regularnie wysyane do grupy news.lists.ps-maps. Ostrzegamy: s OGROMNE.

314

Rozdzia 17: Poczta elektroniczna

#
# Nazwa domeny
hostdomain = .vbrew.com
#
# Pena nazwa domenowa
hostfullname = vlager.vbrew.com

Te opcje daj elmowi pojcie o hocie lokalnym. Cho informacje te s rzadko uywane, powiniene je jednak ustawi. Zauwa, e te szczeglne opcje dziaaj tylko
w pliku globalnym. Jeeli znajd si w twoim pliku prywatnym elmrc, bd ignorowane.

Narodowe zestawy znakw


Opracowano zestaw standardw i RFC, ktre wzbogaciy standard RFC-822 o obsug rnych typw wiadomoci, jak czysty tekst, dane binarne, pliki PostScript itp. Te
standardy s powszechnie znane jako MIME, czyli uniwersalne rozszerzenie poczty
internetowej (Multipurpose Internet Mail Extensions). MIME pozwala midzy innymi,
by odbiorca wiedzia, czy w czasie pisania wiadomoci zosta uyty inny zestaw
znakw, ni standardowe ASCII, czyli na przykad francuskie czy niemieckie znaki
diakrytyczne. elm w pewnym stopniu te znaki obsuguje.
Do reprezentowania znakw uywa si w Linuksie zwykle zestawu ISO-8859-1. Jest
on rwnie znany pod nazw Latin-1. Kada wiadomo wykorzystujca znaki z tego zestawu powinna mie w nagwku nastpujc lini:
Content-Type: text/plain; charset=iso-8859-1

System odbiorczy powinien rozpoznawa to pole i wywietla wiadomo w odpowiedni sposb. Domylna warto charset dla wiadomoci text/plain to
us-ascii.
Aby wywietla wiadomoci zawierajce zestawy znakw inne ni ASCII, elm musi
wiedzie, jak te znaki pokaza. Domylnie, gdy elm odbiera wiadomo z polem
charset o wartoci innej ni us-ascii (lub typem treci innym ni text/plain),
prbuje j wywietli za pomoc polecenia metamail. Wiadomoci wymagajce metamail s pokazywane z literk M w jednej z pierwszych kolumn na licie wiadomoci.
Poniewa wbudowanym zestawem znakw Linuksa jest ISO-8859-1, wywoywanie
metamail nie jest konieczne, by wywietli wiadomo wykorzystujc ten zestaw
znakw. Jeeli elm wie, e urzdzenie wywietlajce rozumie standard ISO-8859-1,
nie bdzie uywa metamail, ale wywietli wiadomo bezporednio. Mona to
wczy, ustawiajc ponisz opcj w globalnym pliku elm.rc:
displaycharset = iso-8859-1

Zauwa, e powiniene ustawi t opcj nawet wtedy, gdy nie zamierzasz wysya
ani odbiera wiadomoci rzeczywicie zawierajcych znaki inne ni ASCII. A to dlatego, e ludzie wysyajcy takie wiadomoci zwykle konfiguruj swj program
pocztowy tak, by poprawnie wypenia w nagwku pole Content-Type:, bez
wzgldu na to, czy wysyaj wiadomoci zapisane w czystym kodzie ASCII, czy nie.

Konfigurowanie elma

315

Jednak ustawienie tej opcji w elmie nie jest obowizkowe. Przy wywietlaniu wiadomoci za pomoc wbudowanego programu stronicujcego, elm wywouje funkcj
biblioteczn wykrywajc, czy kady ze znakw jest drukowalny. Domylnie funkcja ta rozpoznaje jedynie znaki ASCII jako drukowalne i wywietla wszystkie pozostae jako ^?. Funkcj t moesz wyczy, ustawiajc zmienn rodowiskow
LC_CTYPE na ISO-8859-1, ktra powoduje, e biblioteka uznaje znaki Latin-1 jako
drukowalne. Obsuga tej i innych funkcji jest dostpna w Linuksie od wersji 4.5.8
standardowej biblioteki.
Przy wysyaniu wiadomoci zawierajcej znaki specjalne z zestawu ISO-8859-1, powiniene ustawi dwie dodatkowe zmienne w pliku elm.rc:
charset = iso-8859-1
textencoding = 8bit

Powoduje to, e elm w nagwku poczty ustawia zestaw znakw ISO-8859-1 i wysya
wiadomo jako dane 8-bitowe (domylnie wszystkie znaki s obcinane do 7 bitw).
Oczywicie wszystkie omwione tu opcje zwizane z zestawem znakw mog by
take ustawiane w prywatnym pliku elmrc, tak by indywidualni uytkownicy mogli
mie wasne domylne ustawienia, gdyby globalne im nie odpowiaday.

Sendmail

18

Rozdzia 18: Sendmail

Wprowadzenie do sendmaila
Powiedz ci, e nie jeste prawdziwym administratorem Uniksa, jeeli nie edytowae
pliku sendmail.cf. Powiedz ci rwnie, e jeste szalony, jeli prbowae to zrobi
dwukrotnie.
sendmail jest niezwykle silnym programem pocztowym. Jest on take niezwykle
trudny. Wiele wysiku kosztuje nauczenie si go i zrozumienie. Kady program, ktrego opis (ksika Sendmail autorstwa Bryana Costalesa i Erica Allmana wydana
przez O'Reilly'ego) zajmuje 1050 stron, jest postrachem dla wikszo ludzi.
Na szczcie nowe wersje sendmaila s inne. Nie musisz ju bezporednio edytowa
trudnego do rozszyfrowania pliku sendmail.cf. Nowa wersja zawiera program konfiguracyjny, ktry tworzy za ciebie ten plik w oparciu o duo prostsze pliki makr. Nie
musisz wiec zgbia jego zoonej skadni. Pliki makr nie wymagaj tego od ciebie.
Wystarczy, e wypiszesz nazwy funkcji, ktre chcesz umieci w swojej konfiguracji
i okrelisz pewne parametry. Tradycyjne narzdzie uniksowe, m4, wykorzystuje
twoje dane konfiguracyjne i w celu stworzenia pliku sendmail.cf czy je z danymi
odczytanymi z plikw wzorcowych zawierajcych rzeczywist skadni sendmail.cf.
W tym rozdziale przedstawimy sendmail i opiszemy, jak go zainstalowa, skonfigurowa i przetestowa. Za przykad posuy nam browar wirtualny. Jeeli dziki
przedstawionym tu informacjom uda ci si zmniejszy obawy przed konfigurowaniem sendmaila, by moe nabierzesz pewnoci siebie i podejmiesz samodzielnie bardziej zoone zadania konfiguracyjne.

Instalacja sendmaila
Agent transportowy poczty sendmail jest doczany do wikszoci dystrybucji
Linuksa. W takim przypadku instalacja jest stosunkowo atwa. Jednak z pewnych
wzgldw lepiej zainstalowa sendmaila w postaci kodu rdowego, szczeglnie jeeli jeste wyczulony na bezpieczestwo. Program sendmail jest bardzo zoony i

318

Rozdzia 18: Sendmail

przez lata zdoby wtpliw reputacj programu zawierajcego bdy, ktre


uatwiaj wamywanie. Jednym z najlepiej znanych przykadw jest robak internetowy RTM, ktry zrobi uytek przekraczania zakresu bufora (ang. buffer overflow)
problemu spotykanego w starszych wersjach sendmaila. Mwilimy o tym krtko
w rozdziale 9, Firewall TCP/IP. Wikszo dziur w bezpieczestwie wykorzystujcych przekroczenie zakresu bufora wynika z tego, e wszystkie kopie sendmaila
na rnych komputerach s identyczne, poniewa wykorzystywane dane s zapisywane w okrelonych miejscach. Oczywicie to samo dotyczy sendmaila zainstalowanego z dystrybucji Linuksa. Samodzielne kompilowanie sendmaila moe pomc zredukowa to zagroenie. Wspczesne wersje sendmaila s mniej podatne na takie ataki, poniewa s poddawane niezmiernie dokadnym testom, odkd , dziki spoecznoci Internetu, doceniono bezpieczestwo.
Kod rdowy sendmaila jest dostpny przez anonimowe FTP pod adresem ftp.sendmail.org.
Kompilacja sendmaila jest bardzo prosta, poniewa jego pakiet rdowy bezporednio uwzgldnia Linuksa. Kroki wymagane przy kompilacji s nastpujce:
#
#
#
#

cd /usr/local/src
tar xvfs sendmail.8.9.3.tar.gz
cd src
./Build

Aby zakoczy instalacj uzyskanych plikw binarnych, musisz mie prawa roota:
# cd obj.Linux.2.0.36.i586
# make install

W tym momencie pliki binarne sendmaila s zainstalowane w katalogu /usr/sbin.


W katalogu /usr/bin powstao kilka dowiza symbolicznych do plikw binarnych
sendmaila. Powiemy o nich przy okazji omawiania typowych zada zwizanych
z eksploatacj sendmaila.

Przegld plikw konfiguracyjnych


Tradycyjnie sendmail by konfigurowany przez systemowy plik konfiguracyjny
(zwykle /etc/mail/sendmail.cf lub w starszych dystrybucjach /etc/sendmail.cf lub nawet
/usr/lib/sendmail.cf), ktry nie przypomina adnego znanego ci dotd jzyka. Edycja
pliku sendmail.cf i dostosowywanie zachowania programu do wasnych potrzeb
moe by przykrym dowiadczeniem.
Obecnie sendmaila konfiguruje si za pomoc makr o prostej skadni. Metoda makr
pozwala na generowanie konfiguracji wystarczajcych dla wikszoci instalacji, ale
zawsze masz moliwo poprawienia pliku sendmail.cf rcznie, jeeli pracujesz
w bardziej skomplikowanym rodowisku.

Pliki sendmail.cf i sendmail.mc

319

Pliki sendmail.cf i sendmail.mc


Program makroprocesora, m4, generuje plik sendmail.cf, przetwarzajc pliki konfiguracyjne makr stworzone przez lokalnego administratora. Dalej ten plik bdziemy
nazywa sendmail.mc.
Proces konfiguracji w zasadzie polega na stworzeniu odpowiedniego pliku sendmail.mc, ktry zawiera makra opisujce dan konfiguracj. Makra to wyraenia rozumiane przez makroprocesor m4 i rozwijane do zoonej skadni sendmail.cf. Wyraenia makr skadaj si z nazwy makra (tekst pisany duymi literami), ktra moe by
poczona z funkcj w jzyku programowania, i kilku parametrw (tekst w nawiasach), ktre s uywane w trakcie rozwijania makr. Parametry mog by przekazane
dosownie do pliku sendmail.cf lub wykorzystane do zarzdzania sposobem przetwarzania makra.
Plik sendmail.mc w minimalnej konfiguracji (UUCP lub SMTP z przekazywaniem
poczty nielokalnej przez bezporednio podczony inteligentny host) moe mie
dugo zaledwie 10 czy 15 wierszy, nie liczc komentarzy.

Dwa przykadowe pliki sendmail.mc


Jeeli jeste administratorem wielu rnych hostw pocztowych, moesz mie potrzeb nazwania swoich plikw konfiguracyjnych inaczej ni sendmail.mc. Zwykle
nazywa si je zgodnie z nazw hosta, czyli w naszym przypadku vstout.m4. Nazwa
tak naprawd nie ma znaczenia, wane, eby plik wynikowy nazywa si sendmail.cf.
Nadanie unikalnej nazwy plikowi konfiguracyjnemu kadego hosta pozwala ci
przechowywa wszystkie te pliki w jednym katalogu, co jest po prostu wygodne dla
administratora. Przyjrzyjmy si dwm przykadowym plikom konfiguracyjnym, ebymy wiedzieli, z czym mamy do czynienia.
Wikszo konfiguracji sendmaila uywa obecnie jedynie SMTP. Taka konfiguracja
jest bardzo prosta. Przykad 18-1 oczekuje, e do rozwizywania nazw hostw bdzie dostpny serwer DNS, a poza tym przyjmuje i dostarcza ca poczt dla hostw,
uywajc tylko SMTP.
Przykad 18-1. Przykadowy plik konfiguracyjny vstout.smtp.m4
divert(-1)
#
# Przykadowy plik konfiguracyjny dla vstout - tylko smtp
#
divert(0)
VERSIONID('@(#)sendmail.mc 8.7 (Linux) 3/5/96')
OSTYPE('linux')
#
# Doczenie obsugi protokow poczty lokalnej i smtp
MAILER('local')
MAILER('smtp')
#
FEATURE(rbl)
FEATURE(access_db)
# koniec

320

Rozdzia 18: Sendmail

Plik sendmail.mc dla vstout w browarze wirtualnym zosta pokazany w przykadzie


18-2. vstout uywa SMTP do komunikacji ze wszystkimi hostami w sieci LAN browaru. Zauwaysz elementy wsplne z wyej pokazan konfiguracj wykorzystujc tylko SMTP. Ca poczt przeznaczon dla innych hostw vstout wysya przez
UUCP do moria swojego hosta przekanikowego do Internetu.
Przykad 18-2. Przykadowy plik konfiguracyjny vstout.uucpsmtp.m4
divert(-1)
#
# Przykadowy plik konfiguracyjny dla vstout
#
divert(0)
VERSIONID('@(#)sendmail.mc 8.7 (Linux) 3/5/96')
OSTYPE('linux')
dnl
# moria jest naszym inteligentnym hostem, wykorzystujemy transport
# "uucp-new".
define('SMART_HOST', 'uucp-new:moria')
dnl
# Obsuga protokow poczty lokalnej, uucp i smtp.
MAILER('local')
MAILER('smtp')
MAILER('uucp')
LOCAL_NET_CONFIG
# Ta regua gwarantuje, e caa poczta lokalna bdzie
# dostarczana z wykorzystaniem protokou SMTP, a wszystko inne
# bdzie szo przez inteligentny host.
R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
dnl
#
FEATURE(rbl)
FEATURE(access_db)
# koniec

Jeli porwnasz te dwie konfiguracje, moesz doj do tego, co robi kady z parametrw. Wyjanimy to szczegowo.

Typowe parametry uywane w sendmail.mc


Pewne elementy pliku sendmail.mc s obowizkowe. Inne mona pomin, jeeli wystarcz ci wartoci domylne. Kolejno definicji w pliku sendmail.mc jest nastpujca:
1. VERSIONID
2. OSTYPE
3. DOMAIN
4. FEATURE
5. Lokalne definicje makr
6. MAILER
7. Zestawy regu LOCAL_*

Pliki sendmail.cf i sendmail.mc

321

W nastpnych podrozdziaach omwimy kad z nich po kolei, odwoujc si w razie potrzeby do naszych przykadw 18-1 i 18-2.
Komentarze
Wiersze rozpoczynajce si w pliku sendmail.mc od znaku # nie s analizowane przez
m4 i domylnie s przepisywane do pliku sendmail.cf. Jest to przydatne, jeeli
chcesz skomentowa to, co robi twoja konfiguracja w obu plikach w wejciowym
i wyjciowym.
Aby umieci w pliku sendmail.mc komentarze, ktre nie zostan przeniesione do pliku sendmail.cf, moesz uy dyrektyw m4: divert i dnl. Dziki divert(-1) nic
nie bdzie wyprowadzane na wyjcie, a divert(0) umoliwia powrt do stanu domylnego. Wszystko, co zostanie wygenerowane pomidzy tymi wierszami, zostanie wyrzucone. W naszym przykadzie uylimy tego mechanizmu do stworzenia
komentarza, ktry bdzie tylko w pliku sendmail.mc. Aby uzyska ten sam efekt dla
pojedynczego wiersza, moesz uy dyrektywy dnl, ktra dosownie oznacza
poczwszy od nastpnego wiersza, usu wszystkie znaki, a do nowego wiersza
wcznie. Jej te uylimy w naszym przykadzie.
S to standardowe funkcje m4 i wicej na ich temat moesz znale na stronach
podrcznika elektronicznego.
VERSIONID i OSTYPE
VERSIONID('@(#)sendmail.mc 8.9 (Linux) 01/10/98')

Makro VERSIONID jest opcjonalne, ale przydatne do zapisywania wersji konfiguracji sendmaila w pliku sendmail.cf. Czsto wic bdziesz si z nim spotyka. Zalecamy
korzystanie z niego. Natomiast musisz pamita, by doda:
OSTYPE('linux')

Ta definicja naley do najwaniejszych. Makro OSTYPE powoduje, e s dodawane


pliki definicji, ktre zawieraj poprawne wartoci domylne dla twojego systemu
operacyjnego. Wikszo definicji w makro OSTYPE ustawia cieki do rnych
plikw konfiguracyjnych, cieki i argumenty do programu wysyajcego poczt
oraz lokalizacj katalogw, w ktrych sendmail przechowuje wiadomoci. Standardowy kod rdowy sendmaila zawiera takie pliki dla Linuksa i zostayby one
wcignite w poprzednim przykadzie. Niektre dystrybucje Linuksa, szczeglnie
Debian, zawieraj wasne pliki definicji, ktre s w peni zgodne ze standardem Linux-FHS. Jeeli tak jest te w twojej dystybucji, prawdopodobnie powiniene uy
tych definicji, zamiast domylnych definicji dla Linuksa.
Definicja OSTYPE powinna by jedn z pierwszych w twoim pliku sendmail.mc, gdy
wiele nastpnych odwouje si do niej.
DOMAIN
Makro DOMAIN przydaje si, gdy chcesz skonfigurowa wiele komputerw w tej samej sieci w standardowy sposb. Jeeli konfigurujesz kilka hostw, prawdopodobnie nie warto go angaowa. Zwykle konfigurujesz takie rzeczy, jak nazwa hostw

322

Rozdzia 18: Sendmail

przekazujcych poczt lub huby, ktre bd wykorzystyway wszystkie hosty w twojej sieci.
Standardowa instalacja zawiera katalog wzorcw makr m4, uywany do kierowania
procesem konfiguracji. Zwykle jest to /usr/share/sendmail.cf lub co podobnego. Znajdziesz w nim podkatalog o nazwie domain zawierajcy wzorce specyficzne dla konfiguracji domeny. Aby wykorzysta makro DOMAIN, musisz stworzy swj wasny
plik makro zawierajcy standardowe definicje wymagane dla twojego orodka i zapisa go w podkatalogu domain. Zwykle zapisujesz w nim tylko makrodefinicje
unikalne dla twojej domeny, jak inteligentny host czy hosty przekazujce, ale nie jeste ograniczony tylko do nich.
Kod rdowy sendmaila jest dostarczany wraz z przykadowymi plikami makr domen, na podstawie ktrych moesz stworzy swoje wasne.
Jeeli zapisae swj plik domenowy jako /usr/share/sendmail.cf/domain/vbrew.m4,
w swoim pliku sendmail.mc moesz uy makra DOMAIN w nastpujcy sposb:
DOMAIN('vbrew')

FEATURE
Makro FEATURE pozwala doczy do konfiguracji sendmaila predefiniowane funkcje, ktre uatwiaj posugiwanie si konfiguracjami. Funkcji tych jest duo i w tym
rozdziale powiemy tylko o kilku najbardziej przydatnych i wanych spord nich.
Szczegowy opis dostpnych funkcji moesz znale w pliku CF, zaczonym do
pakietu z kodem rdowym.
Aby wykorzysta dan funkcj, powiniene w pliku sendmail.mc wpisa nastpujcy wiersz:
FEATURE(nazwa)

gdzie nazw musisz zastpi nazw funkcji. Niektre funkcje przyjmuj jeden
opcjonalny parametr. Gdyby chcia uy czego w inny sposb, ni domylny, powiniene okreli funkcj w nastpujcy sposb:
FEATURE(nazwa, parametr)

gdzie parametr ma znaczenie oczywiste.


Makrodefinicje lokalne
Standardowe pliki konfiguracyjne makr sendmaila oferuj wiele zmiennych, dziki
ktrym moesz dostosowa konfiguracj do swoich potrzeb. S to tak zwane makrodefinicje lokalne. Wiele z nich wymieniono w pliku CF w pakiecie z kodem rdowym
sendmaila.
Makrodefinicje lokalne s zwykle wywoywane przez podanie nazwy makra oraz
argumentu zawierajcego warto, ktr chcesz przypisa zmiennej obsugiwanej
przez makro. Kilka czsto uywanych makrodefinicji lokalnych omwimy i pokaemy na przykadach w dalszej czci tego rozdziau.

Pliki sendmail.cf i sendmail.mc

323

Definiowanie protokow transportowych poczty


Jeli chcesz, eby sendmail przesya poczt w jakikolwiek inny sposb, ni lokalnie,
musisz mu wskaza, jak ma to robi. Uatwia to makro MAILER. Aktualna wersja
sendmaila obsuguje szereg protokow transportowych poczty. Niektre z nich s
eksperymentalne, inne s raczej rzadko uywane.
W naszej sieci potrzebne s: protok SMTP do wysyania i odbierania poczty pomidzy hostami sieci lokalnej oraz protok UUCP do wysyania i odbierania poczty
z naszego inteligentnego hosta. Aby to uzyska, po prostu doczamy protokoy
transportowe smtp i uucp. Protok local jest doczany domylnie, ale mona go
dla jasnoci zdefiniowa, jeeli masz na to ochot. Jeeli w swojej konfiguracji
doczasz programy pocztowe smtp i uucp, musisz pamita, by smtp zawsze
umieszcza jako pierwsze.
Ponisza lista opisuje czciej uywane protokoy transportowe dostpne dla makra
MAILER:
local
Ten protok obejmuje agenta lokalnego uywanego do wysyania poczty do
skrzynek pocztowych uytkownikw oraz program wysyajcy prog uywany
do wysyania wiadomoci do programw lokalnych. Ten protok jest doczany
domylnie.
smtp
Ten protok implementuje prosty protok przesyania poczty elektronicznej
(SMTP), ktry jest najczciej uywanym protokoem w Internecie. Gdy go
doczysz, konfigurowane s cztery programy wysyajce poczt: smtp (podstawowe SMTP), esmtp (rozszerzone SMTP), smtp8 (8-bitowe SMTP) i relay
(stworzony specjalnie do przekazywania poczty pomidzy hostami).
uucp
Protok uucp daje obsug dwch programw wysyajcych: uucp-old, czyli
tradycyjne UUCP, i uucp-new, pozwalajcy na obsuenie za jednym razem kilku odbiorcw.
usenet
Ten program wysyajcy pozwala ci na wysyanie wiadomoci bezporednio do
sieci grup dyskusyjnych Usenetu. Wszelkie wiadomoci lokalne skierowane na
adres news.group.usenet zostan przekierowane do sieci grup dyskusyjnych na list news.group.
fax
Jeeli masz zainstalowane oprogramowanie HylaFAX, ten program wysyajcy
pozwoli ci przekierowa na nie poczt, tak aby mg stworzy gateway pomidzy poczt a faksem. W czasie pisania tej ksiki ta funkcja jest eksperymentalna
i wicej informacji na jej temat moesz uzyska pod adresem http://www.vix.com/
hylafax/.

324

Rozdzia 18: Sendmail

Istniej inne przydatne, ale rzadziej uywane protokoy, takie jak pop, procmail,
mail11, phquery i cyrus. Jeeli obudzilimy twoj ciekawo, moesz poczyta
na ich temat w ksice o sendmailu lub w dokumentacji dostarczanej w pakiecie kodu
rdowego.
Konfigurowanie rutingu poczty dla hostw lokalnych
Nasz przykad konfiguracji browaru wirtualnego jest zapewne bardziej skomplikowany ni konfiguracja wikszoci rzeczywistych orodkw. Obecnie najczciej
uywa si tylko SMTP i mao kto interesuje si UUCP. W naszej konfiguracji
uwzgldnilimy inteligentny host, ktry jest uywany do obsugi caej poczty wychodzcej. Poniewa uywamy transportu SMTP w naszej sieci lokalnej, musimy
poinformowa sendmaila, eby nie wysya poczty lokalnej przez inteligentnego hosta. Makro LOCAL_NET_CONFIG pozwala wstawia reguy bezporednio do pliku
wynikowego sendmail.cf i w ten sposb modyfikowa obsug poczty lokalnej. Wkrtce powiemy wicej na temat regu podstawiania, ale w tej chwili powiniene tylko
wiedzie, e dodana w naszym przykadzie regua mwi, e poczta przeznaczona
dla hostw w domenie vbrew.com powinna by dostarczana bezporednio do hosta
adresata za pomoc protokou SMTP.

Generowanie pliku sendmail.cf


Gdy skoczysz edycj pliku konfiguracyjnego m4, musisz go przetworzy, by wygenerowa plik /etc/mail/sendmail.cf odczytywany przez sendmaila. Jest to proste, jak wida na poniszym przykadzie:
# cd /etc/mail
# m4 /usr/share/sendmail.cf/m4/cf.m4 vstout.uucpsmtp.mc >sendmail.cf

To polecenie wywouje makroprocesor m4, ktremu dostarcza si nazwy dwch makrodefinicji do przetworzenia. m4 przetwarza pliki w podanej kolejnoci. Pierwszy
plik to standardowe makro wzorcw sendmaila dostarczane w pakiecie kodu rdowego, a drugi to oczywicie plik zawierajcy twoje wasne makrodefinicje. Wynik
polecenia jest przekierowywany do pliku /etc/mail/sendmail.cf.
Teraz moesz uruchomi sendmaila z now konfiguracj.

Interpretacja i pisanie regu podstawiania


Mona pokusi si o stwierdzenie, e najmocniejsz stron sendmaila s reguy podstawiania. Su sendmailowi do okrelania, jak przetwarza odebran wiadomo.
sendmail przekazuje adresy z nagwkw wiadomoci do zestawu regu podstawiania
(ang. rulesets). Reguy podstawiania przetwarzaj adres wiadomoci z jednej postaci
do drugiej i moesz je traktowa podobnie jak polecenie twojego edytora, ktre zastpuje cay tekst pasujcy do jakiego wzorca innym tekstem.
Kada regua ma lew i praw stron, oddzielone przynajmniej jednym znakiem tabulatora. Gdy sendmail przetwarza poczt, przeglda reguy podstawiania, szukajc

Interpretacja i pisanie regu podstawiania

325

dopasowania po lewej stronie. Jeeli adres pasuje do lewej strony reguy, jest zastpowany praw stron i ponownie przetwarzany.

Polecenia R i S pliku sendmail.cf


W pliku sendmail.cf zestawy regu s definiowane za pomoc polece zapisywanych
jako Sn, gdzie n okrela biecy zestaw regu.
Same reguy s kodowane jako R. Przy odczytywaniu kadego polecenia R, regua
jest dodawana do aktualnego zestawu.
Jeeli uywasz tylko pliku sendmail.mc, nie musisz w ogle zawraca sobie gowy poleceniami S, gdy wikszo makr stworzy je za ciebie. Rcznie musisz tworzy tylko reguy R.
Zestaw regu sendmaila wyglda tak:
Sn
Rlhs rhs
Rlhs2 rhs2

Kilka przydatnych makrodefinicji


sendmail wykorzystuje wewntrznie kilka standardowych makrodefinicji. Najbardziej przydatne z nich przy pisaniu zestaww regu s:
$j
Pena nazwa domenowa danego hosta.
$w
Nazwa hosta uzyskana na podstawie FQDN.
$m
Nazwa domeny uzyskana na postawie FQDN.
Te makrodefinicje moemy wykorzystywa w naszych reguach podstawiania.
W konfiguracji browaru wirtualnego uywane jest makro $m.

Lewa strona
Po lewej stronie reguy podstawiania umieszczasz wzorzec, do ktrego musi pasowa adres, ktry chcesz przeksztaci. Wikszo znakw jest dopasowywana dosownie, ale jest kilka, ktre maj szczeglne znaczenie. Przedstawiamy je poniej.
Reguy podstawiania dla lewej strony s nastpujce:
$@
Pasuje dokadnie zero leksemw.
$*
Pasuje zero lub mniej leksemw.
$+
Pasuje jeden lub wicej leksemw.
$Pasuje dokadnie jeden leksem.

326

Rozdzia 18: Sendmail

$=x
Pasuje dowolna fraza z klasy x.
$~x
Pasuje dowolne sowo nie nalece do klasy x.
Leksem to cig znakw ograniczony spacjami. Nie ma ani sposobu na umieszczenie
spacji w leksemie, ani takiej potrzeby, gdy wzorce wyraenia s dostatecznie elastyczne. Gdy adres zostanie dopasowany do reguy, tekst pasujcy do kadego ze
wzorcw wyraenia zostanie przypisany specjalnym zmiennym, ktrych bdziemy
uywa po prawej stronie. Jedynym wyjtkiem jest tu $@, do ktrego nie pasuje aden leksem i dlatego nigdy nie generuje on tekstu, ktry mgby by wykorzystany
po prawej stronie.

Prawa strona
Gdy adres zostanie dopasowany do reguy podstawiania po lewej stronie, oryginalna tre jest usuwana i zastpowana praw stron reguy. Wszystkie leksemy po
prawej stronie s dosownie kopiowanie, chyba e zaczynaj si od znaku dolara.
Tak jak po lewej stronie, po prawej mona take uywa szeregu metasymboli. S
one opisane na poniszej licie. Reguy podstawiania dla prawej strony s nastpujce:
$n

Ten metasymbol jest zastpowany przez n-te wyraenie z lewej strony.

$[nazwa$]
Ten metasymbol rozwija nazw hosta do postaci kanonicznej. Podana nazwa hosta jest zastpowana przez jej posta kanoniczn.
$(mapa klucz $@argumenty $:domylny $)
To jest bardziej oglna posta wyszukiwania. Wynik jest rezultatem poszukiwania klucza w mapie o nazwie map przy przekazaniu argumentw. Map moe
by dowolna mapa obsugiwana przez sendmaila, jak virtusertable, ktr
opisujemy nieco dalej. Jeeli wyszukiwanie nie zakoczy si sukcesem, zostanie
przyjty wynik domylny. Jeeli nie zdefiniowalimy wyniku domylnego i wyszukiwanie si nie powiedzie, to dane wejciowe pozostan niezmienione, a jako
wynik zostanie podany klucz.
$>n
Ten symbol powoduje, e zostanie przetworzona pozostaa cz wiersza, a nastpnie zostanie on przekazany zestawowi regu n do oszacowania. Wynik
wywoanego zestawu regu zostanie zapisany jako wynik tej reguy. Ten mechanizm powala na wywoywanie zestaww regu z regu.
$#program_wysyajcy
Ten metasymbol powoduje, e szacowanie zestaww regu jest zatrzymywane
i okrela program wysyajcy, ktry powinien by uyty do przesania wiadomoci w kolejnym kroku jej dostarczania. Ten metasymbol powinien by wywoywany tylko z zestawu regu 0 lub jednej z jego procedur. Jest to kocowy etap

Interpretacja i pisanie regu podstawiania

327

przetwarzania adresu i powinien by realizowany przez dwa nastpne metasymbole.


$@host
Ten metasymbol okrela hosta, do ktrego zostanie przekazana wiadomo. Jeeli docelowy host jest hostem lokalnym, mona go pomin. host moe mie
posta oddzielonej dwukropkami listy hostw docelowych, do ktrych bd podejmowane kolejne prby dostarczenia poczty.
$:uytkownik
Ten metasymbol okrela docelowego uytkownika, dla ktrego jest przeznaczona
poczta.
Pasujca regua podstawiania jest zwykle testowana dopty, dopki ktre dopasowanie si nie powiedzie, a wtedy przetwarzanie przechodzi do nastpnej reguy. Zachowanie to mona zmieni, poprzedzajc praw stron jednym z dwch metasymboli podanych poniej. Symbole sterujce ptl reguy podstawiania dla prawej strony to:
$@

$:

Ten metasymbol powoduje powrt z zestawu regu z pozosta czci prawej


strony jako zwracan wartoci. Nie bd szacowane adne z pozostaych regu
w zestawie.
Ten metasymbol powoduje natychmiastowe zakoczenie reguy, ale pozostaa
cz biecego zestawu jest szacowana.

Prosty przykad reguy wzorca


Aby lepiej zrozumie, jak dziaa zastpowanie wzorcw, rozwamy ponisz lew
stron reguy:
$* < $+ >

Do tej reguy pasuje zero lub wicej leksemw, potem znak <, potem jeden lub wicej leksemw i znak >.
Gdyby t regu zastosowa do brewer@vbrew.com lub Head Brewer < >, nie
pasowaaby. Pierwszy cig nie pasowaby, bo nie zawiera znaku <, a drugi, bo do $+
pasuje jeden lub wicej leksemw, a pomidzy znakami <> leksemw nie ma. W kadym przypadku, gdy nic nie pasuje do reguy, prawa strona nie jest uywana.
Gdyby regu zastosowa do Head Brewer < brewer@vbrew.com >, pasowaaby, a zmienna $1 po prawej stronie zostaaby zastpiona przez Head Brewer, za $2 przez brewer@vbrew.com.
Gdyby regu zastosowa do < brewer@vbrew.com >, pasowaaby, poniewa do
$* pasuje zero lub wicej leksemw, a $1 po prawej stronie zostaoby zastpione
cigiem pustym.

328

Rozdzia 18: Sendmail

Skadnia zestawu regu


Kady zestaw regu sendmaila ma do spenienia swoje wasne zadania w przetwarzaniu poczty. Gdy piszesz reguy, trzeba wiedzie, czego mona si spodziewa po danym zestawie. Przyjrzymy si zestawom regu, ktre mona modyfikowa przez
skrypty konfiguracyjne m4:
LOCAL_RULE_3
Zestaw regu 3 jest odpowiedzialny za konwertowanie adresw w dowolnym
formacie na format obsugiwany przez sendmaila. Oczekiwany wynikowy format
ma znajom posta cz-lokalna@host.domena.
Zestaw regu 3 umieszcza nazw hosta konwertowanego adresu pomidzy znakami < >, by uatwi przetwarzanie przez nastpne zestawy regu. Zestaw regu 3
jest stosowany, zanim sendmail wykona jakiekolwiek inne przetwarzanie adresu
e-mail, a wic jeeli chcesz, by sendmail by gatewayem z/do systemu uywajcego jakiego niezwykego formatu adresu, za pomoc LOCAL_RULE_3 powiniene doda regu konwertujc adresy do standardowej postaci.
LOCAL_RULE_0 i LOCAL_NET_CONFIG
Zestaw regu 0 jest stosowany przez sendmaila do przetwarzania adresw odbiorcy po zestawie regu 3. Makro LOCAL_NET_CONFIG powoduje, e reguy s
wstawiane do drugiej czci zestawu regu 0.
Zestaw regu 0 realizuje dostarczanie wiadomoci do odbiorcy, a wic musi dawa w wyniku trzy elementy okrelajce program wysyajcy poczt, hosta
i uytkownika. Reguy bd umieszczone przed definicj inteligentnego hosta,
ktr moesz wstawi. A wic, jeeli dodasz reguy, ktre odpowiednio rozwizuj adresy, wszelkie pasujce do reguy adresy nie bd obsugiwane przez
inteligentny host. W ten sposb obsugujemy bezporednio smtp na przykad dla
uytkownikw sieci lokalnej w naszym przykadzie.
LOCAL_RULE_1 i LOCAL_RULE_2
Zestaw regu 1 dotyczy wszystkich adresw nadawcw, a zestaw regu 2 wszystkich adresw odbiorcw. Oba zestawy zwykle s puste.
Interpretacja reguy w naszym przykadzie
W naszym przykadzie 18-3 uywamy makra LOCAL_NET_CONFIG do zadeklarowania lokalnej reguy, ktra sprawia, e kada poczta w naszej domenie jest dostarczana bezporednio przy uyciu programu wysyajcego smtp. Teraz, gdy wiemy,
jak s zbudowane reguy podstawiania, bdziemy mogli zrozumie, jak dziaa ta regua. Przyjrzyjmy si jej ponownie.
Przykad 18-3. Regua podstawiania z vstout.uucpsmtp.m4
LOCAL_NET_CONFIG
# Ta regua zapewnia, e caa poczta lokalna bdzie
# dostarczana za pomoc protokou SMTP, a wszystko inne
# bdzie szo przez inteligentny host.
R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3

Interpretacja i pisanie regu podstawiania

329

Wiemy, e makro LOCAL_NET_CONFIG powoduje, e regua zostanie wstawiona


gdzie pod koniec zestawu regu 0, ale przed definicj inteligentnego hosta. Wiemy
take, e zestaw regu 0 jest ostatnim wykonywanym i e powinien dawa w wyniku
trzy elementy: program wysyajcy, uytkownika i hosta.
Moemy zignorowa trzy wiersze komentarza nie robi one nic przydatnego. Sama regua to wiersz rozpoczynajcy si od litery R. Wiemy, e R jest poleceniem sendmaila, ktre dodaje regu do aktualnego zestawu regu, czyli w tym przypadku do
zestawu 0. Przyjrzyjmy si kolejno lewej i prawej stronie.
Lewa strona wyglda tak: $* < @ $* .$m. > $*.
Zestaw regu 0 oczekuje znakw < i >, poniewa dostaje dane z zestawu regu 3. Zestaw regu 3 konwertuje adresy do standardowej postaci i uatwia przetwarzanie.
Umieszcza take hosta, do ktrego jest adresowana poczta, pomidzy znakami <>.
Do tej reguy pasuje kady adres wygldajcy tak: 'DestUser < @ somehost.ourdomain > Some Text'. To znaczy, e kada wiadomo pasuje do kadego uytkownika na hocie w naszej domenie.
Pamitasz, e tekst dopasowany przez metasymbole po lewej stronie reguy podstawiania jest przypisywany do makrodefinicji uywanych po prawej stronie. W naszym przykadzie, do pierwszego $* pasuje cay tekst od pocztku adresu do znaku
<. Cay ten tekst zostanie przypisany do zmiennej $1, ktr mona wykorzysta po
prawej stronie. Podobnie drugi $* w naszej regule jest przypisywany do zmiennej
$2, a ostatni do $3.
To ju wystarcza do zrozumienia lewej strony. Do tej reguy pasuje kada wiadomo
dla dowolnego uytkownika na dowolnym hocie w naszej domenie. Nazwa uytkownika jest przypisywana do $1, nazwa hosta do $2, a dalszy tekst do $3. Nastpnie zmienne te s przetwarzane po prawej stronie.
Przyjrzyjmy si teraz, jaki wynik chcemy uzyska. Prawa strona naszej przykadowej
reguy podstawiania wyglda tak: $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3.
Przy przetwarzaniu prawej strony naszej reguy, kady z metasymboli jest interpretowany i jest dokonywane odpowiednie podstawienie.
Metasymbol $# powoduje, e regua ta daje okrelony protok, w naszym przypadku smtp.
Znak $@ odpowiada hostowi docelowemu. W naszym przykadzie host docelowy jest
okrelony jako $2.$m., co daje pen nazw domenow hosta w naszej domenie.
Pena nazwa jest tworzona na podstawie elementu przypisanego do $2 po lewej
stronie reguy i domeny (.$m.).
Metasymbol $: okrela docelowego uytkownika, ktrego znw uzyskalimy z lewej strony i umiecilimy w zmiennej $1.
Zachowujemy zawarto czci ujtej w znaki <> i dalszy tekst, uywajc danych zebranych z lewej strony reguy.

330

Rozdzia 18: Sendmail

Poniewa ta regua daje nam w rezultacie program wysyajcy, wiadomo jest


przekazywana temu programowi do dostarczenia. W naszym przykadzie wiadomo zostanie przekazana do docelowego hosta przez protok SMTP.

Konfigurowanie opcji sendmaila


sendmail posiada szereg opcji pozwalajcych dostosowa sposb realizacji rnych
zada. Jest ich duo, a wic na poniszej licie pokazujemy tylko kilka czciej uywanych.
Aby skonfigurowa jak z tych opcji, moesz albo zdefiniowa j w pliku konfiguracyjnym m4, co jest sposobem preferowanym, albo wstawi j bezporednio do pliku sendmail.cf. Na przykad, gdyby chcia, eby sendmail tworzy nowy proces dla
kadej wiadomoci, ktra ma by dostarczona, mgby doda poniszy wiersz do
pliku konfiguracyjnego m4:
define('confSEPARATE_PROC','true')

W pliku sendmail.cf utworzony zostaby odpowiedni wpis:


O ForkEachJob=true

Ponisza lista opisuje powszechnie stosowane opcje pliku wejciowego dla makrogeneratora m4 (i ich odpowiedniki w pliku wyjciowym sendmail.cf):
confMIN_FREE_BLOCKS (MinFreeBlocks)
Czasami zdarza si, e jaki problem uniemoliwia natychmiastowe dorczenie
wiadomoci, ktre s kolejkowane w buforze poczty. Jeeli twj host pocztowy
przetwarza duo poczty, bufor moe urosn to takich rozmiarw, e zajmie cay
system plikw dla niego przeznaczony. Aby temu zapobiec, sendmail udostpnia
opcj confMIN_FREE_BLOCKS, dziki ktrej mona okreli minimaln liczb
wolnych blokw dysku twardego, przy jakiej wiadomo zostanie przyjta. Pozwala ci to mie pewno, e sendmail nigdy nie wypeni caego systemu plikw,
na ktrym znajduje si katalog bufora. (Domylnie: 100).
confME_TOO (MeToo)
Gdy jest rozwijany cel poczty, na przykad alias adresu e-mail, zdarza si, e na
licie odbiorcw pojawi si nadawca. Ta opcja okrela, czy autor wiadomoci
otrzyma kopi, jeeli pojawi si na rozwinitej licie odbiorcw. Dopuszczalne
wartoci to true i false. (Domylnie: false).
confMAX_DAEMON_CHILDREN (MaxDaemonChildren)
Gdy sendmail odbiera poczenie SMTP z hosta zdalnego, tworzy now kopi
programu do obsugi przychodzcej wiadomoci. W ten sposb moliwe jest
przetwarzanie przez sendmaila wielu jednoczenie przychodzcych pocze.
Cho jest to przydatne, kada nowa kopia sendmaila zajmuje pami komputera.
Jeeli zostanie odebrana niezwykle dua liczba pocze ze wzgldu na jaki
bd lub atak zoliwca, moliwe, e sendmail zajmie ca pami systemu. Ta
opcja pozwala ci ograniczy maksymaln liczb demonw potomnych, ktre
mog zosta utworzone. Gdy liczba ta zostanie osignita, nowe poczenia bd

Uyteczne konfiguracje sendmaila

331

odrzucane, a ktry z procesw potomnych zakoczy prac. (Domylnie: niezdefiniowana).


confSEPARATE_PROC (ForkEachJob)
W czasie przetwarzania kolejki poczty i wysyania wiadomoci, sendmail przetwarza po jednej wiadomoci. Gdy ta opcja jest wczona, sendmail bdzie tworzy now kopi procesu dla kadej dostarczanej wiadomoci. Jest to szczeglnie
przydatne, gdy istnieje kilka wiadomoci, ktre stoj w kolejce ze wzgldu na
problem z hostem docelowym. (Domylnie: false).
confESMTP_LOGIN_MSG (SmtpGreetingMessage)
Gdy jest realizowane poczenie z sendmailem, wysyane s pozdrowienia. Domylnie wiadomo ta zawiera nazw hosta, nazw agenta przesyajcego poczt,
numer wersji sendmaila, lokalny numer wersji i aktualn dat. RFC-821 okrela, e
pierwsze sowo pozdrowie powinno by pen nazw domenow, ale pozostaa
cz moe by skonfigurowana wedle yczenia. Moesz tu okreli makra sendmaila. Na skutek uycia zostan rozwinite. Jedyn osob, ktra zobaczy t wiadomo, jest administrator systemu diagnozujcy problemy z dostarczaniem
poczty lub ciekawscy zainteresowani wykryciem konfiguracji twojej maszyny.
Moesz urozmaici to nudne zadanie, dodajc do pozdrowie jakie dowcipne
powiedzenia. Sowo ESMTP bdzie wstawione przez sendmaila pomidzy
pierwsze i drugie sowo, aby zasygnalizowa zdalnemu hostowi, e obsugujemy
protok ESMTP. (Domylnie: $j Sendmail $v/$Z; $b).

Uyteczne konfiguracje sendmaila


Istnieje wiele moliwych konfiguracji sendmaila. Tutaj pokaemy jedynie kilka wanych
typw konfiguracji, ktre bd uyteczne w wielu instalacjach sendmaila.

Ufamy uytkownikom, e ustawi pole From:


Czasem warto nadpisa pole From: w wychodzcej wiadomoci. Zamy, e masz
program generujcy wiadomoci, oparty na WWW. Zwykle wiadomo wydaje si
pochodzi od uytkownika, ktry jest wacicielem procesu serwera WWW.
Moemy okreli jaki inny adres rdowy, aby wydawao si, e poczta pochodzi
od kogo innego lub spod innego adresu na tej maszynie. sendmail pozwala wskaza
uytkownikw, ktrym mona powierzy robienie czego takiego.
Funkcja use_ct_file pozwala na okrelenie i uycie pliku zawierajcego nazwy zaufanych uytkownikw. Domylnie zaufana jest niewielka liczba uytkownikw (na
przykad root). Domylna nazwa pliku wykorzystywanego przez t funkcj to
/etc/mail/trusted-user w systemach wykorzystujcych katalog konfiguracyjny /etc/mail/, a /etc/sendmail.ct w pozostaych. Nazw i lokalizacj tego pliku moesz okreli,
nadpisujc definicj confCT_FILE.
Aby wczy t funkcj, dodaj FEATURE(use_ct_file) do swojego pliku sendmail.mc.

332

Rozdzia 18: Sendmail

Zarzdzanie aliasami pocztowymi


Aliasy pocztowe s siln funkcj, pozwalajc na przekierowywanie poczty do
skrzynek pocztowych o alternatywnych nazwach uytkownikw lub procesw na
hocie docelowym. Na przykad powszechne jest przekierowywanie komentarzy
i uwag na temat serwera WWW na konto webmaster. Czsto na docelowej maszynie nie istnieje uytkownik webmaster, a jest to alias innego uytkownika. Inne
popularne zastosowanie aliasw pocztowych spotykamy w programach serwerw
list dyskusyjnych, w ktrych aliasy kieruj poczt przychodzc do programu serwera list w celu obsuenia.
Aliasy s zapisywane w pliku /etc/alias. Program sendmail przeglda ten plik, by
stwierdzi, jak obsuy przychodzce wiadomoci. Jeeli znajdzie w nim wpis
zgodny z adresem w wiadomoci, przekierowuje wiadomo we wskazane miejsce.
Aliasy peni trzy funkcje:

Stanowi skrt lub dobrze znan nazw pozwalajce na adresowanie poczty do

jednej lub kilku osb.


Pozwalaj na wywoywanie programu z wiadomoci jako jego parametrem wejciowym.
Pozwalaj na przesanie wiadomoci do pliku.
Do zachowania zgodnoci z RFC, wszystkie systemy potrzebuj aliasw dla
uytkownikw Postmaster i MAILER-DAEMON.
Gdy definiujesz aliasy wywoujce programy lub piszce do programw, zawsze
pilnuj bezpieczestwa, poniewa sendmail dziaa przewanie z prawami roota.
Szczegy dotyczce aliasw pocztowych moesz znale na stronie podrcznika
elektronicznego aliases(5). Przykadowy plik aliases jest pokazany poniej.
Przykad 18-4. Przykadowy plik aliases
#
# Ponisze dwa aliasy musz by obecne dla zachowania
# zgodnoci z RFC. Wane jest, by wskazyway na 'osob', ktra
# czyta regularnie poczt
#
postmaster:
root
# wpis wymagany
MAILER-DAEMON: postmaster
# wpis wymagany
#
#
# demonstracja rnych typw aliasw
#
usenet:
janet
# alias dla osoby
admin:
joe,janet
# alias dla kilku osb
newspak-users: :include:/usr/lib/lists/newspak # odczytywanie odbiorcw z
# pliku
changefeed:
|/usr/local/lib/gup
# alias wywoujcy program
complaints:
/var/log/complaints
# alias zapisujcy wiadomo
# do pliku

Zawsze, gdy aktualizujesz plik /etc/aliases, pamitaj, by uruchomi polecenie:


# /usr/bin/newaliases

Uyteczne konfiguracje sendmaila

333

w celu przebudowania bazy danych uywanej wewntrznie przez sendmail. Polecenie /usr/bin/newaliases jest dowizaniem symbolicznym do wykonywalnego programu sendmail i takie wywoanie dziaa analogicznie do nastpujcego:
# /usr/lib/sendmail -bi

Polecenie newaliases jest po prostu wygodniejsze.

Uywanie inteligentnego hosta


Czasem host napotyka poczt, ktrej nie jest w stanie dorczy bezporednio do
danego hosta. Dlatego jeden host w sieci, powinien zarzdza przesyaniem wiadomoci do hostw zdalnych, z ktrymi si trudno poczy. Jest to wygodniejsze
ni danie cakowitej swobody wszystkim hostom, gdy wtedy kady host niezalenie podejmowaby nieustanne prby nawizania takiego poczenia.
Istnieje kilka wanych powodw, ktre przemawiaj za posiadaniem hosta
zarzdzajcego poczt. Moesz uproci zarzdzanie, nawet jeli masz tylko jeden
host z poczt skonfigurowan w taki sposb, by byo wiadomo, jak obsugiwa
wszystkie typy protokow pocztowych, jak UUCP, Usenet itp. Wszystkie pozostae
hosty musz obsugiwa wtedy tylko jeden protok, przez ktry bd wysyay
swoj poczt do takiego centralnego hosta. Hosty penice rol takiego centralnego
rutera pocztowego i przekanika poczty s nazywane hostami inteligentnymi (ang.
smart hosts). Jeeli posiadasz inteligentny host, ktry przyjmuje od ciebie poczt,
moesz wysya mu dowoln poczt, a on obsuy ruting i przekazanie tej wiadomoci do danej lokalizacji zdalnej.
Innym dobrym zastosowaniem inteligentnego hosta jest zarzdzanie przesyaniem
poczty przez prywatny firewall. Firma moe zainstalowa sie wykorzystujc niezarejestrowane adresy IP. Sie prywatna moe by podczona do Internetu przez firewall. Wysyanie poczty do i z hostw w sieci prywatnej do wiata zewntrznego
za pomoc SMTP nie byoby moliwe w typowej konfiguracji, poniewa hosty nie s
w stanie przyj lub nawiza bezporedniego poczenia sieciowego z hostami
w Internecie. Firma moe zdecydowa si na zainstalowanie firewalla, ktry bdzie
peni funkcj inteligentnego hosta pocztowego. Inteligentny host dziaajcy na firewallu jest w stanie zestawia bezporednie poczenia sieciowe midzy hostami
w sieci prywatnej a hostami w Internecie. Inteligenty host przyjmowaby wiadomoci zarwno z sieci prywatnej, jak i z Internetu, zachowywa je lokalnie, a nastpnie
obsugiwa wysyanie bezporednio do odpowiedniego hosta.
Inteligentne hosty s zwykle uywane wtedy, gdy zawiod ju wszelkie inne metody dorczenia. W przypadku firmy z sieci prywatn najpierw warto sprbowa
dostarczy poczt bezporednio, a jeeli to si nie uda, wysa j do inteligentnego
hosta. Zmniejszy si ruch do hosta inteligentnego, poniewa pozostae hosty mog
wysya poczt bezporednio do innych hostw w sieci prywatnej.
sendmail uywa prostej metody konfigurowania inteligentnego hosta za pomoc
funkcji SMART_HOST. Zastosujemy j przy implementacji konfiguracji browaru wirtualnego. Istotna cz naszej konfiguracji definiujca inteligentny host jest nastpujca:

334

Rozdzia 18: Sendmail

define('SMART_HOST', 'uucp-new:moria')
LOCAL_NET_CONFIG
# Ta regua sprawia, e caa poczta lokalna bdzie
# dostarczana za pomoc protokou SMTP, a wszystko inne
# bdzie szo przez inteligentny host.
R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3

Makro SMART_HOST pozwala ci poda host, przez ktry powinna by przesyana


caa poczta wychodzca, ktrej nie mona dostarczy bezporednio. Mona w nim
rwnie poda uywany przez hosta protok transportowy.
W naszej konfiguracji uywamy protokou uucp-new do poczenia przez UUCP
z hostem moria. Gdybymy chcieli skonfigurowa sendmail, aby uywa inteligentnego hosta opartego na SMTP, zamiast powyszego napisalibymy:
define('SMART_HOST','mail.isp.net')

Nie musimy podawa SMTP jako protokou transportowego, gdy jest to protok
domylny.
Czy wiesz, co robi makro LOCAL_NET_CONFIG i regua podstawiania?
Makro LOCAL_NET_CONFIG pozwala ci rcznie dodawa do twojej konfiguracji reguy podstawiania sendmaila, definiujce ktre poczty powinny pozosta w lokalnym systemie pocztowym. W naszym przykadzie uylimy reguy, do ktrej pasuj
wszystkie adresy, w ktrych host naley do naszej domeny (.$m.), i dokonujemy
podstawienia, dziki ktremu wiadomoci s wysyane bezporednio do programu
wysyajcego SMTP. W tej sytuacji wszelkie wiadomoci dla hosta z naszej domeny
s kierowane natychmiast do programu wysyajcego SMTP i przekazywane do danego hosta, i nie przechodz przez inteligentny host, co jest drog domyln.

Zarzdzanie niechcianymi i niepotrzebnymi pocztami (spam)


Jeeli zapisae si do pocztowej listy dyskusyjnej, umiecie swj adres e-mail
w witrynie WWW lub wysae artyku do grupy Usenet, bardzo prawdopodobne,
e zaczniesz dostawa niechciane poczty reklamowe. Obecnie niemao ludzi trudni
si wyszukiwaniem ich w sieci adresw pocztowych, dodawaniem ich do list czy
sprzedawaniem firmom reklamujcym swoje produkty. Ten rodzaj masowego wysyania poczty nazywany jest popularnie spammingiem.
Darmowy elektroniczny sownik informatyczny (Free On-Line Dictionary of Computing) podaje nastpujc definicj spamu*:
2. (zawenie znaczenia 1, powyej) Bezkarne wysyanie duej liczby niepodanych
wiadomoci e-mail w celu promocji produktu lub usugi. Spam w tym znaczeniu jest odpowiednikiem poczty-miecia, wysyanej do uytkownika.
Wraz z komercyjnym rozwojem sieci w latach 90., pojawiy si osoby oferujce spamming
jako usug firmom, ktre chc si reklamowa w sieci. Robi to przez wysyanie wiadomoci pod adresy e-mail ze swojej listy, grupy Usenet czy listy pocztowej. Takie praktyki

Sownik ten mona znale w postaci pakietu w dystrybucjach Linuksa lub na jego stronie macierzystej
http://wombat.doc.ic.ac.uk/foldoc/.

Uyteczne konfiguracje sendmaila

335

wywoay oburzenie, a nawet agresywne reakcje wielu uytkownikw sieci przeciwko


uprawiajcym spamming.

Na szczcie sendmail zawiera mechanizmy pomocne w walce z niechcian poczt.


Czarna lista
Czarna lista (ang. Real-time Blackhole list RBL) jest dostpn publicznie usug,
ktra ma pomc w ograniczeniu rozsyania niechcianych reklam. Adresy nadawcw
spamu i hosty, ktre udao si rozpozna, s ujawniane w Internecie w postaci bazy
danych, do ktrej mona zadawa zapytania. Baza powstaje wysikiem ludzi, ktrzy
dostali niechcian poczt spod jakiego adresu e-mail. Na licie pojawiaj si te
gwne domeny, ze wzgldu na wpadki w zabezpieczaniu si przed przyjmowaniem spamu. Cho niektrzy narzekaj na sposb selekcji informacji przez osoby
utrzymujce list, jest ona bardzo popularna, a niezgodnoci s zwykle szybko
wyapywane. Szczegy na temat dziaania usugi mona znale na stronie macierzystej jej twrcw projektu Mail Abuse Protection System (MAPS) pod adresem
http://maps.vix.com/rbl/.
Jeeli wczysz t funkcj, sendmail bdzie sprawdza adres nadawcy kadej przychodzcej wiadomoci i porwnywa go z czarn list, by stwierdzi, czy ma przyj
wiadomo. Jeeli twj orodek jest duy i ma wielu uytkownikw, to dziki tej
funkcji moesz zaoszczdzi wiele miejsca na dysku. Jako parametr przyjmuje ona
nazw serwera, z ktrego ma korzysta. Domylnie jest to rbl.maps.vix.com.
Aby skonfigurowa czarn list, dodaj ponisze makro do swojego pliku sendmail.mc:
FEATURE(rbl)

Gdyby chcia poda inny serwer RBL, mgby zapisa deklaracj w nastpujcy
sposb:
FEATURE(rbl,'rbl.host.net')

Baza dostpu
Alternatywnym systemem, ktry oferuje wiksz elastyczno i kontrol kosztem
rcznej konfiguracji, jest funkcja access_db. Baza dostpu pozwala na skonfigurowanie hostw lub uytkownikw, od ktrych przyjmujesz poczt i na rzecz ktrych
poczt przekazujesz.
Kontrola nad tym, do kogo przekazujesz poczt, jest wana, gdy jest to inna technika powszechnie uywana przez hosty spammujce do obejcia opisanej wanie
czarnej listy. Zamiast wysya do ciebie poczt bezporednio, spammerzy przesyaj
j przez jaki inny, niepodejrzany host, ktry na to pozwala. Przychodzce poczenie SMTP nie pochodzi od hosta spammujcego, a od hosta, przez ktry jest przekazywane. Aby by pewnym, e twj host nie bdzie uywany w ten sposb, powiniene przekazywa poczt tylko na rzecz znanych hostw. Sendmail w wersji 8.9.0
i nowszych ma domylnie wyczone przekazywanie, a wic bdziesz musia wykorzysta baz dostpu, by wczy przekazywanie dla poszczeglnych hostw.

336

Rozdzia 18: Sendmail

Oglna zasada jest prosta. Gdy zostanie odebrane nowe przychodzce poczenie
SMTP, sendmail odczytuje informacje z nagwka i sprawdza baz dostpu, by zobaczy, czy powinien przyj wiadomo.
Baza dostpu to zbir regu opisujcych, co robi, gdy wiadomo zostanie odebrana
z okrelonego hosta. Domylny plik kontroli dostpu nosi nazw /etc/mail/access. Tabela ma prosty format. Kady wiersz tabeli zawiera regu dostpu. Lewa strona kadej reguy to wzorzec uywany do dopasowania adresu nadawcy przychodzcej
poczty. Moe to by peny adres e-mail, nazwa hosta lub adres IP. Po prawej stronie
wymienione jest dziaanie, jakie naley podj. Istnieje pi typw dziaa, ktre
moesz skonfigurowa. S to:
OK
Przyjcie wiadomoci.
RELAY
Przyjcie wiadomoci z tego hosta lub od tego uytkownika, nawet jeeli nie jest
przeznaczona dla naszego hosta. To oznacza przyjcie wiadomoci do przekazania do innych hostw.
REJECT
Odmwienie przyjcia z ogln informacj.
DISCARD
Odrzucenie wiadomoci za pomoc programu wysyajcego $#discard.
### dowolny tekst
Zwrcenie bdu z wykorzystaniem ### jako kodu bdu (ktry powinien by
zgodny z RFC-821) i dowolnego tekstu jako treci wiadomoci.
Przykadowy plik /etc/mail/access moe wyglda tak:
friends@cybermail.com
aol.com
207.46.131.30
postmaster@aol.com
linux.org.au

REJECT
REJECT
REJECT
OK
RELAY

Ta przykadowa konfiguracja odrzuca wszelkie wiadomoci odebrane z adresu


friends@cybermail.com, od hostw z domeny aol.com i od hosta o numerze
207.46.131.30. Nastpna regua przyjmuje poczt od postmaster@aol.com, pomimo e
poczta z caej domeny jest odrzucana. Ostatnia regua pozwala na przekazywanie
poczty z dowolnego hosta do domeny linux.org.au.
Aby uaktywni funkcj bazy dostpu, uyj w swoim pliku sendmail.mc poniszej deklaracji:
FEATURE(access_db)

Domylna definicja tworzy baz danych, uywajc polecenia hash -o /etc/mail/access, ktre generuje prost baz ze zwykego pliku tekstowego. Jest to wystarczajce w wikszoci przypadkw. Istniej inne opcje, ktre moesz rozway,
jeeli zamierzasz stworzy du baz dostpu. Szczegy znajdziesz w ksice
o sendmailu lub innej dokumentacji tego programu.

Uyteczne konfiguracje sendmaila

337

Wyczanie otrzymywania poczty przez uytkownikw


Jeli masz uytkownikw lub automatyczne procesy, ktrym wolno wysya poczt,
ale nie otrzymywa, czasem warto zablokowa przyjmowanie wiadomoci dla nich
przeznaczonych. Wtedy na dysku nie byyby zapisywane nigdy nie czytane poczty.
Funkcja blacklist_recipients w poczeniu z access_db pozwala ci wyczy odbieranie poczty przez uytkownikw lokalnych.
Aby wczy t funkcj, dodajesz ponisze wiersze do swojego pliku sendmail.mc,
o ile ich tam jeszcze nie ma:
FEATURE(access_db)
FEATURE(blacklist_recipients)

Aby zablokowa otrzymywanie poczty przez lokalnego uytkownika, dodaj dotyczce go szczegy do bazy dostpu. Zwykle uywasz wpisu typu ###, ktry zwraca
sensowny komunikat bdu do nadawcy, tak by wiedzia, e poczta nie zostaa dostarczona. Ta funkcja dotyczy w rwnym stopniu wszystkich uytkownikw wirtualnych
domen pocztowych i musisz w specyfikacji bazy danych doczy wirtualn domen
pocztow. Przykadowe wpisy w pliku /etc/mail/access mogyby by nastpujce:
daemon
flacco
grump@dairy.org

550 Daemon does not accept or read mail.


550 Mail for this user has been administratively disabled.
550 Mail disabled for this recipient.

Konfigurowanie obsugi wirtualnych domen pocztowych


Obsuga wirtualnych domen pocztowych pozwala hostowi na przyjmowanie i dostarczanie poczty na rzecz szeregu rnych domen, tak jakby dziaao kilka oddzielnych hostw. Funkcja ta, w poaczeniu z obsug wirtualnych serwrw WWW, jest
wykorzystywana zwaszcza przez dostawcw aplikacji internetowych. Jest jednak
tak atwa w konfiguracji, e warto si z tym zapozna, bo nigdy nie wiadomo, czy nie
znajdziesz si w sytuacji, gdy bdziesz musia uruchomi wirtualn list pocztow
dla swojego ulubionego projektu Linuksa. A wic opiszemy tu ten proces.
Przyjmowanie poczty dla innych domen
Gdy sendmail odbierze wiadomo e-mail, porwnuje host adresata zawarty w nagwku poczty z nazw hosta lokalnego. Jeeli pasuj, sendmail przyjmuje wiadomo do dostarczenia lokalnie. Jeeli s rne, sendmail moe przyj wiadomo
i prbowa przekaza j do celu (szczegy dotyczce konfiguracji sendmaila do
przyjmowania poczty w celu jej przekazania znajdziesz we wczeniejszym podrozdziale Baza dostpu).
Gdyby chcia skonfigurowa domeny wirtualne, musisz przede wszystkim przekona sendmail, e powinien przyjmowa poczt dla domen, ktre obsugujemy. Na
szczcie dosy atwo jest to zrobi.
Funkcja use_cw_file pozwala nam okreli nazw pliku, w ktrym znajduj si
nazwy domen, dla ktrych sendmail przyjmuje poczt. Aby skonfigurowa t funkcj, do swojego pliku sendmail.mc dodaj nastpujc deklaracj:
FEATURE(use_cw_file)

338

Rozdzia 18: Sendmail

Domylna nazwa pliku to /etc/mail/local-host-names dla dystrybucji uywajcych katalogu konfiguracyjnego /etc/mail/ lub /etc/sendmail.cw dla tych, ktre go nie uywaj.
Alternatywnie moesz okreli nazw i lokalizacj tego pliku, nadpisujc makro
confCW_FILE:
define('confCW_FILE','/etc/virtualnames')

Zamy, e uywamy domylnej nazwy pliku. Gdybymy chcieli obsugiwa wirtualn poczt dla domen bovine.net, dairy.org i artist.org, musielibymy stworzy
nastpujcy plik /etc/mail/local-host-names:
bovine.net
dairy.org
artist.org

Gdy to zrobimy i utworzymy odpowiednie rekordy DNS, gdzie nazwy domen


wskazuj na nasz host, sendmail bdzie przyjmowa poczt przeznaczon dla nich
tak, jakby bya przeznaczona dla naszej rzeczywistej domeny.
Przekazywanie poczty z wirtualnych domen pocztowych pod inne adresy
Funkcja sendmaila virtusertable ustawia obsug tablicy uytkownikw wirtualnych, gdzie konfigurujemy wirtualne domeny pocztowe. Tablica uytkownikw
wirtualnych odwzorowuje przychodzce poczty przeznaczone dla uytkownik@host
na innyuytkownik@innyhost. Moesz to traktowa jak zaawansowane aliasy pocztowe, przekierowujce nie tylko uytkownika, ale take domen.
Aby skonfigurowa funkcj virtusertable, dodaj do swojego pliku sendmail.mc
nastpujcy wiersz:
FEATURE(virtusertable)

Domylnie plik zawierajcy reguy translacji nosi nazw /etc/mail/virusertable.


Moesz j zmieni, podajc odpowiedni argument w makrodefinicji. Szczegy
zwizane z dostpnymi opcjami znajdziesz w dokumentacji sendmaila.
Format tablicy uytkownikw wirtualnych jest bardzo prosty. Lewa strona kadego
wiersza zawiera wzorzec reprezentujcy oryginalny adres, a prawa strona zawiera
wzorzec, na jaki tamten adres zostanie odwzorowany.
Poniszy przykad pokazuje trzy moliwe typy wpisw:
samiam@bovine.net
sunny@bovine.net
@dairy.org
@artist.org

colin
darkhorse@mystery.net
mail@jhm.org
$1@red.firefly.com

W tym przykadzie obsugujemy domeny wirtualne bovine.net, dairy.org i artist.org.


Pierwszy wpis przekierowuje poczt przesyan do uytkownika domeny wirtualnej bovine.net na uytkownika lokalnego komputera. Drugi wpis przekierowuje
poczt uytkownika tej samej domeny wirtualnej na uytkownika innej domeny.
Trzeci przykad przekierowuje ca poczt adresowan do uytkownika domeny
wirtualnej dairy.org na pojedynczy adres zdalny. No i ostatni wpis przekierowuje
ca poczt uytkownika z domeny artist.org na tego samego uytkownika w innej

Testowanie konfiguracji

339

domenie. Na przykad julie@artist.org zostaaby przekierowana na julie@red.firefly.


com.

Testowanie konfiguracji
Polecenie m4 przetwarza pliki makrodefinicji wycznie zgodnie z wasnymi reguami skadniowymi, nic bowiem nie wie o poprawnej skadni sendmaila. Tak wic,
jeeli co zrobie le w pliku makrodefinicji, i tak nie bdzie adnych komunikatw
bdw. Z tego powodu wane jest dokadne przetestowanie twojej konfiguracji. Na
szczcie w sendmailu robi si to atwo.
sendmail posiada tryb testowania adresu pozwalajcy na sprawdzenie naszej konfiguracji i zidentyfikowanie wszelkich bdw. W tym trybie dziaania wywoujemy
sendmail z wiersza polece, a on prosi nas o podanie reguy i adresu docelowego. Nastpnie przetwarza adres, uywajc zadanej reguy podstawienia i wywietla wynik
po przejciu kadej reguy. Aby wczy ten tryb w sendmailu, wywoujemy go z argumentem -bt.
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>

Domylnie jest uywany plik konfiguracyjny /etc/mail/sendmail.cf. Moesz poda inny plik konfiguracyjny, uywajc argumentu -C. Aby sprawdzi nasz konfiguracj, musimy wybra adresy do przetwarzania, ktre powiedz nam, e nasze wymagania co do obsugi poczty zostay spenione. Aby to pokaza, przetestujemy
nasz bardziej skomplikowan konfiguracj UUCP pokazan w przykadzie 18-2.
Najpierw sprawdzimy, czy sendmail jest w stanie dostarczy poczt do uytkownikw
lokalnych. Spodziewamy si, e wszystkie adresy bd przeksztacone tak, by korzystay z programu wysyajcego local na naszej maszynie:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac
rewrite: ruleset
3
input: isaac
rewrite: ruleset 96
input: isaac
rewrite: ruleset 96 returns: isaac
rewrite: ruleset
3 returns: isaac
rewrite: ruleset
0
input: isaac
rewrite: ruleset 199
input: isaac
rewrite: ruleset 199 returns: isaac
rewrite: ruleset 98
input: isaac
rewrite: ruleset 98 returns: isaac
rewrite: ruleset 198
input: isaac
rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset
0 returns: $# local $: isaac

Ten wynik pokazuje nam, jak sendmail przetwarza poczt adresowan do isaac w naszym systemie. Kady wiersz przedstawia informacje przekazane do zestawu regu
lub rezultat uzyskany po przejciu przez zestaw regu. Wskazalimy sendmailowi, e
chcielibymy uy zestawu regu 0 i 3 do przeksztacenia adresu. Zestaw regu 0 jest

340

Rozdzia 18: Sendmail

wywoywany normalnie, a wywoanie zestawu 3 wymusilimy, poniewa domylnie nie jest testowany. Ostatni wiersz pokazuje, e wynik zestawu regu 0 w rzeczywistoci przekazuje do programu wysyajcego local, poczt adresowan do uytkownika isaac.
Nastpnie sprawdzimy poczt adresowan na adres SMTP: isaac@vstout.vbrew.com.
Powinnimy uzyska ten sam wynik co w poprzednim przykadzie:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@vstout.vbrew.com
rewrite: ruleset
3
input: isaac @ vstout . vbrew .
rewrite: ruleset 96
input: isaac < @ vstout . vbrew
rewrite: ruleset 96 returns: isaac < @ vstout . vbrew
rewrite: ruleset
3 returns: isaac < @ vstout . vbrew
rewrite: ruleset
0
input: isaac < @ vstout . vbrew
rewrite: ruleset 199
input: isaac < @ vstout . vbrew
rewrite: ruleset 199 returns: isaac < @ vstout . vbrew
rewrite: ruleset 98
input: isaac < @ vstout . vbrew
rewrite: ruleset 98 returns: isaac < @ vstout . vbrew
rewrite: ruleset 198
input: isaac < @ vstout . vbrew
rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset
0 returns: $# local $: isaac

com
. com
. com
. com
. com
. com
. com
. com
. com
. com

>
.
.
.
.
.
.
.
.

>
>
>
>
>
>
>
>

Znw test zakoczy si poprawnie. Dalej sprawdzimy poczt kierowan na adres


typu UUCP: vstout!isaac.
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 vstout!isaac
rewrite: ruleset
3
input: vstout ! isaac
rewrite: ruleset 96
input: isaac < @ vstout . UUCP >
rewrite: ruleset 96 returns: isaac < @ vstout . vbrew .
rewrite: ruleset
3 returns: isaac < @ vstout . vbrew .
rewrite: ruleset
0
input: isaac < @ vstout . vbrew .
rewrite: ruleset 199
input: isaac < @ vstout . vbrew .
rewrite: ruleset 199 returns: isaac < @ vstout . vbrew .
rewrite: ruleset 98
input: isaac < @ vstout . vbrew .
rewrite: ruleset 98 returns: isaac < @ vstout . vbrew .
rewrite: ruleset 198
input: isaac < @ vstout . vbrew .
rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset
0 returns: $# local $: isaac

com
com
com
com
com
com
com
com

.
.
.
.
.
.
.
.

>
>
>
>
>
>
>
>

Ten test rwnie si uda. Testy potwierdzaj, e kada poczta przyjta dla
uytkownikw lokalnych zostanie poprawnie dostarczona bez wzgldu na format
adresu. Gdyby zdefiniowa aliasy dla twojego komputera, na przykad hosty wirtualne, powiniene powtrzy testy dla kadej z alternatywnych nazw, pod jak
znany jest host, aby sprawdzi, czy rwnie dziaaj poprawnie.
Nastpnie sprawdzimy, czy poczta adresowana do innych hostw w domenie
vbrew.com jest dostarczana bezporednio do tego hosta przez program wysyajcy
SMTP:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>

Testowanie konfiguracji
> 3,0 isaac@vale.vbrew.com
rewrite: ruleset
3
input:
rewrite: ruleset 96
input:
rewrite: ruleset 96 returns:
rewrite: ruleset
3 returns:
rewrite: ruleset
0
input:
rewrite: ruleset 199
input:
rewrite: ruleset 199 returns:
rewrite: ruleset 98
input:
rewrite: ruleset 98 returns:
rewrite: ruleset 198
input:
rewrite: ruleset 198 returns:
$: isaac < @ vale . vbrew
rewrite: ruleset
0 returns:
$: isaac < @ vale . vbrew

341

isaac @
isaac <
isaac <
isaac <
isaac <
isaac <
isaac <
isaac <
isaac <
isaac <
$# smtp
. com .
$# smtp
. com .

vale . vbrew . com


@ vale . vbrew . com >
@ vale . vbrew . com . >
@ vale . vbrew . com . >
@ vale . vbrew . com . >
@ vale . vbrew . com . >
@ vale . vbrew . com . >
@ vale . vbrew . com . >
@ vale . vbrew . com . >
@ vale . vbrew . com . >
$@ vale . vbrew . com . /
>
$@ vale . vbrew . com . /
>

Widzimy, e ten test przekierowa wiadomo do programu wysyajcego SMTP,


ktry przekae go bezporednio do hosta vale.vbrew.com i uytkownika isaac. Ten
test potwierdza, e nasza definicja LOCAL_NET_CONFIG dziaa poprawnie. Warunkiem powodzenia tego testu jest rozwizanie docelowej nazwy hosta, a wic
w pliku /etc/hosts lub w lokalnym DNS-ie musi znajdowa si odpowiedni wpis. Aby
zobaczy, co si stanie, jeeli rozwizanie nazwy bdzie niemoliwe, podajemy nieznany host:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@vXXXX.vbrew.com
rewrite: ruleset
3
input: isaac @ vXXXX . vbrew . com
rewrite: ruleset 96
input: isaac < @ vXXXX . vbrew . com >
vXXXX.vbrew.com: Name server timeout
rewrite: ruleset 96 returns: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset
3 returns: isaac < @ vXXXX . vbrew . com >
== Ruleset 3,0 (3) status 75
rewrite: ruleset
0
input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 199
input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 199 returns: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 98
input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 98 returns: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 198
input: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 95
input: < uucp-new : moria > isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 95 returns: $# uucp-new $@ moria $: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset 198 returns: $# uucp-new $@ moria $: isaac < @ vXXXX . vbrew . com >
rewrite: ruleset
0 returns: $# uucp-new $@ moria $: isaac < @ vXXXX . vbrew . com >

Wynik jest zupenie inny. Najpierw zestaw regu 3 zwraca bd wskazujcy, e


nazwa hosta nie moe zosta rozwizana. Nastpnie podejmowana jest prba
obsuenia tej sytuacji przez przekazanie do innej funkcji naszej konfiguracji: inteligentnego hosta. Zadaniem inteligentnego hosta jest obsuenie wszelkich poczt,
ktrych nie da si dostarczy w inny sposb. Podana w tecie nazwa hosta nie daje
si rozwiza i reguy pokazuj, e poczta powinna zosta przekazana do inteligentnego hosta moria poprzez program wysyajcy uucp-new. Nasz inteligentny host
moe mie lepsze poczenia i bdzie wiedzia, co zrobi z tym adresem.

342

Rozdzia 18: Sendmail

Ostatni z naszych testw pokazuje, e kada poczta adresowana do hosta spoza naszej domeny jest przekazywana do naszego hosta inteligentnego. Powinien on da
wynik podobny do tego z poprzedniego przykadu:
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@linux.org.au
rewrite: ruleset
3
input: isaac @ linux . org . au
rewrite: ruleset 96
input: isaac < @ linux . org . au >
rewrite: ruleset 96 returns: isaac < @ linux . org . au . >
rewrite: ruleset
3 returns: isaac < @ linux . org . au . >
rewrite: ruleset
0
input: isaac < @ linux . org . au . >
rewrite: ruleset 199
input: isaac < @ linux . org . au . >
rewrite: ruleset 199 returns: isaac < @ linux . org . au . >
rewrite: ruleset 98
input: isaac < @ linux . org . au . >
rewrite: ruleset 98 returns: isaac < @ linux . org . au . >
rewrite: ruleset 198
input: isaac < @ linux . org . au . >
rewrite: ruleset 95
input: < uucp-new : moria > isaac < @ linux . org . au
rewrite: ruleset 95 returns: $# uucp-new $@ moria $: isaac < @ linux . org .
rewrite: ruleset 198 returns: $# uucp-new $@ moria $: isaac < @ linux . org .
rewrite: ruleset
0 returns: $# uucp-new $@ moria $: isaac < @ linux . org .

. >
au . >
au . >
au . >

Wynik tego testu pokazuje, e nazwa hosta zostaa rozwizana i e zosta on przekazany do naszego inteligentnego hosta. Dowodzi to, e nasza definicja LOCAL_NET_CONFIG dziaa poprawnie i w obu sytuacjach jest obsugiwana dobrze.
Ten test take koczy si sukcesem, a wic moemy szczliwie przyj, e nasza
konfiguracja jest poprawna, i zacz jej uywa.

Eksploatowanie sendmaila
Demona sendmail mona uruchomi na dwa sposoby. Jeden to uruchamianie go z demona inetd. Drugi, czciej uywany, to uruchomienie sendmaila jako samodzielnego
demona. Czsto zdarza si, e programy wysyajce poczt wywouj sendmail jako
polecenie uytkownika przyjmujcego do wysania lokalnie utworzon poczt.
Jeeli uruchamiasz sendmail jako samodzielnego demona, wstaw polecenie do pliku
rc. Wtedy demon sendmaila uruchomi si w czasie startu komputera. Najczciej
uywana skadnia to:
/usr/sbin/sendmail -bd -q10m

Argument -bd mwi sendmailowi, e ma dziaa jako demon. Program rozgazi si


i bdzie dziaa w tle. Argument -q10m mwi, by sendmail sprawdza kolejk co
dziesi minut. Moesz poda inny czas sprawdzania kolejki.
Aby uruchomi sendmail z demona sieciowego inetd, uywa si nastpujcego wpisu:
smtp stream

tcp nowait nobody

/usr/sbin/sendmail -bs

Argument -bs mwi sendmailowi, by uywa protokou SMTP na stdin/stdout, co


jest wymagane przy uywaniu z inetd.

Sztuczki i kruczki

343

Polecenie runq zwykle jest dowizaniem symbolicznym do pliku binarnego sendmail


i jest wygodniejsz postaci wywoania:
# sendmail -q

Gdy sendmail jest wywoywany w ten sposb, przetwarza wszystkie wiadomoci


oczekujce w kolejce. Przy wywoywaniu sendmaila z inetd, musisz take stworzy
zadanie cron, ktre co jaki czas uruchamia polecenie runq suce do obsugi bufora
poczty.
Odpowiedni wpis w tablicy cron powinien przypomina co takiego:
# Uruchamiaj bufor poczty co pitnacie minut
0,15,30,45
*
*
*
*
/usr/bin/runq

W wikszoci instalacji sendmail przetwarza kolejk co 15 minut, co pokazano w przykadowym pliku crontab. Przetwarzanie kolejki polega na prbie wysania czekajcej
w niej wiadomoci.

Sztuczki i kruczki
Istnieje wiele rzeczy, ktre moesz robi, aby efektywne zarzdza sendmailem. W pakiecie sendmaila znajduje si szereg narzdzi do zarzdzania. Przyjrzyjmy si najwaniejszym z nich.

Zarzdzanie buforem poczty


Poczta, zanim zostanie wysana, jest kolejkowana w katalogu /var/spool/mqueue. Katalog ten jest nazywany buforem poczty. Program sendmail pozwala na wywietlenie
listy wszystkich wiadomoci znajdujcych si w kolejce i ich stanu.
Polecenie /var/bin/mailq jest dowizaniem symbolicznym do programu sendmail
i dziaa tak samo jak wywoanie:
# sendmail -bp

Wynik pokazuje ID wiadomoci, jej rozmiar, czas umieszczenia w kolejce, nadawc


i komunikat opisujcy jej aktualny stan. Poniszy przykad przedstawia wiadomo
czekajc w kolejce ze wzgldu na jaki problem:
$ mailq

Mail Queue (1 request)


--Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient-----------RAA00275
124 Wed Dec 9 17:47 root
(host map: lookup (tao.linux.org.au): deferred)
tarry@tao.linux.org.au

Ta wiadomo znajduje si wci w kolejce, poniewa nie mona znale adresu IP


docelowego hosta.
Moemy spowodowa, e sendmail bdzie przetwarza wiadomoci znajdujce si
w kolejce, wydajc polecenie /usr/bin/runq.
Polecenie nie pokazuje adnego wyniku. sendmail rozpocznie w tle przetwarzanie
poczty znajdujcej si w kolejce.

344

Rozdzia 18: Sendmail

Wymuszanie przetworzenia kolejki pocztowej na hocie zdalnym


Jeeli uywasz tymczasowego poczenia komutowanego z Internetem, ale masz
stay adres IP, a host MX zbiera twoj poczt w czasie, gdy jeste rozczony, przyda
ci si wymuszanie na hocie MX, by przetwarza kolejk pocztow zaraz po zestawieniu twojego poczenia.
W dystrybucji sendmaila doczono may program w Perlu, ktry uatwia zadanie
programom, obsugujcym t funkcj. Skrypt etrn pozwala osign mniej wicej to
samo na hocie zdalnym, co polecenie runq na hocie lokalnym. Jeeli wywoamy
polecenie pokazane w poniszym przykadzie:
# etrn vstout.vbrew.com

wymusimy na hocie vstout.vbrew.com przetworzenie caej poczty przeznaczonej


dla naszego komputera, a czekajcej w kolejce.
Zwykle polecenie to dodaje si do skryptu ip-up PPP, tak by byo wykonywane zaraz
po zestawieniu poczenia sieciowego.

Analizowanie statystyk poczty


sendmail zbiera dane na temat wielkoci ruchu pocztowego i informacje na temat hostw, do ktrych dostarczy poczt. Istniej dwa polecenia pozwalajce na wywietlenie tej informacji: mailstats i hoststat.
mailstats
Polecenie mailstats wywietla statystyki na temat liczby wiadomoci przetworzonych przez sendmail. Na pocztku wypisywana jest data rozpoczcia przyjmowania
wiadomoci, a po niej tabela, ktra zawiera po jednym wierszu dla kadego skonfigurowanego programu wysyajcego poczt i wiersz pokazujcy sum wszystkich
wiadomoci. Kady wiersz zawiera osiem elementw:
Pole

Znaczenie

M
msgsfr
bytes_from
msgsto
bytes_to
msgsrej
msgsdis
Mailer

Numer programu wysyajcego (protokou transportowego).


Liczba wiadomoci odebranych przez program.
czna liczba kilobajtw wiadomoci odebranych przez program.
Liczba wiadomoci wysanych przez program.
czna liczba kilobajtw wysanych przez program.
Liczba nie przyjtych wiadomoci.
Liczba odrzuconych wiadomoci.
Nazwa programu wysyajcego.

Przykadowy wynik polecenia mailstats pokazano poniej.

Sztuczki i kruczki

345

Przykad 18-5. Przykadowy wynik polecenia mailstats


# /usr/sbin/mailstats
Statistics from Sun Dec 20 22:47:02 1998
M
msgsfr bytes_from msgsto bytes_to msgsrej msgsds Mailer
0
0
0K
19
515K
0
0 prog
3
33
545K
0
0K
0
0 local
5
88
972K
139
1018K
0
0 esmtp
===========================================================
T
121
1517K
158
1533K
0
0

Te dane s zbierane, jeeli opcja StatusFile w pliku sendmail.cf jest wczona i istnieje
plik stanu. Zwykle musisz doda w pliku sendmail.cf co takiego:
# plik stanu
O StatusFile=/var/log/sendmail.st

Aby ponownie uruchomi zbieranie statystyk, musisz stworzy plik statystyk o zerowej dugoci:
> /var/log/sendmail.st

i ponownie uruchomi sendmail.


hoststat
Polecenie hoststat wywietla informacje o stanie hostw, do ktrych sendmail prbowa
dostarczy poczt. Polecenie hoststat jest rwnowane z nastpujcym wywoaniem
sendmaila:
sendmail -bh

Wynik pokazuje kadego hosta w oddzielnym wierszu i przy kadym z nich zaznacza, od kiedy (godzina) s podejmowane prby dostarczenia, oraz uzyskany wtedy
komunikat.
Przykad 18-6 to rezultat, jakiego moesz oczekiwa od polecenia hoststat. Zauwa,
e wikszo wynikw pokazuje, e dostarczenie si powiodo z wyjtkiem earthlink.net. Komunikat o stanie moe pomc okreli powd niepowodzenia. W tym
przypadku upyn czas oczekiwania na poczenie dlatego, e host nie dziaa, albo
nie dao si do niego dosta w czasie, gdy byy podejmowane takie prby.
Przykad 18-6. Przykadowy wynik polecenia hoststat
# hoststat
----------Hostname-------------How long ago ------------Results--------mail.telstra.com.au
04:05:41 250 Message accepted for
scooter.eye-net.com.au
81+08:32:42 250 OK id=0zTGai-0008S9-0
yarrina.connect.com.a
53+10:46:03 250 LAA09163 Message acce
happy.optus.com.au
55+03:34:40 250 Mail accepted
mail.zip.com.au
04:05:33 250 RAA23904 Message acce
kwanon.research.canon.com.au
44+04:39:10 250 ok 911542267 qp 21186
linux.org.au
83+10:04:11 250 IAA31139 Message acce
albert.aapra.org.au
00:00:12 250 VAA21968 Message acce
field.medicine.adelaide.edu.au 53+10:04:11 250 ok 910742814 qp 721
copper.fuller.net
65+12:38:00 250 OAA14470 Message acce
amsat.org
5+06:49:21 250 UAA07526 Message acce
mail.acm.org
53+10:46:17 250 TAA25012 Message acce
extmail.bigpond.com
11+04:06:20 250 ok
earthlink.net
45+05:41:09 Deferred: Connection time

346

Rozdzia 18: Sendmail

Polecenie purgestat czyci zebrane dane i jest rwnowane z nastpujcym wywoaniem sendmaila:
# sendmail -bH

Statystyki bd zbierane, a ich nie wyczycisz. Moesz co jaki czas uruchamia polecenie purgestat, aby uatwi sobie wyszukiwanie ostatnich wpisw, szczeglnie jeeli twj orodek jest obciony. Moesz take umieci to polecenie w tablicy crontab, tak aby byo uruchamiane automatycznie, lub moesz uruchamia je co jaki
czas rcznie.

Exim

19

Rozdzia 19: Exim

Ten rozdzia zwile wprowadza w konfigurowanie Exima i omawia jego funkcje.


Cho Exim zachowuje si podobnie jak sendmail, jego pliki konfiguracyjne s zupenie inne.
Gwny plik konfiguracyjny w wikszoci dystrybucji Linuksa nazywa si /etc/exim.
conf lub /etc/exim/config, a w starszych konfiguracjach /usr/lib/exim/config. Plik ten
moesz znale, uruchamiajc ponisze polecenie:
$ exim -bP configure_file

Moe zaj potrzeba edycji pliku konfiguracyjnego, aby dopasowa go do wartoci


specyficznych dla twojego orodka. Przy standardowym konfigurowaniu nie trzeba
wiele zmienia, a dziaajca konfiguracja rzadko musi by modyfikowana.
Domylnie Exim natychmiast przetwarza i rozsya wszystkie przychodzce wiadomoci. Jeeli masz stosunkowo duy ruch, moesz skonfigurowa Exima tak, by
zbiera wiadomoci w tak zwanej kolejce i przetwarza je cznie jedynie co jaki czas.
Przy obsudze poczty w sieci TCP/IP, Exim czsto dziaa w trybie demona: w czasie
uruchamiania systemu jest wywoywany z /etc/init.d/exim* i przechodzi w to, gdzie
czeka na przychodzce poczenia TCP na porcie SMTP (zwykle port 25). Jest to korzystne, gdy spodziewasz si duego ruchu, gdy Exim nie musi uruchamia si dla
kadego przychodzcego poczenia. Alternatywnie, inetd moe zarzdza portem
SMTP i Exima, gdy nadejdzie poczenie na ten port. Taka konfiguracja moe si
przyda, gdy masz ograniczon wielko pamici i niewielki ruch.
Exim ma skomplikowany zestaw opcji wiersza polece, a wiele z nich przypomina
te z sendmaila. Zamiast samemu trudzi si nad dopasowaniem opcji do swoich potrzeb, moesz zaimplementowa najpopularniejsze typy operacji, wywoujc klasyczne polecenia, jak rmail czy rsmtp. S to dowizania symboliczne do Exima (a jeli
*

Inne moliwe lokalizacje to /etc/rc.d/init.d i rc.inet2. Ta ostatnia jest czsto spotykana w systemach korzystajcych ze struktury plikw w katalogu /etc typowej dla BSD.

348

Rozdzia 19: Exim

ich nie ma, moesz je atwo utworzy). Gdy uruchomisz jedno z tych polece, Exim
sprawdzi uyt przez ciebie nazw i ustawi sam odpowiednie opcje.
Istniej dwa dowizania do Exima, ktre powiniene mie bez wzgldu na wszystko: /usr/bin/rmail i /usr/sbin/sendmail*. Gdy piszesz wiadomo i wysyasz j za pomoc agenta, na przykad elm, jest ona przekazywana do sendmaila lub rmaila w celu dostarczenia i dlatego zarwno /usr/sbin/sendmail, jak i /usr/bin/rmail powinny wskazywa na Exima. Lista adresatw wiadomoci jest przekazywana do Exima w wierszu
polece** To samo dzieje si z poczt przychodzc przez UUCP. Wpisujc ponisze
wiersze, moesz skonfigurowa dane cieki tak, by wskazyway na Exima:
$ ln -s /usr/sbin/exim /usr/bin/rmail
$ ln -s /usr/sbin/exim /usr/sbin/sendmail

Gdyby chcia si zagbi w dalsze szczegy konfiguracji Exima, powiniene przeczyta jego pen specyfikacj. Jeeli nie ma jej w twojej ulubionej dystrybucji Linuksa, moesz j znale w rdach Exima lub przeczyta w wersji elektronicznej na
witrynie Exima pod adresem http://www.exim.org.

Eksploatowanie Exima
Przed uruchomieniem Exima musisz si zdecydowa, czy chcesz, eby obsugiwa
on przychodzc poczt SMTP jako samodzielny demon, czy jako program zarzdzany przez inetd, ktry kontroluje port SMTP i wywouje Exima tylko wtedy,
gdy klient da poczenia SMTP. Zwykle na serwerach pocztowych lepiej sprawdza si demon, poniewa duo mniej obcia maszyn ni Exim uruchamiany oddzielnie dla kadego poczenia. Poniewa serwer pocztowy dostarcza wikszo
przychodzcej poczty bezporednio do adresatw, powiniene na pozostaych hostach wybra dziaanie przez inetd.
Bez wzgldu na to, ktry tryb pracy wybierzesz, musisz mie w swoim pliku /etc/services nastpujcy wpis:
smtp

25/tcp

# Simple Mail Transfer Protocol

Definiuje on numer portu TCP, ktry jest uywany do pocze SMTP. Numer portu
25 jest standardowo zdefiniowany przez RFC-1700 (Assigned Numbers).
Gdy uruchomisz Exima w trybie demona, przechodzi on do przetwarzania w tle
i czeka na poczenie na porcie SMTP. Gdy poczenie nadejdzie, rozgazia si i jego
proces potomny prowadzi konwersacj SMTP z procesem hosta po drugiej stronie.
Demon Exim zwykle jest uruchamiany przez wywoanie ze skryptu rc w czasie startu komputera. Suy do tego nastpujce polecenie:
/usr/sbin/exim -bd -q15m
*

Jest to nowa standardowa lokalizacja sendmaila zgodna ze standardem systemu plikw Linuksa. Innym, czsto spotykanym miejscem jest /usr/lib/sendmail, ktre moe by uywane przez programy
pocztowe, ktre nie s specjalnie konfigurowane dla Linuksa. Obie nazwy moesz zdefiniowa jako
dowizania symboliczne do Exima, aby programy i skrypty wywoujce sendmail tak naprawd uruchamiay i uyway do swoich celw Exima.

** Niektre agenty uywaj jednak protokou SMTP, by przekaza wiadomoci do agenta transportowego. Wywouj go wtedy z opcj bs.

Jeeli twoja poczta nie dochodzi

349

Opcja bd wcza tryb demona, a q15m powoduje, e wiadomoci zebrane w kolejce


s obsugiwane co 15 minut.
Gdyby chcia uy inetd, twj plik /etc/inetd.conf powinien zawiera nastpujcy
wiersz:
smtp

stream

tcp nowait root /usr/sbin/exim in.exim -bs

Pamitaj, e musisz spowodowa ponowne przeczytanie pliku inetd.conf przez proces inetd, wysyajc do niego sygna HUP po dokonaniu niezbdnych zmian*.
Tryb demona i inetd wykluczaj si wzajemnie. Jeeli uruchomisz Exima jako demona,
powiniene zakomentowa wiersz usugi smtp w pliku inetd.conf. I odwrotnie, gdy
uruchamiasz Exima przez inetd, upewnij si, e nie masz skryptu rc uruchamiajcego
go w trybie demona.
Wykonujc poczenie przez telnet na port SMTP swojej maszyny, moesz sprawdzi, czy Exim jest poprawnie skonfigurowany do odbierania wiadomoci SMTP.
Oto jak powinno wyglda poprawne poczenie:
$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 richard.vbrew.com ESMTP Exim 3.13 #1 Sun, 30 Jan 2000 16:23:55 +0600
quit
221 richard.vbrew.com closing connection
Connection closed by foreign host.

Jeeli ten test nie spowoduje pokazania banera SMTP (wiersza rozpoczynajcego si
kodem 220), sprawd, czy proces demona Exim istnieje lub czy inetd jest poprawnie
skonfigurowany. Jeeli to nie rozwie problemu, a w pliku konfiguracyjnym nie
ma bdw, zajrzyj do plikw log Exima (opisanych dalej).

Jeeli twoja poczta nie dochodzi


Istnieje szereg funkcji pomagajcych rozwizywa problemy z instalacj. Pierwszym miejscem, jakie naley sprawdzi, s pliki log Exima. W systemach linuksowych normalnie znajduj si one w katalogu /var/log/exim/log i nazywaj si
exim_mainlog, exim_rejectlog i exim_paniclog. W innych systemach operacyjnych czsto s umieszczane w katalogu /var/spool/exim/log. Jeli jeszcze nie wiesz, gdzie si
znajduj pliki log Exima w twoim systemie, uruchom ponisze polecenie:
exim -bP log_file_path

Gwny plik log opisuje wszystkie transakcje, plik log reject zawiera szczegy dotyczce wiadomoci, ktre zostay odrzucone ze wzgldu na przyjt polityk, a plik
log panic zawiera wiadomoci zwizane z bdami konfiguracyjnymi i tym podobnymi.

Uyj polecenia kill-HUP pid, gdzie pid oznacza ID procesu inetd uzyskane na podstawie wyniku
polecenia ps.

350

Rozdzia 19: Exim

Poniej pokazano typowe wpisy w gwnym pliku log. Kady wpis to jeden wiersz
tekstu, rozpoczynajcy si od daty i czasu. Tutaj zostay one podzielone na kilka
wierszy, by zmieciy si na stronie:
2000-01-30 15:46:37 12EwYe-0004WO-00 <= jack@vstout.vbrew.com
H=vstout.vbrew.com [192.168.131.111] U=exim P=esmtp S=32100
id=38690D72.286F@vstout.vbrew.com
2000-01-30 15:46:37 12EwYe-0004WO-00 => jill@vbrew.com>
D=localuser T=local_delivery
2000-01-30 15:46:37 12EwYe-0004WO-00 Completed

Te wpisy pokazuj, e wiadomo od jack@vstout.vbrew.com do jill@vbrew.com zostaa poprawnie dostarczona do skrzynki pocztowej na hocie lokalnym. Przyjcie
wiadomoci oznacza si symbolem <=, a nadania symbolem =>.
Istniej dwa rodzaje bdw dostarczenia: stay i tymczasowy. Bd stay uwidacznia
si w pliku log w pokazany poniej sposb i jest oznaczony dwoma gwiazdkami (**):
2000-01-30 14:48:28 12EvcH-0003rC-00 ** bill@lager.vbrew.com
R=lookuphost T=smtp: SMTP error from remote mailer after RCPT TO:
<bill@lager.vbrew.com>: host lager.vbrew.com [192.168.157.2]:
550 <bill@lager.vbrew.com>... User unknown

Jeli taki bd wystpi, Exim wysya do nadawcy raport z bdnego dostarczenia,


czsto nazywany wiadomoci odbit (ang. bounced message).
Bdy tymczasowe s oznaczane symbolem ==:
2000-01-30 12:50:50 12E9Un-0004Wq-00 == jim@bitter.vbrew.com
T=smtp defer (145): Connection timed out

Ten bd jest typowy dla sytuacji, w ktrej Exim prawdopodobnie rozpozna, e wiadomo powinna zosta dostarczona do hosta zdalnego, ale nie jest w stanie
poczy si z usug SMTP na tym hocie. Na przykad host jest wyczony lub
przytrafi si jaki problem z sieci. Gdy wiadomo zostanie odrzucona (ang. deferred)
w ten sposb, pozostaje w kolejce Exima i co jaki czas jest podejmowana prba jej
ponownego wysania. Jednak jeeli w okrelonym czasie (zwykle kilka dni), adna
prba si nie powiedzie, pojawi si bd stay i zostanie wysana wiadomo odbita.
Jeeli na podstawie komunikatu bdu generowanego przez Exima nie jeste w stanie zlokalizowa problemu, moesz wczy komunikaty debugujce. Robi si to
przez opcj d, po ktrej opcjonalnie mona poda dany poziom dokadnoci wywietlanych informacji (maksymalnie 9). Exim wywietla raport na ekranie. By
moe z niego dowiesz si, gdzie tkwi bd.

Kompilowanie Exima
Exim jest wci w stadium intensywnego rozwoju. Wersja zaczona w dystrybucji
Linuksa nigdy nie jest t najnowsz. Jeeli potrzebujesz funkcji lub poprawki, ktra
istnieje w nowszej wersji, musisz zdoby kod rdowy i skompilowa go samodzielnie. Najnowsz wersj mona znale na stronie WWW Exima pod adresem
http://www.exim.org.

Tryby dostarczania poczty

351

Linux jest jednym z wielu systemw operacyjnych, dla ktrego istnieje konfiguracja
w kodzie rdowym Exima. Aby skompilowa go w Linuksie, powiniene dokona
edycji pliku src/EDITME i umieci wynik w pliku o nazwie Local/Makefile. W pliku
src/EDITME znajduj si komentarze, ktre informuj, do czego su poszczeglne
ustawienia. Na koniec uruchom make. Szczegowe informacje na temat kompilacji
Exima znajdziesz w jego podrczniku obsugi.

Tryby dostarczania poczty


Jak wspomnielimy, Exim moe bezzwocznie dostarcza wiadomoci lub kolejkowa je do pniejszego przetwarzania. Wszystkie przychodzce wiadomoci s zachowywane w podkatalogu input katalogu /var/spool/exim. Gdy kolejkowanie nie
dziaa, proces dostarczania jest uruchamiany po nadejciu kadej wiadomoci.
W przeciwnym razie wiadomo jest pozostawiana w kolejce, a proces queuerunner
j pobierze. Kolejkowanie moe by bezwarunkowe, jeeli ustawimy w pliku konfiguracyjnym queue_only, lub realizowane warunkowo przy rednim obcieniu systemu w czasie jednej minuty, jeeli ustawimy:
queue_only_load = 4

W tym wypadku wiadomoci s kolejkowane, jeeli obcienie systemu przekroczy 4*.


Jeeli twj host nie jest na stae poczony z Internetem, moesz zechcie wczy kolejkowanie dla adresw zdalnych, pozwalajc Eximowi na natychmiastowe dostarczanie poczty lokalnej. Moesz to zrobi, ustawiajc w pliku konfiguracyjnym:
queue_remote_domains = *

Jeeli wczysz dowolne kolejkowanie, musisz pamita o regularnym sprawdzaniu


kolejek, najlepiej co 10 lub 15 minut. Nawet jeeli opcje kolejkowania nie s jawnie
wczone, trzeba sprawdza kolejki pod ktem wiadomoci odrzuconych ze wzgldu na tymczasowe bdy w dostarczaniu. Jeeli uruchomisz Exima w trybie demona, musisz doda w wierszu polece opcj q15m przetwarzajc kolejk co 15
minut. Moesz take wywoa exim q z crona co zadany okres czasu.
Aktualn kolejk moesz obejrze, wywoujc Exima z opcj bp. To samo moesz
uzyska, tworzc dowizanie mailq do Exima i wywoujc mailq:
$ mailq
2h
52K 12EwGE-0005jD-00 <sam@vbrew.com>
D bob@vbrew.com
harry@example.net

Widzimy, e w kolejce czeka jedna wiadomo od sam@vbrew.com adresowana do


dwch osb. Zostaa ona poprawnie dostarczona do bob@vbrew.com, ale jeszcze nie dotara do harry@example.net, cho czeka w kolejce od dwch godzin. Rozmiar wiadomoci to 52 KB, a ID za pomoc ktrego Exim j identyfikuje to 12EwGE-0005jD-00. Zagldajc do indywidualnego pliku log wiadomoci, msglog, ktry znajduje si w kata*

Obcienie systemu jest standardow uniksow miar redniej liczby procesw, ktre s kolejkowane i
oczekuj na wykonanie. Polecenie uptime pokazuje rednie obcienia za nastpujce okresy czasu: minut, 5 i 15 minut.

352

Rozdzia 19: Exim

logu buforowym Exima, moesz stwierdzi, dlaczego wiadomo nie zostaa jeszcze
dostarczona. atwo to zrobi, uywajc opcji Mvl:
$ exim -Mvl 12EwGE-0005jD-00
2000-01-30 17:28:13 example.net [192.168.8.2]: Connection timed out
2000-01-30 17:28:13 harry@example.net: remote_smtp transport deferred:
Connection timed out

Indywidualne pliki log zawieraj kopi wpisw log dla kadej wiadomoci, a wic
moesz je atwo przeglda. T sam informacj moesz uzyska z gwnego pliku
log, uywajc narzdzia exigrep:
$ exigrep 12EwGE-0005jD-00 /var/log/exim/exim_mainlog

Potrwa to nieco duej, szczeglnie w obcionym systemie, gdzie pliki log s due.
Narzdzie exigrep przydaje si przy poszukiwaniu informacji o wikszej liczbie wiadomoci. Jego pierwszym argumentem jest wyraenie regularne i pokazuje wszystkie wiersze zwizane z wiadomociami, ktre maj co najmniej jeden wiersz pasujcy do wyraenia. Tym sposobem mona go uywa do wybrania tych wszystkich wiadomoci, ktre s adresowane na jeden zadany adres, lub wszystkich tych,
ktre s przeznaczone dla zadanego hosta lub stamtd pochodz.
Jeli chcesz zobaczy sobie oglnie, co robi Exim, uruchom polecenie tail z gwnym
plikiem log. Moesz te uruchomi narzdzie eximon dostarczane wraz z Eximem.
Jest to aplikacja X11, ktra daje przesuwajcy si obraz gwnego logu i pokazuje list wiadomoci, ktre czekaj na dostarczenie, oraz pewne statystyki aktywnoci
dostarczania.

Rne opcje konfiguracyjne


Oto kilka innych przydatnych opcji, ktre moesz ustawia w pliku konfiguracyjnym.
message_size_limit
Ustawienie tej opcji ogranicza rozmiar wiadomoci przyjmowanej przez Exima.
return_size_limit
Ustawienie tej opcji ogranicza liczb przychodzcych wiadomoci, ktre Exim
bdzie zwraca w ramach wiadomoci odbitej.
deliver_load_max
Jeeli obcienie systemu osignie zadan t opcj warto, dostarczanie wszelkich wiadomoci zostanie zawieszone, cho wci bd one przyjmowane.
smtp_accept_max
Jest to maksymalna liczba jednoczenie przychodzcych pocze SMTP, ktre
Exim moe przyj.
log_level
Ta opcja kontroluje liczb danych zapisywanych do pliku log. Istniej pewne
opcje o nazwach rozpoczynajcych si od log_ , ktre kontroluj zapisywanie
okrelonych informacji.

Ruting i dostarczanie poczty

353

Ruting i dostarczanie poczty


Exim dzieli dostarczanie poczty na trzy rne zadania: ruting, zarzdzanie i przesyanie. Istnieje kilka moduw kodu dla kadego typu i kady konfiguruje si oddzielnie. Zwykle w pliku konfiguracyjnym dostosowuje si kilka rnych ruterw,
moduw zarzdzajcych i przesyajcych.
Rutery rozwizuj adresy zdalne, aby byo wiadomo, do ktrego hosta powinna by
wysana wiadomo i ktrego protokou transportowego naley uy. W przypadku
hostw podczonych do Internetu, zwykle istnieje jeden ruter, ktry realizuje rozwizywanie przez przeszukiwanie domeny w DNS-ie. Ewentualnie moe by jeden
ruter, ktry obsuguje adresy hostw w sieci lokalnej, i drugi, ktry wysya pozostae
wiadomoci do inteligentnego hosta, na przykad serwera pocztowego dostawcy Internetu.
Adresy lokalne s przekazywane do programu zarzdzajcego. Takich programw
jest zwykle kilka. Obsuguj one aliasy i przekazywanie oraz identyfikuj skrzynki
lokalne. Listy pocztowe mog by obsugiwane przez programy zarzdzajce aliasami i przekazywaniem. Jeeli adres posiada alias lub zosta przekierowany, nowo
utworzone adresy s obsugiwane niezalenie przez rutery lub programy
zarzdzajce, o ile jest taka potrzeba. Najczstszym przypadkiem bdzie dostarczanie do skrzynki pocztowej, ale wiadomoci mog by take przekazane przez potok
do polecenia lub doklejone do pliku innego, ni domylna skrzynka pocztowa.
Modu transportowy jest odpowiedzialny za implementacj metod dostarczania, na
przykad za wysanie wiadomoci przez cze SMTP lub umieszczenie jej w okrelonej skrzynce pocztowej. Rutery i programy zarzdzajce decyduj, ktrego moduu transportowego uy dla danego adresata. Jeeli modu transportowy nie zadziaa, Exim generuje wiadomo odbit lub chwilowo odkada adres, aby pniej
ponowi prb.
W Eximie masz pen swobod konfigurowania tych zada. Dla kadego z nich dostpne jest kilka sterownikw, z ktrych moesz wybra potrzebny. Opisujesz je
w rnych sekcjach pliku konfiguracyjnego Exima. Najpierw definiowane s protokoy transportowe, po nich moduy zarzdzajce, a na kocu rutery. Nie ma wbudowanych wartoci domylnych, cho Exim jest rozpowszechniany z domylnym plikiem konfiguracyjnym, ktry uwzgldnia proste przypadki. Gdyby chcia zmieni
polityk rutowania Exima lub zmodyfikowa protok transportowy, atwiej jest
rozpocz od domylnej konfiguracji i dokonywa w niej zmian, ni prbowa stworzy plik konfiguracyjny od zera.

Ruting wiadomoci
Gdy Exim dostanie adres, na ktry ma dostarczy poczt, najpierw sprawdza, czy
domena jest obsugiwana przez host lokalny, porwnujc j z list zawart w zmiennej konfiguracyjnej local_domains. Jeeli ta opcja nie jest ustawiona, nazwa hosta
lokalnego jest uywana tylko w domenie lokalnej. Jeeli jestemy w domenie lokal-

354

Rozdzia 19: Exim

nej, adres jest przekazywany do moduw zarzdzajcych. W przeciwnym razie jest


przekazywany do ruterw, aby stwierdziy, gdzie przesa wiadomo*.

Dostarczanie wiadomoci na adresy lokalne


Adres lokalny to przewanie nazwa uytkownika. Jeli ma tak posta, wiadomo
jest dostarczana bezporednio do skrzynki pocztowej uytkownika /var/spool/mail/
nazwa-uytkownika. Do innych przypadkw zaliczamy aliasy, nazwy list pocztowych i przekazywanie poczty przez uytkownika. Wtedy adres lokalny jest rozwijany do listy adresw, ktre mog by lokalne lub zdalne.
Poza takimi normalnymi adresami, Exim moe obsugiwa inne typy celw wiadomoci lokalnych o innym miejscu przeznaczenia, takim jak nazwy plikw i potoki
polece. Jeli chodzi o dostarczanie do pliku, Exim dokleja wiadomo, a jeeli jest
taka potrzeba, tworzy nowy plik. Cele w postaci pliku i potoku nie s typowymi adresami, a wic nie moesz wysa poczty, powiedzmy, pod /etc/passwd@vbrew.com
i oczekiwa, e plik passwd zostanie nadpisany. Dostarczanie pod adresy specjalne
jest moliwe tylko, jeeli istnieje na nie przekierowanie lub pliki aliasw. Zwr jednak uwag, e /etc/passwd@vbrew.com jest skadniowo poprawnym adresem e-mail,
ale jeeli Exim odbierze adresowan na niego wiadomo, zwykle bdzie szuka
uytkownika o nazwie /etc/passwd, co zakoczy si fiaskiem i wiadomo zostanie
odbita.
Na licie aliasw lub w pliku przekierowania nazwapliku zaczyna si od ukonika (/)
i ma posta, ktra nie spenia warunkw skadni penego domenowego adresu
e-mail. Na przykad /tmp/junk w pliku przekierowania lub w pliku aliasw jest interpretowane jako nazwa pliku, ale /tmp/junk@vbrew.com jako adres e-mail, cho prawdopodobnie niezbyt przydatny. Jednak adresy tego typu mona spotka przy wysyaniu poczty przez gatewaye X.400, poniewa adresy X.400 rozpoczynaj si od
ukonika.
Podobnie polecenie w potoku moe by dowolnym poleceniem Uniksa poprzedzonym
znakiem potoku (|), o ile cig nie moe by uznany za poprawny, domenowy adres
e-mail. Jeeli nie zmienisz konfiguracji, Exim nie uywa powoki do uruchamiania
polecenia. Za to dzieli cig na nazw polecenia i argumenty i uruchamia je bezporednio. Wiadomo jest przekazywana jako standardowe wejcie takiego polecenia.
Na przykad, aby przekierowa list pocztow do lokalnej grupy dyskusyjnej,
mgby uy skryptu powoki gateit i skonfigurowa lokalny alias tak, by dostarcza wszystkie wiadomoci z tej listy do skryptu za pomoc |gateit. Jeli wiersz
polece zawiera przecinek, naley go uj w cudzysw wraz z symbolem potoku.

Opis ten zosta uproszczony. Mona sprawi, by moduy zarzdzajce przekazay adresy do moduw
transportowych, ktre dostarcz wiadomoci do hostw zdalnych. I podobnie, rutery mog przekaza
adresy do lokalnego moduu transportowego, ktry zapisze wiadomo do pliku lub potoku. Moliwe
jest take, by rutery w pewnych warunkach przekazay adresy do programw zarzdzajcych.

Ruting i dostarczanie poczty

355

Uytkownicy lokalni
Adres lokalny zwykle jest jednoznaczny ze skrzynk pocztow. Znajduje si ona
przewanie w katalogu /var/spool/mail i nosi nazw uytkownika, ktry jest rwnie
wacicielem pliku. Jeeli plik nie istnieje, Exim go tworzy.
W pewnych konfiguracjach grupa jest ustawiana na tak, do ktrej naley uytkownik, a tryb praw dostpu na 0600. W tych przypadkach procesy dostarczania dziaaj
z prawami uytkownika i uytkownik moe usun ca skrzynk. W innych konfiguracjach skrzynka pocztowa naley do grupy mail i ma prawo dostpu 0660. Procesy dostarczajce dziaaj z uid systemu i grup mail, a uytkownicy nie mog usuwa plikw swoich skrzynek, cho mog je oprnia.
Zauwa, e cho katalog /var/spool/mail jest obecnie standardowym miejscem
umieszczania plikw skrzynek pocztowych, niektre programy s skompilowane
do uywania innych cieek, na przykad /usr/spool/mail. Jeeli dostarczenie poczty
do uytkownikw na twoim komputerze regularnie si nie udaje, powiniene zobaczy, czy pomoe stworzenie dowizania symbolicznego do /var/spool/mail.
Adresy MAILER-DAEMON i postmaster normalnie powinny by umieszczone
w pliku aliasw i powinny si rozwija do adresw e-mail administratora systemu.
MAILER-DAEMON jest uywany przez Exima jako adres nadawcy w wiadomociach odbitych. Jest rwnie zalecane, by root by skonfigurowany jako alias dla administratora, szczeglnie gdy dostarczanie odbywa si z prawami odbiorcw, aby
zapobiec dostarczaniu jako root.
Przekierowywanie poczty
Uytkownicy mog przekierowywa swoj poczt na inne adresy, tworzc plik .forward w swoich katalogach macierzystych. Zawiera on list odbiorcw, w ktrej znakiem separatora jest przecinek i/lub znak nowego wiersza. Wszystkie wiersze zawarte w pliku s odczytywane i interpretowane. Mona w nim uy adresu dowolnego typu. Praktycznym przykadem pliku .forward przygotowanego na czas urlopu
moe by:
janet, "|vacation"

W innych opisach plikw .forward moesz znale nazw uytkownika poprzedzon


znakiem odwrotnego ukonika. W starszych MTA taki zapis zapobiega szukaniu
nowej nazwy w pliku .forward, co mogo prowadzi do zaptlenia. W Eximie odwrotny ukonik nie jest potrzebny, gdy program ten automatycznie rozwizuje problem
zaptlenia* . Jednak znak odwrotnego ukonika jest dopuszczalny i nie jest on bez
znaczenia w konfiguracji, obsugujcej kilka domen naraz. Sama nazwa uytkownika, bez znaku odwrotnego ukonika, jest uznawana za nazw z domeny domylnej.
W przypadku zastosowania odwrotnego ukonika zachowywana jest podana domena.

Program zarzdzajcy jest pomijany, jeeli adres, ktry ma zosta przetworzony, jest taki sam jak adres
uyty do jego wygenerowania.

356

Rozdzia 19: Exim

Pierwszy adres w pliku przekierowania odpowiada za dostarczenie przychodzcej


wiadomoci do skrzynki pocztowej janet, natomiast polecenie vacation zwraca do
nadawcy krtk informacj*.
Poza obsug tradycyjnych plikw przekierowania, Exima mona skonfigurowa
do pracy z bardziej skomplikowanymi plikami, zwanymi filtrami. Zamiast listy adresw, na ktre naley przekierowa wiadomo, plik filtru moe zawiera testy zawartoci przychodzcej wiadomoci, tak by na przykad wiadomo moga by
przekazana tylko wtedy, gdy temat zawiera haso pilne. Administrator systemu
musi zdecydowa, czy wolno pozwoli uytkownikom na tak elastyczno.

Pliki aliasw
Exim moe obsugiwa pliki aliasw komatybilne z plikami sendmaila. Wpisy w pliku aliasw mog mie nastpujc posta:
alias: odbiorcy

odbiorcy to lista oddzielonych przecinkami adresw, ktrymi zostanie zastpiony


alias. Lista odbiorcw moe cign si przez kilka wierszy, jeeli nastpny wiersz
rozpoczyna si od biaego znaku.
Specjalna funkcja pozwala Eximowi obsugiwa listy pocztowe, ktre s umieszczone niezalenie od pliku aliasw: jeeli podasz jako odbiorc :include:nazwapliku, Exim odczytuje zadany plik i zastpuje jego zawarto list odbiorcw. Alternatywa dla takiej obsugi list pocztowych jest opisana w nastpnym podrozdziale, Listy pocztowe.
Gwny plik aliasw to /etc/aliases. Jeeli przyznae prawa zapisu do tego pliku grupie lub wszystkim, Exim odmwi jego uycia i wstrzyma przyjmowanie poczty lokalnej. Moesz jednak kontrolowa test zwizany ze sprawdzaniem praw dostpu,
ustawiajc modemask w programie zarzdzajcym system_aliases.
Oto przykadowy plik aliases:
# plik /etc/aliases dla vbrew.com
hostmaster: janet
postmaster: janet
usenet: phil
# Lista pocztowa development.
development: joe, sue, mark, biff,
/var/mail/log/development
owner-development: joe
# Ogoszenia oglne s wysyane do caego personelu.
announce: :include: /etc/Exim/staff,
/var/mail/log/announce
owner-announce: root
# przejcie z listy pocztowej ppp na lokaln grup dyskusyjn
ppp-list: "|/usr/local/bin/gateit local.lists.ppp"
*

Jeeli zdecydujesz si na uycie programu vacation, upewnij si, e nie bdzie on odpowiada na wiadomoci pochodzce z list pocztowych! Naprawd mona si zdenerwowa, jeli z kad wiadomoci z
listy pocztowej dostaje si informacj o czyim urlopie. Administratorzy list pocztowych: jest to dobry
przykad, e nie naley ustawia pola Reply-To: w wiadomociach wysyanych z grupy, na adres
odbiorcw listy.

Ochrona przed spamem

357

Gdy w plikach aliasw znajduj si nazwy plikw i polecenia w potoku, tak jak
w powyszym przykadzie, Exim musi wiedzie, pod jakim uytkownikiem maj
dziaa programy dostarczajce. Opcja user w pliku konfiguracyjnym Exima (a take
group) musi by ustawiona dla programu zarzdzajcego, obsuguje aliasy, albo dla
moduw transportowych, na ktre s przekierowywane wiadomoci.
Jeeli w czasie dostarczania wiadomoci na adres wygenerowany z pliku aliases,
wystpi bd, Exim jak zwykle wyle do nadawcy wiadomo odbit, o ile za pomoc opcji errors_to nie okrelisz, e odbite wiadomoci maj by wysyane do kogo
innego, na przykad do postmastera.

Listy pocztowe
Zamiast pliku aliases, program zarzdzajcy forwardfile moe obsugiwa take listy
pocztowe. S one zwykle przechowywane w jednym katalogu, jak /etc/exim/lists/,
a lista o nazwie nag-bugs jest opisana plikiem lists/nag-bugs. Plik ten powinien zawiera adresy czonkw listy oddzielone przecinkami lub znakami nowego wiersza.
Wiersze rozpoczynajce si od znaku # s traktowane jako komentarze. Prosty program zarzdzajcy wykorzystujcy te dane moe wyglda nastpujco:
lists:
driver = forwardfile
file = /etc/exim/lists/${local_part}
no_check_local_user
errors_to = ${local_part}-request

Gdy dziaa program zarzdzajcy, wartoci opcji file i errors_to s rozwijane.


Rozwinicie powoduje, e te fragmenty cigu znakw, ktre rozpoczynaj si od
znaku dolara, zostan za kadym razem zastpione uywanym cigiem. Najprostszym rodzajem rozwinicia jest wstawienie wartoci jednej ze zmiennych Exima
i tak wanie si tutaj dzieje. Cig ${local_part} jest zastpowany wartoci
$local_part, ktra jest lokaln czci przetwarzanego adresu.
W kadej licie pocztowej powinien znajdowa si uytkownik (lub alias) o nazwie
listname-request. Wszelkie bdy wystpujce przy rozwizywaniu adresu lub
dostarczaniu poczty do czonka listy s zgaszane na ten adres.

Ochrona przed spamem


Spam, lub inaczej niechciana poczta reklamowa, jest problemem denerwujcym wielu uytkownikw. Do prac nad rozwizaniem tego problemu powoano projekt
MAPS (Mail Abuse Protection System). Stworzono te mechanizm zmniejszajcy skal
problemu, tak zwan czarn list (Real Time Blackhole List RBL). Informacje o tym,
jak dziaa RBL projektu MAPS, moesz znale w dokumentacji elektronicznej pod
adresem http://maps.vix.com/rbl/. Pomys jest prosty. Orodki, ktre zostan zapane
na generowaniu spamu, s dodawane do bazy danych, a agenty przesyajce poczt,
takie jak Exim, s w stanie zadawa do tej bazy zapytania i sprawdza przed przyjciem poczty, czy host rdowy nie jest spammerem.

358

Rozdzia 19: Exim

Oprcz RBL, powstao ju kilka innych podobnych list. Jedna z najbardziej uytecznych to DUL (Dial-Up List), zawierajca adresy IP hostw podczonych przez linie komutowane. Normalnie powinny one wysya poczt wychodzc tylko przez
serwery pocztowe swoich dostawcw. Wiele orodkw blokuje przyjmowanie poczty z zewntrznych hostw komutowanych, poniewa, gdy taki host nie uywa serwera wasnego dostawcy Internetu, zwykle nie wry to nic dobrego.
Exim obsuguje rne czarne listy. Bardzo atwo jest je w nim skonfigurowa. Aby
wczy sprawdzanie takich list, dodaj poniszy wiersz do pliku /etc/exim.conf:
# Vixie / MAPS RBL (http://maps.vix.com/rbl)
rbl_domains = rbl.maps.vix.com : dul.maps.vix.com

Ten przykad sprawdza zarwno RBL, jak i DUL, i odrzuca wszelkie wiadomoci
pochodzce z hostw, ktre znajduj si na ktrejkolwiek z list. Opcja rbl_hosts pozwala na podanie grupy hostw, ktrej dotyczy (lub nie dotyczy) sprawdzanie RBL.
Domylne ustawienie jest nastpujce:
rbl_hosts = *

co oznacza, e wszystkie hosty s sprawdzane przez RBL. Gdyby chcia wyczy


sprawdzanie czarnej listy i przyjmowa poczt z danego hosta bez kontroli, mgby
na przykad zrobi nastpujcy wpis:
rbl_hosts = ! nocheck.example.com : *

Wykrzyknik przed pierwszym elementem listy powoduje jej zanegowanie. Gdyby


hostem nawizujcym poczenie by nocheck.example.com, pasowaby do tego wyraenia. Ale ze wzgldu na negacj, nie jest wykonywane sprawdzanie RBL. Wszelkie inne hosty pasuj do drugiego elementu listy.

Konfigurowanie UUCP
Exim nie zawiera adnego szczeglnego kodu do wysyania poczty przez UUCP ani
nie obsuguje adresw w postaci wykazu trasowania UUCP. Jednak, jeeli zostanie
uyte adresowanie domenowe, Exim moe bardzo atwo sta si interfejsem dla
UUCP. Oto, wzity z rzeczywistej instalacji, fragment konfiguracji pozwalajcej na
wysyanie pewnych domen do UUCP:
# Transport
uucp:
driver = pipe
user = nobody
command = "/usr/local/bin/uux -r - \
${substr_-5:$host}!rmail ${local_part}"
return_fail_output = true
# Router
uucphost:
transport = uucp
driver = domainlist
route_file = /usr/exim/uucphosts
search_type = lsearch

Konfigurowanie UUCP

359

W kompletnym pliku konfiguracyjnym konfiguracja transportu zostaaby umieszczona wrd innych konfiguracji transportu, a ruter zostaby prawdopodobnie zdefiniowany jako pierwszy ruter. Plik /usr/exim/uucphosts zawiera nastpujce wpisy:
darksite.example.com:

darksite.UUCP

ktre s interpretowane nastpujco: Wylij poczt adresowan do domeny darksite.example.com do hosta UUCP darksite. Ta konfiguracja mogaby by zrealizowana prociej bez rutera dostawiajcego przyrostek. UUCP do darksite, ale ten
sposb jest przydatny, poniewa pozwala odrni domen darksite.example.com
od nazwy hosta UUCP darksite.
Kiedy tylko ruter dotrze do domeny, ktra jest wpisana w pliku, przekazuje adres do
transportu UUCP, ktry z kolei przekazuje go przez potok do polecenia uux (opisanego w rozdziale 16, Zarzdzanie UUCP Taylora). Jeeli napotka problem, uux wygeneruje jaki wynik i zakoczy dziaanie z niezerowym kodem bdu. Ustawienie
zmiennej return_fail_output powoduje, e komunikat bdu zostaje zwrcony
do nadawcy.
Jeeli przychodzce wiadomoci UUCP s grupowane w pliki we wsadowym formacie SMTP, mog by przekazane bezporednio do Exima za pomoc poniszego
polecenia:
exim -bS </var/uucp/incoming/001

Jednak jest tu jedna puapka. Gdy Exim odbierze wiadomo lokalnie, nadawca musi by zalogowanym uytkownikiem, ktry go wywoa. W przypadku UUCP chcemy jednak, by nadawcy byli brani z przychodzcych wiadomoci. Exim to zrobi, jeeli proces go wywoujcy dziaa jako uytkownik zaufany. Jeeli przychodzca poczta UUCP bdzie obsugiwana na przykad przez uytkownika uucp, musisz w pliku
konfiguracyjnym Exima wpisa:
trusted_users = uucp

Taki wpis zapewni poprawne obsuenie adresw nadawcw.

20

Grupy dyskusyjne
Rozdzia 20: Grupy dyskusyjne

Grupy dyskusyjne Usenetu s jedn z najwaniejszych i wysoko cenionych usug


w dzisiejszych sieciach komputerowych. Cho niektrzy uwaaj Usenet za grzzawisko agresywnej poczty komercyjnej i pornografii, s tam i doskonae grupy dyskusyjne, ktre stanowiy niezastpione rdo informacji, zanim pojawio si WWW.
Nawet w czasach biliona stron WWW, grupy dyskusyjne pozostaj miejscem, gdzie
moesz znale pomoc i podyskutowa na wiele tematw.

Historia Usenetu
Pomys grup dyskusyjnych zrodzi si w 1979 roku, kiedy dwch absolwentw,
Tom Truscott i Jim Ellis, pomylao o uyciu UUCP do poczenia komputerw w celu wymiany informacji pomidzy uytkownikami Uniksa. Zbudowali oni w Karolinie Pnocnej ma sie, skadajc si z trzech komputerw.
Na pocztku ruch by obsugiwany przez kilka skryptw (pniej przepisanych
w jzyku C), ale nigdy nie zostay one rozpowszechnione publicznie. Szybko zastpiono je przez A News pierwsze publicznie dostpne oprogramowanie dla
grup dyskusyjnych.
A News mogo obsuy najwyej kilka artykuw dziennie. Gdy liczba nadsyanych
do grupy artykuw zacza rosn, Mark Horton i Matt Glickman przepisali oprogramowanie i nazwali je wydaniem B (lub B News). Pierwsze publicznie dostpne
wydanie B News miao numer wersji 2.1 i ujrzao wiato dzienne w 1982 roku. Nieustannie byo udoskonalane i wzbogacane o nowe funkcje. Aktualna wersja B News
ma numer 2.11. Oprogramowanie to powoli przechodzi do historii, a ostatnia osoba,
ktra je utrzymywaa, zaja si rozwojem programu INN.
Geoff Collyer i Henry Spencer przepisali B News i wydali je w 1987 roku jako wersj
C (C News). Od czasu tego wydania pojawio si szereg at do C News, z ktrych najbardziej wartociowe byo wydanie C News Performance Release. W orodkach
obsugujcych wiele grup s dosy due obcienia zwizane z czstym wywoywa-

362

Rozdzia 20: Grupy dyskusyjne

niem relaynews, ktre odpowiada za rozdzielanie przychodzcych artykuw do innych hostw. Wersja Performance dodaje do relaynews kilka opcji, ktre pozwalaj
dziaa programowi w trybie demona w tle. Wersja Performance C News jest aktualnie zaczana do wikszoci wyda Linuksa. C News szczegowo opisujemy w rozdziale 21, C News.
Wszystkie wersje, a do C, byy pisane z myl o sieci UUCP, cho mogy by rwnie
stosowane w innych rodowiskach. Efektywne przesyanie wiadomoci przez sieci,
takie jak TCP/IP czy DECNet, wymagao nowej architektury. Dlatego w 1986 roku
zosta wymylony protok przesyania wiadomoci w sieci komputerowej Usenet (Network
News Transfer Protocol NNTP). Jest on oparty na poczeniach sieciowych i zawiera
szereg polece do interaktywnego przesyania i odbierania artykuw.
W sieci mona znale wiele aplikacji opartych na NNTP. Jedn z nich jest pakiet
nntpd, stworzony przez Briana Barbera i Phila Lapsleya. Suy on do udostpniania
grup dyskusyjnych hostom w sieci lokalnej. W zaoeniu nntpd mia uzupenia pakiety oprogramowania obsugujcego grupy dyskusyjne, czyli B News lub C News.
Dodaje do nich funkcje NNTP. Jeli chcesz uywa NNTP z serwerem C News, powiniene przeczyta rozdzia 22, NNTP i demon nntpd, wyjaniajcy, jak skonfigurowa demona nntpd i uruchomi go z C News.
Alternatywnym pakietem obsugujcym NNTP jest INN lub Internet News. Nie jest
to jedynie interfejs, ale system grup dziaajcy na wasnych prawach. Skada si
z wyrafinowanego demona przekazujcego dane, ktry efektywnie obsuguje kilka
jednoczesnych pocze NNTP, oraz z serwera grup uywanego w wielu orodkach
w Internecie. Szczegowo omawiamy go w rozdziale 23, Internet News.

Czym jest Usenet


Jednym z bardziej zdumiewajcych faktw zwizanych z Usenetem jest to, e nie
jest on czci organizacji, ani nie ma adnej centralnej wadzy zarzdzajcej. W zasadzie taki ju jest Usenet, e poza opisem technicznym nie da si go zdefiniowa. Ryzykujc, e bdzie to brzmiao miesznie, mona zdefiniowa Usenet jako
wspprac orodkw wymieniajcych wiadomoci grup dyskusyjnych Usenetu.
Aby sta si orodkiem Usenetu, wystarczy znale inny orodek Usenetu i uzgodni z jego wacicielami sposb i prawa wymiany wiadomoci grup dyskusyjnych
midzy wami. Udostpnianie wiadomoci grup dyskusyjnych innym orodkom nosi w jzyku angielskim nazw feeding (dosownie: karmienie). W dalszej czci tej
ksiki bdziemy uywali terminu dostarczanie.
Podstawow jednostk grup dyskusyjnych Usenetu jest artyku. Jest to wiadomo,
napisana przez uytkownika i wysana do sieci. Aby system grup dyskusyjnych
mg j obsuy, dodawane s do niej informacje administracyjne (tak zwany nagwek artykuu). Jest on bardzo podobny do nagwka poczty zgodnego ze standardem RFC-822. Rwnie skada si z kilku wierszy tekstu, z ktrych kady rozpoczyna si od nazwy pola zakoczonej dwukropkiem; po nim wystpuje warto pola.*
*

Format wiadomoci Usenet jest okrelony przez RFC-1036 Standard for interchange of USENET messages

Czym jest Usenet

363

Artykuy s wysyane do jednej lub kilku grup dyskusyjnych. Mona powiedzie, e


grupa dyskusyjna to forum artykuw zwizanych z jakim tematem. Wszystkie
grupy dyskusyjne s uporzdkowane w pewnej hierarchii, a nazwa grupy wskazuje
miejsce w tej hierarchii. Czsto na tej podstawie atwo jest stwierdzi, czego dotyczy
dana grupa. Na przykad kady moe na podstawie nazwy grupy comp.os.linux.
announce stwierdzi, e dotyczy ona ogosze zwizanych z komputerowym systemem operacyjnym o nazwie Linux.
Artykuy te s nastpnie wymieniane pomidzy wszystkimi orodkami Usenetu,
ktre chc udostpnia dan grup. Gdy dwa orodki ustal, e bd wymienia
wiadomoci, mog przesya sobie dowolne grupy, a nawet dodawa swoje lokalne
hierarchie grupy. Na przykad groucho.edu mgby mie poczenie z barnyard.
edu, czyli gwnym dostawc grup, i kilka pocze z mniejszymi orodkami, do
ktrych by te grupy przekazywa. Barnyard College moe odbiera wszystkie grupy
Usenetu, natomiast GMU tylko kilka gwnych hierarchii, jak sci, comp czy rec. Jaki
inny orodek, powiedzmy orodek UUCP brewhq, bdzie udostpnia jeszcze
mniej grup, poniewa nie ma wystarczajcych zasobw sieciowych i sprztowych
na obsug wszystkich. Z drugiej strony brewhq moe jednak obsugiwa grupy
z hierarchii fj, ktrych nie ma GMU. Musi wic mie dodatkowe poczenie z gargleblaster.com, ktry posiada wszystkie grupy fj i dostarcza je do brewhq. Przepyw
grup pokazuje rysunek 20-1.

USENET

barnyard.edu

garglebaster.com

comp, sci, rec

fj
fj

all
all, !fj
groucho.edu

brewhg
comp.os,
comp.periphs

Rysunek 20-1. Przepyw grup Usenet na uniwersytecie Groucho Marx

364

Rozdzia 20: Grupy dyskusyjne

Podpisy przy strzakach pochodzcych od brewhq mog jednak wymaga pewnego


wyjanienia. Domylnie, brewhq chce, aby wszystkie grupy generowane lokalnie
byy wysyane do groucho.edu. Jednak poniewa groucho.edu nie obsuguje grup
fj, nie ma sensu wysya adnych wiadomoci z tych grup. Dlatego dane przesyane
z brewhq do GMU s opisane jako: all,!fj, co oznacza, e s wysyane wszystkie
grupy poza fj.

Jak Usenet obsuguje grupy dyskusyjne


W dzisiejszych czasach Usenet rozrs si do niesychanych rozmiarw. Orodki posiadajce wszystkie grupy zwykle przesyaj marne 60 MB dziennie*. Oczywicie
nie da si tego zrobi zwykym rozdaniem plikw dookoa. Przyjrzyjmy si wic,
w jaki sposb wikszo systemw Unix obsuguje grupy Usenet.
Wszystko zaczyna si, gdy uytkownicy pisz i wysyaj artykuy. Kady uytkownik pisze artykuy w specjalnej aplikacji, tak zwanej przegldarce grup dyskusyjnych (ang. newsreader), ktra odpowiednio je formatuje w celu przesania do lokalnego serwera grup dyskusyjnych. W rodowiskach uniksowych przegldarka grup
zwykle uywa polecenia inews do przesania artykuw do serwera za pomoc protokou TCP/IP. Moliwe jest jednak rwnie zapisanie artykuu bezporednio do
pliku w specjalnym katalogu nazywanym buforem grup. Gdy tak przygotowana
wiadomo zostanie dostarczona do lokalnego serwera grup dyskusyjnych, bierze
on odpowiedzialno za dostarczenie artykuu do innych uytkownikw grupy.
Grupy s rozpowszechniane w sieci za pomoc rnych protokow transportowych.
Kiedy najczciej korzystano z UUCP, ale obecnie gwny ruch jest generowany
przez orodki internetowe. Uywany algorytm rutingu jest nazywany trasowaniem
rozpywowym (ang. flooding). Kady orodek utrzymuje kilka pocze (dostawcw
grup ang. news feeds) z innymi orodkami. Kady artyku wygenerowany lub odebrany przez lokalny system grup jest przekazywany orodkom, o ile jeszcze w nich
nie by. Orodek moe dowiedzie si, w jakich orodkach artyku ju by, odczytujc pole nagwka Path:. Nagwek ten zawiera list wszystkich systemw,
przez ktre artyku przechodzi, zapisan w notacji wykazu trasowania.
Aby rozrni artykuy i wykry duplikaty, artykuy Usenet maj identyfikatory
(ID) wiadomoci (okrelone w polu nagwka Message-ID:), ktre skadaj si
z nazwy orodka wysyajcego i numeru seryjnego: <numer@orodek>. ID kadego przetworzonego artykuu jest zapisywane w pliku history, z ktrym s porwnywane wszystkie nowo przychodzce artykuy.
Przepyw pomidzy dwoma dowolnymi orodkami moe by ograniczony przez
dwa kryteria. Z jednej strony nadawca przypisuje artykuowi dystrybucj (w polu
nagwka Distribution:). W ten sposb mona zawsze rozpowszechni artyku
do okrelonej grupy orodkw. Z drugiej strony rwnie system odbiorczy moe
naoy swoje ograniczenia. Zestaw grup dyskusyjnych i dystrybucji, ktre mog
by przesyane przez orodki, najczciej jest opisany w pliku sys.
*

Zaraz, zaraz... 60 MB z prdkoci 9600 bps, to daje 60 milionw razy 1024, czyli... jakie 34 godziny!

Jak Usenet obsuguje grupy dyskusyjne

365

Zwykle potrzebne s jakie poprawki w tym schemacie. W sieciach UUCP systemy


zbieraj artykuy przez jaki czas, cz je w jeden plik, ktry jest kompresowany
i wysyany do orodka zdalnego. Procedura ta nosi nazw przetwarzania wsadowego
(ang. batching).
Alternatywn technik jest protok ihave/sendme, ktry zapobiega przesyaniu zduplikowanych artykuw, dziki czemu oszczdza przepustowo sieci. Zamiast
umieszcza wszystkie artykuy w plikach wsadowych i wysya je w caoci, w gigantycznym pliku ihave czone s tylko ID wiadomoci i wysyane do orodka
zdalnego. Orodek zdalny odczytuje ten plik, porwnuje z plikiem historii, po czym
w wiadomoci sendme zwraca list artykuw, ktrych potrzebuje. Wysyane s
tylko dane artykuy.
Oczywicie protok ihave/sendme ma sens tylko wtedy, gdy dotyczy dwch duych orodkw, ktre pobieraj grupy z niezalenych rde i sprawdzaj si nawzajem na tyle czsto, eby przepyw wiadomoci by efektywny.
Orodki w Internecie zwykle opieraj si na oprogramowaniu TCP/IP, ktre wykorzystuje protok NNTP (Network News Transfer Protocol). NNTP jest opisany
w RFC-977. Jest on odpowiedzialny za przesyanie grup midzy serwerami i zapewnia pojedynczym uytkownikom dostp do zdalnych hostw.
NNTP oferuje trzy rne sposoby przesyania grup. Jeden to wersja ihave/sendme
dziaajca w czasie rzeczywistym, nazywana take wciskaniem (ang. pushing) grup.
Druga technika nosi nazw cigania (ang. pulling) grup i w niej klient prosi o list artykuw w danej grupie lub hierarchii, ktre dotary do serwera po okrelonym czasie, i wybiera te, ktrych nie ma w pliku historii. Trzecia technika suy do interaktywnego czytania grup i pozwala tobie lub twojej przegldarce grup na pobieranie
artykuw z zadanych grup oraz wysyanie artykuw z niepen informacj
w nagwku.
W kadym orodku grupy dyskusyjne s przechowywane w hierarchii katalogw poniej /var/spool/news, gdzie kady artyku znajduje si w oddzielnym pliku,
a kada grupa w oddzielnym katalogu. Nazwa katalogu jest budowana na podstawie nazwy grupy, z tym e poszczeglne czony s kolejnymi podkatalogami. I tak,
artykuy z comp.os.linux.misc s przechowywane w /var/spool/news/comp/os/linux/
misc. Artykuom w grupie s przypisywane numery w kolejnoci, w jakiej artykuy
nadchodz. Tymi numerami nazywane s kolejne pliki. Zakres numerw aktualnie
dostpnych artykuw jest przechowywany w pliku active, ktry suy jednoczenie
jako lista artykuw znanych danemu orodkowi.
Poniewa miejsca na dysku stopniowo ubywa, musisz po jakim czasie wyrzuca artykuy*. Zwykle artykuy z pewnych grup i hierarchii wygasaj po okrelonej liczbie
dni od ich przybycia. Moe to zmieni autor, okrelajc dat wyganicia w polu
Expires: nagwka artykuu.

Niektrzy uwaaj, e Usenet jest spiskiem producentw modemw i dyskw twardych. Nazywa si
to wygasaniem (ang. expiring)

366

Rozdzia 20: Grupy dyskusyjne

Wiers ju wystarczajco duo, by samemu wybra sobie dalsze lektury. Uytkownicy UUCP powinni przeczyta rozdzia 21 dotyczcy CNews. Jeeli korzystasz z sieci
TCP/IP, przeczytaj rozdzia 22 omawiajcy NNTP. Jeeli chcesz przesya umiarkowan liczb grup przez TCP/IP, serwer tam opisany moe ci wystarczy. Aby zainstalowa wydajny serwer grup dyskusyjnych, ktry jest w stanie obsugiwa
ogromn liczb materiau, przeczytaj rozdzia 23, Internet News.

C News

21

Rozdzia 21: C News

Jednym z najpopularniejszych pakietw oprogramowania grup dyskusyjnych jest C


News. Zosta zaprojektowany dla orodkw obsugujcych grupy dyskusyjne przez
cza UUCP. Ten rozdzia omawia oglne pojcia C News, podstawow instalacj
i zadania administracyjne.
C News przechowuje swoj konfiguracj w plikach w katalogu /etc/news, a wikszo jego plikw binarnych znajduje si w katalogu /usr/lib/news. Artykuy s przechowywane w katalogu /var/spool/news. Powiniene zadba o to, aby praktycznie
wszystkie pliki w tych katalogach byy wasnoci uytkownika news lub grupy
news. Problemy powstaj gwnie wtedy, gdy pliki s niedostpne dla C News.
Uyj polecenia su, by sta si uytkownikiem news, zanim cokolwiek zaczniesz robi z tymi katalogami. Jedynym wyjtkiem jest polecenie setnewsids, uywane do
ustawienia rzeczywistego ID uytkownika niektrych programw do obsugi
grup dyskusyjnych. Musi by ono wasnoci uytkownika root i mie ustawiony bit
setuid.
W tym rozdziale opiszemy szczegowo wszystkie pliki konfiguracyjne C News
i pokaemy, co musisz zrobi, by twj orodek dziaa.

Dostarczanie grup dyskusyjnych


Artykuy mog by dostarczane do C News na kilka sposobw. Gdy lokalny uytkownik wysya artyku, przegldarka grup dyskusyjnych zwykle przekazuje go poleceniem inews, ktre uzupenia informacje w nagwku. Grupy z orodkw zdalnych, czy to pojedynczy artyku, czy cae pliki wsadowe, s przekazywane poleceniem rnews, ktre zapisuje je w katalogu /var/spool/news/in.coming, z ktrego z kolei

368

Rozdzia 21: C News

s pniej pobierane przez newsrun. W kadej z obu tych technik artyku ostatecznie
zostanie przekazany do polecenia relaynews.
Polecenie relaynews najpierw sprawdza, czy artyku by ju w orodku lokalnym.
W tym celu przeglda ID wiadomoci w pliku history. Zduplikowane artykuy s odrzucane. Nastpnie relaynews zaglda do pola Newsgroups: nagwka, aby dowiedzie si, czy lokalny orodek przyjmuje artykuy z tych grup. Jeeli tak, a grupa
jest wpisana w pliku active, relaynews prbuje zachowa artyku w odpowiednim katalogu w obszarze bufora grup. Jeeli katalog nie istnieje, jest tworzony. ID artykuu
jest nastpnie zapisywane do pliku history. W przeciwnym razie relaynews odrzuca
artyku.
Czasem poleceniu relaynews nie uda si zachowa przychodzcego artykuu, poniewa grupa, do ktrej zosta wysany, nie istnieje w twoim pliku active. W takiej sytuacji, artyku jest przenoszony do grupy junk*; relaynews sprawdza take, czy artyku nie jest stary lub le datowany. Jeli jest odrzuca go. Przychodzce wsady,
ktre maj jakiekolwiek bdy, s przenoszone do katalogu /var/spool/news/in.coming/bad i zapisywany jest komunikat bdu.
Nastpnie artyku jest przekazywany do wszystkich pozostaych orodkw, ktre
day wiadomoci z tych grup. W tym celu korzysta si ze rodka transportu orodka zdalnego. Aby artyku nie zosta wysany do orodka, w ktrym ju by, kady
docelowy orodek jest sprawdzany w polu nagwka Path:, ktre zawiera list orodkw, przez ktre artyku do tej pory przeszed, zapisanych w postaci wykazu trasowania UUCP (patrz rozdzia 17, Poczta elektroniczna). Jeeli nazwy orodka docelowego nie ma na tej licie, artyku jest do niego wysyany.
System C News jest powszechnie uywany do przekazywania grup dyskusyjnych
pomidzy orodkami UUCP, cho moliwe jest take jego zastosowanie w rodowisku NNTP. Do dostarczenia wiadomoci do zdalnego orodka UUCP, czy to bd
pojedyncze artykuy, czy cae wsady, suy polecenie uux. Polecenie to uruchamia
rnews w zdalnym orodku i przekazuje artyku lub wsad na jego standardowe wejcie. Wicej informacji na temat UUCP znajdziesz w rozdziale 16, Zarzdzanie UUCP
Taylora.
Przetwarzanie wsadowe (ang. batching) oznacza wysyanie duych porcji pojedynczych
artykuw za jednym razem. Gdy przetwarzanie wsadowe jest wczone dla danego
orodka, C News nie wysya przychodzcych artykuw natychmiast, ale dodaje
ciek do pliku, zwykle out.going/site/togo. Co jaki czas z crontaba jest wykonywany
program, ktry odczytuje plik i pakuje wszystkie wskazane artykuy w jeden lub kilka plikw, opcjonalnie je kompresuje i wysya do rnews w orodku zdalnym**.

Mog istnie rnice pomidzy grupami obecnymi w twoim orodku, a tymi, ktre chce on otrzymywa. Na przykad na licie subskrypcyjnej moe znajdowa si comp.all, co oznacza przesyanie wszystkich grup z hierarchii comp, ale twj orodek moe nie zawiera w pliku active kilku z nich. Artykuy
wysyane do tych brakujcych grup s przenoszone do junk.
* Zauwa, e powinien to by crontab uytkownika news. Wtedy nie zostan pomieszane prawa dostpu
do plikw.

Instalacja

369

Rysunek 21-1 pokazuje przekierowywanie wiadomoci przez relaynews. Artykuy


mog by przekazywane do orodka lokalnego (oznaczonego jako ME), do orodka
o nazwie ponderosa przez e-mail i do orodka moria, dla ktrego wczone jest
przetwarzanie wsadowe.
article

history
relaynews

ponderosa

ME

moria

mail

active

spooldir

out.going/
moria/togo

Rysunek 21-1. Przepyw wiadomoci przez relaynews

Instalacja
C News powinien znajdowa si w postaci pakietu we wszystkich obecnie dostpnych dystrybucjach Linuksa, tak wic instalacja jest dosy prosta. Jeeli go nie ma
lub jeeli chcesz instalowa oryginalny kod rdowy, moesz to oczywicie zrobi*.
Bez wzgldu na to, jak go zainstalujesz, bdziesz musia dokona edycji plikw konfiguracyjnych. Ich formaty s opisane poniej:
sys
Plik sys kontroluje, ktre grupy twj orodek otrzymuje i przekazuje dalej. Omawiamy go szczegowo w nastpnym podrozdziale.
active
Zwykle nie jest edytowany przez administratora. Zawiera wskazwki co do
obsugi artykuw z grup dyskusyjnych obsugiwanych przez orodek.
*

Pakiet z kodem rdowym C News moesz uzyska z orodka macierzystego ftp.cs.toronto.edu


/pub/c-news/c-news.tar.Z

370

Rozdzia 21: C News

organization
Ten plik powinien zawiera nazw twojej organizacji, na przykad Browar wirtualny Inc.. W swoim komputerze wpisz orodek prywatny lub cokolwiek innego. Wikszo osb nie uzna twojego orodka za skonfigurowany poprawnie,
jeeli nie bdziesz mia tego pliku.
newsgroups
Ten plik zawiera list wszystkich grup dyskusyjnych z jednowierszowym opisem kadej z nich. Te opisy czsto s uywane przez przegldarki grup przy wywietlaniu listy grup, do ktrych jeste zapisany.
mailname
Nazwa pocztowa twojego orodka, na przykad vbrew.com.
whoami
Nazwa twojego orodka uywana do celw zwizanych z grupami dyskusyjnymi. Czsto uywane s nazwy UUCP orodkw, na przykad vbrew.
explist
Powiniene raczej wyedytowa ten plik, umieszczajc w nim preferowane czasy
wyganicia dla danych grup dyskusyjnych. Miejsce na dysku moe odgrywa
istotn rol w dokonywanych przez ciebie wyborach.
W celu utworzenia wstpnej hierarchii grup dyskusyjnych, zdobd pliki active
i newsgroups z orodka, z ktrego pobierasz grupy. Zainstaluj je w katalogu /etc/news,
upewniajc si, e s wasnoci uytkownika news i ustaw tryb 644 poleceniem
chmod. Usu z pliku active wszystkie grupy to.* i dodaj to.moj-osrodek, to.osrodek-dostarczajacy, junk i control. Grupy to.* zwykle s uywane do wymiany wiadomoci
ihave/sendme. Powiniene je mie bez wzgldu na to, czy planujesz uywa
ihave/sendme, czy nie. Nastpnie zmie wszystkie numery artykuw w drugim
i trzecim polu active za pomoc poniszych polece:
# cp active active.old
# sed 's/ [0-9]* [0-9]* / 0000000000 00001 /' active.old > active
# rm active.old

Drugie polecenie wywouje edytor strumieniowy sed. Wywoanie to zastpuje dwa


cigi znakw skadajce si z cyfr, odpowiednio, cigiem zer i cigiem 00001.
Na koniec stwrz katalog buforowy grup dyskusyjnych i podkatalogi uywane dla
przychodzcych i wychodzcych grup:
#
#
#
#

cd /var/spool
mkdir news news/in.coming news/out.going news/out.master
chown -R news.news news
chmod -R 755 news

Jeeli uywasz skompilowanej przegldarki grup pochodzcej z innej dystrybucji C


News ni serwer, moe si okaza, e oczekuje ona bufora grup w katalogu /usr/spool/news, a nie w /var/spool/news. Jeeli twoja przegldarka grup nie widzi adnych artykuw, stwrz dowizanie symboliczne od /usr/spool/news do /var/spool/news w nastpujcy sposb:
# ln -sf /usr/spool/news /var/spool/news

Plik sys

371

Teraz jeste gotw na przyjmowanie grup dyskusyjnych. Zauwa, e nie musisz


tworzy katalogw dla poszczeglnych grup. C News automatycznie tworzy brakujce katalogi buforowe dla wszystkich grup, ktrych artykuy przyjmuje
W szczeglnoci s one tworzone dla wszystkich grup, do ktrych artyku by wysyany w sposb wieloadresowy (ang. cross-posted). Po chwili stwierdzisz wic, e
twj katalog buforowy wypeni si katalogami grup, do ktrych nigdy si nie zapisywae, jak alt.lang.teco. Moesz temu zapobiec, usuwajc wszystkie niechciane
grupy z pliku active lub regularnie uruchamiajc skrypt usuwajcy wszystkie puste
podkatalogi katalogu /var/spool/news (oczywicie za wyjtkiem out.going i in.coming).
C News potrzebuje uytkownika, do ktrego moe wysya komunikaty bdw
i raporty o stanie. Domylnie jest nim usenet. Jeeli uywasz ustawie domylnych,
musisz stworzy alias, dziki ktremu poczta bdzie przekazywana do jednej lub
kilku odpowiedzialnych osb. Moesz take zmieni to zachowanie, ustawiajc
zmienn rodowiskow NEWSMASTER na odpowiedni nazw. Musisz to zrobi
w pliku crontab uytkownika news. To postpowanie trzeba powtarza za kadym
razem, gdy uruchamiasz rcznie narzdzia administracyjne, a wic zapewne atwiej
bdzie zainstalowa alias. Aliasy pocztowe s opisane w rozdziale 18, Sendmail,
i w rozdziale 19, Exim.
Gdy edytujesz plik /etc/passwd, zadbaj o to, by kady uytkownik mia wpisane swoje prawdziwe nazwisko w polu pw_gecos (czwarte pole). Zgodnie z netykiet (etykiet dziaania w sieci), nazwisko rzeczywistego nadawcy powinno pojawi si
w polu From: artykuu. Oczywicie i tak bdziesz chcia, eby to pole byo poprawnie wypenione, jeeli uywasz poczty.

Plik sys
Plik sys umieszczony w katalogu /etc/news kontroluje, ktre hierarchie odbierasz
i przekazujesz dalej do innych orodkw. Cho istniej narzdzia zarzdzajce o nazwach addfeed i delfeed, wydaje nam si, e lepiej jest utrzymywa ten plik rcznie.
Plik sys zawiera wpisy dla kadego orodka, ktremu przekazujesz grupy, oraz opis
grup, ktre przyjmujesz. Pierwszy wiersz to wpis ME opisujcy twj system. Bezpiecznie jest zapisa go tak:
ME:all/all::

Musisz take doda wiersz dla kadego orodka, ktremu dostarczasz grupy. Kady wiersz wyglda tak:
orodek[/wykluczenia]:listagrup[/listadyst][:znaczniki[:polecenia]]

Wpisy mog cign si przez kilka wierszy, jeeli uyjesz znaku odwrotnego ukonika (\) na kocu wiersza, ktry ma by kontynuowany. Znak hasha (#) wskazuje na
komentarz.
orodek
Jest to nazwa orodka, ktrego dotyczy wpis. Zwykle umieszcza si tutaj nazw
UUCP orodka. W pliku sys musi znajdowa si take wpis dla twojego orodka;
inaczej nie bdziesz otrzymywa artykuw.

372

Rozdzia 21: C News

Specjalna nazwa ME oznacza twj orodek. Wpis ME definiuje wszystkie grupy,


ktre chcesz przechowywa lokalnie. Artykuy nie pasujce do wiersza ME bd
przenoszone do grupy junk.
Aby nie dopuci do powstania ptli, C News odmawia przyjcia wszystkich artykuw, ktre przeszy ju przez dany orodek. W tym celu sprawdza, czy lokalny orodek nie pojawi si w polu Path: artykuu. Niektre orodki mog by
znane pod rnymi poprawnymi nazwami. Na przykad niektre orodki uywaj w tym polu swoich penych nazw domenowych lub aliasu na przykad
news.orodek.domena. Aby mie pewno, e mechanizm zapobiegania powstawaniu ptli zadziaa, wane jest dodanie wszystkich aliasw do listy wyklucze. Wpisuje si je, oddzielajc przecinkami.
W przypadku wpisu dotyczcego orodka moria, pole orodek miaoby na
przykad warto moria/moria.orcnet.org. Jeeli moria miaby rwnie
alias news.orcnet.org, to nasze pole orodek miaoby warto moria/moria.orcnet.org,news.orcnet.org.
listagrup
Jest to, oddzielana przecinkami, lista grup, do ktrych jestemy zapisani, i hierarchii dla danego orodka. Hierarchia moe by podana przez okrelenie przedrostka (jak comp.os dla wszystkich grup, ktre si zaczynaj od takiego cigu
sw), po ktrym opcjonalnie wystpuje sowo kluczowe all (czyli np. comp.os.all).
Moesz wykluczy jak hierarchi lub grup z przekazywania, poprzedzajc j
wykrzyknikiem. Jeeli grupa jest sprawdzana z list, zawsze jest dopasowywana
najduszym zgodnym cigiem znakw. Na przykad gdyby listagrup zawieraa tak list:
!comp,comp.os.linux,comp.folklore.computers

to z hierarchii comp. zostayby pobrane tylko comp.folklore.computers i grupy


comp.os.linux.
Jeeli orodek ma przekazywa wszystkie grupy, ktre sam pobiera, wprowad
jako listagrup sowo kluczowe all.
listadyst
Ta warto jest oddzielona od listygrup ukonikiem i zawiera list dystrybucji
do przekazywania. Znw moesz wykluczy pewne dystrybucje, poprzedzajc
je wykrzyknikiem. Wszystkie dystrybucje s opisywane sowem all. Pominicie
listydyst powoduje przyjcie wartoci domylnej all.
Na przykad moesz uy listy dystrybucji: all,!local aby grupy przeznaczone
tylko do uytku lokalnego nie byy wysyane do orodkw zdalnych.
Zwykle istniej co najmniej dwie dystrybucje: world, czsto stosowana domylnie, gdy uytkownik nie wskae inaczej, i local. Mog istnie inne dystrybucje
dotyczce zadanego rejonu, stanu, kraju itd. Poza tym istniej dwie dystrybucje
uywane tylko przez C News. S to: sendme i ihave wykorzystywane w protokole sendme/ihave.

Plik sys

373

Mona si zastanawia, czy warto uywa dystrybucji. Pole dystrybucji w artykule moe by tworzone losowo, ale aby dystrybucja dziaaa, serwery grup
w sieci musz j zna. Niektre bdnie dziaajce przegldarki grup tworz
faszywe dystrybucje, poniewa zakadaj, e sensown dystrybucj jest gwny
poziom hierarchii artykuu, na przykad, e dla comp.os.linux.networking byaby
to comp. Dystrybucje dotyczce regionw take s czsto wtpliwe, poniewa
wiadomo moe wyj poza region, gdy jest wysyana przez Internet*. Dystrybucje zwizane z firm s jednak sensowne. Mona je stosowa, aby zapobiec
wyciekowi tajnych informacji poza sie firmow. Ten cel jednak lepiej jest
osign, tworzc oddzieln grup lub hierarchi.
znaczniki
Ta opcja opisuje pewne parametry wysyanej porcji wiadomoci. Moe by pusta
lub stanowi poczenie nastpujcych znacznikw:
F Ten znacznik wcza przetwarzanie wsadowe.
f Prawie identyczny z F, ale pozwala C News na dokadniejsze obliczenie rozmiaru wychodzcych plikw wsadowych i raczej ten znacznik powinien by
uywany zamiast F.
I Ten znacznik powoduje, e C News generuje list artykuw odpowiedni do
uycia z ihave/sendme. Aby uruchomi protok ihave/sendme, wymagane
s dodatkowe modyfikacje w pliku sys i pliku batchparms.
n Ten znacznik tworzy pliki wsadowe dla aktywnych klientw NNTP, jak nntpxmit (zobacz rozdzia 22, NNTP i demon nntpd). Pliki wsadowe zawieraj nazw pliku z artykuem oraz jego ID.
L Ten znacznik mwi C News, aby przesya tylko artykuy stworzone w twoim
orodku. Po tym znaczniku mona wpisa liczb dziesitn n, ktra powoduje, e C News wysya artykuy tylko w obrbie n hopw od twojego orodka.
C News okrela liczb hopw na podstawie pola Path:.
u Ten znacznik mwi C News, aby przetwarza wsadowo tylko artykuy z grup
niemoderowanych.
m Ten znacznik mwi C News, by przetwarza wsadowo tylko artykuy z grup
moderowanych.
Moesz uy najwyej jednego ze znacznikw F,f, I lub n.
polecenia
To pole zawiera polecenie, ktre zostanie wykonane dla kadego artykuu, o ile
nie wczysz przetwarzania wsadowego. Artyku bdzie przekazany na standardowe wejcie polecenia. Ta opcja powinna by uywana tylko przy maej liczbie artykuw. W przeciwnym razie obcienie obu systemw bdzie zbyt due.
Domylne polecenie to:
uux - -r -z system-zdalny!rnews
*

Nie jest niczym dziwnym, e artyku wysany, powiedzmy, w Hamburgu, idzie do Frankfurtu przez
reston.asn.net w Holandii lub nawet przez jakie orodki w Stanach.

374

Rozdzia 21: C News

Wywouje ono rnews w systemie zdalnym, przekazujc artyku na jego standardowe wejcie.
Domylna cieka poszukiwania zdefiniowana dla polece umieszczanych
w tym polu to: /bin:/usr/bin:/usr/lib/news/batch. Ten ostatni katalog zawiera skrypty powoki, ktrych nazwy zaczynaj si od via. S one krtko opisane w dalszej
czci tego rozdziau.
Jeeli za pomoc jednej z opcji F, f, I lub n wczone jest przetwarzanie wsadowe, C News spodziewa si znale w tym polu nazw pliku, a nie polecenie. Jeeli nazwa pliku nie zaczyna si od znaku ukonika (/), zakada si, e jest
wzgldna do /var/spool/news/out.going. Jeeli pole jest puste, domylnie przyjmowana jest warto remote-system/togo. Oczekuje si, e plik ma ten sam format, co
plik remote-system/togo i zawiera list artykuw do wysania.
Przy konfigurowaniu C News prawdopodobnie bdziesz musia stworzy wasny
plik sys. Oto przykadowy plik dla vbrew.com. Moesz z niego skopiowa to, co ci
jest potrzebne:
# Bierzemy co daj
ME:all/all::
# Wysyamy wszystko do moria, z wyjtkiem artykuw lokalnych
# i zwizanych z browarem. Uywamy przetwarzania wsadowego
moria/moria.orcnet.org:all,!to,to.moria/all,!local,!brewery:f:
# Wysyamy comp.risks do jack@ponderosa.uucp
ponderosa:comp.risks/all::rmail jack@ponderosa.uucp
# swim otrzymuje mniej grup
swim/swim.twobirds.com:comp.os.linux,rec.humor.oracle/all,!local:f:
# Zapisujemy artykuy mail.map do dalszego przetwarzania
usenet-maps:comp.mail.maps/all:F:/var/spool/uumaps/work/batch

Plik active
Plik active znajduje si w katalogu /etc/news i zawiera wszystkie grupy znane
twojemu orodkowi oraz aktualnie dostpne artykuy. Rzadko bdziesz musia
z nim cokolwiek robi, ale aby opis by peny, krtko go przedstawimy. Wpisy maj
nastpujc posta:
grupa maks min prawa

grupa to nazwa grupy. maks i min to najniszy i najwyszy numer aktualnie dostpnych artykuw. Jeeli w danej chwili aden nie jest dostpny, min ma warto
rwn maks+1. Do tego wanie suy pole min. Jednak aby nie osabia dziaania, C
News nie uaktualnia tego pola. Nie byoby to problemem, gdyby nie istniay
przegldarki, ktre sigaj do tego pola. Na przykad trn sprawdza to pole, by zobaczy, czy moe usun jakie artykuy ze swojej bazy wtkw. Aby uaktualnia pole
min, musisz uruchamia regularnie polecenie updatemin (lub w starszych wersjach
C News jego odpowiednik: skrypt upact).

Przetwarzanie wsadowe artykuw

375

Parametr prawa okrela szczegowo prawa dostpu uytkownikw do danej grupy. Przyjmuje on jedn z poniszych wartoci:
y
n

Uytkownicy maj prawo wysya artykuy do tej grupy.


Uytkownicy nie maj prawa wysya artykuw do tej grupy. Jednak wci
mog czyta zawarte w niej artykuy.
Ta grupa zostaa lokalnie zablokowana. Dzieje si tak czasem, gdy administratorzy grup (lub ich przeoeni) zezoszcz si na pewne artykuy wysane do jakich grup.
Artykuy odebrane dla tej grupy nie s zachowywane lokalnie, cho s przekazywane do orodkw, ktre o nie prosz.

Oznacza grup moderowan. Gdy uytkownik prbuje wysa artyku do tej


grupy, inteligentna przegldarka powiadamia o tym i wysya artyku do moderatora. Adres moderatora jest pobierany z pliku moderators znajdujcego si w katalogu /var/lib/news.

=rzeczywista-grupa
Oznacza, e grupa jest lokalnym aliasem dla innej grupy o nazwie rzeczywista-grupa. Wszystkie artykuy wysane do grupy zostan przekierowane do
grupy rzeczywistej.
W C News zwykle nie bdziesz mia bezporedniego dostpu do tego pliku. Grupy mog by dodawane lub usuwane lokalnie za pomoc polece addgroup i delgroup
(zobacz podrozdzia Narzdzia i zadania administracyjne koczcy ten rozdziau). Wiadomo kontrolna newgroup dodaje grup w caym Usenecie, a rmgroup
j usuwa. Nigdy sam nie wysyaj takiej wiadomoci! Instrukcje, jak tworzy grupy, znajdziesz w artykuach wysyanych co miesic do grupy news.announce.newusers.
Plik active.times jest cile zwizany z plikiem active. Gdy grupa zostanie stworzona,
C News zapisuje do tego pliku komunikat zawierajcy nazw utworzonej grupy, dat utworzenia, informacje, czy zostaa utworzona przez komunikat kontrolny
newgroup, czy lokalnie, oraz kto j utworzy. Dane z tego pliku przydaj si
przegldarkom grup, ktre mog powiadamia uytkownika o nowo utworzonych
grupach. Uywane s take przez polecenie NEWGROUPS NNTP.

Przetwarzanie wsadowe artykuw


Wsady grup dyskusyjnych s zgodne z pewnym formatem, ktry jest identyczny dla
B News, C News i INN. Kady artyku jest poprzedzany nastpujcym wierszem:
#! rnews liczba

Parametr liczba okrela rozmiar artykuu w bajtach. Gdy uywasz kompresji wsadowej, wynikowy plik jest kompresowany jako cao i poprzedzany innym wier-

376

Rozdzia 21: C News

szem, ktry informuje o tym, e plik naley rozpakowa. Standardowym narzdziem uywanym do kompresji jest compress i mona je rozpozna po nastpujcym
wierszu:
#! cunbatch

Jeeli serwer grup wysya wsady poczt, ktra ze wszystkich danych usuwa smy
bit, skompresowany wsad naley zabezpieczy, uywajc tak zwanego kodowania-c7
(c7-encoding). Takie wsady s oznaczane jako c7unbatch.
Gdy wsad zostanie przekazany do rnews w orodku zdalnym, te znaczniki s sprawdzane i plik jest odpowiednio przetwarzany. Niektre orodki uywaj innych narzdzi do kompresji, jak gzip, i wtedy poprzedzaj skompresowane pliki sowem
zunbatch. C News nie rozpoznaje niestandardowych nagwkw jak ten. Aby byy
one obsugiwane, musisz zmodyfikowa kod rdowy.
Przetwarzanie wsadowe artykuw w C News jest realizowane za pomoc pliku
/usr/lib/news/batch/sendbatches, ktry bierze list artykuw z pliku site/togo i umieszcza je w kilku wsadach. Powinien on by uruchamiany co godzin lub nawet czciej, w zalenoci od intensywnoci ruchu. Jego dziaanie jest kontrolowane przez
plik batchparms znajdujcy si w katalogu /var/lib/news. Plik ten opisuje: maksymalny
rozmiar wsadu dopuszczalny dla kadego orodka, programy uywane do przetwarzania wsadowego i opcjonalnej kompresji oraz metod dostarczania paczki do
orodka zdalnego. Parametry przetwarzania wsadowego moesz okreli oddzielnie dla kadego orodka. Natomiast dla orodkw, ktre nie s zdefiniowane niezalenie, trzeba je okreli w ramach parametrw domylnych.
Przy instalacji C News, najprawdopodobniej znajdziesz w swojej dystrybucji plik batchparms zawierajcy odpowiednie wpisy domylne, a wic istnieje dua szansa, e
nie bdziesz musia nic zmienia w tym pliku. Na wszelki wypadek opiszemy jednak jego format. Kady wiersz skada si z szeciu pl oddzielonych spacjami lub tabulatorami:
orodek rozmiar maks prog_prze_wsad kompr transport
orodek
orodek to nazwa orodka, ktrego dotyczy wpis. Plik togo dla tego orodka
musi znajdowa si w out.goint/togo w katalogu bufora grup. Nazwa orodka
/default/ oznacza domylny wpis i pasuje do kadego orodka, ktry nie jest
zdefiniowany indywidualnym wpisem.
rozmiar
rozmiar okrela maksymalny rozmiar tworzonych wsadw artykuw (przed
kompresj). Jeeli pojedyncze artykuy s wiksze, ni ten rozmiar, C News robi
wyjtek i umieszcza kady z nich w oddzielnym pliku wsadowym.
maks
maks okrela maksymaln liczb tworzonych i przygotowanych do wysania
wsadw dla okrelonego orodka. Jest przydatny w sytuacji, gdy zdalny orodek
jest przez dugi czas nieczynny, gdy zapobiega zamiecaniu twoich katalogw
buforowych UUCP mnstwem wsadw.

Przetwarzanie wsadowe artykuw

377

C News okrela liczb zakolejkowanych wsadw za pomoc skryptu queuelen


znajdujcego si w katalogu /usr/lib/news/. Gdyby zainstalowa C News w postaci pakietu, skryptu nie trzeba by byo edytowa, ale gdyby uy innego katalogu
buforowego, jak na przykad UUCP Taylora , mogaby zaj potrzeba edycji. Jeeli nie przejmujesz si liczb buforowanych plikw (poniewa jeste jedyn
osob uywajca komputera i nie tworzysz megabajtw artykuw), moesz
zastpi zawarto skryptu prost dyrektyw exit 0.
prog_prze_wsad
Pole prog_prze_wsad zawiera polecenie uywane do generowania wsadu z listy
artykuw zawartej w pliku togo. W przypadku regularnego przesyania, zwykle
jest to batcher. W przypadku innych zastosowa, mona uy innych programw
przetwarzania wsadowego. Na przykad protok ihave/sendme wymaga, by lista artykuw bya zamieniona na wiadomoci kontrolne ihave lub sendme, ktre
s wysyane do grupy to.site. Jest to realizowane za pomoc batchib i batchsm.
kompr
Pole kompr okrela polecenie realizujce kompresj. Zwykle jest to compcun,
skrypt generujcy skompresowany wsad* . Zamy jednak, e tworzysz skompresowany plik, uywajc gzipa, powiedzmy gzipcun (zauwa, e musisz napisa go samodzielnie). Musisz sprawdzi, czy uncompress w orodku zdalnym jest
w stanie rozpoznawa pliki skompresowane programem gzip.
Jeeli w orodku zdalnym nie ma polecenia uncompress, moesz wpisa nocomp
i w ogle nie kompresowa plikw.
transport
Ostatnie pole, transport, opisuje uywany protok przesyania. Dostpne jest
kilka standardowych polece dla rnych protokow transportowych. Ich nazwy rozpoczynaj si od via. Plik sendbatches przekazuje je do docelowego
orodka w wierszu polece. Jeeli wpis batchparms ma warto rn od /default/, sendbatches pobiera nazw orodka z pola site, obcinajc wszystko po
pierwszej kropce lub ukoniku wcznie. Jeeli wpis batchparms ma warto
/default/, uywane s nazwy katalogw z pliku out.going.
Aby zrealizowa przetwarzanie wsadowe dla zadanego orodka, uyj poniszego
polecenia:
# su news -c "/usr/lib/news/batch/sendbatches site"

sendbatches wywoywane bez argumentw obsuguje wszystkie zakolejkowane wsady. Interpretacja all zaley od obecnoci domylnego wpisu w batchparms. Jeeli
zostanie on znaleziony, sprawdzane s wszystkie podkatalogi /var/spool/news/out.going. W przeciwnym razie sendbatches wykorzystuje wszystkie kolejne wpisy w batchparms, obsugujc znalezione tam orodki. Zwr uwag, e sendbatches przy

Wraz z C News jest rozpowszechniany compcun wykorzystujcy compress z opcj 12-bitow, poniewa
jest to najmniejszy wsplny mianownik dla wikszoci orodkw. Moesz stworzy skrypt, powiedzmy compcun16, ktry bdzie uywa kompresji 16-bitowej. Jednak poprawa nie jest znaczca.

378

Rozdzia 21: C News

przegldaniu katalogu out.going uwzgldnia tylko te katalogi, ktre nie zawieraj


kropek ani znakw @ w nazwach orodkw.
Istniej dwa polecenia uywajce uux do wywoania rnews w orodku zdalnym:
viauux i viauuxz. To ostatnie ustawia znacznik z dla uux, by starsze wersje nie zwracay informacji o poprawnym dostarczeniu kadego artykuu. Inne polecenie, viamail, wysya wsady artykuw poczt do uytkownika rnews w systemie zdalnym.
Oczywicie wymaga to, by system zdalny jako dostarcza wszystkie poczty przeznaczone dla rnews do swojego lokalnego systemu grup dyskusyjnych. Pen list
protokow transportowych znajdziesz na stronie podrcznika elektronicznego
newsbatch.
Wszystkie polecenia z ostatnich trzech pl musz by umieszczone w katalogu
out.going/site lub /usr/lib/news/batch. Wikszo z nich to skrypty. Moesz atwo
docza nowe, potrzebne ci narzdzia. S one wywoywane przez potoki. Lista artykuw jest dostarczana programowi przetwarzania wsadowego na jego standardowe wejcie, natomiast wsad dostajemy na jego standardowym wyjciu. Dalej jest on
przekazywany przez potok do programu kompresujcego i tak dalej.
Oto przykadowy plik:
# plik batchparms dla browaru
# orodek
| rozmiar |maks| prog_prze_wsad | kompr | trans
#--------------+---------+----+----------------+-------+-----/default/
100000
22
batcher
compcun viauux
swim
10000
10
batcher
nocomp viauux

Wygasanie grup dyskusyjnych


W B News wygaszanie musi by realizowane przez program expire, ktry jako argumenty przyjmuje list grup wraz z czasem, po ktrym wygasaj artykuy. Aby rne
hierarchie mogy wygasa po rnym czasie, musisz napisa skrypt, ktry bdzie
wywoywa expire dla kadej z nich niezalenie. C News oferuje wygodniejsze rozwizanie. W pliku explist moesz okreli grupy i czasy ich wyganicia. Polecenie
doexpire zwykle jest wywoywane raz dziennie z crona i przetwarza wszystkie grupy
zgodnie z list.
Czasem bdziesz chcia duej zatrzyma artykuy z pewnych grup, na przykad
programy wysane do grupy comp.sources.unix. Nazywa si to archiwizacj. W explist
mona wskaza grupy, ktre chcesz archiwizowa.
Wpis w explist wyglda tak:
listagrup prawa czas archiwum
listagrup to oddzielana przecinkami lista grup dyskusyjnych, ktrych dotyczy
wpis. Hierarchie mog by okrelane przez podanie przedrostka nazwy grupy
z opcjonalnym sowom all. Na przykad w przypadku wpisu dotyczcego wszystkich grup comp.os, wprowad comp.os lub comp.os.all.
Przy wygasaniu artykuw w grupie, nazwa jest sprawdzana we wszystkich wpisach
w pliku explist w podanej kolejnoci. Wykorzystywany jest pierwszy pasujcy wpis.

Wygasanie grup dyskusyjnych

379

Na przykad, aby wyrzuci po czterech dniach wikszo artykuw z grup comp,


z wyjtkiem grupy comp.os.linux.announce, ktr chcesz przechowa przez tydzie, po prostu musisz mie dla tej ostatniej grupy wpis okrelajcy, e wygasa ona
po siedmiu dniach, a dalej wpis dotyczcy okresu wyganicia comp po czterech
dniach.
Pole prawa zawiera szczegy, czy wpis dotyczy grup moderowanych, niemoderowanych, czy wszystkich. Moe przyjmowa wartoci m, u lub x, ktre oznaczaj odpowiednio grupy moderowane, niemoderowane lub dowolne.
Trzecie pole, czas, zwykle zawiera tylko jedn liczb, ktra wskazuje, po ilu dniach
artykuy wygasaj, o ile w nagwku artykuu nie ma pola Expires: okrelajcego
inn dat. Zauwa, e jest to liczba dni liczona od dnia dotarcia artykuu do twojego
orodka, a nie od daty wysania artykuu do grupy.
Pole czas moe jednak by bardziej zoone. S to trzy liczby oddzielone od siebie
mylnikami. Pierwszy segment okrela wtedy liczb dni, ktra musi min, zanim
artyku zostanie uznany za kandydata do wyganicia, nawet jeeli pole Expires:
ju wygaso. Uywanie tu innej wartoci ni zero zwykle nie ma sensu. Drugi segment to poprzednio wspomniana domylna liczba dni, po ktrych wygasa czas
przechowywania artykuu. Trzeci segment to liczba dni, po ktrej czas dla artykuu
wygasa bezwarunkowo, bez wzgldu na to, czy zawiera pole Expires:, czy te nie.
Jeeli zostanie podany tylko rodkowy segment, pozostae dwa przyjmuj wartoci
domylne. Mog one by zdefiniowane przez specjalny wpis /bounds/, ktry opiszemy nieco dalej.
Czwarte pole, archiwum, okrela, czy grupa dyskusyjna ma by archiwizowana
i gdzie. Jeeli nie zamierzamy jej archiwizowa, powinnimy uy mylnika.
W przeciwnym razie uyj penej cieki (wskazujcej katalog) lub znaku @. Znak @
wskazuje domylny katalog archiwum, ktry musi by nastpnie podany w wierszu
polece doexpire za pomoc znacznika a. Katalog archiwum powinien by wasnoci uytkownika news. Gdy doexpire archiwizuje artykuy, powiedzmy z grupy
comp.sources.unix, zachowuje je w podkatalogu comp/sources/unix katalogu archiwum, tworzc je, jeeli zajdzie potrzeba. Sam katalog archiwum nie zostanie jednak
stworzony.
W pliku explist znajduj si dwa specjalne wpisy, na ktrych opiera si doexpire. Zamiast listy grup dyskusyjnych zawieraj one sowa kluczowe /bounds/ i /expired/. Wpis /bounds/ zawiera domylne wartoci dla trzech segmentw opisanego
poprzednio pola czas.
Pole /expired/ okrela, jak dugo C News przechowuje wiersze w pliku history.
C News nie usuwa wiersza z pliku historii zaraz po wyganiciu odpowiadajcego
mu artykuu, ale przechowuje go na wypadek, gdyby przyszed jego duplikat. Jeeli grupy dostajesz tylko z jednego orodka, ta warto moe by niewielka.
W przeciwnym razie zaleca si ustawi okres kilku tygodni w sieciach UUCP w zalenoci od dowiadczenia w opnieniach artykuw przychodzcych z rnych
orodkw.

380

Rozdzia 21: C News

Oto przykadowy plik explist o raczej krtkich okresach wyganicia:


# przechowywanie historii przez dwa tygodnie. aden artyku
# nie bdzie przechowywany duej ni trzy miesice
/expired/
x
14
/bounds/
x
0-1-90 # grupy, ktre chcemy przechowywa duej ni reszt
comp.os.linux.announce
m
10
comp.os.linux
x
5
alt.folklore.computers
u
10
rec.humor.oracle
m
10
soc.feminism
m
10
# Archiwum grup *.sources
comp.sources,alt.sources
x
5
@
# domylne wartoci dla grup technicznych
comp,sci
x
7
# wystarczajco na dugi weekend
misc,talk
x
4
# szybkie usuwanie mieci
junk
x
1
# oraz niezbyt ciekawych wiadomoci kontrolnych
control
x
1
# i wpis dla pozostaych rzeczy
all
x
2
-

Wygasanie stwarza kilka potencjalnych problemw. Jednym z nich jest to, e twoja
przegldarka grup moe opiera si na trzecim polu pliku active opisanym wczeniej, zawierajcym najmniejszy numer aktualnie dostpnego artykuu. Gdy artykuy wygasaj, C News nie uaktualnia tego pola. Jeeli potrzebujesz (lub chcesz), by
pole to odzwierciedlao rzeczywist sytuacj, musisz uruchomi program updatemin
po kadym uruchomieniu doexpire. (W starszych wersjach C News robi to skrypt
upact).
C News nie realizuje wygasania przez przegldanie katalogw grup, a po prostu
sprawdza w pliku history, czy czas przechowywania artykuu ma wygasn*. Jeeli plik historii w jaki sposb si rozsynchronizuje, artykuy mog pozosta na
dysku na zawsze, poniewa C News o nich zapomni**. Moesz to naprawi, uywajc skryptu addmissing znajdujcego si w katalogu /usr/lib/news/maint, ktry doda brakujce artykuy do pliku history lub mkhistory, ktry przebuduje cay plik
od pocztku. Nie zapomnij przed wywoaniem tych polece wej na konto uytkownika news, gdy w przeciwnym razie plik history bdzie nieczytelny dla C
News.

Rne dodatkowe pliki


Istnieje szereg plikw, ktre kontroluj zachowanie C News, ale nie s istotne.
Wszystkie znajduj si w katalogu /etc/news. Krtko je tutaj opiszemy:

Data przyjcia artykuu jest zawarta w rodkowym polu wiersza historii i jest zapisana jako liczba sekund od 1 stycznia 1970 roku.
** Nie wiem dlaczego, ale od czasu do czasu to si zdarza.

Rne dodatkowe pliki

381

newsgroups
Jest to plik towarzyszcy plikowi active, zawierajcy list wszystkich grup dyskusyjnych wraz z jednowierszowym opisem. Plik ten jest automatycznie uaktualniany, gdy C News odbierze wiadomo kontroln checknews.
localgroups
Jeeli posiadasz wiele grup lokalnych, C News bdzie informowa o nich za
kadym razem, gdy dostaniesz wiadomo checkgroups. Mona temu zapobiec, umieszczajc nazwy ich grup i opisy w pliku w formacie takim jak newsgroups.
mailpaths
Ten plik zawiera adres moderatora dla kadej grupy moderowanej. Kady
wiersz zawiera nazw grupy, a po niej adres e-mail moderatora (oddzielone tabulatorem).
Domylnie dodawane s dwa specjalne wpisy: backbone i internet. Oba s
zapisane w notacji wykazu trasowania i zawieraj odpowiednio ciek do najbliszego orodka szkieletowego oraz orodka, ktry rozumie adresy RFC-822
(uytkownik@host). Domylne wpisy s nastpujce:
internet

backbone

Nie musisz zmienia wpisu internet, jeeli masz zainstalowanego Exima lub
sendmail. Rozumiej one adresowanie RFC-822.
Wpis backbone stosuje si wtedy, gdy uytkownik wysya artyku do grupy
moderowanej, ktrej moderator nie jest wpisany bezporednio. Jeeli nazwa grupy to alt.sewer, a backbone zawiera wpis path!%s, C News wyle artyku poczt
e-mail na adres path!alt-sewer, majc nadziej, e maszyna szkieletowa bdzie
w stanie przekaza go dalej. Moesz zapyta administratora grup na serwerze, od ktrego je dostajesz, jakiej cieki masz uy. W ostatecznoci moesz
uy take uunet.uu.net!%s.
distributions
Ten plik w rzeczywistoci nie jest plikiem C News, ale jest uywany przez
niektre przegldarki grup i nntpd. Zawiera list dystrybucji rozpoznawanych
przez twj orodek i opis ich (zamierzonego) dziaania. Na przykad browar wirtualny posiada nastpujcy plik:
world
local
nl
mugnet
fr
de
brewery

log

Everywhere in the world


Only local to this site
Netherlands only
MUGNET only
France only
Germany only
Virtual Brewery only

Ten plik zawiera zapis wszystkich dziaa C News. Jest on regularnie czyszczony
przez newsdaily. Kopie starych plikw log s przechowywane w log.o, log.oo itp.

382

Rozdzia 21: C News

errlog
Jest to zapis wszystkich komunikatw bdw wystpujcych w C News. Nie zawieraj one zapisw na temat artykuw przeniesionych do mieci ze wzgldu
na bdn grup lub inne bdy. Ten plik, o ile nie jest pusty, jest automatycznie
wysyany poczt e-mail do zarzdcy grup (domylnie do uytkownika usenet)
przez program newsdaily.
errlog jest czyszczony przez newsdaily. errlog.o przechowuje kopie starych plikw i tym podobne.
batchlog
Ten plik zawiera zapis wszystkich uruchomie sendbatches i najczciej jest mao
ciekawy. Zwykle jest te obsugiwany przez newsdaily.
watchtime
Jest to pusty plik tworzony przy kadym uruchomieniu newsdaily.

Wiadomoci kontrolne
Protok grup usenetowych rozumie specjaln kategori artykuw, ktre wywouj
pewne odpowiedzi lub dziaania w systemie grup dyskusyjnych. S to tak zwane wiadomoci kontrolne. Ich cech charakterystyczn jest obecno pola Control:
w nagwku artykuu. Zawiera ono nazw dziaania do wykonania. Istnieje kilka
typw dziaa, a wszystkie s obsugiwane przez skrypty powoki umieszczone
w katalogu /usr/lib/news/ctl.
Wikszo z tych wiadomoci wykonuje swoje zadania automatycznie w momencie przetwarzania artykuu przez C News i bez powiadamiania zarzdcy grup. Domylnie tylko wiadomo checkgroups bdzie obsugiwana przez zarzdc, ale
moesz to zmieni edytujc skrypty.

cancel
Najbardziej znan wiadomoci jest cancel, dziki ktrej uytkownik moe anulowa wczeniej wysany artyku. Usuwa ona skutecznie artyku z katalogw bufora,
jeeli tam istnieje. Wiadomo cancel jest przekazywana do wszystkich orodkw,
ktre odebray wiadomo w danej grupie, bez wzgldu na to, czy artyku by ju
czytany. Istnieje ryzyko, e wiadomo ta przyjdzie wczeniej, ni artyku do anulowania . Niektre systemy grup pozwalaj uytkownikom anulowa wiadomoci innych osb.

newgroup i rmgroup
Dwie wiadomoci suce do tworzenia i usuwania grup to newgroup i rmgroup.
Grupy w zwykych hierarchiach mog by tworzone jedynie po uzgodnieniu
i gosowaniu przeprowadzonym wrd czytelnikw Usenetu. Reguy dotyczce
hierarchii alt pozwalaj na co zblionego do anarchii. Wicej informacji na ten temat
znajdziesz w artykuach grupy news.announce.newusers i news.announce.newgroups.

Wiadomoci kontrolne

383

Nigdy nie wysyaj samodzielnie wiadomoci newgroup i rmgroup, jeeli nie jeste
pewny, czy masz do tego prawo.

checkgroups
Wiadomoci checkgroups s wysyane przez administratora grup w celu synchronizacji plikw active we wszystkich orodkach w sieci Usenet. Na przykad komercyjny dostawca Internetu moe wysa tak wiadomo do orodkw swoich klientw. Raz w miesicu przez moderatora grupy comp.announce.newgroups jest wysyana oficjalna wiadomo checkgroups dla gwnych hierarchii. Jednak jest
ona wysyana jako zwyky artyku, a nie wiadomo kontrolna. Aby wykona operacj checkgroups, zapisz artyku do pliku, powiedzmy /tmp/check, usu cay
pocztek samej wiadomoci kontrolnej i przeka j do skryptu checkgroups za pomoc nastpujcego polecenia:
# su news -c "/usr/lib/news/ctl/checkgroups" < /tmp/check

Twj plik newsgroups zostanie uaktualniony na podstawie nowej listy grup. Dodane
zostan grupy wymienione w pliku localgroups. Stary plik newsgroups zostanie przemianowany na newsgroups.bac. Zauwa, e wysanie wiadomoci lokalnie rzadko
dziaa, poniewa inews, polecenie przyjmujce i wysyajce artykuy od uytkownikw, odmawia przyjcia tak duego artykuu.
Gdyby C News stwierdzi rnice pomidzy checkgroups a plikiem active, wygenerowaby list polece, ktre uaktualniyby twj orodek, i wysaby j do administratora grup dyskusyjnych.
Wynik zwykle wyglda jako tak:
From news Sun Jan 30 16:18:11 1994
Date: Sun, 30 Jan 94 16:18 MET
From: news (News Subsystem)
To: usenet
Subject: Problems with your active file
The following newsgroups are not valid and should be removed.
alt.ascii-art
bionet.molbio.gene-org
comp.windows.x.intriscis
de.answers
You can do this by executing the commands:
/usr/lib/news/maint/delgroup alt.ascii.art
/usr/lib/news/maint/delgroup bionet.molbio.gene-org
/usr/lib/news/maint/delgroup comp.windows.x.intrisics
/usr/lib/news/maint/delgroup de.answers
The following newsgroups were missing.
comp.binaries.cbm
comp.databases.rdb
comp.os.geos
comp.os.gnx
comp.unix.user-friendly
misc.legal.moderated
news.newsites
soc.culture.scientists
talk.politics.crypto
talk.politics.tibet

384

Rozdzia 21: C News

Gdy odbierzesz tego typu wiadomo od swojego systemu grup, nie ufaj jej bezkrytycznie. W zalenoci od tego, kto wysa ci wiadomo checkgroups, moe brakowa kilku grup lub nawet caych hierarchii. Powiniene uwaa przy usuwaniu jakichkolwiek grup. Jeeli dostaniesz informacj, e brakuje jakich grup, ktre powiniene mie u siebie, musisz doda je za pomoc skryptu addgroup. Zachowaj t list
brakujcych grup w pliku i przeka do poniszego skryptu:
#!/bin/sh
#
WHOIAM='whoami'
if [ "$WHOIAM" != "news" ]
then
echo "You must run $0 as user 'news'" >&2
exit 1
fi
#
cd /usr/lib/news
while read group; do
if grep -si "^$group[[:space:]].*moderated" newsgroup; then
mod=m
else
mod=y
fi
/usr/lib/news/maint/addgroup $group $mod
done

sendsys, version i senduuname


Istniej trzy wiadomoci, ktrych mona uy do poznania topologii sieci. S to:
sendsys, version i senduuname. Powoduj one, e C News zwraca do nadawcy
odpowiednio: plik sys, cig znakw zawierajcy wersj oprogramowania oraz wynik polecenia uuname. C News bardzo lakonicznie podchodzi do wiadomoci version, gdy zwraca tylko C.
Nie powiniene uywa tych wiadomoci, jeli nie masz pewnoci, e nie wyjd poza
twoj (regionaln) sie. Odpowiedzi na wiadomo sendsys mog atwo uszkodzi
sie UUCP*.

C News w rodowisku NFS


Prostym sposobem na rozpowszechnianie wiadomoci w sieci lokalnej jest trzymanie wszystkich grup na centralnym hocie i eksportowanie istotnych katalogw
przez NFS, tak by przegldarki mogy skanowa artykuy bezporednio. Nadmiarowo wymagana do odbierania i podziau artykuw na wtki jest znacznie nisza
ni przy protokole NNTP. Z drugiej strony NNTP wygrywa w sieciach heterogenicznych, gdzie hosty znacznie rni si sprztowo lub gdzie uytkownicy nie
maj identycznych kont na maszynie serwera.
Gdy uywasz NFS-a, artykuy wysane do hosta lokalnego musz by przekazane
do komputera centralnego. Inaczej pliki s naraone na niespjno, poniewa zaw*

Nie prbowabym tego w Internecie.

Narzdzia i zadania administracyjne

385

sze istnieje ryzyko powstania wycigw. Moesz take zabezpieczy obszar bufora
grup dyskusyjnych, eksportujc go tylko do odczytu, co take wymaga przekazywania do komputera centralnego.
C News obsuguje tak konfiguracj z komputerem centralnym w sposb przezroczysty dla uytkownika. Gdy wysyasz artyku, twoja przegldarka grup zwykle wywouje inews, by wrzuci artyku do systemu grup. To polecenie sprawdza artyku,
uzupenia nagwek i sprawdza plik server w katalogu /etc/news. Jeeli plik istnieje
i zawiera nazw hosta inn ni nazwa hosta lokalnego, inews jest wywoywany na
tym hocie przez rsh. Poniewa skrypt inews uywa kilku polece i obsuguje pliki C
News, musisz mie lokalnie zainstalowane C News lub zamontowane oprogramowanie z serwera.
Aby wywoanie rsh dziaao poprawnie, kady uytkownik, ktry wysya wiadomoci, musi mie takie samo konto na serwerze, to znaczy takie, na ktre moe si zalogowa bez hasa.
Sprawd, czy nazwa hosta wpisana w pliku server jest identyczna z wynikiem polecenia hostname na serwerze. Jeli nie C News bdzie w nieskoczono prbowa
dostarczy artyku. NFS omawiamy szczegowo w rozdziale 14, Sieciowy system plikw.

Narzdzia i zadania administracyjne


Pomimo zoonoci C News, ycie administratora grup moe by cakiem przyjemne. C News posiada bowiem szereg narzdzi administracyjnych. Niektre z nich s
pomylane do regularnego uruchamiania z crona, podobnie jak newsdaily. Skrypty te
wyrczaj ci w wielu codziennych zadaniach administracyjnych.
Jeeli nie powiedziano inaczej, te polecenia administracyjne znajduj si w katalogu
/usr/lib/news/maint*:
newsdaily
Nazwa mwi sama za siebie: uruchom raz dziennie. Jest to wany skrypt, ktry
pomaga ci utrzyma mae rozmiary plikw log, pozostawiajc kopi kadego
z nich z trzech ostatnich przebiegw. Prbuje take wykry nieprawidowoci
takie, jak stare wsady w katalogach przychodzcych i wychodzcych, wysyanie
do nieznanych lub moderowanych grup itp. Zwracane komunikaty bdw s
wysyane do administratora grup.
newswatch
Ten skrypt powinien by uruchamiany regularnie, co godzin, w celu wyszukiwania nieprawidowoci w systemie grup. Suy on do wykrywania problemw,
ktre maj natychmiastowy wpyw na dziaanie twojego systemu grup. Sprawdza stare pliki blokujce, ktre nie zostay usunite, nie obsuone wsady i miejsce na dysku twardym. Jeli newswatch wykryje problem, wysya informacj do
administratora grup.
*

Zauwa, e musisz by uytkownikiem news, zanim wywoasz te polecenia. Uruchomienie ich


z powoki superuytkownika moe spowodowa, e krytyczne pliki stan si niedostpne dla C News.

386

Rozdzia 21: C News

addgroup
Ten skrypt dodaje lokalnie grup do twojego orodka. Poprawne wywoanie to:
addgroup nazwagrupy y|n|m=rzeczywistagrupa

Drugi argument odpowiada znacznikowi w pliku active, czyli kady moe


wysya do grupy (y), nikt nie moe wysya (n) i jest to grupa moderowana (m)
lub e jest to alias do innej grupy (=rzeczywistagrupa). Moesz take uywa
addgroup, gdy pierwszy artyku do nowo utworzonej grupy przyjdzie wczeniej
ni wiadomo kontrolna newgroup, ktra ma za zadanie t grup utworzy.
delgroup
Ten skrypt pozwala na usunicie lokalne grupy. Wywoanie jest nastpujce:
delgroup nazwagrupy

Nieustannie musisz usuwa artykuy, ktre pozostaj w katalogu buforowym


grupy. Ewentualnie moesz pozostawi je naturalnej kolei rzeczy (to znaczy do
wyganicia czasu ich przechowywania).
addmissing
Ten skrypt dodaje brakujce artykuy do pliku history. Uruchom go, gdy istniej
artykuy, ktre wydaj si zalega od zawsze.
newsboot
Ten skrypt powinien by uruchamiany w czasie inicjacji systemu. Usuwa
wszelkie pliki blokujce pozostae przy unicestwianiu procesw i zamyka oraz
uruchamia wszelkie pozostae wsady z pocze NNTP, ktre zostay przerwane
przez zamknicie systemu.
newsrunning
Ten skrypt znajduje si w katalogu /usr/lib/news/input i moe by uyty do zablokowania rozpakowywania wsadw przychodzcych wiadomoci, na przykad
w czasie godzin pracy. Moesz wyczy rozpakowywanie wsadw wywoujc:
/usr/lib/news/input/newsrunning off

Wcza si je, uywajc on zamiast off.

22

NNTP i demon nntpd


Rozdzia 22: NNTP i demon nntpd

Protok przesyania wiadomoci w sieci Usenet, NNTP (Network News Transfer Protocol), reprezentuje zupenie odmienne podejcie do wymiany grup dyskusyjnych,
ni C News i inne serwery grup bez wbudowanej obsugi NNTP. Do przesyania artykuw pomidzy maszynami nie korzysta z technologii wsadowej charakterystycznej dla UUCP, ale pozwala wymienia artykuy przez interaktywne poczenie
sieciowe. NNTP nie jest pakietem oprogramowania, ale standardem internetowym
opisanym w RFC-977. Korzysta z pocze strumieniowych, zwykle dziaajcych
w oparciu o TCP pomidzy klientem w sieci a serwerem, ktry przechowuje grupy
na swoim dysku lokalnym. Poczenie strumieniowe pozwala klientowi i serwerowi
na interaktywne negocjowanie przesyania artykuw prawie bez opnie,
za czym idzie may stopie ich dublowania. Jeli uwzgldnimy jeszcze wysok przepustowo Internetu, otrzymujemy rozwizanie znacznie przewyszajce moliwoci dotychczasowego UUCP. Cho jeszcze kilka lat temu nie byo niczym niezwykym, e artyku szed dwa tygodnie lub duej, zanim dotar na drugi koniec
sieci Usenet, to teraz trwa to zwykle krcej ni dwa dni. W samym Internecie s to
nawet minuty.
Rne polecenia pozwalaj klientom odbiera, wysya i umieszcza w grupie artykuy. Rnica pomidzy wysyaniem a umieszczaniem w grupie polega na tym, e
umieszczanie dotyczy artykuw, ktre mog mie niepene informacje w nagwku. Oglnie oznacza to, e uytkownik po prostu napisa artyku*. Artykuy mog
by pobierane zarwno przez klientw przesyajcych wiadomoci, jak i przez
przegldarki grup dyskusyjnych. Dlatego NNTP jest idealnym narzdziem, ktre
daje dostp do grup wielu klientom w sieci lokalnej, bez gimnastyki cechujcej korzystanie z NFS-a.
NNTP zapewnia take czynny i bierny sposb przesyania grup, potocznie zwany
wciskaniem i ciganiem. Wciskanie w zasadzie przypomina protok ihave/
sendme uywany przez C News (opisany w rozdziale 21, C News). Klient oferuje arty*

Przy umieszczaniu artykuu przez NNTP, serwer zawsze dodaje przynajmniej jedno pole nagwka
NNTP-Posting-Host:. Pole to zawiera nazw hosta klienta.

388

Rozdzia 22: NNTP i demon nntpd

ku serwerowi poprzez polecenie IHAVE msgid, a serwer zwraca w odpowiedzi kod,


ktry mwi, czy ma ju ten artyku lub czy te go chce. Jeeli serwer chce artyku,
klient wysya go, koczc tekst wierszem zawierajcym jedynie kropk.
Wciskanie wiadomoci ma jedn wad obcia serwer poniewa system musi
przeszukiwa baz historii dla kadego pojedynczego artykuu.
Druga technika, ciganie wiadomoci, polega na tym, e klient prosi o list wszystkich (dostpnych) artykuw z grup, ktre dotary w jakim dniu. To zapytanie jest
realizowane przez polecenie NEWNEWS. Ze zwrconej listy ID wiadomoci klient
wybiera te numery, ktrych mu jeszcze brakuje, wydajc dla kadego z nich polecenie ARTICLE.
ciganie grup wymaga od serwera cisego kontrolowania, ktre grupy i dystrybucje
pozwala ciga klientowi. Na przykad musi zagwarantowa, e adne tajne materiay z grup lokalnych dla danego orodka nie zostan wysane do nieautoryzowanych klientw.
Istnieje te kilka polece wygodnych dla przegldarek grup. Za ich pomoc
moe odbiera oddzielnie nagwek i tre artykuu lub nawet pojedyncze wiersze
nagwka z zadanego zakresu artykuw. Pozwala to trzyma wszystkie grupy
na hocie centralnym i mie uytkownikw w sieci (przypuszczalnie lokalnej), ktrzy za pomoc klienta NNTP czytaj je i wysyaj. Jest to rozwizanie alternatywne
do eksportowania katalogw z grupami przez NFS, co zostao opisane w rozdziale 21.
Mankamentem NNTP jest to, e znajcej si na rzeczy osobie protok ten umoliwia
wstawienie w strumie grup artykuu z faszyw informacj o nadawcy. Nazywa si
to faszowaniem (ang. news faking) lub podszywaniem (ang. spoofing)*. Rozszerzenie
NNTP pozwala na uwierzytelnianie uytkownikw przy pewnych poleceniach, co
jako zabezpiecza przed naduywaniem twojego serwera grup dyskusyjnych.
Istnieje szereg pakietw NNTP. Jednym z bardziej popularnych jest demon NNTP,
znany take jako implementacja wzorcowa (ang. reference implementation). Zosta napisany przez Stana Barbera i Phila Lapsleya jako ilustracja RFC-977. Podobnie jak wikszo dobrego oprogramowania, tak i ten pakiet moesz obecnie znale w swojej
dystrybucji Linuksa. Moesz te pobra jego kod rdowy i skompilowa samodzielnie pod warunkiem, e na tyle dobrze znasz swoj dystrybucj Linuksa, by poprawnie skonfigurowa wszelkie cieki do plikw.
Pakiet nntpd zawiera serwer, dwa klienty cigajce i wciskajce wiadomoci oraz
zamiennik dla inews. Dziaaj one w rodowisku B News, ale po niewielkich zmianach bd take dziaa z C News. Jednak, jeeli planujesz uywa NNTP nie tylko
do udostpniania grup dyskusyjnych na twoim serwerze, implementacja wzorcowa
nie jest dobrym wyborem. Dlatego omwimy tylko demona NNTP zawartego w pakiecie nntpd, a programy klienckie pozostawimy w spokoju.

Ten sam problem wystpuje w protokole SMTP, cho obecnie wikszo agentw transportowych
poczty posiada mechanizm zapobiegajcy podszywaniu.

Protok NNTP

389

Gdyby chcia uruchomi duy orodek grup dyskusyjnych, powiniene zainteresowa si pakietem InterNet News, inaczej INN, napisanym przez Richa Salza. Zapewnia on transport grup zarwno przez NNTP, jak i UUCP, co jest zdecydowanie lepsze ni nntpd. INN omawiamy szczegowo w rozdziale 23, Internet News.

Protok NNTP
Wspomnielimy o dwch poleceniach, ktre decyduj o tym, jak artykuy s wciskane lub cigane pomidzy serwerami. Teraz przyjrzymy si im w kontekcie rzeczywistej sesji NNTP, a przekonasz si, jak prosty jest ten protok. Uyjemy prostego
klienta telnet, za pomoc ktrego podczymy si do serwera opartego na INN,
dziaajcego w browarze wirtualnym pod adresem news.vbrew.com. eby nie
wydua niepotrzebnie przykadu, serwer dziaa w minimalnej konfiguracji. Pen
konfiguracj tego serwera poznamy w rozdziale 23. W naszych testach bdziemy
bardzo ostroni i wygenerujemy artykuy do grupy junk, eby nie zakca innym
spokoju.

Podczanie si do serwera grup


Podczanie si do serwera polega na otwarciu poczenia TCP do jego portu NNTP.
Gdy jeste podczony, pojawi si baner powitalny. Jednym z pierwszych polece,
jakie moesz wyprbowa jest help. Odpowied na nie przewanie zaley od tego,
czy serwer widzi ci jako zdalny serwer NNTP, czy jako przegldark grup. Udostpnia wtedy rne zestawy polece. Swj tryb dziaania moesz zmieni, wydajc
polecenie mode. Przyjrzymy si mu za chwil.
$ telnet news.vbrew.com nntp
Trying 172.16.1.1...
Connected to localhost.
Escape character is '^]'.
200 news.vbrew.com InterNetNews server INN 1.7.2 08-Dec-1997 ready
help
100 Legal commands
authinfo
help
ihave
check
takethis
list
mode
xmode
quit
head
stat
xbatch
xpath
xreplic
For more information, contact "usenet" at this machine.
.

Odpowiedzi na polecenia NNTP zawsze kocz si kropk (.) w oddzielnym wierszu. Liczby, ktre widzisz w wyniku, to kody odpowiedzi uywane przez serwer do

390

Rozdzia 22: NNTP i demon nntpd

wskazania, czy polecenie zostao wykonane poprawnie, czy bdnie. Kody odpowiedzi s opisane w RFC-977. Najwaniejsze z nich omwimy dalej.

Wciskanie artykuu do serwera


Przy omawianiu wciskania artykuw do serwera, wspomnielimy o poleceniu
IHAVE. Przyjrzyjmy si teraz, jak w rzeczywistoci dziaa to polecenie:
ihave <123456@gw.vk2ktj.ampr.org>
335
From: terry@gw.vk2ktj.ampr.org
Subject: test message sent with ihave
Newsgroups: junk
Distribution: world
Path: gw.vk2ktj.ampr.org
Date: 26 April 1999
Message-ID: <123456@gw.vk2ktj.ampr.org>
Body:
This is a test message sent using the NNTP IHAVE command.
.
235

We wszystkich poleceniach NNTP nieistotna jest pisownia, a wic moesz uywa


zarwno maych, jak i duych liter. Polecenie IHAVE przyjmuje jeden obowizkowy
argument ID wiadomoci, ktra jest wciskana. Kademu artykuowi w czasie jego
tworzenia jest przypisywany unikatowy numer ID. Polecenie IHAVE stanowi sposb na powiedzenie przez serwer NNTP, ktre artykuy posiada i ktre chce wrzuci
do innego serwera. Serwer wysyajcy wydaje polecenie IHAVE dla kadego artykuu, ktry chce wrzuci. Jeeli kod odpowiedzi na polecenie wygenerowany przez
odbierajcy serwer NNTP jest z zakresu 3xx, wysyajcy serwer NNTP przele
peny artyku, wcznie z jego nagwkiem, zakoczy go kropk w oddzielnym
wierszu. Jeeli kod odpowiedzi naley do zakresu 4xx, serwer odbierajcy nie
przyjmie tego artykuu, prawdopodobnie dlatego, e go ma lub z innego powodu,
na przykad mogo mu zabrakn miejsca na dysku.
Jeli artyku zosta przesany, serwer odbierajcy zwraca inny kod odpowiedzi, mwicy, czy przesanie artykuu zakoczyo si poprawnie.

Przejcie do trybu czytania NNRP


Przegldarki grup uywaj do komunikacji z serwerem wasnego zestawu polece.
Aby je uaktywni, serwer musi by w trybie czytania. Wikszo serwerw grup dyskusyjnych domylnie jest w trybie czytania, chyba e adres IP podczajcego si hosta znajduje si na licie partnerw do przekazywania grup. W kadym razie NNTP
posiada polecenie jawnie przeczajce serwer do trybu czytania:
mode reader
200 news.vbrew.com InterNetNews NNRP server INN 1.7.2 08-Dec-1997 ready/(posting ok).
help
100 Legal commands
authinfo user Name|pass Password|generic <prog> <args>
article [MessageID|Number]

Protok NNTP

391

body [MessageID|Number]
date
group newsgroup
head [MessageID|Number]
help
ihave
last
list [active|active.times|newsgroups|distributions|distrib.pats|/
overview.fmt|subscriptions]
listgroup newsgroup
mode reader
newgroups yymmdd hhmmss ["GMT"] [<distributions>]
newnews newsgroups yymmddhhmmss ["GMT"] [<distributions>]
next
post
slave
stat [MessageID|Number]
xgtitle [group_pattern]
xhdr header [range|MessageID]
xover [range]
xpat header range|MessageID pat [morepat...]
xpath MessageID
Report problems to <usenet@vlager.vbrew.com>
.

Tryb czytania udostpnia szereg polece. Wiele z nich ma uatwi ycie przegldarkom grup dyskusyjnych. Wspomnielimy wczeniej, e istniej polecenia mwice
serwerowi, by oddzielnie wysya nagwek i tre artykuu. Istniej rwnie polecenia pokazujce list dostpnych grup i artykuw oraz takie, ktre pozwalaj
umieszcza artykuy, czyli wysya je w alternatywny sposb do serwera.

Listowanie dostpnych grup


Polecenie list pokazuje szereg informacji rnego typu. Przede wszystkim jednak list grup obsugiwanych przez serwer:
list newsgroups
215 Descriptions in form "group description".
control
News server internal group
junk
News server internal group
local.general General local stuff
local.test
Local test group
.

Listowanie aktywnych grup


Polecenie list active pokazuje wszystkie obsugiwane grupy i podaje informacje na ich
temat. Dwie liczby w kadym wierszu wyniku to grny i dolny znacznik, czyli najwyszy i najniszy numer artykuu w kadej grupie. Na ich podstawie przegldarka
moe oszacowa liczb artykuw w grupie. Nieco wicej o tych numerach powiemy
za chwil. Ostatnie pole zawiera znaczniki, ktre kontroluj, czy wysyanie do grupy
jest dozwolone, czy grupa jest moderowana i czy wysyane artykuy s rzeczywicie
zapisywane, czy jedynie przekazywane. Znaczniki te s opisane szczegowo w rozdziale 23. Oto przykad:

392

Rozdzia 22: NNTP i demon nntpd

list active
215 Newsgroups in form "group high low flags".
control 0000000000 0000000001 y
junk 0000000003 0000000001 y
alt.test 0000000000 0000000001 y
.

Wysyanie artykuu
Wspomnielimy, e istnieje rnica pomidzy wysyaniem artykuu a jego wciskaniem. Przy wciskaniu po cichu zakada si, e artyku ju istnieje, to znaczy, e ma
unikatowy identyfikator wiadomoci, ktry zosta mu unikatowo przypisany przez
serwer, do ktrego zosta pierwotnie wysany i e ma peny zestaw nagwkw. Gdy
wysyasz artyku, tworzysz go po raz pierwszy i podajesz tylko istotne dla ciebie
nagwki, jak temat (Subject) i grupy dyskusyjne (Newsgroups), do ktrych wysyasz artyku. Serwer grup dyskusyjnych, do ktrego wysyasz artyku, doda
wszystkie pozostae nagwki i stworzy identyfikator wiadomoci, ktry bdzie
uywany przy umieszczaniu artykuu (wciskaniu) na innych serwerach.
Wszystko to oznacza, e wysyanie artykuu jest prostsze, ni jego wciskanie. Przykad wysyania moe wyglda tak:
post
340 Ok
From: terry@richard.geek.org.au
Subject: test message number 1
Newsgroups: junk
Body:
This is a test message, please feel free to ignore it.
.
240 Article posted

Wygenerowalimy jeszcze dwa takie artykuy, by naszym przykadom nada cechy


prawdopodobiestwa.

Listowanie nowych artykuw


Gdy przegldarka po raz pierwszy czy si z nowym serwerem i uytkownik wybiera grupy, ktre chce przeglda, przegldarka bdzie chciaa pobra list nowych
artykuw tych, ktre zostay wysane lub odebrane od ostatniego poczenia uytkownika. Do tego celu jest uywane polecenie newnews. Musisz poda trzy obowizkowe argumenty: nazw grupy lub grup, dat pocztkow i godzin, od ktrej
ma by pobierana lista. Data i czas s podawane w postaci liczb szeciocyfrowych,
gdzie najbardziej znaczca informacja musi by podana jako pierwsza, odpowiednio: rrmmdd i ggmmss.
newnews junk 990101 000000
230 New News follows
<7g2o5r$aa$6@news.vbrew.com>
<7g5bhm$8f$2@news.vbrew.com>
<7g5bk5$8f$3@news.vbrew.com>
.

Protok NNTP

393

Wybr grupy, na ktrej maj by wykonywane operacje


Gdy uytkownik wybierze grup do przegldania, przegldarka moe poinformowa serwer, e grupa zostaa wybrana. Upraszcza to wspdziaanie przegldarki
i serwera, poniewa nie trzeba ju wtedy wysya nazwy grupy przy kadym poleceniu. Polecenie group po prostu przyjmuje jako argument nazw wybranej grupy.
Wiele dalszych polece uywa wybranej nazwy jako domylnej, dopki grupa nie
zostanie podana jawnie.
group junk
211 3 1 3 junk

Polecenie group zwraca wiadomo zawierajc odpowiednio: liczb aktywnych


wiadomoci, dolny znacznik, grny znacznik i nazw grupy. Zapamitaj, e cho
w naszym przykadzie liczba wiadomoci i grny znacznik maj t sam warto, to
nie zawsze tak jest. W aktywnym serwerze grup artykuy wygasaj lub s usuwane,
co zmniejsza liczb aktywnych wiadomoci, ale grny znacznik pozostaje nietknity.

Listowanie artykuw w grupie


Aby dosta si do artykuw w grupie, przegldarka musi zna numery artykuw
aktywnych. Polecenie listgroup daje list numerw aktywnych artykuw w biecej
lub jawnie podanej grupie:
listgroup junk
211 Article list follows
1
2
3
.

Pobieranie jedynie nagwka artykuu


Uytkownik musi co wiedzie o artykule, aby mg zdecydowa, czy chce go przeczyta. Wspomnielimy wczeniej, e niektre polecenia pozwalaj przesya oddzielnie nagwek i tre artykuu. Polecenie head jest uywane do przesyania do
przegldarki jedynie nagwka zadanego artykuu. Jeeli uytkownik nie chce czyta tego artykuu, nie marnujemy czasu ani przepustowoci sieci na niepotrzebne
przesyanie jego treci, ktra moe by dua.
Do artykuw mona si odwoywa przez ich numer (uzyskany poleceniem listgroup) lub przez identyfikator wiadomoci:
head 2
221 2 <7g5bhm$8f$2@news.vbrew.com> head
Path: news.vbrew.com!not-for-mail
From: terry@richard.geek.org.au
Newsgroups: junk
Subject: test message number 2
Date: 27 Apr 1999 21:51:50 GMT
Organization: The Virtual brewery
Lines: 2
Message-ID: <7g5bhm$8f$2@news.vbrew.com>
NNTP-Posting-Host: localhost
X-Server-Date: 27 Apr 1999 21:51:50 GMT

394

Rozdzia 22: NNTP i demon nntpd

Body:
Xref: news.vbrew.com junk:2
.

Pobieranie jedynie treci artykuu


Jeeli jednak uytkownik zdecyduje si, e chce przeczyta artyku, przegldarka
potrzebuje sposobu na przesanie samej jego treci. Do tego celu jest uywane polecenie body. Dziaa w ten sam sposb co head, ale zwracana jest tre artykuu:
body 2
222 2 <7g5bhm$8f$2@news.vbrew.com> body
This is another test message, please feel free to ignore it too.
.

Czytanie artykuu z grupy


Cho zwykle bardziej efektywne jest oddzielne przesyanie nagwkw i treci wybranych artykuw, czasem zdarza si, e lepiej jest przesa peny artyku. Jednym
z przykadw takiego zastosowania jest ch przesania wszystkich artykuw bez
adnej wstpnej selekcji, czyli na przykad gdy uywamy programu pamici
podrcznej NNTP jak leafnode*.
Oczywicie NNTP pozwala na takie przesyanie i co nie jest zaskoczeniem, dziaa
ono tak samo dobrze jak polecenie head. Polecenie article take przyjmuje numer artykuu lub ID wiadomoci, ale zwraca cay artyku wcznie z nagwkiem:
article 1
220 1 <7g2o5r$aa$6@news.vbrew.com> article
Path: news.vbrew.com!not-for-mail
From: terry@richard.geek.org.au
Newsgroups: junk
Subject: test message number 1
Date: 26 Apr 1999 22:08:59 GMT
Organization: The Virtual brewery
Lines: 2
Message-ID: <7g2o5r$aa$6@news.vbrew.co>
NNTP-Posting-Host: localhost
X-Server-Date: 26 Apr 1999 22:08:59 GMT
Body:
Xref: news.vbrew.com junk:1
This is a test message, please feel free to ignore it.
.

Jeeli sprbujesz pobra nieznany artyku, serwer zwrci ci go wraz z odpowiednim


kodem odpowiedzi i by moe czytelnym komunikatem tekstowym:
article 4
423 Bad article number

W tym podrozdziale omwilimy, jak dziaaj najwaniejsze polecenia NNTP. Jeeli


interesuje ci tworzenie oprogramowania wykorzystujcego ten protok, powiniene
*

leafnode jest dostpny z anonimowego serwera FTP wpxx02.toxi.uni-wuerzburg.de w katalogu /pub.

Ograniczanie dostpu NNTP

395

skorzysta z odpowiednich dokumentw RFC. Zawieraj one wiele szczegw, ktrych nie moemy tutaj opisa.
Przyjrzyjmy si teraz jak NNTP dziaa w serwerze nntpd.

Instalowanie serwera NNTP


Serwer NNTP (nntpd) moe by skompilowany na dwa sposoby, w zalenoci od
oczekiwanego obcienia systemu grup. Nie s dostpne wersje skompilowane, poniewa pewne wartoci zwizane z orodkiem s na sztywno zaszyte w kodzie wykonywalnym. Caa konfiguracja jest realizowana przez makra zdefiniowane w pliku
common/conf.h.
nntpd mona konfigurowa zarwno jako samodzielny serwer uruchamiany w czasie inicjacji systemu z pliku rc, jak i jako demona zarzdzanego przez inetd. W tym
drugim przypadku musisz mie w pliku /etc/inetd.conf nastpujcy wpis:
nntp stream tcp nowait news /usr/etc/in.nntpd nntpd

Skadnia inetd.conf jest szczegowo opisana w rozdziale 12, Wane funkcje sieciowe.
Jeeli konfigurujesz nntpd jako samodzielny serwer, pamitaj, aby zakomentowa
odpowiedni wiersz w pliku inetd.conf. W obu przypadkach pamitaj, by w /etc/services pojawi si nastpujcy wiersz:
nntp

119/tcp readnews untp # Network News Transfer Protocol

Aby tymczasowo zapisa jakie artykuy przychodzce, nntpd potrzebuje katalogu


.tmp w twoim katalogu buforowym grup dyskusyjnych. Powiniene go stworzy,
uywajc poniszych polece:
# mkdir /var/spool/news/.tmp
# chown news.news /var/spool/news/.tmp

Ograniczanie dostpu NNTP


Dostp do zasobw NNTP jest zarzdzany przez plik nntp_access znajdujcy si
w katalogu /etc/news. Wiersze tego pliku opisuj prawa dostpu udzielane obcym
hostom. Kady wiersz ma nastpujcy format:
orodek

read|xfer|both|no

post|no

[!bezgrup]

Jeeli klient czy si z portem NNTP, nntpd prbuje uzyska jego pen nazw domenow na podstawie adresu IP. Nazwa hosta klienta i jego adres IP s sprawdzane
z polem orodek kadego wpisu w kolejnoci, w jakiej pojawiaj si w pliku. Dopasowanie moe by pene lub czciowe. Jeeli wpis pasuje dokadnie, jest realizowany. Jeeli dopasowanie jest czciowe, zadziaa tylko wtedy, gdy nie ma innych,
lepszych (lub przynajmniej rwnie dobrych) dopasowa. orodek moe by podany w jednej z nastpujcych postaci:
Nazwa hosta
Jest to pena nazwa domenowa hosta. Jeeli jest w peni zgodna z nazw kanoniczn hosta klienta, wpis jest stosowany, a wszystkie nastpne s zignorowane.

396

Rozdzia 22: NNTP i demon nntpd

Adres IP
Jest to adres IP zapisany w postaci liczbowej. Jeeli adres klienta jest z nim zgodny, wpis jest stosowany, a wszystkie nastpne s zignorowane.
Nazwa domeny
Jest to nazwa domeny podana w postaci *.domena. Jeeli jest zgodna z nazw
domeny klienta, wpis jest stosowany.
Nazwa sieci
Jest to nazwa sieci zgodna z opisem w pliku /etc/networks. Jeeli numer IP klienta
pasuje do numeru sieci zwizanego z nazw sieci, wpis jest stosowany.
Warto domylna
Do cigu default pasuje dowolny klient.
Wpisy z bardziej ogln specyfikacj orodka powinny by podane wczeniej, poniewa wszelkie dopasowania zostan zastpione dokadniejszymi dopasowaniami
wystpujcymi dalej.
Drugie i trzecie pole opisuj prawa dostpu udzielone klientowi. Drugie pole opisuje
szczegowe prawa niezbdne do pobrania artykuu przez cignicie (read) i jego
wrzucenie przez wcinicie (xfer). Warto both zawiera oba poprzednie, a no
oznacza cakowity zakaz dostpu. Trzecie pole daje klientowi prawo do wysyania
artykuw, czyli do ich umieszczania bez penej informacji w nagwku, ktra jest
uzupeniana przez oprogramowanie do obsugi grup. Jeeli drugie pole zawiera no,
trzecie pole jest ignorowane.
Czwarte pole jest opcjonalne i zawiera oddzielan przecinkami list grup, do ktrych klient nie ma dostpu.
Oto przykadowy plik nntp_access:
#
# domylnie kady moe przesya artykuy, ale nie kady moe
# je czyta lub pisa nowe
default
xfer
no
#
# public.vbrew.com oferuje dostp przez modem. Pozwalamy na
# czytanie i wysyanie artykuw do wszystkich grup poza
# local.*
public.vbrew.com
read
post
!local
#
# wszystkie pozostae hosty w browarze mog czyta i wysya
*.vbrew.com
read
post

Autoryzacja NNTP
Demon nntpd oferuje prosty schemat autoryzacji. Jeeli jakie leksemy opisujce dostp w pliku nntp_access napiszesz duymi literami, nntpd zada autoryzacji klienta dla danej operacji. Na przykad, gdyby zapisa prawa dostpu jako Xfer XFER
(zamiast xfer), nntpd nie pozwoliby klientowi przesa artykuw bez autoryzacji.
Procedura autoryzacji jest zaimplementowana przez nowe polecenie NNTP: AUTHINFO. W tym poleceniu klient przesya nazw uytkownika i haso do serwera

Wsppraca nntpd z C News

397

NNTP. Demon nntpd sprawdza je z plikiem /etc/passwd, aby dowiedzie si, czy
uytkownik naley do grupy nntp.
Aktualna implementacja autoryzacji NNTP ma charakter eksperymentalny i dlatego
nie zostaa zaimplementowana jako przenona. Dziaa wic tylko z baz czystych
hase hasa shadow nie s rozpoznawane. Jeeli kompilujesz rda i masz zainstalowany pakiet PAM, bardzo atwo zmieni procedur sprawdzania hase.

Wsppraca nntpd z C News


Gdy nntpd odbierze artyku, musi go dostarczy do podsystemu grup. W zalenoci
od tego, czy zosta on odebrany poleceniem IHAVE czy POST, jest przekazywany odpowiednio do rnews lub inews. Zamiast wywoywa rnews, moesz take skonfigurowa (w czasie kompilacji) wywoywanie przetwarzania wsadowego przychodzcych
artykuw i przenosi uzyskane wsady do katalogu /var/spool/news/in.coming, gdzie
oczekuj na pobranie przez relaynews przy nastpnym przebiegu kolejki.
nntpd musi mie dostp do pliku history, by mc poprawnie obsugiwa protok
ihave/sendme. W czasie kompilacji musisz poda dokadn ciek do tego pliku. Jeeli uywasz C News, sprawd, czy C News i nntpd s zgodne co do formatu pliku
historii. C News przy dostpie uywa funkcji mieszajcej dbm. Jednak istnieje szereg
rnych, niezbyt kompatybilnych implementacji biblioteki dbm. Jeeli C News zosta
skonsolidowany z jak inn wersj biblioteki dbm, ktra nie jest zgodna z wersj
znajdujca si w twojej standardowej bibliotece libc, musisz skonsolidowa nntpd
z t sam bibliotek.
Niezgodnoci pomidzy nntpd i C News s czasem powodem generowania komunikatw o bdach w logu systemowym, mwicych o tym, e nntpd nie moe go poprawnie otworzy. Moe si te zdarzy, e zobaczysz podwjne artykuy odebrane
przez NNTP. Dobrym testem na bdne funkcjonowanie przesyania grup jest pobranie artykuu z obszaru buforowego, wykonanie telnet na port nntp i zaoferowanie go nntpd zgodnie z tym, co pokazano w przykadzie poniej. Oczywicie musisz
zastpi msg@id ID wiadomoci, ktr chcesz przekaza do nntpd:
$ telnet localhost nntp
Trying 127.0.0.1...
Connected to localhost
Escape characeters is '^]'.
201 vstout NNTP[auth] server version 1.5.11t (16 November 1991) ready at Sun
Feb 6 16:02:32 1194 (no posting)
IHAVE msg@id
435 Got it.
QUIT

Ta konwersacja pokazuje poprawn reakcj nntpd. Komunikat Got It mwi, e artyku ju istnieje. Gdyby zamiast niego dosta komunikat 335 Ok, oznaczaoby to, e
przeszukiwanie pliku historii z jakiego powodu si nie powiodo. Zakocz konwersacj wpisujc [Ctrl+D]. W logu systemowym moesz sprawdzi, co poszo le.
nntpd zapisuje do logu wszelkie komunikaty, uywajc funkcji syslog: daemon.
Niekompatybilna biblioteka dbm zwykle sama zgasza komunikat mwicy,
e wywoanie dbminit si nie powiodo.

Internet News

23

Rozdzia 23: Internet News

Demon Internet News (INN) jest prawdopodobnie najpopularniejszym z obecnie


uywanych serwerw grup dyskusyjnych. Jest bardzo elastyczny i odpowiedni dla
wszystkich orodkw udostpniajcych grupy, moe poza najmniejszymi*. INN doskonale si skaluje i jest przystosowany do duych orodkw grup dyskusyjnych.
Serwer INN skada si z szeregu elementw, z ktrych kady ma wasne pliki konfiguracyjne. Omwimy je wszystkie kolejno. Konfiguracja INN-a moe by nieco absorbujca, ale w tym rozdziale opiszemy wszystkie etapy i podamy wystarczajco
duo informacji, by mg zrozumie strony podrcznika INN i jego dokumentacj
oraz stworzy konfiguracje dla dowolnych zastosowa.

Pewne tajniki wewntrzne INN-a


Rdzeniem INN-a jest demon innd. Jego zadaniem jest obsuga wszystkich przychodzcych artykuw, zachowywanie ich lokalnie i dalsze przekazywanie, o ile jest
taka potrzeba. Jest uruchamiany w czasie inicjacji systemu i dziaa jako proces w tle.
Dziaanie w trybie demona jest wydajniejsze, poniewa pliki stanu s czytane tylko
raz, przy uruchomieniu. W zalenoci od wielkoci obsugiwanych przez ciebie
grup, pewne pliki, takie jak history (zawierajcy list ostatnio przetworzonych artykuw), mog zajmowa od kilku do kilkudziesiciu megabajtw.
Inn wan funkcj INN-a jest to, e zawsze dziaa tylko jedno jego wcielenie. Ma
to take duy wpyw na wydajno, poniewa demon moe przetwarza wszystkie artykuy bez martwienia si o synchronizacj stanw wewntrznych z innymi
*

Dla bardzo maych orodkw lepiej nadaje si program pamici podrcznej NNTP, jak leafnode, dostpny pod adresem http://wpxx02.toxi.uni-wuerzburg.de/~krasel/leadnode.html.

400

Rozdzia 23: Internet News

kopiami innd dostajcymi si do bufora grup w tym samym czasie. Jednak taka
konstrukcja ma wpyw na caociow architektur systemu grup, poniewa chodzi
o to, aby przychodzce wiadomoci byy przetwarzane tak szybko, jak to moliwe,
i jest nie do przyjcia, by serwer zajmowa si tak przyziemnymi zadaniami, jak
obsuga wiadomoci przychodzcych przez UUCP. Dlatego te zadania zostay oddzielone od gwnego serwera i zaimplementowane w oddzielnych programach
pomocniczych. Rysunek 23-1 prbuje pokaza powizania pomidzy innd a innymi lokalnymi zadaniami, zdalnymi serwerami i przegldarkami grup dyskusyjnych.
Obecnie do przesyania artykuw najczciej suy NNTP, a innd bezporednio
obsuguje tylko ten protok. Oznacza to, e innd oczekuje na gniedzie TCP (port
119) na poczenia i przyjmuje artykuy, uywajc protokou ihave.
Artykuy przybywajce inn drog, ni przez NNTP, s obsugiwane porednio
przez inny proces przyjmujcy artykuy i przekazujcy je do innd przez NNTP. Wsady przychodzce na przykad przez cze UUCP s tradycyjnie obsugiwane przez
program rnews. Wersja tego programu zawarta w pakiecie INN w razie potrzeby dekompresuje wsady i dzieli je na pojedyncze artykuy. Nastpnie po kolei przesya je
do innd.
Przegldarki grup mog dostarcza wiadomoci, gdy uytkownik wyle artyku.
Poniewa obsuga przegldarek zasuguje na specjaln uwag, wrcimy do niej za
chwil.

Serwer grup NNTP

Dane wychodzce
przez NNTP

Przegldarka grup NNTP


Dane
przychodzce
przez NNTP

Sesja NNTP

nntpsend

innxmit

nnrpd

innd

Serwer grup UUCP


Dane
przychodzce
przez UUCP

rnews

/var/spool/news

Rysunek 23-1. Uproszczony schemat architektury INN-a

Przyjmujc artyku, innd najpierw sprawdza jego ID w pliku history. Zduplikowane


artykuy s odrzucane, a ich pojawienie si jest (opcjonalnie) odnotowywane. To sa-

Pewne tajniki wewntrzne INN-a

401

mo dotyczy artykuw, ktre s zbyt stare lub brakuje im wymaganych pl nagwka, takich jak Subject:*. Jeeli innd stwierdzi, e artyku jest do przyjcia, sprawdza wiersz nagwka Newsgroups:, by stwierdzi, do ktrej grupy zosta wysany
artyku. Jeeli w pliku active znajdzie jedn lub wicej grup, artyku jest zapisywany
w postaci pliku na dysku. W przeciwnym razie jest przesyany do specjalnej grupy
junk.
Pojedyncze artykuy s przechowywane w katalogu /var/spool/news, zwanym take
buforem grup. Kada grupa ma oddzielny katalog, w ktrym artyku jest zapisywany
jako oddzielny plik. Nazwy plikw maj posta kolejnych numerw, a wic na
przykad artyku z grupy comp.risks moe by zapisany jako comp/risks/217. Gdy innd
stwierdzi, e nie istnieje katalog, w ktrym trzeba zapisa artyku, automatycznie go
tworzy.
Zapewne zechcesz te przekazywa artykuy dalej, jako dane wychodzce, a nie tylko zapisywa je lokalnie. Zarzdza tym plik newsfeeds, ktry opisuje wszelkie orodki, do ktrych powinny by wysyane artykuy z danej grupy.
Podobnie jak po stronie odbiorczej innd, tak i po stronie wychodzcej, przetwarzanie
jest obsugiwane take przez jeden interfejs. Zamiast samodzielnie obsugiwa
wszelkie specyficzne sposoby transportu, innd opiera si na rnych ukrytych systemach zarzdzajcych przesyaniem artykuw do innych serwerw grup. Grupy
wychodzce s obsugiwane przez kanay. W zalenoci od przeznaczenia kana
moe mie rne atrybuty, okrelajce dokadnie, jakie informacje przekazuje do
niego innd.
W przypadku danych wychodzcych przez NNTP, innd mgby przy uruchamianiu
wywoa program innxmit i przekazywa mu na standardowe wejcie ID, rozmiar
i nazw pliku kadego artykuu, ktry powinien by wysany dalej. Natomiast
w przypadku danych wychodzcych przez UUCP, mgby zapisywa rozmiar artykuu i jego nazw pliku do specjalnego pliku log, ktry byby sprawdzany w regularnych odstpach czasu przez inny proces, ktry tworzyby wsady i kolejkowa je
w podsystemie UUCP.
Poza tymi dwoma przykadami, istniej inne typy kanaw, ktre niekoniecznie dotycz danych wychodzcych. S one uywane na przykad przy archiwizowaniu
pewnych grup lub przy generowaniu informacji przegldowych. Informacje takie
maj pomaga przegldarkom efektywniej dzieli artykuy na wtki. Przegldarki
starego typu musz przeglda kolejno wszystkie artykuy, by uzyska z nagwka
informacje wymagane do podziau na wtki. Obcia to powanie serwer, szczeglnie
jeeli uywasz NNTP. Co wicej jest to bardzo wolne**. Mechanizm informacji pogldowych agodzi ten problem, poniewa zapisuje wstpnie wszystkie istotne
nagwki kadej grupy w oddzielnym pliku (.overview). Pniej przegldarka moe
pobra te informacj albo bezporednio j odczytujc z katalogu bufora, albo wykonujc polecenie XOVER przy poczeniu przez NNTP. Demon innd przekazuje
*

Wiek pokazuje pole nagwka Date:. Ograniczenie zwykle wynosi dwa tygodnie.

** Podzia tysica artykuw na wtki przy komunikacji z obcionym serwerem moe potrwa i 5 minut,
co jest do przyjcia tylko dla naogowcw uzalenionych od Usenetu.

402

Rozdzia 23: Internet News

wszystkie artykuy poleceniu overchan, ktre jest poczone z demonem przez kana.
Dalej, przy okazji omawiania konfiguracji dostarczania grup, zobaczymy, jak to jest
realizowane.

Przegldarki grup dyskusyjnych i INN


Przegldarki grup, dziaajce na tej samej maszynie co serwer (lub majce zamontowany bufor grup serwera przez NFS) mog czyta artykuy bezporednio z katalogw
bufora. W celu wysania artykuu stworzonego przez uytkownika, wywouj program inews, ktry dodaje brakujce pola nagwka i przekazuje go do demona przez
NNTP.
Ewentualnie przegldarki mog dostawa si do serwera zdalnie przez NNTP. Aby
unikn obcienia demona, ten typ poczenia jest obsugiwany inaczej ni dostarczanie grup oparte na NNTP. Gdy przegldarka podczy si do serwera NNTP,
innd tworzy oddzielny program nnrpd obsugujcy sesj, natomiast innd wraca do
robienia waniejszych rzeczy (na przykad odbierania przychodzcych wiadomoci)* . Zastanawiasz si pewnie, jak proces innd rozrnia przychodzce wiadomoci
od podczajcej si przegldarki grup. Odpowied jest prosta: protok NNTP wymaga, by przegldarka oparta na NNTP wysaa polecenie mode reader po poczeniu
si z serwerem. Gdy polecenie to zostanie odebrane, serwer uruchamia nnrpd, przekazuje mu poczenie i powraca do nasuchiwania pocze z innych serwerw
grup. Znana jest przynajmniej jedna przegldarka DOS-owa, ktra nie jest skonfigurowana w ten sposb i nie udaje si jej poczy z INN, poniewa sam innd nie rozpoznaje adnych polece uywanych do czytania grup, jeli nie wie, e poczenie pochodzi od przegldarki.
Nieco wicej o dostpie przegldarki do INN-a powiemy w dalszej czci tego rozdziau: Kontrolowanie dostpu przegldarki.

Instalowanie INN-a
Zanim zagbimy si w konfiguracj INN-a, powiemy troch o jego instalacji. Przeczytaj ten podrozdzia, nawet jeeli zainstalowae ju INN-a z jak dystrybucj
Linuksa. Znajdziesz tu pewne wskazwki dotyczce bezpieczestwa i kompatybilnoci.
Dystrybucje Linuksa od pewnego czasu zawieraj version INN-1.4sec. Niestety ta
wersja wnosi dwa problemy zwizane z bezpieczestwem. Nowsze wersje nie stwarzaj ju tych problemw, a wikszo dystrybucji Linuksa zawiera skompilowane
pliki binarne wersji 2. INN-a (lub nowszych).
Jeeli chcesz, moesz samodzielnie skompilowa INN-a. Kod rdowy mona zdoby z ftp.isc.org z katalogu /isc/inn/. Kompilacja INN-a wymaga edycji pliku konfiguracyjnego, ktry przekazuje INN-owi pewne szczegy na temat systemu operacyjnego i pewnych funkcji, ktre mog wymaga niewielkich modyfikacji.
*

Nazwa programu nnrpd pochodzi od sw NetNews Read & Post Daemon.

Pliki konfiguracyjne INN-a

403

Kompilacja samego pakietu jest prosta. Zawiera on bowiem skrypt BUILD, ktry
przeprowadzi ci przez cay proces. Kod rdowy zawiera take szczegow dokumentacj, mwic, jak zainstalowa i skonfigurowa INN-a.
Po zainstalowaniu wszystkich plikw binarnych, mog by potrzebne pewne rczne
poprawki zapewniajce kompatybilno INN-a z rnymi innymi aplikacjami, ktre
mog wymaga dostpu do programw rnews lub inews. Na przykad UUCP spodziewa si programu rnews w katalogu /usr/bin lub /bin, natomiast INN instaluje go
domylnie w /usr/lib/bin. Sprawd, czy /usr/lib/bin/ jest w domylnej ciece przeszukiwa lub czy istnieje dowizanie symboliczne wskazujce na rzeczywist lokalizacj polece rnews i inews.

Podstawowe konfigurowanie INN-a


Jedn z najwikszych trudnoci, na jak moe natrafi pocztkujcy, jest to, e INN
do poprawnego funkcjonowania wymaga dziaajcej konfiguracji sieciowej, nawet
gdy operuje na samodzielnym hocie. Dlatego trzeba dopilnowa dwch spraw. Po
pierwsze, jdro twojego Linuksa musi obsugiwa sie TCP/IP, gdy chcesz uruchamia INN-a. Po drugie, musisz mie skonfigurowany interfejs ptli zwrotnej, opisany w rozdziale 5, Konfigurowanie sieci TCP/IP.
Nastpnie trzeba sprawdzi, czy innd jest uruchamiany w czasie inicjacji komputera.
Domylna instalacja INN-a zawiera skrypt o nazwie boot w katalogu /etc/news/. Jeeli
twoja dystrybucja uywa pakietu init typu System V, wystarczy, e stworzysz dowizanie symboliczne do pliku /etc/init.d/inn tak, by wskazywao na /etc/news/boot.
W innych wersjach init musisz sprawdzi, czy /etc/news/boot jest uruchamiany z jednego z twoich skryptw rc. Poniewa INN wymaga sieci, skrypt startowy powinien
by uruchamiany po skonfigurowaniu interfejsw sieciowych.

Pliki konfiguracyjne INN-a


Jeeli wykonae te podstawowe zadania, moesz teraz przej do naprawd ciekawej czci INN-a: jego plikw konfiguracyjnych. Wszystkie te pliki znajduj si w
katalogu /etc/news. W plikach konfiguracyjnych wersji 2. zostay wprowadzone
pewne zmiany, a tu opisujemy wanie t wersj. Jeeli pracujesz ze starsz wersj,
ten rozdzia powinien ci pomc w uaktualnieniu konfiguracji. W kilku kolejnych
podrozdziaach omwimy kolejno pliki, tworzc przykadow konfiguracj dla browaru wirtualnego.
Gdyby chcia dowiedzie si wicej na temat funkcji poszczeglnych plikw konfiguracyjnych, moesz take poczyta powicone im strony podrcznika elektronicznego, zawarte w dystrybucji INN-a.

Parametry globalne
Istnieje szereg parametrw, ktre maj znaczenie globalne. Dotycz one wszystkich
grup.

404

Rozdzia 23: Internet News

Plik inn.conf
Gwnym plikiem konfiguracyjnym INN-a jest inn.conf. Midzy innymi okrela on
nazw, pod jak twoja maszyna jest znana w sieci Usenet. Wersja 2. INN-a pozwala
skonfigurowa w tym pliku zdumiewajco wiele parametrw. Na szczcie wikszo ma wartoci domylne, ktre s sensowne dla prawie wszystkich orodkw.
Plik inn.conf(5) opisuje szczegowo wszystkie parametry i powiniene go dokadnie
przeczyta, jeeli napotkasz jakiekolwiek problemy.
Prosty przykadowy plik inn.conf mgby wyglda tak:
# Przykadowy inn.conf dla browaru wirtualnego
server:
vlager.vbrew.com
domain:
vbrew.com
fromhost:
vbrew.com
pathhost:
news.vbrew.com
organization:
The Virtual Brewery
mta:
/usr/sbin/sendmail -oi %s
moderatormailer: %s@uunet.uu.net
#
# cieki do komponentw i plikw INN-a
#
pathnews:
/usr/lib/news
pathbin:
/usr/lib/news/bin
pathfilter:
/usr/lib/news/bin/filter
pathcontrol:
/usr/lib/news/bin/control
pathdb:
/var/lib/news
pathetc:
/etc/news
pathrun:
/var/run/news
pathlog:
/var/log/news
pathhttp:
/var/log/news
pathtmp:
/var/tmp
pathspool:
/var/spool/news
patharticles:
/var/spool/news/articles
pathoverview:
/var/spool/news/overview
pathoutgoing:
/var/spool/news/outgoing
pathincoming:
/var/spool/news/incoming
patharchive:
/var/spool/news/archive
pathuniover:
/var/spool/news/uniover
overviewname:
.overview

Pierwszy wiersz mwi programom rnews i inews, z ktrymi hostami maj si kontaktowa, aby dostarcza artykuy. Ten wpis jest bezwzgldnie konieczny. Aby przekaza artykuy do innd, musi zosta nawizane poczenie NNTP z serwerem.
Sowo kluczowe domain powinno okrela domen penej nazwy domenowej hosta. Kilka programw potrzebuje tej domeny. Jeeli twoja biblioteka resolvera zwraca jedynie nazw hosta, jest do niego doklejana wanie ta domena. Lepiej wic zdefiniowa domain, tym bardziej, e nie jest to trudne.
Nastpny wiersz definiuje nazw hosta, z ktrej korzysta inews, kiedy dodaje pola
From: do artykuw wysanych przez uytkownikw lokalnych. Wikszo
przegldarek grup uywa pola From: do tworzenia odpowiedzi do autora artykuu. Jeeli pominiesz to pole, jego domylna warto zostanie ustalona na podstawie penej nazwy domenowej twojego hosta. Nie zawsze jest to najlepsze rozwizanie. Moe si zdarzy na przykad, e wiadomoci i poczta s obsugiwane przez

Pliki konfiguracyjne INN-a

405

rne hosty. W takiej sytuacji moesz poda pen nazw domenow hosta pocztowego po dyrektywie fromhost.
Wiersz pathhost definiuje nazw hosta INN, ktra jest dodawana do pola Path:
przy odbieraniu artykuu. Zwykle bdziesz chcia uywa penej nazwy domenowej
twojego serwera grup. W takiej sytuacji moesz pomin to pole, poniewa takie jest
ustawienie domylne. Jeeli obsugujesz du domen, zechcesz czasem uy nazwy
oglnej, jak news.vbrew.com. Uatwi ci to przeniesienie systemu grup dyskusyjnych
na innego hosta, jeeli kiedy zajdzie taka potrzeba.
Nastpny wiersz zawiera sowo kluczowe organization. Ta dyrektywa pozwala
na konfigurowanie napisu, jaki inews umieci w wierszu Organization: w artykuach wysyanych przez uytkownikw lokalnych. Powiniene tam umieci opis
twojej firmy lub jej pen nazw. Moesz jednak nie by tak oficjalny i przedstawi
si bardziej dowcipnie, co jest teraz modne.
Wpis moderatormailer definiuje domylny adres uywany, gdy uytkownik
prbuje wysa artyku do grupy moderowanej. Lista adresw moderatorw dla kadej grupy zwykle znajduje si w oddzielnym pliku, ale jej aktualizowanie wymaga
niemao pracy (i czasu). Dlatego wpis moderatormail jest uywany w ostatecznoci. Jeeli jest zdefiniowany, inews zastpi cig %s (nieco go zmieniajc) nazw grupy
i wyle cay artyku na ten adres. Na przykad przy wysyaniu do grupy soc.feminism,
artyku jest, zgodnie z powysz konfiguracj, wysyany pod adres soc-feminism@
uunet.uu.net. W UUNET powinien by zainstalowany alias pocztowy dla kadego
adresu, przekazujcy automatycznie wszystkie wiadomoci do odpowiedniego moderatora.
Kady z pozostaych wpisw okrela lokalizacj niektrych plikw zwizanych
z komponentami lub plikw wykonywalnych nalecych do INN. Jeeli zainstalowae INN-a z pakietu, cieki te powinny by ju skonfigurowane. Jeeli instalujesz go ze rde, bdziesz musia skonfigurowa je zgodnie z tym, jak zainstalowae INN-a.

Konfigurowanie grup dyskusyjnych


Administrator grup dyskusyjnych moe kontrolowa dostp uytkownikw do
grup. INN zawiera dwa pliki konfiguracyjne pozwalajce administratorowi pokaza, ktre grupy maj by obsugiwane i doda dla nich opis.
Pliki active i newsgroups
Pliki active i newsgroups s uywane do przechowywania i opisywania grup dyskusyjnych obsugiwanych przez dany serwer. Zawieraj spis grup, ktre chcemy
otrzymywa i do ktrych chcemy wysya artykuy, oraz dotyczcych ich informacji
administracyjnych. Pliki te znajduj si w katalogu /var/lib/news/.
Plik active okrela, ktre grupy obsuguje serwer. Jego skadnia jest prosta. Kady
wiersz pliku active skada si z czterech pl oddzielonych biaymi znakami:
nazwa zngr zndol znaczniki

406

Rozdzia 23: Internet News

Pole nazwa to nazwa grupy. Pole zngr zawiera najwyszy numer artykuu w grupie. Pole zndol zawiera najniszy numer aktywnego artykuu w grupie. Aby pokaza, jak to dziaa, rozwa nastpujcy scenariusz. Wyobra sobie, e mamy nowo
utworzon grup dyskusyjn: i zngr, i zndol maj warto 0, poniewa w grupie
nie ma artykuw. Jeli wylemy 5 artykuw, zostan one ponumerowane od 1 do 5.
zngr bdzie teraz mia warto 5, czyli najwyszy numer artykuu, a zndol bdzie
rwny 1 numerowi pierwszego artykuu. Jeeli artyku 5. zostanie anulowany, nie
nastpi zmiana. zngr bdzie dalej mia warto 5, gdy numery artykuw nie
mog by relokowane, a zndol bdzie mia dalej warto 1. Jeeli teraz anulujemy
artyku 1, zngr pozostanie bez zmian, a zndol bdzie mia warto 2, poniewa 1
nie jest ju artykuem aktywnym. Jeeli teraz wylemy nowy artyku, zostanie mu
przypisany numer 6, a wic zngr bdzie teraz mia warto 6. Artyku 5 by wykorzystywany, a wic nie zmieniamy jego numeru. Warto zndol pozostaje na poziomie 2. Mechanizm ten pozwala nam prosto alokowa unikalne numery dla nowych
artykuw i szacowa liczb aktywnych artykuw w grupie: zngr-zndol.
Ostatnie pole moe zawiera jedn z nastpujcych wartoci:
y
n

Dopuszczalne jest wysyanie bezporednio do serwera.


Wysyanie bezporednio do serwera nie jest dopuszczalne. Zapobiega to wysyaniu wiadomoci przez przegldarki bezporednio do serwera grup. Nowe artykuy mog by odbierane tylko z innych serwerw grup.
Grupa jest moderowana. Wszelkie artykuy wysane do tej grupy s przekazywane do jej moderatora w celu zatwierdzenia, zanim pojawi si w grupie. Wikszo grup nie jest moderowana.
Artykuy z tej grupy nie s przechowywane, ale jedynie przekazywane dalej. Powoduje to, e serwer grup przyjmuje artyku, ale wszystko co z nim robi, to przekazanie dalszym serwerom grup. Artykuy nie s dostpne dla przegldarek
podczajcych si do tego serwera w celu czytania grup.
Artykuy nie mog by wysyane do tej grupy. Jedynym sposobem na dostarczenie artykuw do tego serwera jest ich przesanie z innego serwera grup.
Przegldarki nie mog bezporednio zapisywa artykuw na serwerze.

=foo.bar
Artykuy s zapisywane lokalnie w grupie foo.bar.
W naszej prostej konfiguracji serwera obsugujemy niewiele grup, a wic plik
/var/lib/news/active wyglda tak:
control 0000000000 0000000001 y
junk 0000000000 0000000001 y
rec.crafts.brewing 0000000000 0000000001 y
rec.crafts.brewing.ales 0000000000 0000000001 y
rec.crafts.brewing.badtaste 0000000000 0000000001 y

Pliki konfiguracyjne INN-a

407

rec.crafts.brewing.brandy 0000000000 0000000001 y


rec.crafts.brewing.champagne 0000000000 0000000001 y
rec.crafts.brewing.private 0000000000 0000000001 y

Numery zngr i zndol w tym przykadzie maj wartoci pierwotne, takie jak przy
tworzeniu nowych grup. Bd one wyglday nieco inaczej, gdy grupa bdzie aktywna przez pewien czas.
Plik newsgroups jest jeszcze prostszy. Zawiera jednowierszowy opis kadej grupy. Niektre przegldarki mog odczytywa i przedstawia zawarte w nim informacje uytkownikowi pomagajc mu w ten sposb zdecydowa do ktrej grupy si zapisa.
Format pliku newsgroups jest prosty:
nazwa opis

Pole nazwa to nazwa grupy, a <opis to wiersz z informacj o treci grupy.


Chcemy zapisa si do poniszych grup, obsugiwanych przez nasz serwer, a wic
tworzymy nastpujcy plik newsgroups:
rec.crafts.brewing.ales
rec.crafts.brewing.badtaste
rec.crafts.brewing.brandy
rec.crafts.brewing.champagne
rec.crafts.brewing.private

Home brewing Ales and Lagers


Home brewing foul tasting brews
Home brewing your own Brandy
Home brew your own Champagne
The Virtual Brewery home brewers group

Konfigurowanie dostarczania grup do innych serwerw


INN zapewnia administratorowi grup moliwo kontroli nad tym, ktre grupy
i w jaki sposb s przekazywane do innych serwerw. Najpopularniejsze metody
wykorzystuj opisany wczeniej protok NNTP, ale INN dopuszcza take inne protokoy, na przykad UUCP.
Plik newsfeeds
Plik newsfeeds okrela, gdzie bd kierowane nowe artykuy. Zwykle znajduje si on
w katalogu /etc/news/.
Format pliku newsfeeds pocztkowo wydaje si nieco skomplikowany. Opiszemy tu
jego oglny wygld, a szczegy znajdziesz na stronie podrcznika elektronicznego
newsfeeds(5).
Format jest nastpujcy:
# format pliku newsfeeds
orodek:wzorzec:znaczniki:parametry
orodek2:wzorzec2\
:znaczniki2:parametry2

Kade poczenie zwizane z przesyaniem grup do orodka jest opisane w jednym


wierszu lub w kilku (wtedy na kocu kontynuowanego wiersza trzeba umieci
znak kontynuacji \). Znak: rozdziela pola. Znak # na pocztku wiersza oznacza komentarz.
Pole orodek zawiera nazw orodka, dla ktrego jest przeznaczona dana porcja
grup. Nazwy mog by zapisywane w dowolny sposb i nie musi by to nazwa do-

408

Rozdzia 23: Internet News

menowa. Nazwa ta zostanie uyta pniej do wskazania wpisu w tablicy z nazw


hosta, ktra jest potrzebna programowi innxmit wysyajcemu artykuy przez
NNTP do serwera zdalnego. Moesz mie po kilka wpisw dla kadego orodka.
Kady wpis bdzie rozpatrywany indywidualnie.
Pole wzorzec okrela, ktre grupy maj by wysyane do danego orodka. Domylnie wysyane s wszystkie grupy, a wic jeeli tego wanie chcesz, po prostu pozostaw pole puste. Zwykle pole to zawiera oddzielan przecinkami list wyrae-wzorcw. Do znaku * pasuje zero lub wicej dowolnych znakw, znak (.) nie ma
szczeglnego znaczenia, znak ! (jeeli zosta uyty na pocztku wyraenia) realizuje
logiczn operacj NOT, a znak @ na pocztku nazwy grupy oznacza Nie przekazuj
adnych artykuw, ktre zostay wysane do tej grupy. Lista jest odczytywana
i analizowana od lewej do prawej strony, a wic powiniene na pocztku umieszcza
dokadniejsze reguy. Wzorzec:
rec.crafts.brewing*,!rec.crafts.brewing.poison,@rec.crafts.brewing.private

spowoduje wysanie wszystkich grup z hierarchii rec.crafts.brewing z wyjtkiem grupy rec.crafts.brewing.poison. Nie zostan przekazane adne artykuy wysane do grupy rec.crafts.brewing.private. Zostan zatrzymane i bd dostpne tylko dla ludzi z tego serwera. Gdyby zamieni miejscami dwa pierwsze wzorce, pierwszy zostaby
nadpisany przez drugi i skoczyoby si to przekazaniem wszystkich artykuw
z grupy rec.crafts.brewing.poison. To samo dotyczy pierwszego i ostatniego wzorca.
Zawsze musisz umieszcza dokadniejsze wzorce przed mniej dokadnymi, jeeli
maj dziaa tak, jak chcesz.
Pole znaczniki kontroluje przekazywanie artykuw do danego orodka i nakada
ograniczenia. Pole to jest oddzielan przecinkami list zawierajc niej wymienione elementy:
<rozmiar
Artyku musi mie mniej bajtw ni zadany rozmiar.
Aelementy
Sprawdzanie artykuw. Elementy mog by mie warto jednego lub kilku d
(musi mie nagwek Distribution) lub p (nie sprawdzaj nagwka Path dla
tego orodka).
Bwys/nis
Rozmiar bufora wewntrznego przed zapisaniem na wyjcie.
H/liczba/
Artyku musi mie mniej ni liczba hopw domylnie 1.
Irozmiar
Rozmiar bufora wewntrznego (do przesyania plikw).
Mwzorzec
Do tego wzorca pasuj tylko grupy moderowane.
Nwzorzec
Do tego wzorca pasuj tylko grupy niemoderowane.

Pliki konfiguracyjne INN-a

409

Srozmiar
Rozpoczcie buforowania, jeeli zostanie zakolejkowane wicej bajtw ni zadany rozmiar.
Ttyp
Typy przekazywania: f (plik), m (strumie; pole parametry musi zawiera nazwy wpisw, do ktrych artykuy bd przekazywane), p (przekazywanie przez
potok do programu), c (wysyanie do kanau stdin podprocesu pola parametry)
i x (jak c, ale obsuguje polecenia na stdin).
Welementy
Co zapisa: b (rozmiar artykuu w bajtach), f (pena cieka), g (pierwsza grupa
dyskusyjna), m (ID wiadomoci), n (cieka wzgldna), s (orodek, z ktrego
przyszed artyku), t (czas odebrania), * (nazwy strumieni wejciowych lub
wszystkich orodkw, ktre maj artyku), N (nagwek grupy dyskusyjnej), D
(nagwek dystrybucji), H (wszystkie nagwki), o (dane pogldowe) i R (dane
replikacyjne).
Pole parametry jest specjalnie kodowane w zalenoci od sposobu dostarczania
grup innym serwerom. W wikszoci popularnych konfiguracji podajesz nazw pliku wynikowego, do ktrego bdziesz zapisywa wychodzce artykuy. W innych
moesz go nie podawa. W jeszcze innych konfiguracjach ma ono rne znaczenia.
Jeeli chcesz zrobi co niezwykego, podrcznik newsfeeds(5) wyjani ci szczegowo zastosowanie pola parametry.
Istnieje szczeglna nazwa orodka, kodowana jako ME, ktr powinien zawiera
pierwszy wpis w pliku. Wpis ten jest uywany do kontrolowania domylnych ustawie dostarczania grup. Jeeli wpis ME posiada zwizan z dostarczaniem list dystrybucji, bdzie ona doklejana do kadego wpisu zawierajcego orodek przed
wysaniem do niego grup. Pozwala to na przykad na automatyczne przekazywanie
pewnych grup lub automatyczne blokowanie przekazania innych bez potrzeby powtarzania wzorca w kadym opisie orodka.
Wspomnielimy wczeniej, e moliwe jest uycie pewnych pocze specjalnych
do wygenerowania wtku danych, ktry uatwia prac przegldarki. Wtek danych
jest generowany za pomoc polecenia overchan bdcego czci dystrybucji INN.
Wczeniej jednak trzeba stworzy specjaln lokaln porcj o nazwie overview,
przekazujc artykuy do polecenia overchan w celu przetworzenia na dane pogldowe.
Nasz serwer bdzie udostpnia grupy tylko jednemu serwerowi zewntrznemu,
ktry znajduje si na uniwersytecie Groucho Marx i pobiera artykuy ze wszystkich
grup, poza control, junk grup lokaln rec.crafts.brewing.private i rec.crafts.brewing.poison, z ktrej nie chcemy udostpnia artykuw wysanych przez osoby z naszego
browaru.
Do przesyania grup przez NNTP do serwera news.groucho.edu, uyjemy polecenia
nntpsend. Wymaga ono uycia metody dostarczania file i zapisywania cieki i ID
artykuu. Zauwa, e ustawilimy pole parametry na nazw pliku wynikowego.

410

Rozdzia 23: Internet News

Nieco wicej o poleceniu nntpsend powiemy za chwil. Nasza docelowa konfiguracja


wyglda tak:
# Plik /etc/news/newsfeeds dla browaru wirtualnego
#
# Domylnie wysyamy wszystkie grupy poza control i junk
ME:!control,!junk::
#
# Generujemy dane pogldowe dla przegldarek grup.
overview::Tc,WO:/usr/lib/news/bin/overchan
#
# Dostarczamy uniwersytetowi Groucho Marx wszystko poza nasz
# prywatn grup i artykuami wysanymi na rec.crafts.brewing.
# poison,@rec.crafts.brewing.private:\
Tf,Wnm:news.groucho.edu
#

Plik nntpsend.ctl
Program nntpsend zarzdza przesyaniem artykuw przez NNTP, wywoujc polecenie innxmit. Widzielimy wczeniej proste zastosowanie polecenia nntpsend, ale
ma ono te plik konfiguracyjny dajcy pewn elastyczno w konfigurowaniu dostarczania przez nas grup.
Polecenie nntpsend spodziewa si plikw wsadowych dla orodkw, do ktrych ma
wysya grupy. Oczekuje, e bd one miay nazwy postaci: /var/spool/news/out.going/nazwaorodka. innd tworzy te pliki wsadowe na podstawie wpisu w pliku
newsfeeds, ktry widzielimy w poprzednim podrozdziale. W polu parametry
okrelilimy nazw orodka jako nazw pliku i tym samym spenilimy wymagania
co do danych wejciowych dla polecenia nntpsend.
Polecenie nntpsend ma plik konfiguracyjny o nazwie nntpsend.ctl, ktry zwykle znajduje si w katalogu /etc/news/.
Plik nntpsend.ctl pozwala nam zwiza pen nazw domenow, ograniczenia rozmiaru przesyanej porcji artykuw i ograniczenia parametrw transmisji z nazw
orodka. Nazwa ta ma unikalnie identyfikowa logiczn, wysyan porcj artykuw. Oglny format pliku jest nastpujcy:
nazwaorodka:fqdn:max_rozmiar:[argumenty]

Ponisza lista opisuje poszczeglne elementy tego wiersza:


nazwaorodka
Nazwa orodka zgodnie z podan w pliku newsfeeds.
fqdn
Pena nazwa domenowa serwera grup, do ktrego przesyamy artykuy.
max_rozmiar
Maksymalna wielko porcji artykuw wysyanych za jednym razem.
argumenty
Dodatkowe argumenty przekazywane do polecenia innxmit.
Naszej przykadowej konfiguracji wystarczy bardzo prosty plik nntpsend.ctl. Mamy
tylko jedno miejsce, do ktrego przekazujemy grupy. Ograniczymy jedn porcj do

Pliki konfiguracyjne INN-a

411

2 MB i przekaemy poleceniu innxmit argument ustawiajcy czas oczekiwania na 3


minuty (180 sekund). Gdybymy byli wikszym orodkiem i mieli wicej porcji
grup, stworzylibymy podobne wpisy dla kadego orodka, do ktrego przekazywalibymy grupy.
# /etc/news/nntpsend.ctl
#
gmarxu:news.groucho.edu:2m:-t 180
#

Kontrolowanie dostpu przegldarki


Jeszcze nie tak dawno temu rne organizacje bardzo chtnie udostpniay wszystkim serwery grup dyskusyjnych. Obecnie trudno jest znale serwery publiczne.
Wikszo organizacji skrupulatnie nadzoruje dostp do swoich serwerw, zwaszcza ogranicza dostp uytkownikom swojej sieci. INN posiada pliki konfiguracyjne
pozwalajce na kontrol dostpu.
Plik incoming.conf
We wprowadzeniu do INN-a wspomnielimy, e dziaa ono efektywnie i jest niewielkie dziki rozdzieleniu mechanizmu przekazywania wiadomoci innym serwerom od mechanizmu ich przegldania. W pliku /etc/news/incoming.conf umieszczasz
hosty, ktre bd ci dostarczay grupy przez protok NNTP, oraz pewne parametry
sterujce sposobem, w jaki twj host pobiera z nich artykuy. Wszelkie hosty nie
wpisane w tym pliku, a czce si z gniazdem news nie bd obsugiwane przez demona innd, ale przez nnrpd.
Skadnia pliku /etc/news/incoming.conf jest bardzo prosta, ale jej zrozumienie moe
zaj chwil. Dopuszczalne s trzy typy wpisw: para klucz/warto, ktra okrela
sposb podawania atrybutw i ich wartoci parametry rwnorzdne, ktre okrelaj
sposb podawania nazw hosta, ktry moe wysya do nas artykuy przez NNTP
oraz grupy, ktrych dotycz poprzednie wartoci. Pary klucz/warto mog mie
trzy rne zakresy. Pary globalne dotycz kadego elementu zdefiniowanego w pliku, grupy par dotycz wszystkich elementw zdefiniowanych w danej grupie, a pary rwnowane dotycz tylko danego konkretnego przypadku. Definicje bardziej
szczegowe uniewaniaj te mniej szczegowe i dlatego definicje rwnowane
uniewaniaj definicje grup, ktre z kolei uniewaniaj pary globalne.
Nawiasy klamrowe ({}) s uywane do oznaczenia pocztku i koca definicji group
i peer. Znak # oznacza, e dalszy cig wiersza to komentarz. Pary klucz/warto s
oddzielane dwukropkiem i s wpisywane w wierszu pojedynczo.
Mona poda szereg rnych kluczy. Najczciej uywane i najbardziej przydatne
z nich to:
hostname
Ten klucz okrela, oddzielan przecinkami, list penych nazw domenowych lub adresw IP hostw rwnorzdnych, ktre mog wysya nam artykuy. Jeeli ten klucz
nie zostanie podany, przyjmowana jest domylna nazwa hosta partnerskiego.

412

Rozdzia 23: Internet News

streaming
Ten klucz okrela, czy dla danego hosta s dopuszczalne polecenia strumieniowe.
Jest to warto boole'owska, domylnie true.
max-connections
Ten klucz okrela maksymaln liczb pocze dopuszczalnych z danej grupy
lub z hostw rwnowanych. Warto zero oznacza nieograniczon ich liczb
(mona take poda none).
password
Ten klucz pozwala ci okreli haso, ktre musi by uywane przez partnera, jeeli ma on prawo przesya wiadomoci. Domylnie haso nie jest wymagane.
patterns
Ten klucz okrela grupy, ktre przyjmujemy od partnera. Pole to jest kodowane
zgodnie z tymi samymi reguami, ktrych uywalimy w pliku newsfeeds.
W naszym przykadzie mamy tylko jeden host, ktry moe nam dostarcza grupy:
nasz dostawca z uniwersytetu Groucho Marx. Nie potrzebujemy hasa, ale nie
bdziemy przyjmowa z zewntrz adnych artykuw do naszych prywatnych
grup. Nasz hosts.nntp wyglda tak:
# Plik incoming.conf browaru wirtualnego
# Ustawienia globalne
streaming:
true
max-connections:
5
# Pozwalamy na wysyanie NNTP z naszego hosta lokalnego
peer ME {
hostname: "localhost, 127.0.0.1"
}
# Pozwalamy groucho na wysyanie nam wszystkich grup poza lokalnymi.
peer groucho {
hostname: news.groucho.edu
patterns: !rec.crafts.brewing.private
}

Plik nnrp.access
Wspomnielimy ju, e przegldarki grup, a w rzeczywistoci wszelkie hosty
nie uwzgldnione w pliku hosts.nntp, ktre cz si z serwerem grup INN, s
obsugiwane przez program nnrpd. Program ten uywa pliku /etc/news/nnrp.access
do okrelenia, kto ma prawo korzysta z serwera grup i jakie powinien mie prawa
dostpu.
Plik nnrp.access ma budow podobn do innych plikw konfiguracyjnych, ktre
omawialimy do tej pory. Skada si z zestawu wzorcw uywanych do dopasowywania nazw lub adresw IP czcych si hostw i pl, ktre okrelaj, jakie prawa
dostpu powinny by im dane. Kady wpis powinien znajdowa si w oddzielnym
wierszu, a pola powinny by oddzielone dwukropkami. Jak zwykle uywany bdzie ostatni wpis w pliku pasujcy do podczajcego si hosta, a wic powiniene

Pliki konfiguracyjne INN-a

413

umieszcza wzorce oglne na pocztku, a nastpnie wzorce szczegowe. Pi pl


w kadym wpisie ma nastpujce znaczenie:
Nazwa hosta lub adres IP
To pole jest zgodne z reguami dopasowania wzorca wildmat(3). Jest to wzorzec
opisujcy nazw hosta lub adres IP podczajcego si hosta.
Prawa dostpu
To pole okrela, jakie prawa dostpu powinny by nadane pasujcemu hostowi.
Istniej dwa rodzaje praw, ktre moesz skonfigurowa: R daje prawo czytania,
a P daje prawo wysyania.
Nazwa uytkownika
To pole jest opcjonalne i pozwala ci okreli nazw uytkownika, na ktrego
musi si zalogowa klient NNTP, zanim bdzie mg wysya artykuy. Pole to
mona pozostawi puste. Do czytania artykuw nie jest potrzebna adna autoryzacja.
Haso
To pole jest opcjonalne i zawiera haso towarzyszce polu nazwa uytkownika. Pozostawienie tego pola pustego oznacza, e do wysyania artykuw nie jest
wymagane haso.
Grupy
To pole jest wzorcem okrelajcym, do ktrych grup klient ma dostp. Wzorzec
podlega tym samym reguom, jakie byy uywane w pliku newsfeeds. Domyln
wartoci tego pola jest brak grup, a wic zwykle podajesz tu jaki wzorzec.
W przykadzie browaru wirtualnego pozwalamy kademu klientowi NNTP z domeny borwaru na czytanie wszystkich grup i wysyanie do nich. Wszystkim innym
klientom NNTP dajemy prawo do czytania wszystkich grup poza naszymi wewntrznymi grupami prywatnymi. Nasz plik nnrp.access bdzie wyglda nastpujco:
# Virtual Brewery - nnrp.access
# Pozwalamy publicznie czyta wszystkie grupy poza prywatnymi.
*:R:::*,!rec.crafts.brewing.private
# Kady host z domeny browaru moe czyta i wysya artykuy
# do wszystkich grup
*.vbrew.com:RP::*

Wygasanie artykuw w grupach


Artykuy odbierane przez serwer grup s zapisywane na dysk. Aby to miao sens,
artykuy musz by dostpne dla uytkownikw przez jaki okres czasu, a wic duy serwer grup moe zajmowa wiele miejsca na dysku. Aby miejsce to byo wykorzystywane efektywnie, moesz walczy o automatyczne usuwanie artykuw po
zadanym okresie czasu. Nazywa si to wyganiciem artykuu. Oczywicie INN
obsuguje automatyczne wygasanie artykuw.

414

Rozdzia 23: Internet News

Plik expire.ctl
Do usuwania starych artykuw serwer INN uywa programu expire. Program ten
z kolei wykorzystuje plik /etc/news/expire.ctl, w ktrym s skonfigurowane reguy zarzdzajce wygasaniem artykuw.
Skadnia pliku /etc/news/expire.ctl jest do prosta. Podobnie jak w wikszoci plikw
konfiguracyjnych, puste wiersze lub wiersze rozpoczynajce si znakiem # s ignorowane. Oglna zasada jest taka, e kad regu piszesz w oddzielnym wierszu. Kada regua definiuje, jak jest realizowane wygasanie artykuu w grupach zgodnych z
zadanym wzorcem. Skadnia reguy wyglda tak:
wzorzec:znmod:trzymanie:domylnie:czyszczenie
Ponisza lista opisuje poszczeglne pola reguy:
wzorzec
To pole jest oddzielan przecinkami list wzorcw dopasowujcych nazwy grup.
Do ich sprawdzania jest uywana procedura wildmat(3). Stosowana jest ostatnia
z pasujcych regu, a wic gdyby chcia umieszcza reguy zestawie uniwersalnych (*), powinny by w pliku jako pierwsze.
znmod
Ten znacznik opisuje, jak regua jest stosowana do grup moderowanych. Moe
on by zapisany jako M, co oznacza, e regua dotyczy tylko grup moderowanych,
albo jako U, co oznacza, e regua dotyczy tylko grup niemoderowanych. Mona
te uy A, aby wskaza, e regua ignoruje status moderowania i dotyczy
wszystkich grup.
trzymanie
To pole pozwala okreli minimalny czas, przez jaki bdzie przechowywany artyku z ustawionym polem Expires w nagwku, zanim wyganie. Warto jest
okrelana w dniach, ale dopuszczalne s liczby zmiennoprzecinkowe, a wic
moesz poda warto 7.5, ktra oznacza siedem i p dnia. Moesz take poda
never, jeeli chcesz, by artyku pozosta w grupie na zawsze.
domylnie
To pole jest najwaniejsze. Pozwala okreli czas, przez jaki bdzie przechowywany artyku bez pola nagwka Expires. Wikszo artykuw nie bdzie
miaa takiego pola w nagwku. Pole domylnie jest kodowane dokadnie w ten
sam sposb jak pole trzymanie. never oznacza, e artyku bez nagwka
Expires nigdy nie wyganie.
czyszczenie
To pole pozwala zada maksymalny czas, przez jaki bdzie przechowywany artyku z polem Expires, zanim wyganie. Kodowanie tego pola przebiega tak
samo jak pola trzymanie.
Nasze wymagania s proste. Bdziemy przechowywa wszystkie artykuy we
wszystkich grupach domylnie przez 14 dni, natomiast artykuy z nagwkiem
Expires, od 7 do 21 dni. Grupa rec.crafts.brewing.private jest nasz grup wewntrzn, a wic nie chcemy, by jakiekolwiek artykuy w niej zawarte wygasay:

Pliki konfiguracyjne INN-a

415

# plik expire.ctl dla browaru wirtualnego


# Domylne wygasanie wszystkich artykuw po 14 dniach. Od 7
# do 21 dni dla tych, ktre maj nagwek Expires:
*:A:7:14:21
# To jest specjalna grupa wewntrzna, ktra nie wygasa.
rec.crafts.brewing.private:A:never:never:never

Powiemy jeszcze o jednym specjalnym rodzaju wpisu, ktry moe si znale


w twoim pliku /etc/news/expire.ctl. Moesz mie dokadnie jeden wiersz wygldajcy
tak:
/remember/:dni

Pozwala on zada minimaln liczb dni, przez jak artyku bdzie pamitany w pliku historii, bez wzgldu na to, czy sam artyku wygas, czy nie. Moe to by przydatne, jeeli jeden z orodkw dostarczajcych nam artykuy nie robi tego czsto i ma
tendencj do przysyania starych artykuw. Ustawienie pola /remember/ pomaga
zapobiec ponownemu przysyaniu artykuu, ktry u nas ju wygas. Jeeli twj serwer pamita, e ju otrzyma kiedy taki artyku, odrzuci prb ponownego jego
przysania. Trzeba pamita, e to ustawienie nie ma adnego wpywu na wygasanie artykuu. Dotyczy jedynie czasu przechowywania informacji o artykule w pliku
historii.

Obsugiwanie wiadomoci kontrolnych


Tak jak C News, tak i INN moe automatycznie przetwarza wiadomoci kontrolne.
INN ma doskonay mechanizm konfiguracyjny nadzorujcy dziaania, jakie s podejmowane dla kadej z wiadomoci kontrolnych, oraz mechanizm kontroli dostpu, ktry czuwa nad tym, kto zainicjowa dziaanie i wobec jakich grup.
Plik control.ctl
Budowa pliku control.ctl jest dosy prosta. Reguy skadniowe s w zasadzie takie same jak w przypadku innych plikw konfiguracyjnych INN-a. Wiersze rozpoczynajce si od znaku # s ignorowane; wiersze mona kontynuowa uywajc znaku
/, a pola s oddzielane dwukropkami.
Gdy zostanie odebrana wiadomo kontrolna, jest sprawdzana po kolei z kad regu. Stosowana jest jak zwykle ostatnia pasujca regua w pliku, a wic powiniene
umieszcza oglne reguy na pocztku pliku, a dokadniejsze pod jego koniec. Oglna
skadnia pliku jest nastpujca:
wiadomo:skd:grupa:dziaanie
Znaczenie poszczeglnych pl jest nastpujce:
wiadomo
Jest to nazwa wiadomoci kontrolnej. Typowe wiadomoci kontrolne opisujemy
dalej.

416

Rozdzia 23: Internet News

skd
Jest to wzorzec opisujcy adres e-mail osoby wysyajcej wiadomo. Przed
porwnaniem adres jest konwertowany do maych liter.
grupa
Jeeli wiadomo kontrolna to newgroup lub rmgroup, to pole ma posta wzorca pasujcego do tworzonej lub usuwanej grupy.
dziaanie
To pole okrela, jakie dziaanie podj, gdy wiadomo pasuje do reguy. Moliwe s rne dziaania, opisane na nastpnej licie.
Pole wiadomo w kadym wierszu moe przyjmowa nastpujce warto:
checkgroups
Ta wiadomo stanowi danie wobec administratora grup, by zsynchronizowa
swoj baz aktywnych grup z list grup dostarczon w wiadomoci kontrolnej.
newgroup
Ta wiadomo stanowi danie utworzenia nowej grupy. Tre wiadomoci powinna zawiera krtki opis przeznaczenia tworzonej grupy.
rmgroup
Ta wiadomo stanowi danie usunicia grupy.
sendsys
Ta wiadomo stanowi danie przesania poczt pliku sys z serwera grup do
nadawcy wiadomoci. RFC-1036 mwi, e warunkiem czonkostwa w Usenecie
jest publiczne udostpnianie tej wiadomoci, poniewa jest ona wykorzystywana
przy uaktualnianiu map usenetowych.
version
Ta wiadomo stanowi danie zwrotu do nadawcy tej wiadomoci nazwy hosta
i wersji oprogramowania serwera grup.
all
Jest to specjalny zapis, do ktrego pasuj wszystkie wiadomoci kontrolne.
Pole wiadomo moe zawiera nastpujce dziaania:
doit
dane polecenie jest wykonywane. W wielu przypadkach do administratora
jest wysyana wiadomo e-mail z informacj, e dane dziaanie miao miejsce.
doit=plik
Jest to dziaanie identyczne z doit, ale do pliku log plik zostanie zapisany komunikat. Jeeli podanym plikiem jest mail, wpis log jest wysyany poczt. Jeeli
podanym plikiem jest cig pusty, wiadomo log jest zapisywana do /dev/null
i jest to rwnowane z uyciem czystego polecenia doit. Jeeli nazwa plik rozpoczyna si od znaku /, jest uznawana za bezwzgldn ciek do pliku log.
W przeciwnym razie zadana nazwa jest zamieniana do postaci /var/log/news/
file.log.

Pliki konfiguracyjne INN-a

417

doifarg
dane polecenie jest wykonywane, jeeli ma argument. Jeeli nie ma argumentu,
wiadomo kontrolna jest ignorowana.
drop
dane polecenie jest ignorowane.
log
Wiadomo log jest wysyana na standardowe wyjcie bdw stderr procesu
innd. Normalnie jest przekierowywana do pliku /var/log/news/errlog.
log=plik
To samo co log, ale plik log jest zadawany na tych samych zasadach co w przypadku dziaania doit=plik.
mail
Do administratora jest wysyana wiadomo e-mail zawierajca dane szczegy. adne inne dziaanie nie jest podejmowane.
verify-*
Jeeli dziaanie rozpoczyna si od cigu "verify-", wiadomo kontrolna jest
uwierzytelniana przez PGP (lub GPG)*.
Aby mg zobaczy, jak plik control.ctl wyglda w rzeczywistoci, pokazujemy prosty przykad:
## Przykadowy plik /etc/news/control.ctl
##
## Uwaga: nie powiniene uywa tego pliku - suy on tylko do
## demonstracji
##
Obsuga wiadomoci kontrolnych
all:*:*:mail
checkgroups:*:*:mail
ihave:*:*:drop
sendme:*:*:drop
sendsys:*:*:log=sendsys
senduuname:*:*:log=senduuname
version:*:*:log=version
newgroup:*:*:mail
rmgroup:*:*:mail
## Obsuga wiadomoci kontrolnych dla omiu najwaniejszych
## hierarchii grup
## COMP, HUMANITIES, MISC, NEWS, REC, SCI, SOC, TALK
checkgroups:*:comp:*|humanities.*|misc.*|news.*|rec.*|sci.*|talk.*:drop
newgroup:*:comp:*|humanities.*|misc.*|news.*|rec.*|sci.*|talk.*:drop
rmgroup:*:comp:*|humanities.*|misc.*|news.*|rec.*|sci.*|talk.*:drop
checkgroups:group-admin@isc.org:*:verify-news.announce.newgroups
newgroup:group-admin@isc.org:comp.*|misc.*|news.*:verify-news.announce.newgroups
newgroup:group-admin@isc.org:rec.*|sci.*|soc.*:verify-news.announce.newgroups
newgroup:group-admin@isc.org:talk.*|humanities.*:verify-news.announce.newgroups
*

PGP i GPG to narzdzia stworzone do uwierzytelniania lub szyfrowania wiadomoci za pomoc technik klucza publicznego. GPG jest wersj GNU PGP. GPG mona znale pod adresem http://www/gnupg.org/, a PGP pod adresem http://www.pgp.com/.

418

Rozdzia 23: Internet News

rmgroup:group-admin@isc.org:comp.*|misc.*|news.*:verify-news.announce.newgroups
rmgroup:group-admin@isc.org:rec.*|sci.*|soc.*:verify-news.announce.newgroups
rmgroup:group-admin@isc.org:talk.*|humanities.*:verify-news.announce.newgroups
## GNU ( Free Software Foundation )
newgroup:gnu@prep.ai.mit.edu:gnu.*:doit
newgroup:news@*ai.mit.edu:gnu.*:doit
rmgroup:gnu@prep.ai.mit.edu:gnu.*:doit
rmgroup:news@*ai.mit.edu:gnu.*:doit
## LINUX (Newsfeed from news.lameter.com)
checkgroups:chrisoph@lameter.com:linux.*:doit
newgroup:chrisoph@lameter.com:linux.*:doit
rmgroup:christoph@lameter.com:linux.*:doit

Eksploatowanie INN-a
Pakiet rdowy INN zawiera skrypt uruchamiajcy inn w czasie inicjacji systemu.
Skrypt zwykle nosi nazw /usr/lib/news/bin/rc.news. Czyta on argumenty z innego
skryptu o nazwie /usr/lib/news/innshellvars, ktry zawiera nazwy plikw i cieki
uywane przez inn do lokalizacji potrzebnych mu elementw. Dobrze jest uruchamia inn z prawami dostpu uytkownika innego ni root, na przykad news.
Aby inn na pewno uruchomi si w czasie w czasie startu systemu, powiniene
sprawdzi, czy plik /usr/lib/news/innshellvars jest skonfigurowany poprawnie, a nastpnie wywoa skrypt /usr/lib/news/bin/rc.news ze skryptu uruchamianego w czasie
startu.
Ponadto, co jaki czas naley wykonywa pewne zadania administracyjne. Zwykle
konfiguruje si je tak, aby byy uruchamiane poleceniem cron. Najlepszym sposobem na zrobienie tego jest dodanie odpowiednich polece do pliku /etc/crontab lub
stworzenie pliku odpowiedniego dla katalogu /etc/cron.d, jeeli twoja dystrybucja to
obsuguje. Taki przykadowy plik moe wyglda nastpujco:
# Przykadowy plik /etc/cron.d/inn uywany w dystrybucji Debian
#
SHELL=/bin/sh
PATH=/usr/lib/news/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Wyganicie starych artykuw i wygenerowanie raportw
# kadej nocy
15 0 * * * news news.daily expireover lowmark delayrm
#
#
#
#

Co godzin uruchomienie rnews -U. Nie jest to tylko dla


orodkw UUCP, ale take przetwarza artykuy skolejkowane
przez in.nnrpd w sytuacji, gdy innd nie przyjmowa adnych
artykuw.

10 * * * * news rnews -U

Codziennie te polecenia automatycznie usuwaj stare artykuy oraz co godzin


przetwarzaj artykuy z kolejki. Zauwa, e s uruchamiane z prawami uytkownika news.

Zarzdzanie INN-em: polecenie ctlinnd

419

Zarzdzanie INN-em: polecenie ctlinnd


Serwer grup INN zawiera polecenie do zarzdzania jego codziennym dziaaniem.
Polecenie ctlinnd moe by uywane do operowania na grupach i porcjach grup wysyanych do innych serwerw, uzyskiwania stanu serwera oraz do przeadowywania, zatrzymywania i uruchamiania serwera.
Podsumowanie dziaania polecenia ctlinnd moesz uzyska, uywajc polecenia nastpujco:
# ctlinnd -h

Omwimy tu kilka z waniejszych zastosowa ctlinnd. Wicej szczegw znajdziesz na stronie podrcznika powiconej temu poleceniu.

Dodawanie nowej grupy


Aby doda now grup, uyj polecenia nastpujco:
ctlinnd newgroup grupa znacz twrca

Argumenty maj nastpujce znaczenie:


grupa
Nazwa tworzonej grupy.
znacz
Ten argument powinien by zapisywany w ten sam sposb jak pole znaczniki
pliku active. Domylnie jest przyjmowana warto y, jeeli nic innego nie zostanie
podane.
twrca
Nazwa osoby tworzcej grup. Umie j w cudzysowie, jeeli chcesz wpisa jakie spacje.

Zmiana grupy
Aby zmieni grup, uyj polecenia nastpujco:
ctlinnd changegroup grupa znacz

Argumenty maj nastpujce znaczenie:


grupa
Nazwa zmienianej grupy.
znacz
Ten argument powinien by zapisywany w ten sam sposb co pole znaczniki
pliku active.
To polecenie przydaje si przy zmianie statusu moderowania grupy.

420

Rozdzia 23: Internet News

Usuwanie grupy
Aby usun grup, uyj polecenia nastpujco:
ctlinnd rmgroup grupa

Argument ma nastpujce znaczenie:


grupa
Nazwa usuwanej grupy.
To polecenie usuwa zadan grup z pliku active. Nie ma wpywu na katalog bufora.
Wszystkie zawarte w nim artykuy wygasn w zwyky sposb, a nowe nie bd
przyjmowane.

Przenumerowanie grupy
Aby przenumerowa grup, uyj polecenia nastpujco:
ctlinnd renumber grupa

Argument ma nastpujce znaczenie:


grupa
Nazwa przenumerowanej grupy. Jeeli grupa jest pustym cigiem znakw, przenumerowywane s wszystkie grupy.
To polecenie uaktualnia dolny znacznik w zadanej grupie.

Uywanie serwera przez przegladarki grup pozwalanie i zabranianie


Uyj poniszego polecenia, aby pozwoli lub zabroni przegldarkom korzysta z serwera:
ctlinnd readers znacz tekst

Argumenty maj nastpujce znaczenie:


znacz
Jeli jest ustawiony na n, zabrania podcza si przegldarkom grup. Podanie y
pozwala na przyjmowanie pocze od przegldarek.
tekst
Podany tekst jest przekazywany do przegldarki, ktra prbuje si podczy
i zwykle opisuje powd zabronienia dostpu. Przy ponownym wczaniu dostpu przegldarkom, pole to musi by pustym cigiem lub kopi tekstu podanego przy zakazie dostpu.
To polecenie nie wpywa na przychodzce z innych serwerw porcje grup. Kontroluje
jedynie dostp przegldarek.

Zarzdzanie INN-em: polecenie ctlinnd

421

Odmowa poczenia z innego serwera


Aby odmwi poczenia innemu serwerowi, uyj polecenia nastpujco:
ctlinnd reject powd

Argument ma nastpujce znaczenie:


powd
Podany tekst powinien wyjania, dlaczego przychodzce do innd poczenia s
odrzucane.
To polecenie nie ma wpywu na poczenia obsugiwane przez nnrpd (tzn.
przegldarki grup). Dotyczy jedynie pocze, ktre s obsugiwane bezporednio
przez innd, czyli pocze z innych serwerw.

Pozwolenie na poczenia z innego serwera


Aby pozwoli na poczenia innemu serwerowi, uyj polecenia nastpujco:
ctlinnd allow powd

Argument ma nastpujce znaczenie:


powd
Podany tekst musi by identyczny z podanym w poleceniu reject lub musi by to
cig pusty.
To polecenie odwraca dziaanie polecenia reject.

Zamknicie serwera grup


Aby zamkn serwer grup, uyj polecenia nastpujco:
ctlinnd throttle powd

Argument ma nastpujce znaczenie:


powd
Powd zamknicia serwera.
To polecenie jest rwnowane z jednoczesnym wydaniem polecenia newsreaders no
i reject. Jest przydatne przy pracach awaryjnych wykonywanych na bazie serwera
grup. Daje pewno, e nikt nie bdzie prbowa go uaktualni, gdy przy nim pracujesz.

Restart serwera grup


Aby zrestartowa serwer grup, uyj polecenia nastpujco:
ctlinnd go powd

Argument ma nastpujce znaczenie:


powd
Powd zatrzymania serwera. Jeeli pole to jest pustym cigiem znakw, serwer
zostanie bezwarunkowo ponownie wczony. Jeeli powd zosta podany, to tylko funkcje, ktre s wyczone z powodu zgodnego z podanym tekstem, zostan
ponownie uruchomione.

422

Rozdzia 23: Internet News

To polecenie jest uywane do ponownego uruchamiania serwera po wykonaniu polece throttle, pause lub reject.

Wywietlanie statusu pobierania plikw z innego serwera


Aby wywietli status pobierania plikw z innego serwera, uyj polecenia nastpujco:
ctlinnd feedinfo orodek

Argument ma nastpujce znaczenie:


orodek
Nazwa orodka (wzita z pliku newsfeeds), dla ktrego chcesz wywietli status.

Odczenie dostarczania plikw z innego serwera


Aby wyczy dostarczanie plikw z innego serwera, uyj polecenia nastpujco:
ctlinnd drop orodek

Argument ma nastpujce znaczenie:


orodek
Nazwa orodka (wzita z pliku newsfeeds), dla ktrego dostarczanie plikw jest
wyczane. Jeeli pole jest pustym cigiem, wszystkie aktywne transmisje zostan przerwane.
Wyczenie dostarczania plikw zatrzymuje wszelkie aktywne transmisje do danego orodka. Nie jest to zmiana staa. Polecenie jest przydatne, jeeli modyfikujesz
szczegy zwizane z przesyaniem plikw z danego orodka, a transmisja jest akurat aktywna.

Rozpoczynanie dostarczania plikw z innego serwera


Aby rozpocz dostarczanie plikw z innego serwera, uyj polecenia nastpujco:
ctlinnd begin orodek

Argument ma nastpujce znaczenie:


orodek
Nazwa orodka wzita z pliku newsfeeds, z ktrego rozpoczto przesyanie plikw.
Jeeli przesyanie z tego orodka jest ju aktywne, automatycznie jest wykonywane polecenie drop.
To polecenie powoduje, e serwer czyta ponownie plik newsfeeds, znajduje pasujcy
wpis i rozpoczyna przesyanie plikw do/z danego orodka zgodnie ze znalezionymi szczegami. Moesz uy tego polecenia do przetestowania nowych wpisw po
ich dodaniu lub modyfikacji w pliku newsfeeds.

Zarzdzanie INN-em: polecenie ctlinnd

423

Anulowanie artykuu
Aby anulowa artyku, uyj polecenia nastpujco:
ctlinnd cancel ID-artykuu

Argument ma nastpujce znaczenie:


ID-artykuu
ID anulowanego artykuu.
To polecenie powoduje, e zadany artyku zostanie usunity z serwera. Nie generuje
wiadomoci cancel.

Konfigurowanie
przegldarki grup
dyskusyjnych

24

Rozdzia 24: Konfigurowanie przegldarki grup dyskusyjnych

Przegldarka grup to program, ktry uytkownik uruchamia do ogldania, zachowywania i tworzenia artykuw w grupach dyskusyjnych. Do Linuksa przeniesiono
kilka przegldarek grup. Opiszemy podstawow konfiguracj trzech najpopularniejszych: tin, trn i nn.
Jedn z najbardziej efektywnych przegldarek jest nastpujce polecenie:
$ find /var/spool/news -name '[0-9]*' -exec cat {} \; | more

W ten sposb artykuy z grup czytaj uniksowi twardziele.


Wikszo przegldarek jest jednak bardziej wyrafinowana. Zwykle maj penoekranowy interfejs z oddzielnymi poziomami do wywietlania wszystkich grup, do
ktrych uytkownik si zapisa, do przegladania listy artykuw w kadej grupie i pojedynczych artykuw. Wiele przegldarek WWW dziaa rwnie jako przegldarki
grup, ale jeeli chcesz uywa niezalenej przegldarki grup, ten rozdzia wyjania,
jak skonfigurowa dwie podstawowe: trn i nn.
Na poziomie grup wikszo przegldarek wywietla list artykuw, pokazujc
wiersz z tytuem i autorem. W duych grupach trudno jest ledzi artykuy ze sob
zwizane, cho moliwe jest identyfikowanie odpowiedzi na wczeniejsze artykuy.
Odpowiedzi zwykle nosz tytu oryginalnego artykuu z przedrostkiem Re:. Ponadto wiersz nagwka Reference: powinien zawiera ID wiadomoci, na ktr
artyku stanowi odpowied. Sortowanie artykuw wedug tych dwch kryteriw
daje niewielkie zestawy artykuw (w rzeczywistoci drzewa), ktre s nazywane
wtkami. Jednym z zada przy tworzeniu przegldarki grup jest wynalezienie efektywnego sposobu obsugi wtkw, poniewa czas do tego potrzebny jest proporcjonalny do kwadratu liczby artykuw.
Nie bdziemy wnika w to, jak s zbudowane interfejsy uytkownika. Wszystkie
obecnie dostpne dla Linuksa przegldarki maj doskona funkcj pomocy, a wic
skorzystaj z niej, jeeli chcesz pozna wicej szczegw.

426

Rozdzia 24: Konfigurowanie przegldarki grup dyskusyjnych

W kolejnych podrozdziaach zajmiemy si jedynie zadaniami administracyjnymi.


Wikszo z nich ma zwizek z tworzeniem baz wtkw i liczeniem.

Konfigurowanie tina
Najbardziej wszechstronn przegldark obsugujc wtki jest tin. Zostaa ona napisana przez Iaina Lea i nawizuje do starszej przegldarki tass (napisanej przez Richa Skrenta). Podzia na wtki odbywa si w momencie wejcia przez uytkownika
do grupy i jest naprawd szybki, pod warunkiem, e nie korzystasz z NNTP.
Na komputerze 486DX50 podzielenie tysica artykuw na wtki zajmuje 30 sekund, jeli s odczytywane bezporednio z dysku. Natomiast przy podczeniu si
do obcionego serwera NNTP trwa to ponad 5 minut*. Moesz skrci ten czas, regularnie uaktualniajc plik indeksu przez wywoanie tina z opcj u, tak e gdy nastpnym razem uruchomisz tina, wtki ju bd istniay. Moesz take wywoa tina
z opcj U przy czytaniu grup. Przy takim wywoaniu tin tworzy dziaajcy w tle
proces, ktry tworzy pliki indeksw, kiedy ty czytasz grupy.
Zwykle tin zapisuje bazy wtkw w katalogu macierzystym uytkownika w podkatalogu .tin/index. Moe to pochania duo zasobw, a wic chyba lepiej mie
jedn baz w centralnym miejscu. W tym celu naley ustawi dla tina na przykad
prawo setuid news. tin bdzie w takiej sytuacji przechowywa bazy wtkw w katalogu /var/spool/news/.index. W przypadku dostpu do plikw lub w wywoaniu
powoki bdzie zmienia efektywny uid na rzeczywisty uid wywoujcego go uytkownika**.
Wersja tina doczona do pewnych dystrybucji Linuksa jest skompilowana bez
obsugi NNTP, ale wikszo j ma. Gdy wywoasz tina jako rtin lub z opcj r,
prbuje on poczy si z serwerem NNTP podanym w pliku /etc/nntpserver lub
w zmiennej rodowiskowej NNTPSERVER. Plik nntpserver po prostu zawiera nazw
serwera umieszczon w oddzielnym wierszu.

Konfigurowanie trn
trn rwnie jest nastpc starszej przegldarki grup, rn (skrt od ang. read news). t
w nazwie pochodzi od sowa threaded (obsugujca wtki). Zostaa ona napisana
przez Wayne'a Davidsona.
W odrnieniu od tina, trn nie ma moliwoci generowania bazy wtkw w czasie
pracy. Wykorzystuje za to wtki przygotowane przez program mthreads, ktry musi
by regularnie wywoywany z crona w celu aktualizacji plikw indeksu.
Moesz czyta nowe artykuy bez uruchomionego mthreads, ale wtedy stale bdziesz
napotyka porozrzucane tytuy, takie jak PRAWDZIWA OKAZJA!, ktre mthreads
umieciby w jednym wtku, ktry atwo pomin.
*

Poprawia si to znacznie, jeeli serwer sam dokonuje podziau na wtki i przekazuje baz wtkw
klientowi. Na przykad tak robi INN .
** Z tego powodu bdziesz widzia brzydkie komunikaty bdw przy wywoywaniu tina jako superuytkownik. W kocu nie powiniene wykonywa rutynowych zada jako root.

Konfigurowanie nn

427

Aby wczy wtki dla konkretnych grup, wywoaj mthreads z list grup podan
w wierszu polece. Format listy jest taki sam jak w pliku sys w C News:
$ mthreads 'comp,rec,|rec.games.go'

To polecenie wcza wtki dla wszystkich grup comp i rec, za wyjtkiem comp.games.go (ludzie, ktrzy graj w go, nie potrzebuj luksusowych wtkw). Nastpnie
moesz normalnie wywoa mthreads bez adnych opcji, aby podzieli na wtki
wszystkie nowo przychodzce artykuy. Podzia na wtki wszystkich grup znajdujcych si w twoim pliku active moe by wczony przez wywoanie mthreads
z list grup all.
Jeeli otrzymujesz artykuy z grup w nocy, zwykle bdziesz uruchamia mthreads rano, ale moesz take robi to czciej, jeeli jest taka potrzeba. Due, obcione
orodki zechc uruchamia mthreads w trybie demona. Gdy zostanie on uruchomiony w czasie inicjacji systemu z opcj d, pracuje w tle i budzi si co dziesi minut, by
sprawdzi, czy nie nadeszy nowe artykuy, ktre trzeba podzieli na wtki. Aby
uruchomi mthreads w trybie demona, umie poniszy wiersz w swoim skrypcie
rc.news:
/usr/local/bin/rn/mthreads -deav

Opcja a powoduje, e mthreads automatycznie wcza dzielenie na wtki nowych


grup, zaraz po ich utworzeniu, a -v wcza komunikaty umieszczane przez mthreads
w pliku mt.log w katalogu, w ktrym jest zainstalowany trn.
Stare artykuy, ktre nie s ju dostpne, musz by regularnie usuwane z plikw indeksowych. Domylnie tylko artykuy o numerze niszym od dolnego znacznika bd
usuwane*. Artykuy o numerach wikszych, ktre wygasy (poniewa najstarszemu artykuowi zosta przypisany duszy czas wyganicia przez pole nagwka Expires:), mog mimo wszystko zosta usunite przez podanie opcji e wymuszajcej wygasanie rozszerzone. Gdy mthreads dziaa w trybie demona, opcja e powoduje, e
mthreads wykonuje takie rozszerzone wygasanie raz dziennie, zaraz po pnocy.

Konfigurowanie nn
nn, napisana przez Kima F. Storma, zdaje si by przegldark, ktrej gwnym celem nie jest czytanie grup. Jej nazwa pochodzi od sw No News (brak wiadomoci),
a jej mottem s sowa No news is good news, nn is better (brak wiadomoci to dobra wiadomo, nn jest lepsza).
Aby osign ten ambitny cel, nn posiada szereg narzdzi pomocniczych, ktre nie
tylko pozwalaj generowa wtki, ale take intensywnie sprawdza spjno bazy
danych, liczy i zbiera statystyki uytkowania oraz ogranicza dostp. Istnieje te
program administracyjny nnadmin, ktry pozwala na interaktywne wykonywanie
tych zada. Jest on bardzo intuicyjny, a wic nie bdziemy si na nim skupia. Omwimy jedynie generowanie plikw indeksw.
*

Zauwa, e C News (opisany w rozdziale 21, C News) nie uaktualnia automatycznie tego znacznika musisz uruchamia updatemin, aby to zrobi.

428

Rozdzia 24: Konfigurowanie przegldarki grup dyskusyjnych

Meneder bazy wtkw nn nosi nazw nnmaster. Zwykle jest uruchamiany jako demon w pliku rc w czasie startu komputera. Jest wywoywany tak:
/usr/local/lib/nn/nnmaster -l -r -C

To polecenie wcza podzia na wtki dla wszystkich grup obecnych w pliku active.
Podobnie moesz wywoywa nnmaster okresowo z crona, podajc list grup, na
ktrych ma dziaa. Jest to bardzo podobne do listy subskrypcyjnej w pliku sys, z t
rnic, e uywa si spacji zamiast przecinkw. Zamiast sztucznej grupy all, do
oznaczenia wszystkich grup naley uy argumentu pustego "". Przykadowe wywoanie wyglda tak:
# /usr/local/lib/nn/nnmaster !rec.games.go rec comp

Zauwa, e kolejno jest istotna. Zawsze wygrywa ta pasujca grupa, ktra znajduje
si najbardziej po lewej stronie. Dlatego, gdybymy umiecili !rec.games.go po rec,
wszystkie artykuy z tej grupy byyby podzielone na wtki bez wzgldu na wszystko.
nn oferuje kilka sposobw usuwania wyganitych artykuw z baz danych. Pierwszym jest uaktualnianie bazy przez przegldanie katalogw grup i odrzucanie wpisw odnoszcych si do artykuw, ktrym upyn czas przechowywania. Jest to
domylne dziaanie uzyskiwane przez wywoanie nnmaster z opcj E. Polecenie to
dziaa szybko, pod warunkiem, e uywasz NNTP.
Druga metoda dziaa dokadnie tak jak domylne wygasanie obsugiwane przez
mthreads. Usuwa tylko te wpisy, ktre odnosz si do artykuw o numerach niszych ni dolny znacznik w pliku active. Mona j wczy opcj e.
Trzecia strategia usuwa ca baz i zbiera ponownie wszystkie artykuy. Mona j
wczy, uywajc opcji E3.
Lista grup do wyganicia jest podawana przez opcj F w ten sam sposb jak powyej. Jednak jeeli nnmaster dziaa jako demon, musisz go unicestwi (uywajc
opcji k), zanim nastpi czas wyganicia i zaraz potem uruchomi oryginalne opcje.
Dlatego poprawne polecenie uruchamiane w celu usunicia nieaktualnych artykuw ze wszystkich grup za pomoc pierwszej metody wyglda nastpujco:
# nnmaster -kF ""
# nnmaster -lrC

Istnieje wiele innych znacznikw, ktre reguluj zachowanie nn. Jeeli martwisz si
o usuwanie zych artykuw lub ich gromadzenie, przeczytaj stron podrcznika nnmaster.
nnmaster opiera si na znajdujcym si w katalogu /var/lib/nn pliku GROUPS. Jeeli
go nie ma, gdy nnmaster jest uruchamiany po raz pierwszy, tworzy si go. Plik ten zawiera dla kadej grupy wiersz rozpoczynajcy si od jej nazwy, po ktrej opcjonalnie wystpuje znacznik czasowy i znaczniki. Moesz je edytowa, by wczy jakie
cechy danej grupy, ale nie moesz zmienia kolejnoci pojawiania si grup. (Ich kolejno musi si zgadza z wpisami w pliku (binarnym) MASTER). Dopuszczalne
znaczniki i ich dziaanie s rwnie szczegowo opisane na stronach podrcznika
nnmaster.

Przykadowa sie:
browar wirtualny

Dodatek A: Przykadowa sie: browar wirtualny

W tej ksice posugiwalimy si poniszym przykadem, ktry jest nieco mniej


skomplikowany od przykadu z uniwersytetem Groucho Marx i moe by bardziej
zbliony do zada, ktre rzeczywicie bdziesz wykonywa.
Browar wirtualny to niewielka firma, ktra jak sama nazwa wskazuje, zajmuje si
warzeniem wirtualnego piwa. Aby efektywniej zarzdza swoim biznesem, waciciele browaru chcieli poczy swoje komputery w sie. Dobrze si zoyo, e s to
PC, na ktrych dziaa wspaniay Linux. Rysunek A-1 pokazuje konfiguracj sieci.
Na tym samym pitrze znajduje si take winiarnia wirtualna, ktra cile wsppracuje z browarem. Ma wasn sie Ethernet. Zupenie naturalne jest, e obie firmy
chc poczy swoje sieci. Pierwszym krokiem jest skonfigurowanie gatewaya, ktry
przekazuje datagramy pomidzy dwoma podsieciami. Dalej chc mie cze UUCP
ze wiatem zewntrznym, przez ktre mog wymienia poczt i grupy dyskusyjne.
Na dusz met bd take chciay zestawia poczenia PPP w celu czenia si
z lokalizacjami odlegymi i z Internetem.
Browar wirtualny i wirtualna winiarnia maj podsieci klasy C wydzielone z sieci B
browaru, a gatewayem do kadej z nich jest host vlager, ktry obsuguje take
poczenie UUCP. Konfiguracj pokazano na rysunku A-2.
Winiarnia wirtualna Browar wirtualny
172.16.2.0/
172.16.1.0/
255.255.255.0
255.255.255.0

UUCP
eth0
vlager-if1
(1.1)
eth1
vlager-if2
(2.1)

Rysunek A-1. Podsieci browaru i winiarni wirtualnej

vlager

430

Dodatek A: Przykadowa sie: browar wirtualny

Winiarnia wirtualna Browar wirtualny


172.16.1.0/
172.16.2.0/
255.255.255.0
255.255.255.0
eth0
vlager- if1
(1.1)

Wirtualna filia
172.16.3.0/
255.255.255.0

UUCP

ppp0
(1.1)

cze PPP

ppp1
vlager (1.1)

ppp0
(3.1)

eth1
(3.1)
vbourbon- if1

vbourbon
PPP link

eth1
vlager-if2
(2.1)

ppp0
dynamiczne

oneshot

Rysunek A-2. Sie browaru wirtualnego

Podczanie sieci wirtualnej filii


Wirtualny browar rozrasta si i otwiera fili w innym miecie. W filii dziaa oddzielna sie Ethernet posiadajca wasny numer IP sieci 172.16.3.0, ktry jest 3. podsieci
sieci klasy B browaru. Host vlager dziaa jako gateway dla sieci browaru i obsuguje
cze PPP. Jego partner w nowej gazi to vbourbon posiadajcy adres IP 172.16.3.1.
T sie pokazuje rysunek A-2.

Przydatne konfiguracje
kabli
Dodatek B: Przydatne konfiguracje kabli

Jeli chcesz poczy ze sob dwa komputery, a nie masz sieci Ethernet, potrzebujesz
kabla szeregowego null modem lub kabla rwnolegego PLIP.
Kable te mona kupi w sklepie, ale bdzie duo taniej i prociej, jeli zrobisz je sam.

Kabel rwnolegy PLIP


Aby zrobi kabel rwnolegy uywany do poczenia PLIP, bdziesz potrzebowa
dwch zczy 25-pinowych (zwanych DB-25) i kabla o przynajmniej jedenastu
yach. Kabel nie moe by duszy ni 15 metrw (50 stp). Kabel moe, ale nie musi by ekranowany, cho gdy robisz dugi kabel, lepiej jest zastosowa ekran.
Jeli patrzysz na zcze, powiniene zauway niewielkie numerki przy kadym pinie od 1 dla pinu po lewej stronie u gry (jeeli trzymasz szersz stron do gry) do
25 przy pinie po prawej stronie na dole. W przypadku kabla null printer musisz
poczy ze sob odpowiednie piny obu zczy tak jak pokazano na rysunku B-1.
Wszystkie pozostae piny naley pozostawi nie podczone. Jeeli kabel jest ekranowany, ekran powinien by podczony do metalowej obudowy DB-25 tylko po jednej
stronie.

Kabel szeregowy NULL modem


Kabel szeregowy null modem bdzie dziaa zarwno dla poczenia SLIP, jak i dla
PPP. Znw potrzebujesz dwch zczy DB-25. Tym razem kabel musi by omioyowy.
By moe spotkae si z inn budow kabli null modem, ale ta pozwala ci na zastosowanie sprztowej kontroli przepywu co jest duo lepsze od kontroli XON/XOFF
lub adnej. Poczenia pokazano na rysunku B-2.
Znw, jeeli masz kabel ekranowany, powiniene podczy pierwszy pin tylko po
jednej stronie.

432

Dodatek B: Przydatne konfiguracje kabli

1
1

2
3
4
5
6
7
8
9
10
11
12
13

13

14

Kabel PLIP dla portu rwnolegego 1

14
15
16
17
18
19

15 do 2
2 do 15

2 do 15

2
13 do 3

4 do 12

12 do 4

5 do 10

10 do 5

6 do 11

11 do 6

3 do 13

20

21
22
23
24
25

25

9
10 do 5

5 do 10

10

11 do 6

6 do 11

11

12 do 4

4 do 12

12

13 do 3

3 do 13

13

25 to 25

13

14
14
15
16
17
18
19
20
21
22
23
24
25

25

Piny s odwrcone od ciebie, czyli w stron kartki

Rysunek B-1. Kabel rwnolegy PLIP


1
1
2
3
4
5
6
7
8
9
10
11
12
13

13

14

Kabel szeregowy NULL modem

14
15
16
17
18
19
20
21
22
23
24
25

25

1
1
2
3
4
5
6
7
8
9
10
11
12
13

13

Piny s odwrcone od ciebie, czyli w stron kartki

Rysunek B-2. Kabel szeregowy NULL modem

14
14
15
16
17
18
19
20
21
22
23
24
25

25

Linux Podrcznik administratora.


Wydanie drugie*. Informacje o prawach
autorskich
Dodatek C: Linux - Podrcznik administratora. Wydanie drugie.

Copyright 1993 Olaf Kirch


Copyright 2000 Terry Dawson
Copyright wersji drukowanej O'Reilly 2000 O'Reilly & Associates
Wersja elektroniczna tej ksiki, ktra w czasie drukowania tej pozycji zawiera
dokadnie t sam tre co wersja drukowana O'Reilly'ego, jest dostpna na warunkach licencji GNU FDL. Prawa do przedruku dokumentu na Licencji FDL obejmuj
prawo do drukowania i rozpowszechniania drukowanych kopii wersji elektronicznej. Prawa do kopiowania drukowanej wersji O'Reilly s zastrzeone. Elektroniczn
wersj licencji mona znale pod adresem http://www.oreilly.com/catalog/linag/licenseinfo.html. Ksika jest dostpna pod adresem http://www.linuxdoc.org/LDP/nag/nag.
html oraz http://www.oreilly.com/catalog/linag/ i moe by zamieszczana w innych
miejscach.
Zezwala si na kopiowanie, drukowanie, rozpowszechnianie i modyfikowanie dokumentu elektronicznego na warunkach licencji GNU Free Documentation License
w wersji 1.1 lub jakiejkolwiek nowszej wersji opublikowanej przez Free Software Foundation. W przypadku Sekcji niezmiennych, takich jak podzikowania (we Wstpie
i dodatku C pt. Linux Podrcznik administratora. Wydanie drugie. Informacje o prawach
autorskich), dalsze podzikowania mona dodawa tylko poza tymi sekcjami. Na
pocztku musi znale si nastpujca informacja:
Linux Przewodnik administratora sieci
Olaf Kirch i Terry Dawson
Copyright 1993 Olaf Kirch
Copyright 2000 Terry Dawson
Copyright wersji drukowanej O'Reilly'ego 2000 O'Reilly & Associates

W jzyku polskim jest to pierwsze wydanie tej ksiki (przyp. red.).

434

Dodatek C: Linux - Podrcznik administratora. Wydanie drugie.

Poniej zamieszczono kopi Licencji GNU Free Documentation License, ktr mona znale take (w wersji oryginalnej) pod adresem http://www.gnu.org/copyleft/fdl.
html.
Wersja 1.1, marzec 2000
Copyright 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Zezwala si na kopiowanie i rozpowszechnianie wiernych kopii niniejszego dokumentu licencyjnego, jednak bez prawa wprowadzania zmian.

0. Preambua
Celem niniejszej licencji jest zagwarantowanie wolnego dostpu do podrcznika,
treci ksiki i wszelkiej dokumentacji w formie pisanej oraz zapewnienie kademu
uytkownikowi swobody kopiowania i rozpowszechniania wyej wymienionych,
z dokonywaniem modyfikacji lub bez, zarwno w celach komercyjnych, jak i niekomercyjnych. Ponadto Licencja ta pozwala przyzna zasugi autorowi i wydawcy
przy jednoczesnym ich zwolenieniu z odpowiedzialnoci za modyfikacje dokonywane przez innych.
Niniejsza Licencja zastrzega te, e wszelkie prace powstae na podstawie tego dokumentu musz nosi cech wolnego dostpu w tym samym sensie co produkt oryginalny. Licencja stanowi uzupenienie Powszechnej Licencji Publicznej GNU (GNU
General Public License), ktra jest licencj dotyczc wolnodostpnego oprogramowania.
Niniejsza Licencja zostaa opracowana z zamiarem zastosowania jej do
podrcznikw do wolnodostpnego oprogramowania, poniewa wolnodostpne
oprogramowanie wymaga wolnodostpnej dokumentacji: wolnodostpny program
powinien by rozpowszechniany z podrcznikami, ktrych dotycz te same prawa,
ktre wi si z oprogramowaniem. Licencja ta nie ogranicza si jednak do
podrcznikw oprogramowania. Mona j stosowa do rnych dokumentw tekstowych, bez wzgldu na ich przedmiot oraz niezalenie od tego, czy zostay opublikowane w postaci ksiki drukowanej. Stosowanie tej Licencji zalecane jest gwnie
w przypadku prac, ktrych celem jest instrukta lub pomoc podrczna.

1. Zastosowanie i definicje
Niniejsza Licencja stosuje si do podrcznikw i innych prac, na ktrych umieszczona jest pochodzca od waciciela praw autorskich informacja, e dana praca moe
by rozpowszechniana wycznie na warunkach niniejszej Licencji. Uywane poniej
sowo Dokument odnosi si bdzie do wszelkich tego typu publikacji. Ich odbiorcy nazywani bd licencjobiorcami.
Zmodyfikowana wersja Dokumentu oznacza wszelkie prace zawierajce Dokument lub jego cz w postaci dosownej bd zmodyfikowanej i/lub przeoonej na
inny jzyk.

2. Kopiowanie dosowne

435

Sekcj drugorzdn nazywa si dodatek opatrzony odrbnym tytuem lub sekcj


pocztkow Dokumentu, ktra dotyczy wycznie zwizku wydawcw lub
autorw Dokumentu z ogln tematyk Dokumentu (lub zagadnieniami z ni
zwizanymi) i nie zawiera adnych treci bezporednio zwizanych z ogln tematyk (na przykad, jeeli Dokument stanowi w czci podrcznik matematyki, Sekcja
drugorzdna nie moe wyjania zagadnie matematycznych). Wyej wyjaniany
zwizek moe si natomiast wyraa w aspektach historycznym, prawnym, komercyjnym, filozoficznym, etycznym lub politycznym.
Sekcje niezmienne to takie Sekcje drugorzdne, ktrych tytuy s ustalone jako tytuy Sekcji niezmiennych w nocie informujcej, e Dokument zosta opublikowany
na warunkach Licencji.
Tre okadki to pewne krtkie fragmenty tekstu, ktre w nocie informujcej, e
Dokument zosta opublikowany na warunkach Licencji, s opisywane jako do
umieszczenia na przedniej okadce lub do umieszczenia na tylnej okadce.
Jawna kopia Dokumentu oznacza kopi czyteln dla komputera, zapisan w formacie, ktrego specyfikacja jest publicznie dostpna. Zawarto tej kopii moe by
ogldana i edytowana bezporednio za pomoc typowego edytora tekstu lub
(w przypadku obrazw zoonych z pikseli) za pomoc typowego programu graficznego lub (w przypadku rysunkw) za pomoc oglnie dostpnego edytora rysunkw. Ponadto kopia ta stanowi odpowiednie dane wejciowe dla programw
formatujcych tekst lub dla programw konwertujcych do rnych formatw odpowiednich dla programw formatujcych tekst. Kopia speniajca powysze warunki, w ktrej jednak zostay wstawione znaczniki majce na celu utrudnienie dalszych modyfikacji przez czytelnikw, nie jest Jawna. Kopi, ktra nie jest Jawna,
nazywa si Niejawn.
Przykadowe formaty kopii Jawnych to: czysty tekst ASCII bez znacznikw, format
wejciowy Texinfo, format wejciowy LaTeX, SGML lub XML wykorzystujce publicznie dostpne DTD, standardowy prosty HTML przeznaczony do rcznej modyfikacji. Formaty niejawne to na przykad PostScript, PDF, formaty wasne, ktre
mog by odczytywane i edytowane jedynie przez wasne edytory tekstu, SGML lub
XML, dla ktrych DTD i/lub narzdzia przetwarzajce nie s oglnie dostpne, oraz
HTML wygenerowany maszynowo przez niektre procesory tekstu jedynie w celu
uzyskania danych wynikowych.
Strona tytuowa oznacza, w przypadku ksiki drukowanej, sam stron tytuow oraz kolejne strony zawierajce informacje, ktre zgodnie z t Licencj
musz pojawi si na stronie tytuowej. W przypadku prac w formatach nie posiadajcych strony tytuowej Strona tytuowa oznacza tekst pojawiajcy si najbliej
tytuu pracy, poprzedzajcy pocztek tekstu gwnego.

2. Kopiowanie dosowne
Licencjobiorca moe kopiowa i rozprowadza Dokument komercyjnie lub niekomercyjnie, w dowolnej postaci, pod warunkiem zamieszczenia na kadej kopii Dokumentu treci Licencji, informacji o prawie autorskim oraz noty mwicej, e do

436

Dodatek C: Linux - Podrcznik administratora. Wydanie drugie.

Dokumentu ma zastosowanie niniejsza Licencja, a take pod warunkiem nieumieszczania adnych dodatkowych ogranicze, ktre nie wynikaj z Licencji. Licencjobiorca nie ma prawa uywa adnych technicznych metod pomiarowych utrudniajcych lub kontrolujcych czytanie lub dalsze kopiowanie utworzonych i rozpowszechnianych przez siebie kopii. Moe jednak pobiera opaty za udostpnianie
kopii. W przypadku dystrybucji duej liczby kopii Licencjobiorca jest zobowizany
przestrzega warunkw wymienionych w punkcie 3.
Licencjobiorca moe take wypoycza kopie na warunkach opisanych powyej,
a take wystawia je publicznie.

3. Kopiowanie ilociowe
Jeeli Licencjobiorca publikuje drukowane kopie Dokumentu w liczbie wikszej ni
100, a licencja Dokumentu wymaga umieszczenia Treci okadki, naley doczy
kopie okadek, ktre zawieraj ca wyran i czyteln Tre okadki: tre przedniej
okadki, na przedniej okadce, a tre tylnej okadki, na tylnej okadce. Obie okadki
musz te jasno i czytelnie informowa o Licencjobiorcy jako wydawcy tych kopii.
Okadka przednia musi przedstawia peny tytu; wszystkie sowa musz by rwnie dobrze widoczne i czytelne. Licencjobiorca moe na okadkach umieszcza take
inne informacje dodatkowe. Kopiowanie ze zmianami ograniczonymi do okadek,
dopki nie narusza tytuu Dokumentu i spenia opisane warunki, moe by traktowane pod innymi wzgldami jako kopiowanie dosowne.
Jeeli napisy wymagane na ktrej z okadek s zbyt obszerne, by mogy pozosta
czytelne po ich umieszczeniu, Licencjobiorca powinien umieci ich pocztek (tak
ilo, jaka wydaje si rozsdna) na rzeczywistej okadce, a pozosta cz na ssiednich stronach.
W przypadku publikowania lub rozpowszechniania Niejawnych kopii Dokumentu
w liczbie wikszej ni 100, Licencjobiorca zobowizany jest albo doczy do kadej
z nich Jawn kopi czyteln dla komputera, albo wymieni w lub przy kadej kopii
Niejawnej publicznie dostpn w sieci komputerowej lokalizacj penej kopii Jawnej
Dokumentu, bez adnych informacji dodanych lokalizacj, do ktrej kady uytkownik sieci miaby bezpatny anonimowy dostp za pomoc standardowych publicznych protokow sieciowych. W przypadku drugim Licencjobiorca musisz
podj odpowiednie rodki ostronoci, by wymieniona kopia Jawna pozostaa dostpna we wskazanej lokalizacji przynajmniej przez rok od momentu rozpowszechnienia ostatniej kopii Niejawnej (bezporedniego lub przez agentw albo
sprzedawcw) danego wydania.
Zaleca si, cho nie wymaga, aby przed rozpoczciem rozpowszechniania duej liczby kopii Dokumentu, Licencjobiorca skontaktowa si z jego autorami celem uzyskania uaktualnionej wersji Dokumentu.

4. Modyfikacje

437

4. Modyfikacje
Licencjobiorca moe kopiowa i rozpowszechnia Zmodyfikowan wersj Dokumentu na zasadach wymienionych powyej w punkcie 2 i 3 pod warunkiem cisego
przestrzegania niniejszej Licencji. Zmodyfikowana wersja peni wtedy rol Dokumentu, a wic Licencja dotyczca modyfikacji i rozpowszechniania Zmodyfikowanej wersji przenoszona jest na kadego, kto posiada jej kopi. Ponadto Licencjobiorca musi w stosunku do Zmodyfikowanej wersji speni nastpujce wymogi:
A. Uy na Stronie tytuowej (i na okadkach, o ile istniej) tytuu innego ni tytu
Dokumentu i innego ni tytuy poprzednich wersji (ktre, o ile istniay, powinny
zosta wymienione w Dokumencie, w sekcji Historia). Tytuu jednej z ostatnich
wersji Licencjobiorca moe uy, jeeli jej wydawca wyrazi na to zgod.
B. Wymieni na Stronie tytuowej, jako autorw, jedn lub kilka osb albo jednostek odpowiedzialnych za autorstwo modyfikacji Zmodyfikowanej wersji, a take przynajmniej piciu spord pierwotnych autorw Dokumentu (wszystkich, jeli byo ich mniej ni piciu).
C. Umieci na Stronie tytuowej nazw wydawcy Zmodyfikowanej wersji.
D. Zachowa wszelkie noty o prawach autorskich zawarte w Dokumencie.
E. Doda odpowiedni not o prawach autorskich dotyczcych modyfikacji obok
innych not o prawach autorskich.
F. Bezporednio po notach o prawach autorskich, zamieci not licencyjn zezwalajc na publiczne uytkowanie Zmodyfikowanej wersji na zasadach niniejszej
Licencji w postaci podanej w Zaczniku poniej.
G. Zachowa w nocie licencyjnej pen list Sekcji niezmiennych i wymaganych
Treci okadki podanych w nocie licencyjnej Dokumentu.
H. Doczy nie zmienion kopi niniejszej Licencji.
I.

Zachowa sekcj zatytuowan Historia oraz jej tytu i doda do niej informacj dotyczc przynajmniej tytuu, roku publikacji, nowych autorw i wydawcy
Zmodyfikowanej wersji zgodnie z danymi zamieszczonymi na Stronie
tytuowej. Jeeli w Dokumencie nie istnieje sekcja pod tytuem Historia, naley j utworzy, podajc tytu, rok, autorw i wydawc Dokumentu zgodnie z
danymi zamieszczonymi na stronie tytuowej, a nastpnie dodajc informacj
dotyczc Zmodyfikowanej wersji, jak opisano w poprzednim zdaniu.
J. Zachowa wymienion w Dokumencie (jeli taka istniaa) informacj o lokalizacji sieciowej, publicznie dostpnej Jawnej kopii Dokumentu, a take o podanych
w Dokumencie lokalizacjach sieciowych poprzednich wersji, na ktrych zosta
on oparty. Informacje te mog si znajdowa w sekcji Historia. Zezwala si na
pominicie lokalizacji sieciowej prac, ktre zostay wydane przynajmniej cztery
lata przed samym Dokumentem, a take tych, ktrych pierwotny wydawca wyraa na to zgod.
K. W kadej sekcji zatytuowanej Podzikowania lub Dedykacje zachowa
tytu i tre, oddajc rwnie ton kadego z podzikowa i dedykacji.

438

Dodatek C: Linux - Podrcznik administratora. Wydanie drugie.

L. Zachowa wszelkie Sekcje niezmienne Dokumentu w niezmienionej postaci (dotyczy zarwno treci, jak i tytuu). Numery sekcji i rwnowane im oznaczenia
nie s traktowane jako nalece do tytuw sekcji.
M. Usun wszelkie sekcje zatytuowane Adnotacje. Nie musz one by zaczane w Zmodyfikowanej wersji.
N. Nie nadawa adnej z istniejcych sekcji tytuu Adnotacje ani tytuu pokrywajcego si z jakkolwiek Sekcj niezmienn.
Jeeli Zmodyfikowana wersja zawiera nowe sekcje pocztkowe lub dodatki stanowice Sekcje drugorzdne i nie zawierajce materiau skopiowanego z Dokumentu,
Licencjobiorca moe je lub ich cz oznaczy jako sekcje niezmienne. W tym celu
musi on doda ich tytuy do listy Sekcji niezmiennych zawartej w nocie licencyjnej
Zmodyfikowanej wersji. Tytuy te musz by rne od tytuw pozostaych sekcji.
Licencjobiorca moe doda sekcj Adnotacje, pod warunkiem, e nie zawiera ona
adnych treci innych ni adnotacje dotyczce Zmodyfikowanej wersji mog to
by na przykad stwierdzenia o recenzji koleeskiej albo o akceptacji tekstu przez
organizacj jako autorytatywnej definicji standardu.
Na kocu listy Treci okadki w Zmodyfikowanej wersji, Licencjobiorca moe doda
fragment do umieszczenia na przedniej okadce o dugoci nieprzekraczajcej piciu sw, a take fragment o dugoci do 25 sw do umieszczenia na tylnej okadce. Przez kad jednostk (lub na mocy ustale przez ni poczynionych) moe zosta dodany tylko jeden fragment z przeznaczeniem na przedni okadk i jeden z
przeznaczeniem na tyln. Jeeli Dokument zawiera ju tre okadki dla danej
okadki, dodan uprzednio przez Licencjobiorc lub w ramach ustale z jednostk,
w imieniu ktrej dziaa Licencjobiorca, nowa tre okadki nie moe zosta dodana.
Dopuszcza si jednak zastpienie poprzedniej treci okadki now pod warunkiem
wyranej zgody poprzedniego wydawcy, od ktrego stara tre pochodzi.
Niniejsza Licencja nie oznacza, i autor (autorzy) i wydawca (wydawcy) wyraaj
zgod na publiczne uywanie ich nazwisk w celu zapewnienia autorytetu jakiejkolwiek Zmodyfikowanej wersji.

5. czenie dokumentw
Licencjobiorca moe czy Dokument z innymi dokumentami wydanymi na warunkach niniejszej Licencji, na warunkach podanych dla wersji zmodyfikowanych
w czci 4 powyej, jednak tylko wtedy, gdy w poczeniu zostan zawarte wszystkie Sekcje niezmienne wszystkich oryginalnych dokumentw w postaci niezmodyfikowanej i gdy bd one wymienione jako Sekcje niezmienne poczenia w jego nocie licencyjnej.
Poczenie wymaga tylko jednej kopii niniejszej Licencji, a kilka identycznych Sekcji
niezmiennych moe zosta zastpionych jedn. Jeeli istnieje kilka Sekcji niezmiennych o tym samym tytule, ale rnej zawartoci, Licencjobiorca jest zobowizany
uczyni tytu kadej z nich unikalnym poprzez dodanie na jego kocu, w nawiasach,
nazwy oryginalnego autora lub wydawcy danej sekcji, o ile jest znany, lub unikalne-

8. Tumaczenie

439

go numeru. Podobne poprawki wymagane s w tytuach sekcji na licie Sekcji niezmiennych w nocie licencyjnej poczenia.
W poczeniu Licencjobiorca musi zawrze wszystkie sekcje zatytuowane Historia z dokumentw oryginalnych, tworzc jedn sekcj Historia. Podobnie ma
postpi z sekcjami Podzikowania i Dedykacje. Wszystkie sekcje zatytuowane
Adnotacje naley usun.

6. Zbiory dokumentw
Licencjobiorca moe utworzy zbir skadajcy si z Dokumentu i innych dokumentw wydanych zgodnie z niniejsz Licencj i zastpi poszczeglne kopie Licencji pochodzce z tych dokumentw jedn kopi doczon do zbioru, pod warunkiem zachowania zasad Licencji dotyczcych kopii dosownych we wszelkich innych aspektach kadego z dokumentw.
Z takiego zbioru Licencjobiorca moe wyodrbi pojedynczy dokument i rozpowszechnia go niezalenie na zasadach niniejszej Licencji, pod warunkiem zamieszczenia w wyodrbnionym dokumencie kopii niniejszej Licencji oraz zachowania zasad Licencji we wszystkich aspektach dotyczcych dosownej kopii tego dokumentu.

7. Zestawienia z pracami niezalenymi


Kompilacja Dokumentu lub jego pochodnych z innymi oddzielnymi i niezalenymi
dokumentami lub pracami nie jest uznawana za Zmodyfikowan wersj Dokumentu, chyba e odnosz si do niej jako do caoci prawa autorskie. Taka kompilacja jest
nazywana zestawieniem, a niniejsza Licencja nie dotyczy samodzielnych prac skompilowanych z Dokumentem, jeli nie s to pochodne Dokumentu.
Jeeli do kopii Dokumentu odnosz si wymagania dotyczce Treci okadki wymienione w czci 3 i jeeli Dokument stanowi mniej ni jedn czwart caoci zestawienia, Tre okadki Dokumentu moe by umieszczona na okadkach zamykajcych Dokument w obrbie zestawienia. W przeciwnym razie Tre okadki musi
si pojawi na okadkach caego zestawienia.

8. Tumaczenie
Tumaczenie jest uznawane za rodzaj modyfikacji, a wic Licencjobiorca moe rozpowszechnia tumaczenia Dokumentu na zasadach wymienionych w punkcie 4.
Zastpienie Sekcji niezmiennych ich tumaczeniem wymaga specjalnej zgody
wacicieli prawa autorskiego. Dopuszcza si jednak zamieszczanie tumacze wybranych lub wszystkich Sekcji niezmiennych obok ich wersji oryginalnych. Podanie
tumaczenia niniejszej Licencji moliwe jest pod warunkiem zamieszczenia take jej
oryginalnej wersji angielskiej. W przypadku niezgodnoci pomidzy zamieszczonym tumaczeniem a oryginaln wersj angielsk niniejszej Licencji moc prawn ma
oryginalna wersja angielska.

440

Dodatek C: Linux - Podrcznik administratora. Wydanie drugie.

9. Wyganicie
Poza przypadkami jednoznacznie dopuszczonymi na warunkach niniejszej Licencji
nie zezwala si Licencjobiorcy na kopiowanie, modyfikowanie, czy rozpowszechnianie Dokumentu ani te na cedowanie praw licencyjnych. We wszystkich pozostaych wypadkach kada prba kopiowania, modyfikowania lub rozpowszechniania Dokumentu albo cedowania praw licencyjnych jest niewana i powoduje automatyczne wyganicie praw, ktre licencjobiorca naby z tytuu Licencji. Niemniej
jednak w odniesieniu do stron, ktre ju otrzymay od Licencjobiorcy kopie albo prawa w ramach niniejszej Licencji, licencje nie zostan anulowane, dopki strony te
w peni si do nich stosuj.

10. Przysze wersje Licencji


W miar potrzeby Free Software Foundation moe publikowa nowe poprawione
wersje GNU Free Documenation License. Wersje te musz pozostawa w duchu podobnym do wersji obecnej, cho mog si rni w szczegach dotyczcych nowych
problemw czy zagadnie. Patrz http://www.gnu.org/copyleft/.
Kadej wersji niniejszej Licencji nadaje si wyrniajcy j numer. Jeeli w Dokumencie podaje si numer wersji Licencji, oznaczajcy, i odnosi si do niego podana
lub jakakolwiek pniejsza wersja licencji, Licencjobiorca ma do wyboru stosowa
si do postanowie i warunkw albo tej wersji, albo ktrejkolwiek wersji pniejszej
opublikowanej oficjalnie (nie jako propozycja) przez Free Software Foundation. Jeli
Dokument nie podaje numeru wersji niniejszej Licencji, Licencjobiorca moe wybra
dowoln wersj kiedykolwiek opublikowan (nie jako propozycja) przez Free Software Foundation.

SAGE: cech
administratorw
systemu

Dodatek D: SAGE: cech administratorw systemu

Jeeli piszc artykuy do grupy comp.os.linux.* i czytajc dokumentacj, nie uzyskujesz wszystkich potrzebnych informacji, by moe czas doczy do grupy SAGE
cechu administratorw systemu sponsorowanego przez USENIX. Sage zabiega o to,
aby administrowanie systemem zyskao rang zawodu. SAGE zrzesza administratorw systemw i administratorw sieci i pomaga im rozwija umiejtnoci zawodowe, zapewnia forum dzielenia si problemami i ich rozwizywania oraz pozwala
dyskutowa uytkownikom, zarzdom i producentom na tematy zwizane z administrowaniem systemem.
Do aktualnych inicjatyw SAGE nale:

Wsplne sponsorowanie wraz z USENIX-em dorocznej konferencji dla administratorw systemw (LISA).

Publikowanie Job Descriptions for System Administrators, redagowanej przez Tin

Darmohray, pierwszej serii praktycznych broszurek i przewodnikw po zasobach


obejmujcych zagadnienia i techniki zwizane z administrowaniem systemem.
Tworzenie orodkw archiwum, ftp.sage.usenix.org, gdzie s gromadzone referaty z konferencji administratorw systemu i dokumentacja zwizana z administrowaniem systemem.
Tworzenie grup roboczych w obszarach istotnych dla administratorw systemw, jak zadania, publikacje, polityki, elektroniczne rozpowszechnianie informacji, edukacja, producenci i standardy.
Aby dowiedzie si wicej na temat stowarzyszenia USENIX i jego specjalnej sekcji
technicznej SAGE, skontaktuj si z biurem stowarzyszenia pod numerem telefonu
(510) 528-8649 w Stanach Zjednoczonych lub za porednictwem poczty elektronicznej: office@usenix.org. Aby otrzyma elektroniczne informacje, napisz na adres: info@usenix.org. Roczna skadka dla czonkw SAGE to 25 USD (musisz by take
czonkiem USENIX). Czonkowie s uprawnieni do bezpatnego otrzymywania
kwartalnikw technicznych login: i Computing Systems oraz maj rabaty przy
rejestracji na konferencjach i sympozjach, a take przy zakupie publikacji i innych
usug SAGE.

Indeks

Numery
8250 UART, ukad scalony, 52
16450 UART, ukad scalony, 52
16550 UART, ukad scalony, 52

A
A, rekord DNS, 95-96, 104
A News, 361
accept(), funkcja, 12
access_db (sendmail), 336
adres
e-mail, 306
Ethernet, 5
grupowy, 77
Hesiod, 95
IP, 9, 20-21
przypisywanie, 63-64
pamici, 31
ptli zwrotnej, 21
podstawowy urzdzenia, 31
rozgoszeniowy, 21
wejcia/wyjcia, 31
agent
pocztowy uytkownika, zob.
MUA
przesyania wiadomoci, zob.
MTA
alias IP, zob. IP
aliasy pocztowe, zob. sendmail
Allman Eric, 301
ArcNet, 6, 46
arp, polecenie, 80-82
ARP (Address Resolution Protocol), protok, 22
sprawdzanie tablic, 80-82
wczanie/wyczanie, 77
ARPANET, 2, 302
artyku Usenet, 362
auto-IRQ, 42
automatyczne dzwonienie przez
chat, zob. chat
autorytatywne serwery nazw,
zob. DNS
autowykrywanie, 32
ATM (Asynchronous Transfer
Mode), 7, 12
AX25 HOWTO, 7, 39

AX.25, protok, 7, 39
Aznar Guylhem, 272, 302

B
B News, 361, 378, 388
Barber Stan, 388
BBS (Bulletin Board System), 47
Becker Donald, 41
BGP, protok, 28
BIND (Berkeley Internet Name
Domain), usuga, 83, 101
bind(), funkcja, 12
bindery, narzdzia do obsugi
bazy, 267
binhex, 36
Biro Ross, 13
bit typu usugi, zob. TOS
blacklist_recipients (sendmail),
337
Blundell Philip, 45
BNC, wtyczka, 4
BNU (Basic Networking Utilities), 271
/boot, katalog, 16
BOOTP, 23
browar wirtualny, 429
bryd, 5
bsmtp, polecenie, 290, 305
Burkett B. Scott, XV

C
C News, 361, 367, 388, 427
active, plik, 374, 386
active.times, plik, 374-375
addgroup, skrypt, 386
addmissing, skrypt, 386
batchlog, plik, 382
batchparams, plik, 376
cancel, wiadomo kontrolna,
382
checkgroups, wiadomo kontrolna, 383-384
delgroup, skrypt, 386
dostarczanie grup dyskusyjnych, 367-369
errlog, plik, 382
explist, plik, 378-381

instalacja, 369-371
localgroups, plik, 381
log, plik, 382
mailpaths, plik, 381
narzdzia, 385-386
newgroup, wiadomo kontrolna, 383
newsboot, skrypt, 386
newsdaily, skrypt, 385-386
newsgroups, plik, 381
newsrunning, skrypt, 386
newswatch, skrypt, 386
przetwarzanie wsadowe artykuw, 376-378
rmgroup, wiadomo kontrolna, 383
sendbatches, plik, 377-378
sendsys, wiadomo kontrolna, 384
senduuname, wiadomo kontrolna, 384
sys, plik, 371-374
version, wiadomo kontrolna,
384
watchtime, plik, 382
wiadomoci kontrolne,
382-384
wsppraca z nntpd, 397-398
wygasanie grup dyskusyjnych, 378-381
zadania administracyjne,
385-386
Caldera, dystrybucja Linuksa,
XIX, 255
CCITT, 301
CHAP (Challenge Handshake
Authentication Protocol), protok, 126, 138-140
plik sekretw, 139-140
chargen, usuga, 213
chat, polecenie, 126
automatyczne dzwonienie,
129-132
cig oczekiwany, 130
cig wysyany, 130
cienki Ethernet, zob. Ethernet
CNAME, rekord DNS, 95, 105
Collyre Geoff, 361
com, domena, 91

444

Indeks

COM, port, 51
comp.mail.uucp, grupa dyskusyjna, 272
comp.os.linux.admin, grupa
dyskusyjna, XVIII
comp.os.linux.announce, grupa
dyskusyjna, XVII
comp.os.linux.answers, grupa
dyskusyjna, 41, 272
comp.os.linux.development,
grupa dyskusyjna, XVIII
comp.os.linux.help, grupa dyskusyjna, XVII
comp.os.linux.misc, grupa dyskusyjna, XVIII
comp.os.linux.networking, grupa dyskusyjna, XVIII
comp.protocols.ppp, grupa dyskusyjna, 127
comp.protocols.tcp-ip.domains,
grupa dyskusyjna, 83
compress, polecenie, 376-377
connect(), funkcja, 12
Corel, dystrybucja Linuksa, XIX
Cox Alan, 13, 254
cron, 15
CSLIP (Compressed Serial Line
IP), protok, 9, 114
czsto zadawane pytania, zob.
FAQ

D
DARPA, 2
datagram, 2, 8
Davies David C., 40
daytime, usuga, 213
DBM, biblioteka, 230, 397-398
dbmload, program, 234
DDI (Device Driver Interface),
14
Debian, dystrybucja Linuksa,
XIX
DECNet, 6
demony rutingu, 25
Dent Arthur, 122
/dev, katalog, 32
/dev/cua*, 49-51
/dev/modem, 51
/dev/tty*, 32
/dev/ttyS*, 49-51
dialin, urzdzenie, 49
dialout, urzdzenie, 49
dig, polecenie, 111
dip, polecenie, 117-122
diphosts, plik, 122
diplogin, polecenie, 117, 123-124
DISPLAY, zmienna rodowiskowa, 3
domainname, polecenie, 63, 232

domena, 91
globalna najwyszego rzdu,
91
gwna, 89, 91
NIS, zob. NIS
domenizowanie, 311
domylny ruting, 21
DNS (Domain Name System),
30, 83, 91-93
autorytatywne serwery nazw,
94
baza danych, 95-96
domena pocztkowa, 102
gwne serwery nazw, 94
lokalna pami podrczna, 94
odwzorowanie odwrotne, 96
pliki bazy danych, 102-106
podstawowy serwer nazw, 94
poszukiwanie nazw, 93-94
rekord zasobu, 95, 102
serwer pamici podrcznej,
94-95, 106
serwer podlegy, 100
typy serwerw nazw, 94
wyszukiwanie odwrotne,
96-98
zapasowy serwer nazw, 94
dnswalk, polecenie, 111
DOMAIN, makro sendmail, 321
Dryak Ales, 254-255
DUL (Dial-Up List), 358
dzielenie na podsieci, 24
dzwonienie na danie, zob.
PPP

E
echo, usuga, 219
edu, domena, 91
EGP, protok, 28
Ekwall Bjorn, 40
Electronic Mail HOWTO, 302
elm, 313
konfigurowanie, 313
narodowe zestawy znakw,
314
opcje globalne, 314
emulacja serwera NetWare, zob.
NetWare
Eriksson Peter, 65, 230
ESMTP, protok, 331
/etc/alias, plik, 332
/etc/aliases, plik, 356
/etc/diphosts, plik, 122-124
/etc/dip.pid, plik, 118
/etc/elm/elm.rc, plik, 313
/etc/exim.conf, plik, 347, 358
/etc/exports, plik, 248-250
/etc/fstab, plik, 62, 245
/etc/group, plik, 231, 240-241

/etc/host, plik, 90
/etc/host.conf, plik, 65, 84-88
/etc/hostname, plik, 280
/etc/hosts, plik, 29, 63, 65, 87, 231
/etc/hosts.allow, plik, 216-217,
235
/etc/hosts.deny, plik, 216-217,
235
/etc/inetd.conf, plik, 214-215,
292, 349, 395
/etc/inittab, plik, 58
/etc/lilo.conf, plik, 42-43
/etc/mail/access, plik, 336
/etc/mail/sendmail.cf, plik, 318
/etc/mail/trusted-user, plik, 331
/etc/mgetty/mgetty.config, plik,
58-59
/etc/named.boot, plik, zob. named.boot
/etc/named.conf, plik, zob. named.conf
/etc/networks, plik, 65-66, 86-88,
231, 396
/etc/nis.conf, plik, 239
/etc/nntpserver, plik, 426
/etc/nsswitch.conf, 84, 86-88,
238-241
/etc/passwd, plik, 122-123, 142,
215, 231, 240-241, 292, 354, 371,
397
/etc/ppp/ip-down, plik, 135
/etc/ppp/ip-up, plik, 135
/etc/ppp/options, plik, 128, 137
/etc/ppp/chat-secrets, plik, 138
/etc/ppp/pap-secrets, plik, 138
/etc/printcap, plik, 268-269
/etc/protocols, plik, 178, 217-219,
231
/etc/rc*, skrypty, 61
/etc/resolv.conf, plik, 86-90, 113,
127
/etc/rpc, plik, 219-220, 231
/etc/sendmail.cf, plik, 318
/etc/sendmail.ct, plik, 331
/etc/services, plik, 11, 156,
217-219, 231, 289, 395
/etc/shadow, plik, 142, 242
/etc/ssh/ssh_config, plik, 223
/etc/ssh/ssh_host_key, plik, 222
/etc/ssh/ssh_host_key.pub, plik,
222
/etc/uucp/config, plik, 276
/etc/uucp/dial, plik, 277
/etc/uucp/port, plik, 277
/etc/yp.conf, plik, 236-237
/etc/ypserv.securenets, plik, 235
Ethernet, 4
automatyczne wykrywanie
kart, 41-42
cienki/gruby, 4

Indeks

445

instalacja, 41-43
interfejs, 69-71
kolizje, 5
skrtkowy, 4
etrn, skrypt, 344
exim, 347
aliasy, 356-357
dostarczanie poczty, 354
kompilowanie, 350-351
konfiguracja UUCP, 358-359
listy pocztowe, 357
ochrona przed spamem,
357-358
opcje konfiguracyjne, 352-353
przekierowywanie poczty,
355-356
ruting poczty, 353-354
tryb dostarczania poczty,
351-352
uytkownicy lokalni, 355
expect, program, 129-130
expire.ctl, plik, zob. innd
exports, plik, 248-250

F
FAQ, XVI
Ethernet, 5
FDDI (Fiber Distribution Data
Interface), 6, 46
FEATURE, makro sendmaila,
322
FHS (File Hierarchy Standard),
XX
FidoNet, 48
FIFO, bufor, 52
filtrowanie IP, zob. IP
finger, program, 215
firewall, 149-150
konfigurowanie Linuksa, 152
konfigurowanie w jdrzach,
37, 152
przykadowa konfiguracja,
186-193
testowanie konfiguracji,
184-186
.forward, plik, 355
FQDN (Fully Qualified Domain
Name), 63, 91, 325
FRAD (Frame Relay Access
Device), 7
fragmentacja IP, 38, 200
Frame Relay, 7
Frampton Steve, XV
FSSTND (File System Standard), XX, 50, 305
FTP (File Transfer Protocol)
tryb bierny, 158
tryb czynny, 158

G
gated, program, 28
gateway, 8, 24-26
konfigurowanie, 71-72
getdomainname, funkcja, 89
gethostbyaddr(), funkcja, 29, 84,
248
gethostbyname(), funkcja, 29,
84, 274
gethostname(), funkcja, 140
getpwnam(), funkcja, 233
getpwuid(), funckja, 233
getservbyname(), funkcja, 238
getty, polecenie, 57
glibc, biblioteka, 84
gwne serwery nazw, zob.
DNS
GNU, XIV
FDL (Free Documentation License), 433
lib C, 236-237
Goldt Sven, XV
gov, domena, 91
GPG (GNU Privacy Guard), 417
Groucho Marx, uniwersytet
(GMU), 3, 429
gruby Ethernet, zob. Ethernet
grupy dyskusyjne, 361
faszowanie, 388
podszywanie, 388
ciganie, 365, 387
wciskanie, 365, 387
wygasanie, 365
grupy uytkownikw Linuksa,
XIX
gzip, polecenie, 376-377

H
Hankins Greg, 47
Harper John D., XV
Hazel Philip, XXII, 301
HDB UUCP, 271
HDLC (High-Level Data Link
Control), protok, 125, 142
Hesiod, zob. adres Hesiod
HINFO, rekord DNS, 105-106
history, plik, 364, 367, 380, 386
HoneyDanber UUCP, zob. HDB
UUCP
hopy, 28
Horton Mark, 361
host wymieniajcy poczt, 105
host.conf, plik, 65, 84-88
hostcvt, polecenie, 111
hostname, polecenie, 63, 280
hoststat, polecenie, 344-345
hosts.byaddr, plik, 231
hosts.byname, plik, 231

hosty, 2
wirtualne, 38
HOWTO, XV
AX25, 7, 39
Electronic Mail, 302
Ethernet, 41
Firewall, 151
Hardware compatibility, XV
Installation, XV
IPCHAINS, 163, 167
IPTABLES, 211
IPX, 270
Networking, 7, 37
NIS, 230
PACKET-FILTERING-HOWT
O, 176
PPP, 127
Serial, 47
UUCP, 272
hub aktywny, 4

I
IANA, organizacja, 64
ICMP (Internet Control Message Protocol), 28-29
komunikat Port Unreachable,
28
komunikat Redirect, 28
zliczanie datagramw, 200-202
typy datagramw, 162
ID procesu, zob. pid
IDP (Internet Datagram Protocol), protok, 253-254
IETF (Internet Engineering
Task Force), 11
ifconfig, polecenie, 49, 66, 75-77
in-addr.arpa, domena, 96-97
inetd, 213-215, 348-349
inetd.conf, plik, 214-215, 292,
349, 395
inews, polecenie, 364, 385, 397
init, proces, 60
INN (Internet News), 361, 399
inn.conf, plik, zob. innd
innd, 399
active, plik, 401, 405-407
anulowanie artykuu, 423
architektura, 399-400
bufor grup, 401
control.ctl, plik, 415-418
ctlinnd, polecenie, 419
dodawanie nowej grupy, 419
expire.ctl, plik, 414-415
hosts.nntp, plik, 412
incoming.conf, plik, 411-412
inn.conf, plik, 404-405
innxmit, program, 401, 408,
410-411
instalacja, 402-403

446
kanay, 401
konfiguracja, 403
konfigurowanie
dostarczania grup do innych serwerw, 407-411
grup dyskusyjnych, 405
kontrolowanie dostpu
przegldarki, 411-413
newsfeeds, plik, 401, 407-409,
412
newsgroups, plik, 405-407
nnrp.access, plik, 412-413
nntpsend.ctl, plik, 410-411
odczenie dostarczania plikw z innego serwera, 422
odmowa poczenia z innego
serwera, 421
parametry globalne, 404-405
pliki konfiguracyjne, 403-418
pozwolenie na poczenie z innego serwera, 421
przenumerowanie grupy, 420
restart serwera, 421-422
rozpoczynanie dostarczania
plikw z innego serwera, 422
status pobierania plikw, 422
usuwanie grupy, 420
wiadomoci kontrolne,
415-418
wygasanie artykuw w grupach, 413-415
zamknicie serwera, 421
zarzdzanie, 419-423
zmiana grupy, 419
innxmit, polecenie, zob. innd
insmod, polecenie, 208
instalowanie plikw binarnych,
62-63
instancja urzdzenia, 32
inteligentny host, 324, 333-334,
353
interfejs
aktywny, 66
Ethernet, zob. Ethernet
fikcyjny, 73-74
ptli zwrotnej, 21, 67-68
PLIP, 72-73
PPP, 73
sieciowy , 19
SLIP, 73
statystyki, zob. statystyki interfejsu
Internet News, zob. INN
Internetowy protok komunikatw kontrolnych, zob.
ICMP
IP (Internet Protocol), 8
alias, 74
IPv4, 9
IPv6, 9, 20

Indeks
filtrowanie IP, 151, 154-155
fragmentacja, zob. fragmentacja IP
konfiguracja interfejsu, 66-67
liczenie ruchu, 38, 195
bierne, 204
konfigurowanie, 195-198
usuwanie zestaww regu,
204
wedug adresu, 196-197
wedug portu usugi,
198-200
wedug protokou, 201-202
wykorzystywanie wynikw, 202-203
zerowanie licznikw,
203-204
zliczanie datagramw
ICMP, 200-201
cza rwnolegego, zob. PLIP
cza szeregowego, zob. SLIP
maskowanie, 64, 205
konfigurowanie jdra,
207-209
konfigurowanie usugi,
209-211
parametry czasowe,
210-211
opcje konfiguracyjne PPP,
132-135
przekazywanie, 72
rdowy wybr trasy, 39
ipchains, polecenie, 152-153,
162-173
argumenty, 164-167
definiowanie acuchw,
168-173
konfigurowanie liczenia ruchu
IP, zob. IP
listowanie regu, 168
przykad, 167
przykadowa konfiguracja firewalla, 188-190
skadnia, 163-164
skrypty pomocnicze, 173
ustawianie TOS, 182-183
uywanie, 163
ipchains-restore, skrypt, 173
ipchains-save, skrypt, 173
IPCHAINS-HOWTO, 163, 167
IPCP (Internet Protocol Control
Protocol), 126, 132
ipfwadm, polecenie, 152-162
argumenty, 159-162
konfigurowanie liczenia ruchu
IP, zob. IP
przykad, 155, 158
przykadowa konfiguracja firewalla, 186-188
ustawianie TOS, 182-183

ipfwadm-wrapper, polecenie,
163, 173
iptables, polecenie, 152-153,
177-181
argumenty, 177-181
konfigurowanie liczenia ruchu
IP, zob. IP
przykad, 181
przykadowa konfiguracja firewalla, 190-193
ustawianie TOS, 183-184
IPTABLES-HOWTO, 211
IPv4, 8
IPv6, 14
IPX (Internet Packet eXchange),
protok, 254-262
interfejs podstawowy, 257
konfigurowanie interfejsw,
256-257
konfigurowanie jdra, 256
konfigurowanie rutera,
259-260
listowanie serwerw w sieci,
266
narzdzia konfiguracyjne,
257-259
ruting statyczny, 260
sieci wewntrzne, 261-262
IPX-HOWTO, 270
ipx_configure, polecenie,
257-258
ipx_interface, polecenie, 258-259
ipx_internal_net, polecenie, 262
ipx_route, polecenie, 260
ipxd, demon, 259
IRQ (Interrupt Request), 32
ISO-8859-1, standard, 314-315

J
jdro
niestabilne, 34
2.0
opcje, 35-40
produkcyjne, 34
rozwojowe, 34
stabilne, 34

K
kabel
rwnolegy PLIP, 431-432
szeregowy NULL modem,
431-432
kanoniczna nazwa hosta, 95
karta sieciowa, 5
Kempen, Fred van, 13
kermit, polecenie, 47
kerneld, polecenie, 208
Kirch Olaf, XXI, 251

Indeks

447

klasy sieci, 20-21


kodowanie c7, 376
kolizje, 5
komunikat przekierowania
ICMP, 29
konfigurowanie
gatewaya, zob. gateway
interfejsu dla IP, zob. IP
jdra, 34
poszukiwania przez serwer
nazw, 88-90
kropkowa notacja
czwrkowa, 9
dziesitna, 9
Kukuk Thorsten, 230

L
LAN, 1
Lapsley Phil, 362
Latin-1, zestaw znakw, 316
LCP (Link Control Protocol),
protok, 125, 135
LDP (Linux Documentation
Project), XV, XVI, XXIII, 41
leafnode, program, 394, 399
Lendecke Volker, 254
lib C, biblioteka, 12, 29
Libes Don, 129
licencja GNU, zob. GNU
liczenie ruchu IP, zob. IP
lilo, polecenie, 42-43
linuksowe grupy dyskusyjne
Usenetu, XVII-XVIII
linux-kernel, pocztowa lista
dyskusyjna, XVIII
linux-net, pocztowa lista dyskusyjna, XVIII
linux-ppp, pocztowa lista dyskusyjna, XVIII
Linux Journal, XVII
Linux Magazine, XVII
lista przeszukiwania resolvera,
89
listen(), funkcja, 12
LOCAL_NET_CONFIG, makro,
328, 334, 341-342
LOCAL_RULE_0, zestaw regu
sendmail, 328
LOCAL_RULE_1, zestaw regu
sendmail, 328
LOCAL_RULE_2, zestaw regu
sendmail, 328
LOCAL_RULE_3, zestaw regu
sendmail, 328
LOCKDIR, zmienna rodowiskowa, 51
login, polecenie, 57
lpd, demon, 268
LSB (Linux Standard Base), XXI

Lu H.J., 250
LUG (Linux User Group), XIX
lwared, program, 270

acuchy IP, 152, 162-173

M
m4, makroprocesor, 319
MAILER, makro sendmaila, 322
mailq, polecenie, 343, 351
mailstats, polecenie, 344
make menuconfig, polecenie, 35
makedbm, program, 234
maksymalna jednostka odbioru,
zob. MRU
maksymalny rozmiar
datagramw, zob. MTU
segmentu, zob. MSS
MAPS (Mail Abuse Protection
System), projekt, 357
mapy NIS, zob. NIS
mars_nwe, program, 270
maska
podsieci, 24
sieci, 24
maskowanie adresw, zob. IP
Meer, Sven van der, XV
metamail, polecenie, 314
metody ataku, 148-149
metryka, 28, 76
mgetty, polecenie, 58-60
Middelink Pauline, 155
mil, domena, 91
MIME (Multipurpose Internet
Mail Extensions), 303
minicom, polecenie, 47
modem
polecenia, 120
modulacja pasma podstawowego, 4
Morris G. Allan, 250
mount, polecenie, 244
mountd, demon, 248
MRU (Maximum Receive Unit),
125
MTA (Mail Transport Agent),
305
mthreads, program, 426-428
MTU (Maximum Transfer Unit),
20, 38
MUA (Mail User Agent), 305
MX, rekord DNS, 105, 308
Myklebust Trond, 251

N
named, polecenie, 98

named.ca, plik, 106-107


named.boot, plik, 98-101
named.conf, plik, 98-101
named.hosts, plik, 96, 107-108
named.local, plik, 108
named.rev, plik, 97, 108
named-bootconf.pl, polecenie,
100
nasuchiwanie na porcie, 11
NAT (Network Address Translation), zob. translacja adresw sieciowych
NCP (Network Control Protocol), 14, 126
NCP (NetWare Core Protocol),
254
NCPFS (NetWare Core Protocol
Filesystem), 255-256
ncpmount, polecenie, 263-266
NCSA telnet, polecenie, 44
NDS (NetWare Directory Service), 255
net, domena, 91
Net-1, wersja sieci, 13
Net-2, wersja sieci, 13, 230
Net-2d, wersja sieci, 13
Net-2Debugged, wersja sieci,
13-14
Net-2e, wersja sieci, 14
Net-3, wersja sieci, 13
Net-4, wersja sieci, 13-14
NET-FAQ, XXI
netfilter, polecenie, 152, 173-181
wsteczna zgodno, 176
NetRom, 39
netstat, polecenie, 70, 78-80
NetWare, 253
drukowanie do kolejki,
267-269
emulacja serwera, 270
montowanie wolumenu, 263
wysyanie komunikatw do
uytkownikw w sieci,
266-267
zarzdzanie kolejkami drukowania, 269-270
Networking HOWTO, 7, 37
Neuling Michael, 163
newaliases, polecenie, 333
NEWSMASTER, zmienna rodowiskowa, 371
newsrun, polecenie, 367
NFS (Network File System),
XXII, 3
demony, 247-248
dugi czas oczekiwania, 246
i C News, 385
krtki czas oczekiwania, 246
montowanie wolumenu,
245-247

448
przygotowanie do pracy,
244-245
wolumen, 245
zamontowany na stae, 246
zamontowany nietrwale,
246
NFSv2, 250
NFSv3, 251
NIC (Network Information
Center), 20, 30
NIC (Network Interface Card),
zob. karta sieciowa
nieautoryzowany dostp, 148
NIS (Network Information System), XXII, 30, 229
bezpieczestwo serwera,
235-236
domena, 232
eksploatacja serwera, 234-235
klient, 233
konfigurowanie z GNU
libc, 236-237
mapy, 231
group, 240-241
passwd, 240-241
serwer gwny, 232
serwer podrzdny, 232
wybr map, 238-239
z hasami shadow, 242
NIS-HOWTO, 230
NIS+, 230, 233
tabele, 233
nn, program, 425
konfiguracja, 427-428
nnadmin, program, 427
nnmaster, program, 428
nnrp.access, plik, zob. innd
nnrpd, program, 402, 411-412
NNTP (Network News Transfer Protocol), protok, 362,
387, 389
czytanie artykuu z grupy,
394-395
implementacja wzorcowa, 388
listowanie
aktywnych grup, 391-392
artykuw w grupie, 393
dostpnych grup, 391
nowych artykuw, 392
pobieranie
nagwka artykuu, 393
treci artykuu, 394
podczanie si do serwera
grup, 389-390
przejcie do trybu czytania,
390-391
wciskanie artykuu do serwera, 390
wybr grupy, 393
wysyanie artykuu, 392

Indeks
nntp_access, plik, zob. nntpd
nntpd, program, 362, 381
autoryzacja, 397
distributions, plik, 381-382
instalacja, 395
nntp_access, plik, 395-396
ograniczenie dostpu, 395-396
wsppraca z C News, 397-398
nntpsend.ctl, plik, 409-410
NNTPSERVER, zmienna rodowiskowa, 426
Noord Ray, 255
Novell, firma, 39, 253
nprint, polecenie, 267-268
NS, rekord DNS, 100, 104-105
nsend, polecenie, 266
nslint, polecenie, 111
nslookup, polecenie, 106, 109
numer
hosta, 20
sieci, 20
wersji jdra, 34
zgoszenia przerwania, zob.
IRQ
.nwclient, plik, 265
NYS, 65, 230

O
odcisk palca, 225
odmowa obsugi, 148
odwrotny protok rozwizywania adresw, zob. RARP
Oja Joanna, XV
opcje sterowania czem, zob.
PPP
OpenLinux, 255
OpenSSH, 221
org, domena, 91
OSPF (Open Shortest Path
First), protok, 39
OSTYPE, makro sendmaila, 321
OSWG (Open Source Writers
Guild), XVI
orodki, 2

P
PACKET-FILTERING-HOWTO
, 176
PAD (Packet Assembler Disassembler), 6
Page Greg, 254
pakiet, 2
PAP (Password Authentication
Protocol), protok, 126,
138-141
plik sekretw, 140-141
pathalias, polecenie, 312

pena nazwa domenowa, zob.


FQDN
PGP (Pretty Good Privacy), 417
pid, 50
ping, polecenie, 68
pliki blokujce, 50
PLIP (Parallel Line IP)
kabel, zob. kabel rwnolegy
PLIP
sterownik, 44-46
interfejs, zob. interfejs PLIP
plipconfig, polecenie, 73
poczta elektroniczna, 301
analizowanie statystyk,
344-346
dawne formaty, 306-307
koperta, 302
czenie rnych formatw,
307
czenie UUCP i RFC-822,
310-313
nagwek poczty, 302
sposb dostarczania, 305
tre wiadomoci, 302
poddomeny, 91
podsieci, 23-24
podsuchiwanie, 149
podstawowy serwer nazw, zob.
DNS
podszywanie si, 149
polecenia modemu, 120
Pomerantz Ori, XV
portmapper, 68, 220
porty, 11
poszukiwanie nazw, zob. DNS
powoka, 3
poziomy uruchomienia, 59-60
.ppprc, plik, 129
PPP (Point-to-Point Protocol)
debugowanie konfiguracji,
141-142
dzwonienie na danie,
144-145
interfejs, 73
opcje sterowania czem,
135-136
pliki opcji, 128-129
protok, 9, 126-127
ruting przez cze, 133-134
serwer, 142-144
stae poczenie telefoniczne,
145
uwierzytelnianie, 137-138
wybr adresw IP, 132-133
zaawansowana konfiguracja,
142-145
PPP-HOWTO, 127
pppd, demon, 126-128
.pprc, plik, 129
pqlist, polecenie, 269

Indeks
pqrm, polecenie, 270
pqstat, polecenie, 270
/proc, 62
/proc/filesystems, plik, 244
/proc/kmsg, plik, 142
/proc/net, katalog, 68
/proc/net/ip_acct, plik, 195
/proc/net/ip_alias, plik, 74
/proc/net/ip_masquerade, plik,
210
/proc/net/ipx_route, plik, 260
/proc/net/snmp, plik, 72
projekt dokumentacji Linuksa,
zob. LDP
protokoy rutingu
wewntrzne, 28
zewntrzne, 28
protok
BOOTP, zob. BOOTP
datagramw uytkownika,
zob. UDP
ihave/sendme, 365
internetowy, zob. IP
internetowy cza szeregowego, zob. SLIP
IP cza rwnolegego, zob.
PLIP
kontroli transmisji, zob. TCP
NCP, zob. NCP
NNTP, zob. NNTP
obsugi cza, 49
pakietowy, 295
przesuwnego okna, 296
przesyania wiadomoci w sieci komputerowej Usenet,
zob. NNTP
punkt-punkt, zob. PPP
rozwizywania adresw, zob.
ARP
sterowania czem, zob. LCP
sterowania protokoem internetowym, zob. IPCP
sterowania sieci, zob. NCP
strumieniowy, 295
uwierzytelniania hasem, zob.
PAP
uwierzytelniania przez uzgodnienie, zob. CHAP
wysokopoziomowego sterowania czem danych, zob.
HDLC
proxy ARP, protok, 73, 133
przegldarka grup dyskusyjnych, 364, 402, 425
wtki, 425
przekazywanie IP, zob. IP
przeczanie pakietw, 2
przetwarzanie wsadowe, 365,
368

449
przypisywanie adresu IP, zob.
adres IP
PTR, rekord DNS, 97, 105
purgestats, polecenie, 346

Q
QoS (Quality of Service), 7

R
radio
amatorskie, 39
pakietowe, 7
ramka Ethernet, 5
RARP (Reverse Address Resolution Protocol), 23, 38
RBL (Real-time Blackhole List),
335, 357-358
rc.inet1, skrypt, 61
rc.inet2, skrypt, 61
rc.serial, plik, 54
rcp, polecenie, 221
RedHat, dystrybucja Linuksa,
XIX
rekord zasobu DNS, zob. DNS
rekordy klejce, 96, 105
relaynews, polecenie, 361-362,
367-368, 397
repeater, 5
RESOLV_ADD_TRIM_DOMAI
NS, zmienna rodowiskowa,
86
RESOLV_HOST_CONF, zmienna rodowiskowa, 85
RESOLV_MULTI, zmienna rodowiskowa, 86
RESOLV_OVERRIDE_TRIM_
DOMAINS, zmienna rodowiskowa, 86
RESOLV_SERV_ORDER,
zmienna rodowiskowa, 85
RESOLV_SPOOF_CHECK,
zmienna rodowiskowa, 85
resolver
biblioteka resolverlibrary, 29
zmienne rodowiskowe, 85
resolv.conf, plik, 86-90, 113, 127
RFC-821, 305, 309
RFC-822, 301-303, 306, 362
RFC-974, 309
RFC-977, 365, 387
RFC-1033, 83
RFC-1034, 83
RFC-1035, 83
RFC-1036, 362, 416
RFC-1123, 309
RFC-1144, 114
RFC-1341, 303
RFC-1437, 301

RFC-1597, 64
RFC-1700, 11, 105, 162, 348
RIP (Routing Information Protocol), protok, 28, 76, 254,
259
rlogin, polecenie, 10
rmail, polecenie, 290, 347
rnews, polecenie, 290, 367, 378,
397
Rose, protok, 39
route, polecenie, 68-71
rozgaszanie, 22
rozwizywanie
adresw, 9, 22-23
nazwy hosta, 9, 29-30
RPC (Remote Procedure Call),
interfejs, 213, 219-220, 233
rpcinfo, polecenie, 237
rpc.mountd, demon, 245-248
rpc.nfsd, demon, 247-248
rpc.portmap, demon, 247
rpc.ugidd, demon, 247-248
RR, zob. rekord zasobu DNS
RS-232, 52
rsh, polecenie, 385
rsmtp, polecenie, 305, 347
RTS/CTS (Ready to Send/Clear
to Send), sygnay, 52
runq, polecenie, 343
Rusling David A., XV
Russell Paul, 163
ruter, 5
ruting
IP, 23, 71
poczty, 308
UUCP, 309-310
w Internecie, 308-309
rutowanie, 8

S
SAGE (System Administrator's
Guild), 441
Salz Rich, 389
SAP (Service Advrtisement Protocol), protok, 254, 259
scp, polecenie, 221, 224, 227
sed, polecenie, 370
sendmail, program pocztowy,
317
aliasy pocztowe, 332
baza dostpu, 335-336
czarna lista, 335
definiowanie protokow
transportowych poczty,
323-324
domeny wirtualne, 337-339
instalacja, 317-318
generowanie pliku sendmail.cf, 324

450
konfigurowanie domen wirtualnych, 337-339
konfigurowanie opcji, 330-331
konfigurowanie rutingu dla
hostw lokalnych, 324
makrodefinicje lokalne, 322
pliki konfiguracyjne, 318
przyjmowanie poczty dla innych domen, 337-338
reguy podstawiania
interpretacja, 324-329
pisanie, 324-329
testowanie konfiguracji,
339-342
uyteczne konfiguracje, 331
wyczanie otrzymywania
poczty przez uytkownikw,
337
zarzdzanie
buforem poczty, 343
niechcianymi pocztami,
334-335
sendmail.cf, plik, 317, 324-325,
339, 345
sendmail.ct, plik, 331
sendmail.cw, plik, 338
sendmail.mc, plik, 319-322, 331,
336
serwer
nazw, zob. DNS
NFS, zob. NFS
pamici podrcznej nazw, zob.
DNS
podlegy, zob. DNS
PPP, zob. PPP
proxy, 116
SLIP, zob. SLIP
setnewsids, polecenie, 367
setserial, polecenie, 53-55
seyon, polecenie, 48
showmount, polecenie, 247
sieci
IP, 23
lokalne, zob. LAN
prywatne, 116-117
rozgoszeniowe, 64, 72
rozlege, zob. WAN
UUCP, zob. UUCP
sieciowy system plikw, zob.
NFS
sie wydzielona, 149-150
Skahan Vince, XXI
skrypt dipa, 118
skrzynka pocztowa, 301
Slackware, dystrybucja Linuksa, XIX
slattach, polecenie, 114-115
SLIP (Serial Line IP)
dziaanie, 114-116
interfejs, 73

Indeks
protok, 9
serwer, 122-124
z kompresj, zob. CSLIP
SLIPDISC, 114
sliplogin, polecenie, 123
slist, polecenie, 266
slogin, polecenie, 225
SMART_HOST, makro sendmaila, 334
SMTP (Simple Mail Transfer
Protocol), protok, 305,
347-350
SOA, rekord DNS, 96, 103-104
socket, biblioteka, 12
spam, 334
Spencer Henry, 361
SPP (Sequenced Packet Protocol), protok, 253-254
SPX (Sequenced Packet eXchange), protok, 254
.ssh/authorized_keys, plik, 224,
227
.ssh/identity, plik, 224-225
.ssh/identity.pub, plik, 224-225
.ssh/known_hosts, plik, 224-225
ssh, polecenie, 77
demon, 222-223
instalowanie i konfigurowanie, 221-225
klient, 223-225
korzystanie, 225-227
ssh-keygen, polecenie, 222
stae poczenie telefoniczne
PPP, zob. PPP
standardowa podstawa Linuksa,
XXI
standardy systemw plikw, XX
statystyki
interfejsu, 79
poczty, 344-346
sterownik
fikcyjny, 39
PLIP, zob. PLIP
PPP, 46
SLIP, 46
urzdzenia, 31
Storm Kim F., 427
Stover Martin, 254-255
strefy przestrzeni nazw, 93
stty, polecenie, 55-57
sudo, polecenie, 117
superserwer inetd, 213-215
SuSE, dystrybucja Linuksa, XIX
syslog, 141, 216, 250
system
informacji sieciowej, zob. NIS
nazw domen, zob. DNS
plikw /proc, zob. /proc

tabele IP, zob. iptables


tablica rutingu, 26-28
wywietlanie, 78-79
tass, program, 426
Taylor Ian, 272
Taylor UUCP, zob. UUCP
TCP (Transmission Control Protocol), 9-10
TCP/IP (Transmission Control
Protocol/Internet Protocol), 2
tcpd, 216-217
tcpdump, polecenie, 77
teletype, 48
telnet, polecenie, 389
terminal uproszczony, 52
TFTP (Trivial File Transfer Protocol), 16, 215
Thummler Swen, 230
tin, program, 425
konfiguracja, 426
TNC (Terminal Node Controller), 7
Token Ring, 6
TOS (Type of Service), 182-184
ustawianie za pomoc
ipfwadm i ipchains, 182-183
translacja adresw sieciowych,
177, 205, 211
transmisja grupowa IP, 21
trasowanie rozpywowe, 364
Tridgell Andrew, 13
tripwire, polecenie, 17
trn, program, 425
konfiguracja, 426-427
Truscott Tom, 361
tryb przechwytywania pakietw, 77, 204
T'so Theodore, 53
tworzenie podsieci, 64-65

U
UART, zob. 8250, 16450 i 16550
UDP (User Datagram Protocol),
10-11
uproszczony protok przesyania plikw, zob. TFTP
uptime, polecenie, 351
Urlichs Matthias, 14
uruchamianie bezdyskowe, 38
urzdzenia
blokowe, 32
sieciowe, 40-41
szeregowe, 52
znakowe, 32
Usenet, 361-362
sposb obsugi grup dyskusyjnych, 364-366
USENIX, 441
/usr/lib/aliases, plik, 231

Indeks
/usr/lib/uucp, katalog, 276, 281
/usr/lib/uucp/config, plik, 281
/usr/lib/uucp/dialcode, plik, 282
/usr/lib/uucp/dial, plik, 287-288
/usr/lib/uucp/sys, plik, 277, 282
uucico, polecenie, 272, 274-275,
282-284
dialog logowania, 274, 283-284
faza uzgadniania, 274
kopia nadrzdna, 274
kopia podlega, 274
numer kolejny wywoania, 274
opcje wiersza polece, 275
uuchk, polecenie, 276, 281
uucp, polecenie, 272-273
UUCP (Unix-to-Unix Copy),
12-13, 48, 271
alternatywy, 284
anonimowe, 294-295
buforowanie, 273
debugowanie, 300
identyfikowanie dostpnych
urzdze, 286-287
katalog buforowy, 273
konfigurowanie do przyjmowania pocze komutowanych, 292
konfigurowanie w eximie,
358-359
kontrola dostpu do funkcji,
289-290
licznik wywoa, 294
maksymalny stopie buforowania, 273
nazewnictwo orodkw,
279-280
pliki konfiguracyjne, 276-278,
280-281
pliki log, 300
port, 283
projekt mapowania, 280
protokoy niskiego poziomu,
295-297
przekazywanie, 291-292
przesyanie, 273
przesyanie plikw, 290-291
przesyanie przez TCP,
288-289
rozwizywanie problemw,
298-299
skrypt dialogowy, 279
stopie, 273
strojenie protokou, 297
uywanie poczenia bezporedniego, 289
w C News, 368
wybr protokow, 297-298
wykonywanie polecenia, 290
wyznaczanie czasw dzwonienia, 285-286

451
zadanie, 273
zdalne wykonywanie, 273
UUCP-HOWTO, 272
uucpxtable, 313
uukodowanie, 36
uuname, polecenie, 384
uux, polecenie, 272-273, 368
uuxqt, polecenie, 272-273
uwierzytelnianie w PPP, zob.
PPP
uuwho, polecenie, 312
uzgadnianie
sprztowe RTS/CTS, 52
XON/XOFF, 52

V
Van Jacobson, 114, 126
/var/lock, katalog, 50
/var/run/named.pid, plik, 98
/var/spool/news, katalog, 365,
371, 401
/var/spool/uucp, katalog, 273
/var/spool/uucppublic, katalog,
290, 295
Venema Wietse, 216
VERSIONID, makro sendmaila,
321
virusertable (sendmail), 339
Vos Jos, 155

W
WAN, 1
Welsh Matt, XV, 34
wiadomo pocztowa, 302
WinModem, 52
wirtualne
domeny pocztowe, 337-339
hosty, 38
Wirzenius Lars, XV
wolumen
NetWare, 263
NFS, zob. NFS
wsadowe SMTP, zob. bsmtp
wspdziaanie midzysieciowe, 9
wykaz trasowania, 306
wykorzystanie znanych dziur w
programach, 148
wyszukiwanie odwrotne nazw,
zob. DNS
wywietlanie
pocze, 80
statystyk interfejsu, 79
tablicy rutingu, 78-79
wzmacniak, zob. repeater

X Windows, 3
X.25, protok, 6
X.400, protok, 301, 306, 354
X.500, protok, 306
XDR (External Data Representation), 219
Xerox, firma, 253
XON/XOFF, 135, 431
XNS (Xerox Networking System), 253-254

Y
Yellow Pages, zob. NIS
YP (Yellow Pages), zob. NIS
ypbind, polecenie, 230, 232-233
ypcat, polecenie, 231
yppasswd, polecenie, 241
yps, polecenie, 234
ypserv, polecenie, 230, 234
Yutaka Niibe, 44

Z
zaczep wampirowy, 4
zapasowy serwer nazw, zob.
DNS
zdalne wywoanie procedur,
zob. RPC
Zen, 362
zewntrzna reprezentacja danych, zob. XDR
ZMODEM, protok, 297

etony, 6

O autorach
Olaf Kirch ma stopie naukowy w dziedzinie matematyki, ale zrezygnowa z zajmowania si teori kategorii i maych sieci cigych (category theory and compact
continuous lattices) po uruchomieniu pierwszej wersji jdra Linuksa w 1992 roku.
ywo wspomina, z jak radoci uczy si Uniksa poprzez czytanie kodu rdowego jdra Linuksa.
Od tego czasu Olaf uczestniczy w rnych projektach zwizanych z Linuksem,
wczajc w to pisanie duych czci jego implementacji NFS i uruchomienie, wraz
z Jeffem Uphoffem, pierwszej pocztowej listy dyskusyjnej o bezpieczestwie Linuksa w 1995 roku.
Aktualnie pracuje w firmie Caldera Systems, gdzie jest odpowiedzialny za rzeczy
zwizane z sieciami oraz zagadnienia bezpieczestwa, a czasami zastanawia si, czy
to wszystko mu si ni, czy jest prawd.
Wolne chwile lubi spdza z Maren i crk Jule. A jeeli czytae jego biografi
w pierwszym wydaniu Przewodnika administratora sieci, to zmienio si tyle, e Olaf
obecnie ma prawo jazdy.
Terry Dawson jest operatorem radia amatorskiego i od duszego czasu entuzjast
Linuksa. Jest autorem wielu dokumentw HOWTO zwizanych z sieci, stworzonych w ramach projektu dokumentacji Linuksa. Aktywnie uczestniczy w szeregu innych projektw zwizanych z Linuksem.
Terry ma 15-letnie dowiadczenie zawodowe w telekomunikacji. Obecnie zajmuje
si badaniami nad zarzdzaniem sieci w Telstra Research Laboratories. Mieszka w
Sydney z on Maggie i synem Jackiem.

You might also like