Diald.pl.txt

(11 KB) Pobierz
  Przykład ustawienia demona "diald"
  Autor: Harish Pillay, h.pillay@ieee.org
  Wersja polska: Bartosz Maruszewski
  B.Maruszewski@zsmeie.torun.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 Inter­
  net-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 <ftp://ftp.icm.edu.pl:/pub/Linux/sun­
  site/docs/HOWTO/mini/>.

  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.



  ˇ  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




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

























  # 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
  # przyśpieszyć 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 przyśpieszyć 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...
Zgłoś jeśli naruszono regulamin