Przykład ustawienia demona "diald"

Autor: Harish Pillay, h.pillay@ieee.org
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl
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 Internet-u tutaj w Singapurze - Pacific Internet. Wielkie dzięki dla Erica Schenka 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.

1. Opis działania diald.

1.1 /etc/rc.d/rc.local

#! /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

1.2 /usr/lib/ppp/diald.pacific.internet

/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

1.3 /usr/lib/ppp/pppchat.pi

ABORT "NO CARRIER"
ABORT BUSY
"" ATZ OK
ATm1s50=255s111=0DT1-800-555-1212
CONNECT ""
login MÓJLOGIN
ssword MOJEHASŁO

1.4 Prosty skrypt do PPP.

#!/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

1.5 Mój plik /etc/diald.conf (nie zmieniony od instalacji dystrybucji)

# 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

1.6 Mój plik diald.defs (nie zmieniony od instalacji dystrybucji)

# 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

1.7 Mój sprzęt i oprogramowanie.

1.8 Uwagi.

Masz jakieś pytania? Przyślij mi list.

1.9 Od tłumacza.

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