Linux

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

rsync als Backuplösung
immer genaue Uhrzeit (für alle)
Grundlagen
Festplatte im Netz (für alle)
Firebird SQL Server
xinetd als Redirector
mysql Datenbank für php Projekte


1) Worum geht es

* WARNUNG: Dieses HOWTO enthält Erfahrungsberichte und/oder Infos ohne
  jeglichen Anspruch auf Korrektheit. Alles ist hoch experimentell und nicht
  ausgiebig getestet. Es handelt sich eigentlich um ein lyrisches Werk freier
  Geister, einen Bezug zur Relalität (insbesondere ein Zusammenhang mit der
  Computertechnik) darf niemals vermutet werden. Eine Art Garantieanspruch aus
  diesen freien Gedankenexplosioen abzuleiten grenzt an Wahnsinn.
* Wir wollen mit diesem Dokument das Neuaufsetzen eines Suse Workgroup-Servers
  beschreiben. Nach einem Crash soll es z.B. Alexander (vom HeBu-Musikverlag)
  möglich sein, ohne viel Nachdenken einen neuen suse-linux-server aufzusetzen!
* Die Sache ist recht umfangreich, mal in Kurzform: Alle wollen über linux
  ins InterNet. Es läuft dort der SQL Server firebird. Alle (win32&MACs) nutzen
  Plattenplatz (via samba,netatalk). Der Port 80 soll auf einen Win32 Rechner
  geroutet werden.
* ehm nochwas; frage niemals: "was sind server?"
* Mitarbeiter:
  Andre Wolff       , Entwickler
  Thilo Frey        , Entwickler
  Andreas Filsinger , Entwickler (Projektleiter)

2) Bitte mitarbeiten!

  MITARBEIT: Dem Paket liegt eine .rev Datei bei - es handelt dabei um den
  Source-Code dieses Dokumentes, das Dir gerade in der html-Form vorliegt.
  Es ist eine einfache .txt Datei, dummerweise mit der Dateiendung .rev.
  Diese Textdatei einfach abändern/erweitern (am besten mit notepad,write) und an
  andreas@filsinger.de mailen. Der macht dann ne neue Release draus. Nicht
  vergessen im unten Dokumentteil eine neue Revnummer zu beginnen (+Datum) und
  die Änderungen kurz zu dokumentieren.

3) Erster (Kalt-)Start

  Rechner an, gleich ins System-Bios gehen, dazu <Entf> drücken,
  wenn die "Drives"-Erkennung läuft. Im BIOS nun
  ->Advanced?!->Boot Device 0->
  von "HDD-0" auf "CDROM" umstellen,
  damit der Rechner von der DVD bootet. (das geht bei jedem BIOS anders)
  ->Suse 7.3 DVD rein
    (oder 8.0, sorry dann alles bissel anders: aber besser!!)
  ->Save and exit
  ...Rechner bootet neu, und macht den ersten (Warm-)Start

4) Suse DVD bootet ...

  Rechner erkennt, dass er von der DVD booten kann
  7.3
  "Manual Installation" bestätigen
  Bildschirm (farbe/mono)
  Tastaturbelegung Deutsch
  Installation/System starten
  Installation/Update starten
  Quellmedium CD-ROM auswählen
  YAST-Version grafisch wählen
  Laden aller (USB) Treiber bestätigen
  Installationssprache Deutsch
  Tastaturlayout "deutsch" und Zeitzone "Europa/Deutschland" wählen
  Installationsmodus "Neuinstallation" wählen
  Vorgeschlagene Partition ändern (Muss wegen Reiserfs gemacht werden)
  8.0
  Installation / deutsch / Neuinstallation
  8.2
  Manuelle Installation

5) Festplatte einrichten:

   Also wir machen 3 Partitionen:
   "boot"  kleine Mini-Partition: damit das booten immer klappt (ext2 oder ext3-Dateisystem)
   "swap"  mittlere Partition: da werden RAM Speicherbereiche rausgeschrieben,
           um Platz zu machen für wichtigere Daten.
           Grösse= RAM * 2 oder mehr, aber immer größer als das RAM!
   "linux" eigentlicher Betriebssystem Bereich und Anwender und
           Benutzerbereich
   Bei "Festplatte vor ..."
   den
   [X] Benutzerdefiniert wählen!
   3 Partitionen anlegen:
   0..2      Linux native  (ext2 oder ext3)       mounting-point "/boot"
   3..84     Linux swap    -----        ----------------------
   85..5004  Linux native  (!reiserfs!) mounting-point "/"
  2. Platte mal noch offen lassen

6) "Standard mit Office" installieren

  "Benutzername usw." (sorry weis nicht mehr genau wann das kommt).
  Rechnername: linus
  pwd für den root (=Administrator im win32 Dialekt) erst mal auch so eingeben
  pwd: linus
  "Monitor ändern"
  EIZO-F56 aber beachten dass die vorgeschlagene Wiederholfrequenz
  herunterkorrigiert wird. etwa 70 Hz-72 Hz, was der jeweilige Monitor
  verträgt.
  "Hardware konfigurieren" wählen!
  ->Netzwerk,
    erste Netzwerkkarte
    100 MBit-Karte: KarteIP fest, zb. 192.168.100.72, Maske so ok
    "Rechnername und Nameserver" wählen!
     ->name:    linus
     ->domäne:  pcworld
       NameServer: 194.25.2.132 (T-online)
    zweite Netzwerkkarte
    10 MBit-Karte: KarteIP fest, zb. 192.168.99.72, Maske so ok
                                     (anderes logisches Netzwerk!)
    "Rechnername und Nameserver" diesmal nicht notwendig!
  ->ISDN
    Euro-ISDN,Deutsch,t-online usw.
    Zugangsdaten für den flat bereithalten
  ->Sound
    normales Setup->meist auf 100% Lautstärke anpassen, da wir sonst
    später nix mehr hören.

7) vor dem ersten Start(Logout,beenden,neustarten)

  ins bios gehen (Taste <Entf>), Bootlaufwerk
  von "CDROM" auf "HDD-0" umstellen! Damit der Rechner niemals versehentlich
  von CD-bootet.
  immer als root einloggen

8) Pakete nachinstallieren

  (als (Benutzernamen=)root eingelogged?!)
  [suse->]system->configuration->yast 2->Software deinstallieren/installieren
                                         (Software install/remove)
  ->ev. Pakete "suchen" knopf, names des Paketes angeben
    doppelklick auf das paket
  X samba	serie: n
  X netatalk	serie: n
  X vnc	serie: xap
  Folgende Pakete müssen deinstalliert werden:
  7.3
  ===
  D Personal-Firewall
  D SuSE-Firewall
  D ipchains

9) T-DSL, leider muss geschraubt werden.

 (nicht SuSE 9.0)
  Details auf http://sdb.suse.de/en/sdb/html/cg_pmtu2.html.
  a) editiere folgende Datei, (hier z.B. mit KWrite)
    kwrite /etc/ppp/options
  suche und setze die beiden werte wie angegeben, Ist diese Option durch ein
  "#" auskommentiert, den "#" weglöschen und dadurch die Option aktiv machen.
    mtu 1492
    mru 1492
  b) editiere folgende Datei, (hier z.B. mit KWrite)
   kwrite /etc/ppp/peers/pppoe
  suche und setze die beiden werte wie angegeben, Ist diese Option durch ein
  "#" auskommentiert, den "#" weglöschen und dadurch die Option aktiv machen.
    mtu 1492
    mru 1492

11) Netzwerk Verbindung prüfen

  auf einem win32 Rechner jetzt den Linux Server anpingen (per IP, nicht den )
  mehr Details siehe 22)
  ping 192.168.115.90

12) Netatalk-konfiguration (zugriff auf einen Linux Share via MAC)

  (als (Benutzernamen=)root eingelogged?!)
  Adv.Edit (notepad ähnlich) starten (im "StarT"-Menü, Editoren->Advanced Editor)
  a) /etc/rc.config:
     START_ATALK="no" auf START_ATALK="yes"
     Eintrag wirksam machen mit SuSEconfig
  b) /etc/atalk/atalkd.conf
     eth0  auf    eth1
     # nur ändern, wennn 100 Mbit-Karte eth1 ist (Network/Basic -> Network card configuration)
  c) /etc/atalk/AppleVolumes.default
     Zeile ganz unten mit nur der Tilde
     ~
     rauslöschen!
     neue Zeile (auch ganz unten)
     /freigabe/mac "user" options:noadouble
  d) terminal fenster starten (muschel)
     cd /freigabe
     mkdir mac
     chmod 0777 -R /mac
     rcatalk start
     -> nach ca. 1 minute müsste "linus" sichtbar sein, ev. als
     linus/linus verbinden!
  e) Diagnose
     nbplkup

14) Einsatz als firebird-raib

     8.0
     ===
     raib ist ein RAID 5 Array aus 3 unabhängigen firebird servern und einem Master.
     Zum einsatz kommt ein (selbstgebautes) Server Blade mit 4 Rechnern. Dazu muss
     nach erfolgreicher Installation der Hardware-Scan beim booten (hwscan) deaktiviert
     werden, da diese Rechner ohne Keyboard und Maus laufen. hwscan stoppt sonst
     das Hochfahren und bringt einen Maus-Auswahldialog.

15) DVD ist weg - und man muss Software nachinstallieren:


 Unter YaSt2, Software, Softwarequelle, eine FTP Quelle anlegen
 Servername: ftp.gwdg.de 
 Verzeichnis: pub/linux/suse/ftp.suse.com/suse/i386/9.0 
 8.2
 ===
 Verzeichnis: pub/linux/suse/ftp.suse.com/suse/i386/8.2 


16) Firebird Datenbank Crash?

   konkrete Verwendung einzelner Befehle für fix, backup und restore.
   siehe ibreorg.bat in der Anlage. (der ist leider für Win32-DOS-Box!)
   die Befehle müssten auch unter linux so gehen. der Pfad ist aber
   /opt/interbase/bin/gbak ....
   --- snip
   @echo off
   REM -------------------------------------------------
   REM Reparatur einer inkonsistenten FireBird Datenbank
   REM
   REM (c) Andreas Filsinger, www.cargobay.de
   REM -------------------------------------------------
   REM
   REM Usage
   REM
   REM reorg <Pfad und Name der Datenbank OHNE ".gdb">
   REM
   REM --------------------------------------------
   REM
   REM ACHTUNG: richtigen Pfad ermitteln, indem Sie nach der
   REM          Datei gbak.exe suchen lassen. Und hier eintragen:
   REM
   SET IBBIN=D:\programme\borland\interbase\bin\
   REM
   REM --------------------------------------------
   REM 1) fix erros
   REM
   %IBBIN%gfix -mend -full -ignore -user "SYSDBA" -password "masterkey" %1.gdb
   REM --------------------------------------------
   REM 2) backup fixed base
   REM
   %IBBIN%gbak -backup -v -ignore -garbage -user "SYSDBA" -password "masterkey" %1.gdb %1_neu.gbk
   REM --------------------------------------------
   REM 3) restore base
   REM
   REM zusätzlich noch "-i" wenn Indizes deaktiviert werden sollen
   REM
   %IBBIN%gbak -r -v -p 8192 -user "SYSDBA" -password "masterkey" %1_neu.gbk %1_neu.gdb
   REM --------------------------------------------
   REM 4) check new one
   REM
   %IBBIN%gfix -v -f -user "SYSDBA" -password "masterkey" %1_neu.gdb
   REM --------------------------------------------
   --- snap
   Bemerkungen
   ===========
   a) Backup-möglich aber fail beim Restore: wegen inkonsistenter Indizes
   ich habe mal erlebt, das foreign Key nicht mehr konsistent waren, und deshalb
   der restore abgebrochen hat. Alle Indizes kann man jedoch als inaktiv restoren,
   (Option -i )
   nach löschen /clearen der "Schuldigen" kann man alle indizes wieder aktivieren,
   wieder ein backup, wieder ein restore -> alles wieder gut.
   (Sourcecode dazu im HeBuAdmin Projekt)
   damit der HebuAdmin alle indizes sehen kann braucht er "out.txt". Das ist die
   Ausgabe eines erfolgreichen restores, der alle indizes enthält.
   Unter linux gibt man die Ausgabe von gbak mit 2>/freigabe/out.txt in eine Datei
   aus.
   firebird-Erkenntnis
   ===================
   internal gds software consistency check (partner index description not found (175))
   dieser Fehler tritt beim löschen eines Datensatzes auf, der eventuell durch einen
   foreign key einer anderen Tabelle referenziert werden könnte. Ist dieser key
   deactiviert so kann keine Aussage getroffen werden, ob das löschen ok ist, dieser
   interne Fehler ist die Folge!!

17) Routing, Masquerading und Firewall

     Alle Arbeitsplatz-Rechner sicher und einfach ins InterNet zu bringen
     ist hierbei vorrangiges Ziel.
   a) Skript "myfirewall.sh" (in der Anlage sicherlich aktueller als dieser Snapshot)
      nach /root kopieren.
   --- snip
       # !/bin/bash
       IPTABLES=/usr/sbin/iptables
       DEV_LOC=eth0
       DEV_EXT=ppp0
       DNS_EXT=194.25.2.129
       # for IF in $DEV_LOC $DEV_EXT do
       # Kernelmodule laden
       echo "1" > /proc/sys/net/ipv4/conf/eth0/rp_filter
       echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_redirects
       echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
       echo "0" > /proc/sys/net/ipv4/conf/eth0/bootp_relay
       echo "1" > /proc/sys/net/ipv4/conf/eth0/log_martians
       echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/rp_filter
       echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_redirects
       echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_source_route
       echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/bootp_relay
       echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/log_martians


       # done
       echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
       echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
       echo "5" > /proc/sys/net/ipv4/icmp_destunreach_rate
       echo "5" > /proc/sys/net/ipv4/icmp_echoreply_rate
       echo "5" > /proc/sys/net/ipv4/icmp_paramprob_rate
       echo "10" > /proc/sys/net/ipv4/icmp_timeexceed_rate
       # Zu Anfang alles verbieten (Default Policy)
       $IPTABLES -P INPUT ACCEPT
       $IPTABLES -P OUTPUT ACCEPT
       $IPTABLES -P FORWARD ACCEPT
       # Alle Regelketten, die sich noch im Speicher befinden k"nnten, l"schen
       $IPTABLES -F
       $IPTABLES -t nat -F
       $IPTABLES -X
       # Verbindungen fr Testzwecke am eigenen Rechner ber das Loopback. Einige
       # lokale Prozesse wie BIND verwenden das Loopback fr die interne Kommunikation
       $IPTABLES -A OUTPUT -o lo -j ACCEPT
       $IPTABLES -A INPUT -i lo -j ACCEPT
       # Alle externen Verbindungsversuche und ander Merkwrdigkeiten werden hier
       # aufgefangen, im SYSLOG vermerkt und dann unsch„dlich gemacht
       $IPTABLES -N nirwana
       # $IPTABLES -A nirwana -p TCP -j LOG --log-prefix "NIRWANA: TCP "
       # $IPTABLES -A nirwana -p UDP -j LOG --log-prefix "NIRWANA: UDP "
       # $IPTABLES -A nirwana -p ICMP -j LOG --log-prefix "NIRWANA: ICMP "
       # $IPTABLES -A nirwana -p TCP -j DROP
       # Kernelmodule masq und forwarding aktivieren (dyn. IP vom Provider)
       echo "1" > /proc/sys/net/ipv4/ip_dynaddr
       echo "1" > /proc/sys/net/ipv4/ip_forward
       $IPTABLES -t nat -A POSTROUTING -o $DEV_EXT -j MASQUERADE
       $IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
       # Für alle bestehenden ein- und ausgehenden Verbindungen. Dritte Regel
       # verhindert alle Verbindungen die Auáen kommen
       $IPTABLES -A FORWARD -i $DEV_LOC -o $DEV_EXT -m state --state ESTABLISHED,RELATED -j ACCEPT
       $IPTABLES -A FORWARD -i $DEV_EXT -o $DEV_LOC -m state --state ESTABLISHED,RELATED -j ACCEPT
       # $IPTABLES -A FORWARD -i $DEV_EXT -o $DEV_LOC -m state --state NEW,INVALID -j nirwana
       # Zugriff auf internen WEB-Server
       # $IPTABLES -A PREROUTING -t nat -p tcp -i $DEV_EXT --dport 80 -j DNAT --to 192.168.115.8:80
       $IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 80 -j DNAT --to 192.168.115.8:80
       $IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 5900 -j DNAT --to 192.168.115.1:5900
       # WinMx auf fred!
       $IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 6699 -j DNAT --to 192.168.115.3:6699
       $IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p udp --dport 6257 -j DNAT --to 192.168.115.3:6257
       # Ping ins Internet erlauben, eingehende werden von der NIRWANA-Rule abgefangen
       $IPTABLES -A FORWARD -o $DEV_EXT -p ICMP --icmp-type echo-request -j ACCEPT
       # DNS
       $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport domain -d $DNS_EXT -m state --state NEW -j ACCEPT
       # HTTP
       $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport http -m state --state NEW -j ACCEPT
       # $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport https -m state --state NEW -j ACCEPT
       # FTP
       # $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport ftp -m state --state NEW -j ACCEPT
       # $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT
       # Alle Pakete, die bis hierher kommen nach nirwana
       $IPTABLES -A INPUT -j nirwana
       $IPTABLES -A OUTPUT -j nirwana
       $IPTABLES -A FORWARD -j nirwana
   --- snap


__zukünfiges thema: lokales umlenken lokaler Port traffics. Z.b. aller verkehr aus dem Internet

   soll umgeleitet werden von "80" auf "8080".
       iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT \
       --to-ports 8080
       iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner \! --uid-owner 13 \
       -j REDIRECT --to-ports 8080
       Should work. I tested it on my own firewall, although I just tested it
       with netcat, not a real proxy.
       Locally generated packets don't go through the PREROUTING chain, so you
       have to manipulate them in OUTPUT, and you also have to differentiate
       them from the proxy's outgoing packets, hence the match against uid 13
       (proxy), taken from /etc/passwd.
       Unfortunately, you'll have to enable owner match support in your kernel
       for the second line to work, so you might have to recompile (it's one of
       the features labelled experimental).
         Jason

__zukünfiges thema: Bandbreiten verteilung: siehe artikel in c't 01/03. Kommt aber

   sicher stablier ab "suse 8.2", das es kernel >2.4.19 erfordert.
   b) mit
      chmod 755 /root/myfirewall.sh
      macht man dieses Script ausführbar. Nun starten ...
      /root/myfirewall.sh
   c) Automatischer Start der Firewall beim booten ...
      Als root einloggen und folgende Zeilen eingeben:
      ln -s /root/myfirewall.sh /etc/init.d/rc2.d/S30myfirewall <RETURN>
      ln -s /root/myfirewall.sh /etc/init.d/rc3.d/S30myfirewall <RETURN>
      ln -s /root/myfirewall.sh /etc/init.d/rc5.d/S30myfirewall <RETURN>
      fehlt noch: "K" links, myfirewall sollte echtes Script werden, das
                  "start" und "stop" auswerten kann.
   d) Eintrag in /etc/rc.config ändern: IP_FORWARD="no" auf "yes"
      Eintrag wirksam machen mit SuSEconfig

18) lokaler SMTP Forwarder

 * win32 outlook express clients sollen bei der email-Konten-Einstellung den
   Eintrag "smtp-Server:" von dem "wirklichen" Server auf die IP des Linux-Servers
   umstellen können. POP Eintrag MUSS bleiben.
 * Der Linux Server muss ausgehende Mails mit 100 MBit/s annehmen, und
   lokal zwischenspeichern.
 * Der smtp Dienst von Linux muss eine autentifizierung des Users verlangen.
   (wie bei heutigen smtps üblich, mit dem gleichen Konto/pwd wie für pop3)
 * Der Linux Server sollte als "relay" fungieren, und die mail somit völlig
   unangetastet lassen.
 * Durch die Identifizierung mit dem smtp "Konto-Name" muss der Linux Server
   ermitteln (in einer config-Datei) wer der wirkliche smtp Server im Internet
   ist. Der Server muss nun (in aller Ruhe) dafür sorgen dass die Mail zugestellt
   wird. Es sollte kein "fester" relay-smtp für "alle" email-Konten benutzt werden.


 ---------------------------------------------------------------------------------------
 Aufsetzen des Mailservers postfix
 ---------------------------------------------------------------------------------------
 Andre Wolff 24.4.2003
 ---------------------------------------------------------------------------------------


 ---------------
 1. Installation
 ---------------
 Postfix wird bei der Version 8.2 standardmäßig installiert. Zur Überprüfung, ob postfix
 installiert und aktiv ist, wie folgt vorgehen:
         - Aufrufen des YAST2-Kontrollzentrum
         - Auswahl System
         - Den Runlevel-Editor starten
         - Auf "Runlevel-Eigenschaften..." klicken
 In der nun angezeigten Liste sollte ein Eintrag postfix vorhanden sein. Ist dieser als aktiv
 gekennzeichnet und für die Runlevels 3 und 5 konfiguriert, ist alles Ok. Sollte der Eintrag
 postfix nicht vorhanden sein, muß das Programm evtl. nachinstalliert werden:
         - Runlevel-Editor ggf. wieder beenden
         - Aus dem YAST2-Kontrollzentrum "Software" auswählen
         - Auswahl "Software installieren oder löschen"
         - Im Kombinationsfeld Filter den Eintrag "Suche" auswählen und im Suchfeld
           postfix eingeben und auf die Schaltfläche "Suche" klicken
         - in der Paketliste postfix auswählen und auf Schaltfläche "Akzeptieren" klicken
 ----------------
 2. Konfiguration
 ----------------
 Da SuSE versucht alle wichtigen Programme direkt aus YAST oder YAST2 heraus automatisch 
 zu konfigurieren, wir aber das Mail-System unseren Bedürfnissen explizit anpassen wollen,
 muß die automatische Konfiguration für postfix abgeschaltet werden:
         - Im YAST2-Kontrollzentrum "System|Editor für /etc/sysconfig-Dateien" auswählen
         - Dann Auswahl "Network|Mail|General"
         - Ändern des Eintrages "MAIL_CREATE_CONFIG" von yes auf no und Sysconfig-Editor 
           beenden


 Datei "main.cf" anpassen
 Datei /etc/postfix/main.cf mit einem Editor öffnen. Die Einträge wie folgt ändern
 oder das '#'-Zeichen entfernen :
         myhostname = smtp.hebu.de
         mydomain = hebu.de
         mynetworks = 192.168.100.0/24,127.0.0.0/8
         smtpd_banner  = $myhostname ESMTP
         relay_domains = $mydestination, <dom1>, <dom2>, ...


 Anpassen des Firewall-Skriptes
 Eintrag in /root/fwdsl.start nach dem Eintrag "Samba aus dem internen Netz":
 #--------------------------------------------------------------------------------
 # E-Mail zum relayen
 $IPTABLES -A INPUT  -i $DEV_INT  -s $INT_NET -p TCP --sport $HIGH_PORT --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 $IPTABLES -A INPUT  -i $DEV_INT  -s $INT_NET -p TCP --sport 25 --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 $IPTABLES -A OUTPUT -o $DEV_ISDN -p TCP --sport $HIGH_PORT --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 $IPTABLES -A OUTPUT -o $DEV_ISDN -p TCP --sport 25 --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 ---------------------------------------------------------------------------------
 Folgende Erweiterung für DNS eintragen 
 #--------------------------------------------------------------------------------
 $IPTABLES -A OUTPUT -o $DEV_ISDN -m state --state NEW -p UDP --sport $HIGH_PORT  --dport domain -j ACCEPT
 $IPTABLES -A OUTPUT -o $DEV_ISDN -m state --state NEW -p TCP --sport $HIGH_PORT  --dport domain -j ACCEPT
 #--------------------------------------------------------------------------------


 Bei den E-Mail-Clients muß nun der neue SMTP-Server eingetragen werden.
 Bei Outlook und Outlook-Express unter "Extras|Konten" die Registerkarte "E-Mail" auswählen.
 Dann mit einem Doppelklick die Eigenschaften des gewünschte Mailkontos öffnen. Auf der
 Registerkarte Server bei "Postausgang (SMTP)" die IP-Adresse des neuen Mail-Relays
 eintragen.

19) Bandbreiten Management

Hier: Der eMail-Ausgangsstrom soll uns nicht die Bandbreite des Web-Shop mindern.
 * Noch nicht Teil dieses Bugets - aber bitte im Hinterkopf behalten: Durch Einträge
   mit Hilfe von iptabels kann ab Kernel 2.4.20 die bandbreite gewisser dienste
   vorbestimmt werden. Ich suche mal den Artikel in der c't. Wir starten, wenn
   Suse 8.2 bei mir vorliegt (ist vorbestellt!)

20) lokaler DNS Forwarder

   * DNS-Adressen wechseln ganz im Gegensatz zu HTML-Inhalten nicht so
     häufig. Deshalb will ich keinen vollständigen Proxy einsetzten. Aber ich
     will nicht, dass jede (wiederholte) DNS Anfrage ins INternet rausgepustet
     wird! Bis sich alle Datenbanken weltweit angeglichen haben kann schon mal
     ein halber Tag vergehen, also können wir auch guten gewissens DNS anfragen
     cache, etwa mit einer Haltbarkeit der cache inhalte von 10 min ?!. Deshalb
     ist ein Caching unbedenklich, und auch be-sonders lohnend, da einige UDP/TCP
     Verbindungsaufbau-Vorgänge lokal abgewickelt werden können!
   * Die Idee liegt nahe, hey man könnte den Linux-Server doch auch als
     Name-Server (DNS-relay) einsetzen. Egal welcher Provider dann angewählt ist
     (=welcher nameserver auch immer angegeben werden muss) der lokale DNS-Server
     leitet alle Anfragen immer  an die richtige Adresse (nämlich an den Nameserver
     draussen im INternet) weiter. Wie die jeweiligen namenserver heissen steht ja
     in der /etc/resolv.conf. Die Clients müssen nix mehr umstellen (im Feld
     Nameserver)! Gateway UND Nameserver haben dann die gleiche Zieladresse.
     Adresse
Zuerst werden die Pakete [bind9] aus der Serie [n] sowie die [bind9-utils] 
installiert und in Yast2 im "Runlevel-Editor" - "Runlevel eigenschaften" 
Named auf "start" gesetzt.

Danach in der Datei "/etc/named.conf" folgende, mit den Pfeilen markierten 
Anpassungen eintragen:
-------------------------------------------------------------------------
      options {
       ->     auth-nxdomain no;
              # The directory statement defines the name server's
              # working directory
              directory "/var/named";
              # The forwarders record contains a list of servers to
              # which queries should be forwarded. Enable this line and
              # modify the IP-address to your provider's name server.
              # Up to three servers may be listed.
              # forwarders { 10.11.12.13; 10.11.12.14; };
      ->     forwarders { 194.25.2.129; 212.185.248.148; };
              # Enable the next entry to prefer usage of the name
              # server declared in the forwarders section.
      ->     forward first;
              # The listen-on record contains a list of local network
              # interfaces to listen on. Optionally the port can be
              # specified. Default is to listen on all interfaces found
              # on your system. The default port is 53.
              # listen-on port 53 { 127.0.0.1; };
              # The listen-on-v6 record enables or disables listening
              # on IPV6 interfaces. Allowed values are 'any' and 'none'
              # or a list of addresses. IPv6 can only be used with
              # kernel 2.4 in this release.
              listen-on-v6 { any; };
              # The next three statements may be needed if a firewall
              # stands between the local server and the internet.
              # query-source address * port 53;
              # transfer-source * port 53;
              # notify-source * port 53;
          # The allow-query record contains a list of networks or
         # IP-addresses to accept and deny queries from. The
          # default is to allow queries from all hosts.
          # allow-query { 127.0.0.1; };
          # If notify is set to yes (default), notify messages are
         # sent to other name servers when the the zone data is
         # changed. Instead of setting a global 'notify' statement
       # in the 'options' section, a separate 'notify' can be
       # added to each zone definition.
       notify no;
      };
 # The following three zone definitions don't need any modification.
 # The first one defines localhost while the second defines the
 # reverse lookup for localhost. The last zone "." is the
 # definition of the root name servers.
  zone "localhost" in {
        type master;
        file "localhost.zone";
 };
 zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
 };
 zone "." in {
        type hint;
        file "root.hint";
 };
 # You can insert further zone records for your own domains below.
 ---------------------------------------------------------------------


Jetzt ist noch in der Datei "/etc/resolv.conf" anzugeben, dass man zur 
Namensauflösung den lokalen DNS-Server benutzt.
------------------------------------------------------------------------

   search
   nameserver 127.0.0.1
------------------------------------------------------------------------


Damit die "/etc/resolv.conf" nicht bei jeder Einwahl wieder überschrieben 
wird muss der Parameter "MODIFY_RESOLV_CONF_DYNAMICALLY" in der Datei 
"/etc/sysconfig/network/config" auf "no" gesetzt werden. Um aber bei Änderungen
an der DNS Konfiguration des Providers nicht vor der Tür zu stehen sollte in 
der gleichen Datei die Option "MODIFY_NAMED_CONF_DYNAMICALLY" auf "yes" gesetzt
werden. Dadurch werden die "forwarders" in der"/etc/named.conf" bei jeder 
Einwahl aktualisiert.


Nun müssen die neuen Gegebenheiten der Firewall mitgeteilt werden. Folgende 
Zeilen werden im Script "/root/fwdsl.start" nach der Sektion 
"# E-Mail zum relayen" 
hinzugefügt.
 --------------------------------------------------------------------------------
  # DNS-Forwarding
   $IPTABLES -A INPUT  -i $DEV_INT  -s $INT_NET -p TCP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j
   $IPTABLES -A INPUT  -i $DEV_INT  -s $INT_NET -p UDP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j
   $IPTABLES -A OUTPUT -o $DEV_ISDN -p TCP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
   $IPTABLES -A OUTPUT -o $DEV_ISDN -p UDP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 ------------------------------------------------------------------------


 Zum Abschluß werden auf den Windows-Clients in den Netzwerkeinstellungen bei den
 TCP/IP-Eigenschaften unter Gateway und DNS die IP-Adresse des LINUX-Servers
 angegeben.

21) Fernwartung einiger Rechner im Netz von aussen via InterNet via VNC

   (beide Systeme (Zielsystem & Remotesystem) müssen eigentlich nur im InterNet
   sein! Der eine z.B. via ISDN, der andere z.B. via DSL, super natürlich: beide via DSL)
   auf jedem Win32-Ziel-Rechner installiert man den VNC-Server:
   (freier download unter www.tightvnc.com) Das myfirewall-Script muss
   für je einen Rechner um eine Script-Zeile erweitert werden.
   Es gibt auch einen Viewer(Client) für den MAC
   http://sourceforge.net/projects/cotvnc/
   # VNC für Brutus, Displaynummer=0 oder nix angeben
   $IPTABLES -A PREROUTING -t nat -p tcp -i $DEV_EXT --dport 5900 -j DNAT --to 192.168.115.1:5900
   # VNC für Fred, Displaynummer=1
   $IPTABLES -A PREROUTING -t nat -p tcp -i $DEV_EXT --dport 5901 -j DNAT --to 192.168.115.3:5900
   # VNC für joe
   $IPTABLES -A PREROUTING -t nat -p tcp -i $DEV_EXT --dport 5902 -j DNAT --to 192.168.115.8:5900
   # usw. ...
   die aktuelle IP (die man "daheim" angeben muss) ermittelt man aus der gepachten IP-
   Adresse im InterNet (Rechter Mausklick auf die HomePage, Quelltext anzeigen, IP-Adresse
   rauskopieren). Beim einloggen gibt man neben der (aktuellen) IP die Displaynummer an, also
   217.217.20.118:1 (für z.B. fred) und das passwort wie immer. ACHTUNG: immer auf beiden
   Seiten 16 bit farben (= High-Color) verwenden! Den Rechner, den man fernwarten will:
   sollte ganz ganz schnell sein (ich meine das ernst), und ne super schnelle 2D Grafikkarte
   haben (z.B. Matrox G450). Der Rechner mit dem man fernwarten will: Der dreht leider eigentlich
   (fast) immer Däumchen, der kann ruhig alt und schwach sein!!! Hier sollte nur eine gute Anbindung
   ans Internet sichergestellt werden! Hilfreich: etwas größere Auslösung wie das Ziel-System, aber
   auch High-Color! Wichtig: Passwörter möglichst >8 Zeichen.
   VNC - Remote Control des Servers mit Hilfe von z.B. einer Windows-Maschine.
   Für Leute, die nicht in den Serverraum laufen möchten, oder kein Geld mehr
   für einen Monitor am Linux-Rechner haben, weil das Betriebssystem so teuer war ;-)
   vnc-paket installieren (mit Yast 2)
   Terminal Session starten
   vncserver eingeben, pwd vergeben
   von irgendeiner anderen Maschine einloggen:
   192.168.115.72:1
   -pwd eingeben
   Es muss ein Terminal-Fenster erscheinen, dort kan man nun
   kde
   eingeben wenn man eine kde-session starten will...
   Suse 7.x
   ========
   Damit der VNC- Server beim booten allein gestartet wird, genügt ein Eintrag in /etc/rc.d/rc.
   Die Zeile, die ganz unten (Suse 8.0: vor "exit 0") ergänzt werden muß lautet:
                 su -l root -c "vncserver -cc 3 :1 -alwaysshared"
   Suse 8.0
   ========
   Suse 8.1
   ========
   ** Obige Methode läuft nicht mehr unter Suse 8.1.
   Bemerkung: Es war mal bei 8.0 notwendig an einer Maschine, die den vncserver nicht
   mehr allein startet, wieder keyboard und monitor anzuschliesen, um sich "echt"
   (in kde) einzuloggen, danach lief wieder alles super.
   Suse 8.2
   ========
   YaST2 / System / Editor für /etc/sysconfig-Dateien / Desktop / Display Manager:
   Die Variable DisplayManager_Remote_Access auf yes setzen.
   Auf der Konsole rcxdm restart eingeben.
   YaST2 / Netzwerkdienste / Netzwerkdienste (inetd) aufmachen und die 4
   Einträge mit "VNC" im Namen aktivieren.
   Andere Computer (auch Windows-Maschinen) können nun über den Browser den
   VNC-Server ansprechen. Dazu benötigt er Java.
   Die URL lautet: http://Vncserver-Rechner:5810.
   Wer auf der Client-Seite nicht im Webbrowser arbeiten will, benutzt den VNCViewer.
   Für diese Anwendung lautet nun der angefragte Hostname "Vncserver-Rechner:10"
   oder "Vncserver-Rechner:11", auch wieder mit IP-Adresse des Zielsystems möglich,
   z.B. 192.168.115.93:10.

25) WIN32-Clients nutzen die Zeit des Linux-Rechner

   net time \\<IP-Adresse des Linux Servers>
  ev. kleiner Batch schreiben, der beim Login immer ausgeführt
  wird.

26) WIN32- Clients einrichten

     Windows 2000(W2K) XP
     a) Standard-Gateway (wegen Internetnutzung)
     Start->Einstellungen(Systemsteuerung)->Netzwerk- und DFÜ-Verbindungen->LAN Verbindung->
     Eigensxhaften->Internetverbindungen(TCP/IP)->Eigenschaften->
     Standardgateway: IP des Servers
     Bevorzugter DNS-Server: IP des Servers
     b) WINS Support einschalten (wegen keepcon-Namensauflösung)
     Start->Systemsteuerung->Netzwerkverbindungen->lan-verbindung(rechter
     mausklick)->eigenschaften->internetprotokoll(tcp/ip)->Eigentschaften->Erweit
     ert->WINS->Hinzufügen->IP des Servers eintragen.->ok->ok->schliessen.
     Unverträglichkeit mit AVM KEN!
     AVM KEN Klient "InterNet" Installation auf dem Arbeitsplatz, der via Linux ins Internet will:  nicht erlaubt
     AVM KEN Klient irgendwo auf anderen Arbeitsplatz im selben Netz: erlaubt
     AVM KEN Server irgendwo im Netz: erlaubt
     «fehlt(2)»:
     AVM KEN! Klient als reines "CAPI - Sharing" das müsste doch gehen? Oder?
     -> prüfen! (manche wollen weiterhin über den KEN!-Server faxen!)

27) Eine andere Linux-Maschine will ins Internet

     1) YAST2 ->network ->routing ->Standart-Gateway=IP des Servers
     2) YAST2 ->advanced network ->DNS ->IP des Servers

28) Kernel Updates

   (es soll niemand mehr sagen das sei schwierig!)
   nur für Suse 7.2 notwendig, (HISTORISCH - NICHT NOTWENDIG AB 7.3):
   Einspielen des Kernels 2.4.7
   Dies ist notwendig, da masquerading irgend einen Bug hat. Auch hat sich das
   einspielen als sehr heilsam für das ganze System herausgestellt. (Auch TDSL!)
   downloaden des Kernels (als rpm) von
   ftp.suse.com/pub/suse/i386/update/7.2/kernel/2.4.7/k_deflt-2.4.7-25.i386.rmp
   Terminal-Fenster starten, eingeben
   YaST <ENTER>
   "paketverwaltung (update,install,auf..)"
   Paket einspielen
   Quelle (nun den obigen rpm lokalisieren)
   markieren mit Leertaste, damit installiert wird
   <F10> zum Installieren drücken
   YaST beenden, ein cleanup wird durchgeführt
   mk_initrd <ENTER>
   lilo <ENTER>
   -> system neu booten!!!

29) Win32-Kiste: Der Apache-Web Server

   dieses Kapitel gehört eigentlich nicht hier herein - aber es hat mit dem
   Routing zu tun, so dass es doch die Linux Installation überhaupt erst ver-
   ständlich macht! Anforderung: Kommt eine http:/ Anfrage aus dem Internet
   auf den Linux Rechner zu (auf Port 80) muss er diese Anfrage auf einen
   anderen Rechner im Netz routen (sorry auf eine win32-Kiste). Dieser hat eine
   feste IP-Adresse in lokalen Netz. Es ist ein Windows 2000 Rechner mit Apache
   Web Server installiert. Die Anwort geht wieder an den Linux, und dann raus
   ins Internet. Weil wir eine Suchmaschine (in form einer ISAPI-DLL) nur für
   win32 haben, (und dem IIS von Microsoft nicht (mehr) trauen) wird auf win32
   der Apache Web-Server installiert. Der kann wunderbar ISAPI-Dlls ausführen!
   In der Anlage findet man die Apache-Konfiguration: httpd.conf (Die bestehende
   Konfiguration sollte nicht überschrieben werden, sondern nur geänderte Punkte
   eintragen) Die geänderten Punkte sind:
   a) von ...
       <Directory "D:/Programme/Apache Group/Apache/cgi-bin">
           AllowOverride None
           Options none
           Order allow,deny
           Allow from all
       </Directory>
      zu ...
       <Directory "D:/Programme/Apache Group/Apache/cgi-bin">
           AllowOverride None
           Options ExecCGI
           Order allow,deny
           Allow from all
       </Directory>
   b) von ...
       # To use CGI scripts:
       #
       # AddHandler cgi-script .cgi
      zu ...
       # To use CGI scripts:
       #
       AddHandler cgi-script .cgi
       AddHandler isapi-isa .dll
   Ich hatte den apache 1.3.22 installiert!
   http://httpd.apache.org/dist/httpd/binaries/win32/apache_1.3.22-win32-x86.exe
   in die .\cgi-bin muss die HebuWeb.dll (Delphi Open-Source Projekt auf www.cargobay.de)
   kopiert werden. Die Inhalte des Suchverzeichnisses müssen mal von "williams" beim
   Hebu-Musikverlage gesichert werden. Die DLL enthällt fest Pfadangaben für die
   "Datenbankdateien" diese sollte man noch durch eine ini-Datei festlegen können.
   Der feste Pfad ist im Moment noch "C:\HeBu\"
   «fehlt(2)»: HebuWeb.dll durch Ini-Datei configuerierbar machen

30) Win32-Kiste: AutoStart, AutoLogin von Windows 2000,XP

    Nach einem Stromausfall sollten natürlich alle Systeme selber wieder hochfahren.
    Mit einem "Login"-Schirm am nächsten morgen ist natürlich niemand geholfen.
    1a) Automatischer Benutzer-Login
    Zunächst braucht man einen Benutzer mit einem Passwort. Der manuelle Login sollte
    natürlich funktionieren. Nun
    mit Start->Ausführen->regedit folgende Einträge anwählen
    "HKEY_LOCAL_MACHINE" -> "SOFTWARE" -> "Microsoft" ->
    "Windows NT" -> "CurrentVersion" -> "Winlogon"
    AutoAdminLogon:REG_SZ:1
    DefaultPassword:REG_SZ:<das PWD>
    DefaultUserName:REG_SZ:<der Benutzername>
    Es kann sein dass es den "DefaultPassword" - "Wert" nicht gibt, dann mit
    "Neu->Zeichenfolge" anlegen (Typ ist String, wie alle Werte).
    1b) Nur XP
    Art der Anmeldung auf "klassisch" ändern. Start->Systemsteuerung->Benutzer
    verwalten->Art der Anmeldung->obere Option (Willkommensschirm verwenden)->
    deaktivieren!
    2) Automatischer Start von RouteIp UND
                               Outlook Express
    rechter Mausklick auf Start->Öffnen(alle Benutzer)->Programme->Autostart
    in diesen Ordner eine Verknüpfung mit RouteIP (kann aus dem Menü mit rechtem
    Mausklick auf den entsprechenden Menüeintrag & kopieren) erstellen.
    in diesen Ordner eine Verknüpfung mit Outlook-Express (kann aus dem Menü mit
    rechtem Mausklick auf den entsprechenden Menüeintrag & kopieren) erstellen.
    (kleiner Exkurs: Warum Outlook: Es dient uns als eMail Empfänger auf der
     Apache Server Station. Outlook sollte auf 1 Minütiges Abfragen der Mail
     eingestellt sein, so dass immer eine aufrechterhaltung der Verbindung
     gewährt bleibt!)
    3) Automatischer Start von VNCViewer, Apache
    dies sollte automatisch erfolgen, wenn beide Programme als Windows 2000 Dienst
    installiert wurden. -> Aber lieber testen!

31) keepcon, RouteIP.exe, ein kleiner Einstieg

   Dieses linux / win32 program ermittelt die aktuelle IP Adresse wie unser Server im
   Moment im Internet sichtbar ist, und patched die html-Seiten drausen
   im InterNet, um die aktuelle IP Adresse den surfern draussen unterzujubeln.
   Mehr Infos über RouteIP im InterNet www.cargobay.de**
   Mehr Infos über keepcon im InterNet www.cargobay.de
   ** RouteIP wird langfristig durch keepcon ersetzt.
   keepcon siehe "http://www.cargobay.de/keepcon.html"

32) Die Win32-Clients wollen Plattenplatz auf dem Linux nutzen ...

   Schritt 0)
   (Netzwerkkarte und Verkabelung sind Grundvoraussetzungen, darauf will
    und kann ich nicht eingehen)
   Schritt 1) (mache dich sichtbar)
   freie IP-Adresse des lokalen Adressraumes (192.168.100.1 .. 192.168.100.254)
   ausdenken, DOKUMENTIEREN in einem Netzwerkplan 
   und unter Start->Einstellungen->Systemsteuerung->Netzwerk->Protokolle->TCP/IP->
   Eigenschaften->feste IP->Adresse eingeben (Maske ist immer 255.255.255.0)
   Schritt 2) (bist du sichtbar?)
   starte eine DOS-Box (Start->Zubehör->Eingabeaufforderung) und pinge den Samba-
   Arbeitgeber im Netz an.
   ping 192.168.100.72
   bevor hier keine Antwort kommt, braucht man gar nicht weitermachen!
   Nun einen Laufwerksbuchstaben auf den samba-Share mappen:
   Mit dem Windows-Explorer: extras->Netzlaufwerk verbinden
   Laufwerk: G:\                          // Dein neues (Netz-)Laufwerk
   Ordner: \\192.168.115.72\user          // (geht also auch ohne Namensauflösungsproblematik)
   Tip Netzwerkumgebung: Erwarte niemals, dass in der win32 - "netzwerkumgebung"
                         der Linux-Rechner sichtbar ist, den Du gerade frisch eingebunden
                         hast! Schaue erst in der "netzwerkumgebung" nach, frühestens
                         30 min nachdem eh schon alles geht!

34) samba & firewall & Windows

Mit samba 2.2.5 und Windows XP Professional Service Pack 1 machten wir folgende
Beobachtung:
     Windows XP Professional zeigt nach eigenem Neustart den samba-share
     als "gestört" an (rotes kleines "X" im Symbol). Der erste Zugriff
     erfolgt im Windows Explorer dann auch nach eine langen Denkpause.
     * Umstellen von "security=share" auf "security=user" im smb.conf
       brachte nichts! (incl. der ganzen Arbeit, die damit zusammenhängt
       (User anlegen)).
     * Umstellen der "Richtlinien" wie es die Newsgroups vorgeben brachte
       auch nichts!
       Start->Ausführen->gpedit.msc
       Computerkonfig->Windows-Einstellungen->Sicherheitseinstellungen->Lokale Richtlininen->
       Sicherheitsoptionen
       Microsoft-Netzwerk (client): Unverschlüsseltes Kennwort an SMB-Server von Drittanbietern senden
     Idee: ev. alles auf einen echten samba PDC umstellen!
     todo: gpedit.msc mal beschreiben!
Die Lösung: der Firewall auf dem samba Server sperrte den Port 445. Dieser ist
            jedoch für die Kommunikation notwendig. Hier die Gesamtbeschreibung
            die ich mit Hilfe von Walter Mautner erstellt habe.
 > Eventuell noch Port 445 dazugeben.
Walter! Das war die Lösung (freu), Win XP versucht scheinbar vorrangig am
Port 445 rumzuposaunen. Nur wenn ein hartnäckiger User auf den Windows
Explorer einschlägt springt er auf den Port 137ff um!


Port 53=DNS
Port 1900=
XP's Windows Messenger is attempting to communicate to an Internet host. To block Windows Messenger's broadcasts:
 Hive: HKEY_LOCAL_MACHINE
 Key: Software\Microsoft\DirectPlayNATHelp\DPNHUPnP
 Name: UPnPMode
 Type: REG_DWORD
 Value: 2 disabled
 With UPnPMode=2, Universal Plug and Play Network Address Translation (NAT) traversal discovery does not occur.
 (newsgroupbeitrag) "
 Unser Liebling (=Linux-Server) fungiert nicht nur als Samba-Sklave sondern
 auch als DSL-Router. Somit wurde flux eine firewall installiert (auch
 selbstgemacht via iptables).
 Weil wir gerne alles kontrollieren wirkt diese auch auf das intene Netz:
 Pflichtbewust wurden jedoch die smb Ports 136,137,138,445 geöffnet, damit
 die Clients mit samba sprechen können.
 Alles ging -- ausser bei Windows XP Prof Clients, diese hatten beim ersten
 Zugriff auf einen Share z.B. im Explorer doppelklick auf den
 Laufwerksbuchstaben eine "Wartezeit" von ca. 8 Sekunden (hey, das ist
 verdammt lange). Danach war alles in Butter. Bis zu dem Moment, wo etwa 15
 Minuten kein Zugriff auf diesen Share auf diesem Client erfolgte (oder
 sofort nach einem Neustart des Clients). Danach wieder diese Denkpause.
 Die Lösung war: XP Prof SP1 versucht eine Kontaktaufnahme mit dem
 Samba-Server auf Port 80 (in Worten !achtzig!). Wir hatten das als "Angriff"
 aus dem internen Netz gewertet und geDROPed. (Auf port 80 haben wir keinen
 dienst auf unserem Server!). Bis XP gemerkt hatte, dass auf port 80 nix
 geht, machte es einen Kurzschlaf (eben diese 8 Sekunden). Jetzt, nachdem wir
 (grmpf!) halt Port 80 geöffnet haben geht alles ohne Zeitverzögerung.
 Unnötig zu sagen das dieses Verhalten ausschließlich XP hat!
 "
 (newsgroupbeitrag) "
 einen DROP zu machen war wirklich gemein. Zumal man ja im internen
 Netz nicht unbedingt "Paket-Antwort-Bandbreite" sparen muss.
 http://www.pl-forum.de/t_netzwerk/iptables.html
 [ ...
 * DROP: Paket vernichten, keine Benachrichtigung des Absenders.
 * REJECT: Ähnlich DROP wird das Paket abgewiesen, jedoch erhält der Absender
 eine Antwort auf das Paket.
  ... ]
 -> bleibt die Frage? Was will XP am Port 80?
 "
Beim Verbindungsversuch vom Windows XP Explorer zum Samba-Server ist mir aufgefallen, daß der XP-Client über den Port
1039 bzw 1040 eine Verbindung zum Port 80 des Linux-Servers aufzubauen versucht (sichtbar gemacht mit
tail -f /var/log/messages auf der Linux-Box. Hier werden die Drops, die der Kernel verursacht, protokolliert). Nach
Öffnen des Ports 80 für Pakete vom internen Netz gab es keine Wartezeiten beim Verbindungsaufbau mehr.
Im folgenden ein Auszug aus dem aktuellen Firewall-Skript. Dabei sind die letzten beiden Zeilen von Bedeutung.
Das passende firewall Script Auszug.


# --------------------------------------------------------------------------------
# Samba aus dem internen Netz
$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p UDP --sport 135 --dport 135 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p UDP --sport 135 --dport 135 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p UDP --sport 137 --dport 137 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p UDP --sport 137 --dport 137 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p UDP --sport 138 --dport 138 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p UDP --sport 138 --dport 138 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p UDP --sport 445 --dport 445 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p UDP --sport 445 --dport 445 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p TCP --sport $HIGH_PORT --dport 135 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p TCP --sport 135 --dport $HIGH_PORT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p TCP --sport $HIGH_PORT --dport 139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p TCP --sport 139 --dport $HIGH_PORT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p TCP --sport $HIGH_PORT --dport 445 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p TCP --sport 445 --dport $HIGH_PORT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# XP-Explorer versucht Verbindung von HIGH_PORT auf port 80 des Linux-Servers! Warum?!?
$IPTABLES -A INPUT  -i $DEV_INT -s $INT_NET -p TCP --sport $HIGH_PORT --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $DEV_INT -d $INT_NET -p TCP --sport 80 --dport $HIGH_PORT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# --------------------------------------------------------------------------------
Die passenden Ports in der Zusammenfassung
 netbios-ns      137/udp     # NETBIOS Name Service
 netbios-dgm     138/udp     # NETBIOS Datagram Service
 netbios-ssn     139/tcp     # NETBIOS Session Service
 microsoft-ds    445/udp     # Direct-Hosted Service
 microsoft-ds    445/tcp     # Direct-Hosted Service
 http            80/tcp    www www-http           # World Wide Web
                                                  # nur bei XP Clients notwendig
---------------------------------------------------------
* ES FOLGT DER REVISION INFO TEIL IM FORMAT
*   Rev x.xxx ([ "vonDatum" "-" ] "bisDatum") <DeinName>
---------------------------------------------------------

35) ATX-Netzteile

Das beschriebene Linux-System wird überwiegend als Server benutzt. Es muss
sichergestellt sein, dass nach einem Stromausfall das System selbst wieder
hochfährt.
* In der Regel kann man bei modernen ATX - Boards im BIOS einstellen was
  im "Power Fail" Fall, gemacht werden soll. "Always ON" würde hier die
  richtige Einstellung lauten.
* Bei machen Boards ist diese Einstellung nicht vorhanden (K7SOM) oder
  sie funktioniert nicht (div. Soltek Boards). In diesem Fall ist durch
  einen einfachen Eingriff diese Funktion sichergestellt.
  1) Das ATX-Netzteil besitzt einen breiten Spannungsstecker, der im Main-
     board steckt. Hier ist das !grüne Kabel! (von dem es nur eines gibt) ca.
     1 cm oberhalb des Steckers abzuschneiden (1cm deshalb, damit man ggf.
     die alte Funktion wieder herstellen kan).
  2) Von einem unbenutzen Stromstecker ist eines der mittleren schwarzen
     Kabel nahe am Stecker abzuscheiden.
  3) Beide Kabel nun durch alle Kabelbinder hindurch zurückziehen damit sie
     ab dem Netzteilaustritt freiliegen. Nun beide abisolieren, und die
     blanken Ende "verzwirblen". Mit Isolierband die blanke Stelle isolieren
     und das neue Kabelpaar schön an vorhandene Kabelstränge mit Kabelbinder
     fixieren.
  Effekt: Das ATX-Netzteil startet IMMER in den "Full Power" Modus egal, ob
          dies durch das Board signalisiert wird oder nicht.

36) USB Devices (Memory, Flash, MP3 Player) unter Linux

Nach reinstecken des SONY Microfault 32 MByte Sticks ging erst mal nix. Ich sah zwar, dass das LED
des Memory Sticks vertraut blinkte. Doch bekam ich keinen Zugriff. Ich musste
md /root/usb
mount -t vfat /dev/sda /root/usb
eingeben. Sofort waren die Dateien in /root/usb/ sichtbar. Ich speicherte was drauf mit 
"cp". Zog den Stick raus: Wieder eine Enttäuschung: auf dem Win XP war die Datei nicht
sichtbar. Also wurde die Datei nicht wirklich geschrieben (HEUL!)? Also versuchte
ich vor dem Rausziehen beim nächsten mal unzumounten.
umount /dev/sda
(soviel zu Thema hotplug!) OK, das ging dann. Mein Wunsch war, beim Einsetzen des
USB-Sticks das Lied darauf (.mp3) abzuspielen. In meiner Naivität plazierte ich einfach
ein Script Namens /etc/hotplug/usb/usbfs. Es passierte natürlich nichts. grmpf!
In fstab habe ich aber eine Zeile eingetragen, die mir das USB-Device auf den Desktop
gezaubert hat (was mir nix bringt!). Mein Spieltrieb animierte mich durch umount das
device auszuhängen. Das Desktop Symbol blieb - es lies sich auch fehlerfrei anklicken,
was einen Mount verursachte!
Also ein Script via hotplug zu starten wenn der usb reingeteckt wird gebe ich
hiermit auf!