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