Linux
Zur Verwendung des OrgaMon im Netzwerk, (also mit mehreren Arbeitsplätzen) empfehlen wir einen SuSE Linux Server zu verwenden. Diese Dokumentation beschreibt viele Apsekte dieses mächtigen Serverbestriebssystem im Zusammen mit dem OrgaMon. Auf dem Server stellt dann Dateiablage-Platz (via Samba) und einen Datenbankserver-Dienst (via Firebird) zur Verfügung.
rsync als Backuplösung
immer genaue Uhrzeit (für alle)
Festplatte im Netz (für alle)
xinetd als Redirector
mysql Datenbank für php Projekte
Linux Systeme über das Netzwerk installieren
Linux Grundwissen
Archive
bunzip2 <file> // auspacken einer .bz2 Datei gzip -d <file> // auspacken einer .gz Datei tar -xf <file> // auspacken einer .tar Datei
System
halt // Ausschalten (Herunterfahren) reboot // Neustart joe // ein textbasierter Editor # !/bin/bash // erste Zeile von Shell-Scripten kwrite // ein grafischer Text/Script-Editor! (Nein vi ist nicht mein Fall!!) ps x // ausgeben aller laufenden Programme // ev. mit z.B. "| grep smb" vervollständigen mc // dateimanager (wegen filefind) df // Diskfree, zeigt Belegung/Mounting der Festplatten an // Summer der Bytes freien Festplattenplatzes du -s -h /pfad // Summe aller Bytes in einem Pfades angeben uname -a // anzeige der aktuellen Kernel Version uptime // Anzeiger der Last und der Betriebsstunden
Traditionelles
./configure // typische 3er Befehlskette zum compilieren&installieren eines open source make // projektes. make install
Spezielles
sensors // Temperatur der CPU und Lüfterfunktion prüfen (Details weiter unten) dmesg // auflisten, was die Hardware so zu bieten hat play /opt/kde3/share/sounds/KDE_Beep_Beep.wav // Ausgabe von Musik ldd -v <programmname> // kann auf einem System, auf dem alles läuft :-( gute auskunft // geben was das "Programm" so alles noch mit lädt - bei einem // firebird ist so ziemlich // interessant. Der "eigentliche" Server ist eingentlich // "libfbembedd.so", dieser wird // hochgezogen, wenn fb_inet_Server geladen wird.
Downloadquelle für fehlende Pakete: ftp.leo.org/pub/comp/os/unix/linux/suse/people/nashif/SuSE/SLES/x86
oder bei rmpseek.com
Temperaturen überwachen mit sensors
1) Paket "sensors" muss installiert sein 2) Folgender "Setup" muss durchlaufen werden:
Zitat [1]
Im Prinzip lädt man einfach nur das Kernelmodul "i2c_sensor" mit
modprobe i2c_sensor
Danach führt man das Script
sensors-detect
aus. Bei dem Script habe ich eigentlich nur solange die Enter-Taste gedrückt, bis es durchgelaufen war. Natürlich habe ich die Ausgaben gelesen, aber ich wüsste nicht, warum ich schlauer sein sollte, als die Leute, die die Software entwickelt und sinnvolle Werte angenommen haben. Das Script erzeugt die Datei /etc/sysconfig/lm_sensors. Ist dies getan und hat das Script entsprechende Chips gefunden und dort eingetragen, dann kopiert man wie angegeben das Startscript rüber:
cp /usr/share/doc/packages/sensors/prog/init/lm_sensors.init.suse /etc/init.d/lm_sensors
Wer möchte, dass nach jedem Neustart die Möglichkeit besteht, CPU-Temperatur und andere Messwerte zu Überwachen, der sollte noch
chkconfig --add lm_sensors
ausführen. Eigentlich ist damit alles getan. Nach einem entsprechenden Start mit
/etc/init.d/lm_sensors start
kann durch Aufruf von
sensors
der Gesundheitszustand der Hardware abgefragt werden.
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
Suse DVD bootet ...
"Manual Installation" bestätigen. Bei den Softwarepaketen, bitte folgendes ändern: "+Server", "+Entwicklung", "+erfahrener Benutzer".
System->System->Boot->SPLASH->no das OS nur in den Textmodus (Console) booten lassen. Und den grafischen Login-Schirm unterdrücken:
a)
joe /etc/inittab aus id:5:initdefault macht man id:3:initdefault
b) in den Bootoptionen soll er einfach im Textmodus bleiben:
vga=normal splash=0
Mist: jetzt steht er zwar im Text Login aber per VNC kann man sich nicht mehr einloggen. Ich muss erst mit "init 5" in den Run-Level 5 wechseln. Warum?
Aufsetzen eines Installations Servers, der die SuSE DVD als über das Netz Bootbares Medium anbietet:
mit Win32 nero den "Track speichern" mit dem Typ ISO das ISO Image auf den DHCP Server stellen das Image mit
mount -o loop suse92.iso /mein/Verzeichnis
in das Dateisystem einhängen!
joe /etc/dhcp.conf
filename "pxelinix.0";
md /srv/tftpboot
Installationsquelle wechseln 1. YaST starten 2. Modul Software aufrufen 3. Installationsquelle wechseln 4. Hinzufügen: FTP 5. Folgendes genau so eintragen:
Protokoll: [X] FTP Servername: ftp.gwdg.de Verzeichnis auf dem Server: pub/linux/suse/ftp.suse.com/suse/i386/9.2 Authentifikation: [X] Anonymous
syslinux installieren!
Konfiguration des tftp Servers
Erstellen Sie (falls es noch nicht existiert) das Verzeichnis /srv/tftpboot und /srv/tftpboot/pxelinux.cfg Wechseln Sie in das Verzeichnis Ihres Installationsrepositorys und kopieren Sie durch die Eingabe von: cp -a boot/loader/linux boot/loader/initrd boot/loader/message boot/loader/memtest /srv/tftpboot die Dateien linux initrd message memtest in das Verzeichnis /srv/tftpboot. Installieren Sie das Paket syslinux. Ist auf dem Installationsserver der SuSE Linux Enterprise Server 8 installiert, so laden Sie sich das Paket von: ftp.suse.com/pub/suse/i386/8.2/suse/i586/syslinux-1.62-375.i586.rpm herunter, und installieren es mit: rpm -Uhv syslinux-1.62-375.i586.rpm Ist auf dem Installationsserver eine SuSE Linux Version 8.1 oder 8.2 installiert, so installieren Sie das Paket mit YaST2 direkt von Ihren Installations-CDs. Kopieren Sie die Datei /usr/share/syslinux/pxelinux.0 durch die Eingabe von: cp -a /usr/share/syslinux/pxelinux.0 /srv/tftpboot in das Verzeichnis /srv/tftpboot. Wechseln Sie in das Verzeichnis Ihres Installationsrepositorys und kopieren Sie durch die Eingabe von: cp -a boot/loader/isolinux.cfg /srv/tftpboot/pxelinux.cfg/default die Datei isolinux.cfg nach /srv/tftpboot/pxelinux.cfg/default Editieren Sie die Datei /srv/tftpboot/pxelinux.cfg/default und entfernen Sie die Zeilen die mit: gfxboot readinfo framebuffer beginnen. Fügen Sie in den append Zeilen der Label default failsafe und apic die folgenden Einträge an: insmod=e100 Dieser Eintrag bewirkt, daß auf dem PXE-Client das Kernelmodul für eine Intel 100MBit/s Netzwerkkarte geladen wird. Dieser Eintrag ist abhängig von der Hardware Ihres Clients, und muß entsprechend geändert werden. Bei einer Broadcom GigaBit Netzwerkkarte würde dieser Eintrag insmod=bcm5700 lauten. netdevice=eth0 Dieser Eintrag spezifiziert das Netzwerkinterface des Clients, welches für die Netzwerkinstallation benutzt werden soll, und ist nur dann notwendig, wenn mehrere Netzwerkkarten in den Clients verbaut sind. Dieser Eintrag muß dann entsprechend angepaßt werden. Bei nur einer Netzwerkkarte kann dieser Eintrag komplett entfallen. install=nfs://192.168.100.1/usr/local/dist/SLES8 Dieser Eintrag legt den nfs Server und die Installationsquelle für die Installation der Clients fest, und muß gegebenenfalls angepaßt werden. Eine, für die SuSE Linux Enterprise Server 8 - Netzwerkinstallation, angepaßte /srv/tftpboot/pxelinux.cfg/default finden Sie hier: default linux
- default
label linux
kernel linux append initrd=initrd ramdisk_size=65536 insmod=e100 install=nfs://192.168.100.1/usr/local/dist/SLES8
- failsafe
label failsafe
kernel linux append initrd=initrd ramdisk_size=65536 ide=nodma apm=off acpi=off insmod=e100 install=nfs://192.168.100.1/usr/local/dist/SLES8
- apic
label apic
kernel linux append initrd=initrd ramdisk_size=65536 apic insmod=e100 install=nfs://192.168.100.1/usr/local/dist/SLES8
- manual
label manual
kernel linux append initrd=initrd ramdisk_size=65536 manual=1
- rescue
label rescue
kernel linux append initrd=initrd ramdisk_size=65536 rescue=1
- memory test
label memtest
kernel memtest
- hard disk
label harddisk
kernel linux append SLX=0x202
implicit 0 display message prompt 1 timeout 100
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
"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.
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
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
T-DSL, leider muss geschraubt werden.
(nicht mehr ab 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
Netzwerk Verbindung prüfen
Ein erfolgreicher PING ist Grundlage aller weiteren Forschungen bei Netzwerkproblemen.
auf einem win32 Rechner jetzt den Linux Server anpingen (per IP, nicht den ) mehr Details siehe 22)
ping 192.168.115.90
Steht die Verbindung, so stellt sich die Frage der Zuverlässigkeit und Geschwindigkeit. Ruhige Momente im Netzwerk sollten genutzt werden, um mit "iperf" die Up/Down Geschwindigkeiten zu ermitteln.
// auf dem Server iperf -i
// auf dem Client iperf -c <ServerHostName> -d
Das Programm gibts es hier: http://dast.nlanr.net/projects/Iperf/
wenn alle MAC - Clients OSX haben, ist dies nicht mehr notwendig. Dann sollten auch die MACs wia SMB-Protokoll verbinden.
(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
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.
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
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!!
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 fr Testzwecke am eigenen Rechner ber das Loopback. Einige # lokale Prozesse wie BIND verwenden das Loopback fr die interne Kommunikation $IPTABLES -A OUTPUT -o lo -j ACCEPT $IPTABLES -A INPUT -i lo -j ACCEPT
# Alle externen Verbindungsversuche und ander Merkwrdigkeiten 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
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.
Bandbreiten Management
Hier: Der eMail-Ausgangsstrom soll uns nicht die Bandbreite des Web-Shop mindern.
* Noch nicht Teil dieses Budgets - 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!)
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.
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.
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.
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!)
Eine andere Linux-Maschine will ins Internet
1) YAST2 ->network ->routing ->Standart-Gateway=IP des Servers 2) YAST2 ->advanced network ->DNS ->IP des Servers
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!!!
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
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!
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"
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!
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> ---------------------------------------------------------
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.
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!