Professional Documents
Culture Documents
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
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
Rozdzia 6:
.
.
.
.
.
.
Rozdzia 5:
.
.
.
.
.
.
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
Biblioteka resolvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Jak dziaa DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Eksploatacja named . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
VI
Rozdzia 7:
Spis treci
Wymagania oglne. . . . . . . .
Dziaanie SLIP-a . . . . . . . . .
Korzystanie z sieci prywatnych .
Korzystanie z polecenia dip . . .
Dziaanie w trybie serwera . . .
Rozdzia 8:
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
113
114
116
117
122
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
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
195
196
202
203
204
204
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
207
208
209
211
211
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
213
216
218
219
220
Spis treci
VII
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
230
233
233
234
235
236
238
240
242
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
244
245
247
248
250
251
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
253
254
256
256
259
263
266
267
270
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
273
275
289
292
295
297
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
302
305
306
308
313
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
317
317
318
319
324
324
330
VIII
Spis treci
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
331
339
342
343
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
348
349
350
351
352
353
357
358
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
367
369
371
374
375
378
380
382
384
385
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
389
395
395
396
397
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
399
402
402
403
403
418
419
Spis treci
IX
Dodatek A:
Dodatek B:
Dodatek C:
Dodatek D:
Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wstp
Wstp
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.
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
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.
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.
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.
XVIII
Wstp
...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.
XXI
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
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.
XXIV
Wstp
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*
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.
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
Powoka to interfejs wiersza polece systemu operacyjnego Unix. Jest ona podobna do monitu DOS-a
w rodowisku Microsoft Windows, cho ma duo wiksze moliwoci.
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*.
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/.
Sieci TCP/IP
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.
sophus
niels
Mathematics Ethernet
1
Physics Ethernet
3
erdos
quark
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.
10
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.
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.
12
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
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*
14
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)*.
NCP jest protokoem, na ktrym oparte s system plikw i usugi drukowania w Novellu.
15
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
** 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
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
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
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
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
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
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)
2.0
Groucho
Computing
Center
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
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
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
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.
Koszt trasy to, w prostych sieciach, liczba hopw wymaganych do dotarcia do celu. W bardziej skomplikowanych sieciach poprawne obliczenie kosztu trasy moe by trudne.
29
30
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
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.
Interfejs
sieciowy
Sterownik
urzdzenia
Sprzt
eth0
eth1
sterownik
SMC
eth2
eth3
sterownik
3Com
Przy uruchamianiu systemu jdro wywietla wykryte urzdzenia i instalowane interfejsy. Oto fragment typowych komunikatw wywietlanych w czasie uruchamiania systemu:
.
.
34
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.
36
Konfigurowanie jdra
37
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]
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
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
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
40
Instalowanie Ethernetu
41
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.
42
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
Po edycji pliku lilo.conf musisz ponownie uruchomi polecenie lilo, aby uaktywni
zmiany.
44
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
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*
46
wane przez sterownik PLIP jedynie wtedy, gdy odpowiadajcy im interfejs jest
w trybie up.
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*.
48
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.
49
50
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.
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
52
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.
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.
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]
54
Opis
port numer_portu
irq numer
uart typ_uart
Fourport
spd_hi
spd_vhi
spd_normal
auto_irq
Autoconfig
skip_test
55
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
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
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
N
crtscts
ixon
57
Znaczniki
Opis
clocal
58
----- sekcja okrelajca porty ----Tutaj moesz umieci ustawienia dotyczce tylko danej linii
i nie dotyczce innych
Modem Hayesa podczony do ttyS0: bez obsugi faksu, bez
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
#
60
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
62
defaults
Przypisywanie adresu IP
63
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
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.
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*.
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
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
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
Pamitaj, e nazwy w pliku networks nie mog kci si z nazwami z pliku hosts, gdy niektre programy mogyby si dziwnie zachowywa.
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.
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
68
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.
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
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
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
71
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
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
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
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
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.
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
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
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
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
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.
Genmask
Flags
MSS
Window
irtt
Iface
78
127.0.0.1
172.16.1.0
172.16.2.0
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.
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
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.
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
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.
81
Usugi nazewnicze
i konfigurowanie
resolvera
84
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.
86
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 ... ]
88
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:
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.
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
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.
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
92
.
.com
.edu
.net
.groucho
.maths
gauss
erdos
.physics
sophus
theory
quark
otto
niels
collider
up
down
strange
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.
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.
94
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.
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).
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
...
96
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.
97
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.
98
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
100
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
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
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.
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
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
36500
IN HINFO
IBM-PC
LINUX2.2
106
36500
36500
IN HINFO
IN HINFO
ATARI-104ST
AMIGA-3000
LINUX2.0
LINUX2.0
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
107
108
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
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
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
> 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
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
Aby zobaczy peny zestaw dostpnych polece, uyj w nslookup komendy help.
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
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 &
Dziaanie SLIP-a
115
cslip6
adaptive
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
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.
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
# 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
#
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
119
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>
120
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
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
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
#
Opis
uytkownik
Haso
adres-zdalny
adres-lokalny
maska
komentarze
protok
MTU
124
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
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.
Eksploatacja pppd
127
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
Domylna trasa do sieci jest instalowana tylko wtedy, gdy adna inna nie jest do tej pory zdefiniowana.
129
130
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.
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
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
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.
*
Opcje konfiguracyjne IP
133
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
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
Gdybymy chcieli mie ruting do innych orodkw stworzonych przy ich wdzwanianiu si, dodalibymy w przykadzie odpowiednie dyrektywy case w miejscach wykropkowanych.
135
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
Uwierzytelnianie w PPP
137
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
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
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.
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
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
141
sekret
cresspahl
DonaldGNUth
adresy
vlager.vbrew.com
c3po.lucas.com
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).
/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
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.
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
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
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
archive-filter
wyraenie
holdoff n
idle n
145
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
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.
148
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
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
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.
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:
152
options --->
Network firewalls
TCP/IP networking
IP: firewalling
IP: firewall packet logging
Logowanie pakietw przez firewall jest specjaln funkcj, ktra zapisuje wiersz informacji o kadym
datagramie odpowiadajcym regule do specjalnego urzdzenia, przez ktre moesz go zobaczy.
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
Pozostaa cz jdra
Gniazda sieciowe
Protokoy TCP/UDP
Pozostae protokoy
Oprogramowanie rutujce IP
?
1 Sterownik Ethernet
Rysunek 9-2.
3
Sterownik PPP
Inny sterownik
155
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
156
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
-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
157
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
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 ...
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.
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.
160
-I
-O
-F
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
-f
161
-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
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
163
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.
164
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.
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
-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
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
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
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 -> *
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
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
170
dziaanie. Datagram dociera do koca acucha input, speniajc warunki jego domylnej polityki i zostaje odrzucony.
Rysunek 9-6. Kolejno regu dla odebranego pakietu TCP dla portu ssh
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 all
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
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
174
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-
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
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
checksum
sanity
routing
decision
forward
chain
input
chain
routing
decision
output
chain
local
process
Rysunek 9-9. acuch przetwarzania datagramw w netfilter
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
178
-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.
*
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
- -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,
181
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
183
MaskaAND
Minimalne opnienie
Maksymalna przepustowo
Maksymalna niezawodno
Minimalny koszt
0x01
0x01
0x01
0x01
0x10
0x08
0x04
0x02
184
Warto szesnastkowa
Normal-Service
Minimize-Cost
Maximize-Reliability
Maximize-Throughput
Minimize-Delay
0x00
0x02
0x04
0x08
0x10
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
186
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.
187
188
fi
#
#end.
189
190
# 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.
191
192
193
fi
#
#end.
Liczenie ruchu IP
10
196
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
197
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
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
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
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
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
200
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
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.
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:
# 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
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.
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
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
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
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
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.
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.
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
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
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
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
207
208
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
Konfigurowanie maskowania IP
209
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
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
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
...
destination
anywhere
ports
n/a
destination
destination
anywhere
destination
MASQUERADE
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
Wane funkcje
sieciowe
12
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
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
216
na tak:
# "opakowany" demon finger
finger
stream tcp nowait root
/usr/sbin/tcpd in.fingerd
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
218
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-
219
220
221
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
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
OpenSSH zosta stworzony w ramach projektu OpenBSD i jest doskonaym przykadem korzyci z darmowego oprogramowania.
222
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
223
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
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
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.
226
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@
227
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
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
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****.
*
**
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
/etc/networks
/etc/passwd
/etc/group
/etc/services
/etc/rpc
/etc/protocols
/usr/lib/aliases
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
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
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.
234
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.
Wczenie metody /etc/hosts.allow moe wymaga ponownej kompilacji serwera. Przeczytaj instrukcje
zawarte w pliku README doczonym do pakietu dystrybucyjnego.
236
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.
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/
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
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
238
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
239
240
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::::::
242
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.
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
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:
244
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
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
*
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.
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
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
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
248
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
251
IPX i system
plikw NCP
15
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.
254
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
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*
IPX i Linux
255
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**.
256
257
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
258
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
259
260
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.
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
Router_Node
00002a02b102
Connected
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
262
den wze. Kady host moe mie tylko jedn sie wewntrzn IPX i jeeli jest ona
skonfigurowana, zawsze bdzie sieci podstawow.
08:00:00:00:10:aa
08:00:00:00:10:bd
0x0000001a
0x0000002c
08:00:00:00:10:aa
0x0000001a
08:00:00:00:10:bd
0x0000002c
Wewntrzna sie IPX absolutnie nie jest potrzebna, jeeli twj host nie udostpnia
adnych usug i ma tylko jeden aktywny interfejs IPX.
263
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.
264
Opis
265
266
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.
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.
267
Opis polecenia
nwfstime
nwuserlist
nwvolinfo
nwbocreate
nwbols
nwboprops
nwborm
nwbpcreate
nwpbvalues
nwbpadd
nwbprm
268
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
269
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.
270
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.
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
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.*.
273
274
275
276
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
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
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
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
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
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.
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.
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.
282
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.
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
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
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
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
285
MoWe0300-0730,Fr1805-2200
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
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
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.
288
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*.
gmu
news.groucho.edu
Any
tcp-conn
ogin: vstout word: clouseau
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.
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
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
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
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
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
stream
tcp
nowait
root
/usr/sbin/tcpd
/usr/lib/uucp/uucico -l
IslaNegra
co'rdoba
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.
293
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.
294
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
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
295
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
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
Rozwizywanie problemw
297
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.
serial1
igG
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
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.
300
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
302
** 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.
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
Cc:
305
To dlatego, e przestrze dyskowa jest zwykle alokowana w blokach po 1024 bajty. A wic nawet kilkubajtowa wiadomo zajmuje peny kilobajt.
306
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.
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.
308
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.
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.
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
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.
swim!smurf!%s
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
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
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.
314
#
# 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.
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
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
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
319
320
Jeli porwnasz te dwie konfiguracje, moesz doj do tego, co robi kady z parametrw. Wyjanimy to szczegowo.
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')
322
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)
323
324
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.
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.
325
dopasowania po lewej stronie. Jeeli adres pasuje do lewej strony reguy, jest zastpowany praw stron i ponownie przetwarzany.
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
$=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
$[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
327
$:
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
329
330
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
331
332
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
334
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
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.
Sownik ten mona znale w postaci pakietu w dystrybucjach Linuksa lub na jego stronie macierzystej
http://wombat.doc.ic.ac.uk/foldoc/.
335
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
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
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.
337
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
338
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
colin
darkhorse@mystery.net
mail@jhm.org
$1@red.firefly.com
Testowanie konfiguracji
339
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
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
>
.
.
.
.
.
.
.
.
>
>
>
>
>
>
>
>
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 .
342
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
/usr/sbin/sendmail -bs
Sztuczki i kruczki
343
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.
344
Znaczenie
M
msgsfr
bytes_from
msgsto
bytes_to
msgsrej
msgsdis
Mailer
Sztuczki i kruczki
345
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
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
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
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
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
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.
349
stream
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).
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
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
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.
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.
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
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.
353
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
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.
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"
Program zarzdzajcy jest pomijany, jeeli adres, ktry ma zosta przetworzony, jest taki sam jak adres
uyty do jego wygenerowania.
356
Pliki aliasw
Exim moe obsugiwa pliki aliasw komatybilne z plikami sendmaila. Wpisy w pliku aliasw mog mie nastpujc posta:
alias: odbiorcy
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.
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
358
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 = *
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
20
Grupy dyskusyjne
Rozdzia 20: Grupy dyskusyjne
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
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.
Format wiadomoci Usenet jest okrelony przez RFC-1036 Standard for interchange of USENET messages
363
USENET
barnyard.edu
garglebaster.com
fj
fj
all
all, !fj
groucho.edu
brewhg
comp.os,
comp.periphs
364
Zaraz, zaraz... 60 MB z prdkoci 9600 bps, to daje 60 milionw razy 1024, czyli... jakie 34 godziny!
365
Niektrzy uwaaj, e Usenet jest spiskiem producentw modemw i dyskw twardych. Nazywa si
to wygasaniem (ang. expiring)
366
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
368
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
history
relaynews
ponderosa
ME
moria
active
spooldir
out.going/
moria/togo
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.
*
370
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
cd /var/spool
mkdir news news/in.coming news/out.going news/out.master
chown -R news.news news
chmod -R 755 news
Plik sys
371
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
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
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).
375
Parametr prawa okrela szczegowo prawa dostpu uytkownikw do danej grupy. Przyjmuje on jedn z poniszych wartoci:
y
n
=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.
Parametr liczba okrela rozmiar artykuu w bajtach. Gdy uywasz kompresji wsadowej, wynikowy plik jest kompresowany jako cao i poprzedzany innym wier-
376
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.
377
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
379
380
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.
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.
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
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
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
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
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.
386
addgroup
Ten skrypt dodaje lokalnie grup do twojego orodka. Poprawne wywoanie to:
addgroup nazwagrupy y|n|m=rzeczywistagrupa
22
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
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.
Odpowiedzi na polecenia NNTP zawsze kocz si kropk (.) w oddzielnym wierszu. Liczby, ktre widzisz w wyniku, to kody odpowiedzi uywane przez serwer do
390
wskazania, czy polecenie zostao wykonane poprawnie, czy bdnie. Kody odpowiedzi s opisane w RFC-977. Najwaniejsze z nich omwimy dalej.
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.
392
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
Protok NNTP
393
394
Body:
Xref: news.vbrew.com junk:2
.
395
skorzysta z odpowiednich dokumentw RFC. Zawieraj one wiele szczegw, ktrych nie moemy tutaj opisa.
Przyjrzyjmy si teraz jak NNTP dziaa w serwerze 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
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
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
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.
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
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
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.
Dane wychodzce
przez NNTP
Sesja NNTP
nntpsend
innxmit
nnrpd
innd
rnews
/var/spool/news
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
wszystkie artykuy poleceniu overchan, ktre jest poczone z demonem przez kana.
Dalej, przy okazji omawiania konfiguracji dostarczania grup, zobaczymy, jak to jest
realizowane.
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.
*
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.
Parametry globalne
Istnieje szereg parametrw, ktre maj znaczenie globalne. Dotycz one wszystkich
grup.
404
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
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.
406
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
=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
407
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
408
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.
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
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]
411
412
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
413
414
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:
415
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.
416
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.
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
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
#
#
#
#
10 * * * * news rnews -U
419
Omwimy tu kilka z waniejszych zastosowa ctlinnd. Wicej szczegw znajdziesz na stronie podrcznika powiconej temu poleceniu.
Zmiana grupy
Aby zmieni grup, uyj polecenia nastpujco:
ctlinnd changegroup grupa znacz
420
Usuwanie grupy
Aby usun grup, uyj polecenia nastpujco:
ctlinnd rmgroup grupa
Przenumerowanie grupy
Aby przenumerowa grup, uyj polecenia nastpujco:
ctlinnd renumber grupa
421
422
To polecenie jest uywane do ponownego uruchamiania serwera po wykonaniu polece throttle, pause lub reject.
423
Anulowanie artykuu
Aby anulowa artyku, uyj polecenia nastpujco:
ctlinnd cancel ID-artykuu
Konfigurowanie
przegldarki grup
dyskusyjnych
24
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
426
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
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
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
UUCP
eth0
vlager-if1
(1.1)
eth1
vlager-if2
(2.1)
vlager
430
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
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.
432
1
1
2
3
4
5
6
7
8
9
10
11
12
13
13
14
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
13
14
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
14
14
15
16
17
18
19
20
21
22
23
24
25
25
434
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
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
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
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.
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
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.
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).
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
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
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
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
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
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.