Przykład ustawienia demona "diald"
Autor: Harish Pillay, h.pillay@ieee.org
WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll
v1.0, 30 Sierpnia 1997
Dokument ten ma służyć jako przykład ustawienia, którym posługiwałem
się na wielu maszynach i które umożliwia automatyczną instalację diald
podczas startu systemu. Kiedy pojawia się żądanie połączenia,
automatycznie wybierany jest numer mojego ulubionego dostawcy Inter
net-u tutaj w Singapurze - _P_a_c_i_f_i_c _I_n_t_e_r_n_e_t. Wielkie dzięki dla EErriiccaa
SScchheennkkaa za ten super program - diald. Dokument ten został napisany w
standardzie ISO-8859-2. Jego oryginalna wersja znajduje się pod
adresem ftp.icm.edu.pl .
11.. OOppiiss ddzziiaałłaanniiaa ddiiaalldd..
11..11.. //eettcc//rrcc..dd//rrcc..llooccaall
#! /bin/sh
# Put any local setup commands in here
# Running gpm
echo "Running gpm..."
gpm -t ms &
# starting innd
/etc/rc.d/rc.news
# starting CERN httpd
echo "Starting CERN httpd with proxy and caching."
/usr/local/bin/httpd
# loading modules that are needed
/etc/rc.d/rc.modules
# starting diald
echo "Starting diald daemon to Pacific Internet ..."
cd /usr/lib/ppp
/usr/lib/ppp/diald.pacific.internet
11..22.. //uussrr//lliibb//pppppp//ddiiaalldd..ppaacciiffiicc..iinntteerrnneett
/usr/sbin/diald /dev/ttyS1 /dev/ttyS1 lock debug 20 -m ppp local 127.0.0.2 \
remote 127.0.0.3 defaultroute modem crtscts \
connect "chat -v -f /usr/lib/ppp/pppchat.pi" \
dynamic -- debug noipdefault
11..33.. //uussrr//lliibb//pppppp//ppppppcchhaatt..ppii
ABORT "NO CARRIER"
ABORT BUSY
"" ATZ OK
ATm1s50=255s111=0DT1-800-555-1212
CONNECT ""
login MÓJLOGIN
ssword MOJEHASŁO
11..44.. PPrroossttyy sskkrryypptt ddoo PPPPPP..
ˇ Odpal minicom-a.
ˇ Połącz się ze swoim dostawcą Internet-u.
ˇ Zainicjuj PPP na drugim końcu.
ˇ Zawieś minicom-a (ALT-A-J).
ˇ Wykonaj następujący skrypt.
#!/bin/sh
# Ustaw PPP na ślepo - skrypt o nazwie blind.ppp
DEVICE=ttyS1
(
stty 38400 -tostop
pppd -detach debug noipdefault defaultroute mru 1500 /dev/$DEVICE &
exit 0
) /dev/$DEVICE
11..55.. MMóójj pplliikk //eettcc//ddiiaalldd..ccoonnff ((nniiee zzmmiieenniioonnyy oodd iinnssttaallaaccjjii ddyyssttrryy
bbuuccjjii))
# Jest to dość skomplikowana kombinacja reguł filtrujących.
# (Są to reguły, których używam osobiście)
#
# Podzieliłem te reguły na 4 sekcje:
# pakiety TCP, pakiety UDP, pakiety ICMP i na końcu reguły dla reszty.
#------------------------------------------------------------------------------
# Reguły dla pakietów TCP
#------------------------------------------------------------------------------
# Ogólny komentarz dotyczący zestawu reguł:
#
# Ogólnie, jako znaczące do timeout-ów, chcielibyśmy traktować tylko
# pakiety zawierające dane na łączu TCP. Dlatego spróbujemy ignorować
# pakiety bez danych. Ponieważ najkrótszy możliwy nagłówek pakietu
# TCP to 40 bajtów, więc każdy pakiet o długości 40 bajtów nie może
# zawierać danych. W ten sposób możemy przeoczyć puste pakiety (w
# nagłówku IP mogą znajdować się opcjonalne informacje na temat
# routing-u i inne dodatkowe informacje), ale powinniśmy dostać
# większość z nich. Zauważ, że nie chcemy odfiltrowywać pakietów z
# wyzerowanym polem "tcp.live", ponieważ użyjemy ich później, aby
# przyspieszyć rozłączenia na niektórych połączeniach TCP.
#
# Chcemy także być pewni, że pakiety WWW są aktywne, nawet jeśli gniazdo TCP
# jest zamknięte. Robimy to ponieważ WWW nie utrzymuje otwartych
# połączeń jak już dane zostaną przetransportowane, i byłoby
# denerwujące ciągłe inicjowanie i zamykanie połączenia jak tylko
# dostaniesz jakiś dokument.
#
# Poza WWW TCP jest najczęściej używane do długożywotnych połączeń,
# które jak już zginą, to znaczy, że ich nie potrzebujemy. Nie
# koniecznie chcemy czekać 10 minut aż połączenie zostanie zamknięte
# jeśli nie mamy uruchomionych żadnych telnet-ów czy rlogin-ów, tak
# więc chcemy przyspieszyć timeout na połączeniu TCP, które zostały
# zamknięte. Zrobimy to poprzez przechwytywanie pakietów, które nie
# mają ustawionej flagi "live".
#
# --- właściwy początek zestawu reguł ---
# Na inicjację połączenia dajemy tylko 15 sekund. Cały pomysł polega tu
# na tym, że trzeba się liczyć z możliwością, iż sieć na drugim końcu
# nie będzie działać. W tym przypadku nie chcesz przecież dawać 10
# minut na połączenie. Poniższą regułą dajemy właśnie połączeniu owe
# 15 sekund czasu. Jeśli sieć z drugiej strony działa, to w ciągu 15
# sekund otrzymamy odpowiedź, która będzie zawierała jakieś
# dane. Jeśli w twoim przypadku sprawia to problemy, bo np.: masz
# wolne połączenie czy długi czas odpowiedzi, to możesz zwiększyć
# timeout lub po prostu usunąć tę regułę.
accept tcp 15 tcp.syn
# Nie podtrzymuj połączenia jeśli przychodzą pakiety do named-a
ignore tcp tcp.dest=tcp.domain
ignore tcp tcp.source=tcp.domain
# (Oj! SCO telnet zaczyna od wysyłania pustych sygnałów "SYN" i
# otwiera połączenie tylko w przypadku jeśli otrzyma odpowiedź. Jeny...)
accept tcp 5 ip.tot_len=40,tcp.syn
# Nie podtrzymuj połączenia jeśli pakiety są puste (oprócz pustych SYN-ów)
ignore tcp ip.tot_len=40,tcp.live
# Upewnij się, że transfer http podtrzymuje połączenie przez 2 minuty,
# nawet po zakończeniu.
# UWAGA: W pliku /etc/services może nie być definicji
# serwisu tcp dla www, w którym to przypadku powinieneś zakomentować
# dwie poniższe linie, albo zdobyć nowszy plik /etc/services. W
# sprawie nowego /etc/services zobacz FAQ.
accept tcp 120 tcp.dest=tcp.www
accept tcp 120 tcp.source=tcp.www
# Jeśli połączenie nie jest już aktywne, spróbujemy szybko je
# zamknąć. Zauważ, że jeśli połączenie jest już "zdown-owane", to
# zmiana stanu nie spowoduje jego przywrócenia.
keepup tcp 5 !tcp.live
ignore tcp !tcp.live
# po danych ftp albo połączeniu ftp można się spodziewać dość częstego
# ruchu
accept tcp 120 tcp.dest=tcp.ftp
accept tcp 120 tcp.source=tcp.ftp
# UWAGA: ftp-data nie jest zdefiniowane w pliku /etc/services
# dostarczanego z najnowszą wersją NETKIT, więc to zakomentowałem.
# Jeśli chcesz to zdefiniować, to dodaj poniższą linię do
# /etc/services
# ftp-data 20/tcp
# i odkomentuj dwie następne linie
#accept tcp 120 tcp.dest=tcp.ftp-data
#accept tcp 120 tcp.source=tcp.ftp-data
# Jeśli nie wyłapiemy tego wcześniej, to daj połączeniu 10 minut.
accept tcp 600 any
# Reguły dla pakietów UDP
#
# Żądania dla domeny będziemy odrzucać od razu ponieważ chcemy, żeby
# one tylko podniosły połączenie, a nie trzymać je przez długi czas.
# Robimy tak ponieważ, sieć byłaby inicjowana przy każdym odwołaniu do
# biblioteki resolvera (o ile nie trzymasz wszystkich swoich często używanych
# adresów w /etc/hosts, w którym to przypadku odkryjesz jeszcze inne
# problemy.)
# Zauważ, że nie powinieneś ustawiać mniejszego timeout-u niż
# spodziewany czas odpowiedzi twojego serwera DNS. W innym przypadku
# kiedy inicjacyjne połączenie jest już ustawione może się pojawić
# większe opóźnienie niż to pomiędzy inicjacyjną serią pakietów zanim
# jakikolwiek pakiet, który podtrzymuje połączenie przejdzie przez połączenie.
# Nie ustawiaj połączenia dla rwho
ignore udp udp.dest=udp.who
ignore udp udp.source=udp.who
# Nie ustawiaj połączenia dla RIP
ignore udp udp.dest=udp.route
ignore udp udp.source=udp.route
# Nie ustawiaj połączenia dla NTP czy timed.
ignore udp udp.dest=udp.ntp
ignore udp udp.source=udp.ntp
ignore udp udp.dest=udp.timed
ignore udp udp.source=udp.timed
# Nie ustawiaj połączenia dla żądań domeny pomiędzy dwoma działającymi named-ami
ignore udp udp.dest=udp.domain,udp.source=udp.domain
# Ustaw połączenie jeśli pojawi się żądanie domeny z innego miejsca
# niż named
accept udp 30 udp.dest=udp.domain
accept udp 30 udp.source=udp.domain
# To samo dla rozgłaszania netbios-ns
# UWAGA: w pliku /etc/services serwis netbios-ns może nie być
# zdefiniowany - wtedy powinieneś zakomentować 3 poniższe linie
ignore udp udp.source=udp.netbios-ns,udp.dest=udp.netbios-ns
accept udp 30 udp.dest=udp.netbios-ns
accept udp 30 udp.source=udp.netbios-ns
# Nie utrzymuj połączenia dla transferów routed i gated
ignore udp tcp.dest=udp.route
ignore udp tcp.source=udp.route
# Wszystko inne dostaje 2 minuty czasu
accept udp 120 any
# Wszystkim pakietom, których nie objęły poprzednie zasady daj 30
# sekund życia
accept any 30 any
11..66.. MMóójj pplliikk ddiiaalldd..ddeeffss ((nniiee zzmmiieenniioonnyy oodd iinnssttaallaaccjjii ddyyssttrryybbuuccjjii))
# Definicja domyślnych reguł dla protokołów
prule tcp tcp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9
prule udp udp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9
prule icmp icmp 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9
prule any any 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9
# Definicja pól nagłówków pakietów internet-owych
var ip.ihl 0(24)&0xf
var ip.version 0(28)&0xf
var ip.tos 1(24)&0xff
var ip.tot_len 2(16)&0xffff
var ip.id 4(16)&0xffff
var ip.frag_off 6(16)&0x3fff
var ip.ttl 8(24)&0xff
var ip.protocol 9(24)&0xff
var ip.check 10(16)&0xffff
var ip.saddr 12
var ip.daddr 16
# Definicja pól nagłówków pakietów TCP
var tcp.source +0(16)&0xffff
var tcp.dest +2(16)&0xffff
var tcp.seq +4
var tcp.ack_seq +8
var tcp.doff +12(28)&0xf
var tcp.fin +13(24)&0x1
var tcp.syn +13(25)&0x1
var tcp.rst +13(26)&0x1
var tcp.psh +13(27)&0x1
var tcp.ack +13(28)&0x1
var tcp.urg +13(29)&0x1
var tcp.live +127
# Definicja nagłówków pakietów UDP
var udp.source +0(16)&0xffff
var udp.dest +2(16)&0xffff
var udp.len +4(16)&0xffff
var udp.check +6(16)&0xffff
# Definicja nagłówków pakietów ICMP
var icmp.type +0(24)&0xff
var icmp.code +1(24)&0xff
var icmp.checksum +2(16)&0xffff
var icmp.echo.id +4(16)&0xffff
var icmp.echo.sequence +6(16)&0xffff
var icmp.gateway +4
11..77.. MMóójj sspprrzzęętt ii oopprrooggrraammoowwaanniiee..
ˇ 486/66, 20 MB RAM i dużo miejsca na dysku :-)
ˇ dużo chip-ów 16550
ˇ diald 0.11, pppd 2.2.0d, jądro 1.3.95 (zmodularyzowane)
11..88.. UUwwaaggii..
ˇ Upewnij się, że zmieniłeś powyżej /dev/ttyS1 odpowiednio do swoich
potrzeb
ˇ Upewnij się, że możesz się rzeczywiście połączyć przez PPP używając
skryptu blind.ppp
Masz jakieś pytania? Przyślij mi list.
11..99.. OOdd ttłłuummaacczzaa..
Tłumaczenie to jest chronione prawami autorskimi Š Bartosza
Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na
prawach takich samych jak dokument oryginalny.
Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne,
składniowe, techniczne to pisz do mnie:
B.Maruszewski@jtz.org.pl
Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże
stronie. Dostępne są także poprzez anonimowe ftp pod adresem
ftp.jtz.org.pl w katalogu /HOWTO/.
Przetłumaczone przeze mnie dokumenty znajdują się także na mojej
stronie WWW. Są tam
też odwołania do Polskiej Strony Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz się na nią zapisać, to wyślij
list o treści subscribe jtz Imię Nazwisko na adres
majordomo@ippt.gov.pl