Archive for the 'Linux' Category

Kernel kompilieren mit Problemen

So was wie den eigenen Linux Kernel kompilieren kennen die meisten Linuxer mitunter. Ich – ja, ich gebe es zu – habe mich vorher fein säuberlich davor gedrückt. Stattdessen habe ich diesen dann über die Paketverwaltung ( bei SuSE mittels YaST ) installiert.

Nun, mit einem virtuellen Slackware sowie dem aktuell stabilen 2.6.32.8 Linux Kernel von kernel.org bewaffnet, habe ich mich mal an das Thema gewagt. Für das nötige Wissen mussten drei Tutorials herhalten (http://www.selflinux.org/selflinux/html/kernel02.html ; http://www.teamunix.de/howto/linuxkernelhowto.php ; http://www.pro-linux.de/NB3/artikel/2/860/kernel-kompilierung.html )

Um es mal ab zu kürzen: Mein erster Kernel ließ sich ohne Probleme kompilieren (max. 1 – 2 Warnings), nur als ich dann den Bootloader soweit hatte und das System eben mit diesem Kernel starten wollte, endete das ganze Unternehmen in einer Kernel Panic. Der zweite Anlauf verlief auch nicht gerade besser. Immerhin hatte ich da dann eine Initiale Ramdisk angelegt, so dass kein Kernel Panic Fehler mehr kam. Dafür wollte dann die Root-Partition partout nicht gefunden werden. Irgendwann, nach der vielen Bastelei habe ich das System soweit geschrottet, das kurzum nichts mehr normal lief. Also nochmal alles neu installiert, um wieder eine saubere Grundlage zu haben.

Mittlerweile bin ich beim dritten Versuch gelandet. Die Root-Partition bleibt auf weiteres für den neuen Kernel verschollen, doch mittlerweile bekomme ich wenigstens die Möglichkeit auf eine Shell im Single User Mode (Runlevel 1 bzw. S) zu operieren.

Allerdings habe ich mittlerweile eine Vermutung, woran das liegen könnte. Bei Slackware ist es üblich z.B. die erste Festplatte eines Systems mit /dev/hda zu bezeichnen. Bei anderen Distris heißt die dann meistens /dev/sda. Wenn dem so ist, darf ich dann die fstab unter /etc umschreiben und hoffen, dass es dann läuft.

UPDATE:

Nachdem ich die fstab und die mtab Datei geändert habe – nämlich von /dev/hd* auf /dev/sd* – kam das System ohne Meckern mit dem neuen Kernel hoch. Boah, nach drei Anläufen geht es endlich!

Sendmail? Postfix? – Was denn nun?

Da liegt es vor mir, wie ein großer weißer Fleck auf einer Landkarte: Das Thema Mailserver unter Linux. In dieses Thema hineingerutscht bin ich dadurch, dass ich auf einer Ubuntu-Kiste eine Software namens Munin installiert habe, die z.B. die Festplattennutzung oder die CPU-Auslastung von Rechnern innerhalb eines Netzwerkes überwachen kann. Munin hat auch die Möglichkeit Mails zu verschicken, wenn nun eine Festplatte droht voll zu laufen. Nur braucht man dazu eben einen Mail Transfer Agent (MTA) wie sendmail bzw. postfix.

Jo, und ich hab noch nie sowas eingerichtet bzw. noch nie einen Mailserver zusammengebastelt. Ich weiß gar nicht so recht wo ich bei diesem Thema anfangen soll. Vielleicht erst mal mit dem Begrifflichkeiten. Und dann wäre noch die Frage, welche MTA nehme ich zum Anfang? Zu beiden habe ich sehr unterschiedliche Meinungen gehört. Postfix wäre extrem mächtig und zu sendmail habe ich diesen passenden Satz gelesen: “sendmail ist der Alptraum jedes Administrators.”
“Oh, Gott!”, war da mein gedanklicher Ausspruch dazu. So nach dem Schema, welches ist denn wohl das geringere der beiden Übeln. Bisher bin ich auch noch nicht viel weiter mit diesem Thema. Ein passendes Anfänger-Tutorial suche ich noch.

Mein PHP-Skript: Läuft auf einem Linux-XAMPP aber nicht auf der Windows Version

Ich hänge momentan an einem ziemlich – aus meiner Sicht – absurden Problem. Ich habe ein PHP-Skript erstellt, das zu einem Datenbankfrontent gehört. An sich funktioniert dieses Skript auch – es gibt keine Syntaxfehler oder sowas.
Es lief auch alles ganz fein bis ich das ganze mal auf einem Rechner mit Windows Vista Business und XAMPP 1.7.2 ausprobierte. Dann funktioniert in einer einzigen Datei (namens command.php) der Aufruf von header(“Location: index.php”) überhaupt nicht mehr, während dieser Aufruf allerdings in meinen anderen PHP-Dateien einwandfrei ausgeführt wird. Vorher lief das Ganze auf einem Linux System. Da ich das ganze nocheinmal nachkontrollieren wollte, habe ich schnell meinen virtuellen Ubuntu-Server hergenommen und genau die selbe Version (nur für Linux eben) installiert und es läuft ALLES!

Bei Windows währenddessen geht alles bis jener Aufruf in der command.php. Ich weiß nicht, was da falsch sein soll. Mittlerweile habe ich den Inhalt dieser Datei auf diesen einzigen Aufruf reduziert, nur um alle anderen Fehlerquellen durch anderen Code in dieser Datei auszuschließen. Ergebnis ist das selbe: es geht nicht!

Langsam bin ich am verzweifeln, weil ich nicht mehr weiter weiß und mir das Ganze mittlerweile aus dem Hals heraushängt.
Den selben Test habe ich noch einmal auch auf einem Windows XP Professional durchgeturnt mit genau dem selben Effekt wie bei Vista. Ähnlichen Effekt lässt sich auch auf Linux erzielen, wenn man statts den XAMPP sich das Apache-Packet z.B. von Ubuntu installiert, was zum Beispiel automatisch bei der Server Variante geschieht, wenn man die Option LAMP-Server wählt. Da läuft dieses Skript auch nicht.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
	@file form-chooser.php :
	Weiterleitungen auf andere Formulare
	Dieses Script leitet vom Formular @file add-device.php
	auf nachfolgende Formulare um, je nach Geraetetyp
*/
	switch ($_POST['devtype'] ) {
		case "phone": {
			header("301 Moved Permanently");
			header("Location: index.php?action=phone-form");
			break;
		}
		case "computer" :  {
			header("301 Moved Permanently");
			header("Location: index.php?action=computer-form");
			break;
		}
		case "printer": {
			header("301 Moved Permanently");
			header("Location: index.php?action=printer-form");
			break;
		}
		default: {
			header("301 Moved Permanently");
			header("Location: index.php?action=error");
			break;
		}
	}

Dieser gezeigte Code geht, wenn man ihn über den Klick auf einen Button eines vorhergehenden Formulars aktiviert.
Der Code in der command.php hat eine ähnliche Struktur bzw. er befindet sich ebenfalls in einem switch-case-Konstrukt. Zu Test Zwecken habe ich den Code in der command.php auf folgendes reduziert:

header("Location: index.php);

Auch die Angabe des vollen Pfades bringt hier nichts.
Und genau dieser Umstand lässt das Ganze so absurd erscheinen. Ich persönlich weiß nicht, woran es noch liegen könnte. Ich habe schon folgende Punkte ausgeschlossen:

  • Berechtigungen unter Vista: Kann nicht sein unter XP läufts ja ebenfalls nicht.
  • Fehlende PHP-Bibliothek: Kann nicht sein, da header() praktisch zum Standard-Umfang gehört. Und zweitens funktioniert der Aufruf in anderen meiner Skripte auch.
  • Falsche Einstellungen am XAMPP vorgenommen: Ich fasse bei XAMPP keine Config-Files an.
  • Unterschiede in den XAMPP-Versionen: Ich habe auf allen Testsystemen ein und die selbe Version 1.7.2 installiert.

Pakete, die Inkscape unter Slackware braucht

Gelegentlich, wenn ich mal eine Inspiration habe, nehme ich ganz gerne Inkscape (Paketname: inkscape-0.45-i486-1arf.tgz) für Vektorgrafiken.
Unter meinem alten Suse war die Installation ziemlich easy, denn Yast schaute automatisch nach den Paketabhängigkeiten.
Jetzt, unter Slackware, gestaltete sich die Installation nicht ganz so einfach. Zwar gibt’s auf linuxpackages.net ein Paket namens Inkscape, aber da Bibliotheken wie gtkmm und noch etliche andere fehlen, muss man sich diese erst zusammensuchen.

Mein erster Ansatz war die Bibliotheken von den jeweiligen Projektseiten herunterzuladen, um sich anschließend selbst zu compilieren. Allerdings stellte sich das Compilieren des Source als ziemlich nervenaufreibender Vorgang heraus. Mal fehlte diese oder jene Bibliothek, hier und da waren die Abhängigkeiten nicht erfüllt oder es endete alles mit einem make Fehler.
Anschließend habe ich dann mein Glück wieder auf linuxpackages.net versucht und mir die passenden Pakete zusammengesucht. Und das waren übrigens diese:

  • gtkmm-2.12.8-i486-1mfb.tgz
  • glibmm-2.16.4-i486-1mfb.tgz
  • libsigc++-2.2.3-i486-2mfb.tgz
  • gc-7.1-i486-2mfb.tgz
  • cairomm-1.6.4-i486-1mfb.tgz

Slackware auf meinem Acer TravelMate 2490

Knapp vier Tage (12.08.2009) sind es her, seit dem ich meine bisherige OpenSuSE 10.3 von der Laptop Festplatte gefegt und anschließend Slackware Linux in der Version 12.2 installiert habe.

Bevor ich mich allerdings dazu entschlossen habe die Installtion durchzuführen, habe ich mich etwas in das Betriebsystem mittels einer Testinstalltion eingearbeitet. Als Linuxerin mit Erfahrung hatte ich mit dem textkonsolenbasierten Installieren und Einrichten des Systems nicht allzu viele Probleme. Man muss zunächst Patritionen für Linux auf seiner Festplatte anlegen, die bei mir schon bestanden. Allerdings habe ich Veränderungen in der Größe meiner drei Linux-Patritionen (/,/home und der Swap-Patrition) vorgenommen. Slackware bietet hier einem z.B. das Konsolenprogramm fdisk. Die angenehmere Variante zu diesem Programm stellt cfdisk dar, das ein an den nano-Editor erinnerndes Menu anbietet. Hat man seine Patritionen beisammen, kann man per Eingabe von setup mit der Installtion beginnen.

Hat man die nötigen Konfigurationen für setup vorgenommen, sodass man mit der eigentlichen Installation der Software anfangen kann, wählt man der Bequemlichkeit halber die Full Installtion. Slackware installiert dann alle Packete der insgesamt drei Installtions-CDs. Ich habe mich bei meiner Installtion ebenfalls dafür entschieden und als Standard-Window-Manager KDE gewählt. Ist alles installiert, geht’s an’s Booten und Starten des Systems.

Als richtiges Old School Linux startet diese normaler Weise im vollen Mehrbenutzerbetrieb auf der Konsole (auch Runlevel 3 genannt). Anmelden tut man sich zunächst als root, da man noch keine weiteren Benutzer erstellt hat. Nachdem Anmeldevorgang wird’s Zeit für ein bisschen grafische Oberfläche – man darf jetzt startx tippten und die Desktopumgebung wird geladen. Was mir gleich beim Blick auf den Desktop aufgefallen war, war die etwas ärmliche Auflösung von 1024 x 768. Auch wirkten die Schriften nicht ganz so klar, wie ich es vorher von SuSE gewohnt war. Das war der Auftakt zum Basteln. Bevor ich mich dem Grafiktreiber zugewenedet habe, sorgte ich erst einmal dafür, dass ich per WLAN ins Netz kann. Im Laptop ist ein Broadcom Teil verbaut. Die Eingabe von lspci nennt mir das:

root@HAL-9000:/# lspci
....
06:01.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)
06:02.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
...

Slackware erkennt zwar das Gerät und ordnet ihm auch einen Treiber zu, allerdings funktioniert dieser bei mir WLAN-technisch gesehen nicht. Ich kann zwar per

iwconfig wlan0 essid DEIN_NETZ

den Namen des Netzwerkes setzen, nur kann man dann nicht den passenden Accesspoint (Router) setzen, was bekanntlich über

iwconfig wlan0 ap IP_DES_ACCESSPOINTS

funktioniert.
Daher greife ich zum Ndiswrapper und verwende folgende namentlich genannte Windows-Treiberdatei: bcmwl5a.inf. Mit dieser habe ich auch schon unter SuSE gute Erfahrungen gemacht.

Als das WLAN lief, wollte ich mich gleich an das Problem der mauen Auflösung machen. Mir fielen da auch gleich zwei Anlaufstellen ein, die ich gleich bearbeiten konnte:

  1. Die Konfiguration des XServers (xorg.conf)
  2. Wahl eines anderen Treibers

Ok, den Installationsprozess des Treibers wollte ich mir zunächst nicht antun, daher unternahm ich ein paar Experimente mit der xorg.conf. Und an dieser Stelle geb ich es auch gerne zu: das war die erste Begegnung mit dieser Datei mit mir. In dieser Datei gibt es mehrere Bereiche z.B. für das Gerät (Device) oder den Bildschirm (Screen).

# **********************************************************************
# Screen sections
# **********************************************************************</code>
 
# Any number of screen sections may be present.  Each describes
# the configuration of a single screen.  A single specific screen section
# may be specified from the X server command line with the "-screen"
# option.
Section "Screen"
Identifier  "Screen 1"
Device      "VESA Framebuffer"
Monitor     "My Monitor"
 
# If your card can handle it, a higher default color depth (like 24 or 32)
# is highly recommended.
 
#   DefaultDepth 8
#   DefaultDepth 16
DefaultDepth 24
#   DefaultDepth 32
 
# "1024x768" is also a conservative usable default resolution.  If you
# have a better monitor, feel free to try resolutions such as
# "1152x864", "1280x1024", "1600x1200", and "1800x1400" (or whatever your
# card/monitor can produce)
 
Subsection "Display"
Depth       8
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth       16
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth       24
Modes "1024x768" "800x600" "640x480"
EndSubsection
Subsection "Display"
Depth       32
Modes "1024x768" "800x600" "640x480"
EndSubsection
 
EndSection

Ok, so dachte ich mir, änderst du mal was unter dem Modus-Feld. Nachdem ich die Änderungen in die Datei eingetragen hatte, musste ich mich zunächst wieder in den Runlevel 3 begeben, um im Textkonsolen den XServer mittels startx erneut zu starten. Angezeigt wurde mir allerdings immer noch eine Auflösung in 1024 x 768. Diese ließ sich auch nicht im entsprechenden KDE Modul ändern.
Da ich mit dem XServer nicht weiter kam, musste ich mir wohl oder übel einen neuen Treiber suchen für meinen Intel Grafikchip: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03). Fündig bin ich dann auf der Seite von Intel geworden. Compilieren des Treibers war auch so eine nette Angelegenheit: das Teil wollte unbedingt das, dass sich im Verzeichnis des XServers die Header zur Mesa 3D Bibliothek befinden. Da ich mir nicht den XServer zerschießen wollte, habe ich dann den Treiber ohne die Mesa-Anbindung compiliert und installiert. Anschließend per XOrg -configure mir eine neue Konfigurationsdatei anlegen lassen und es funzte. Jetzt benutze ich eine wesentlich angenehmere Auflösung von 1280 x 800 mit klarem Bild auf dem Bildschirm. Eine Wohltat für die Augen!

Zum Abschluss meiner Installation habe ich noch benötigte Software wie OpenOffice und Netbeans draufgeschmissen. Bisher bin ich mit meinem System soweit zufrieden. An anderen Stellen muss ich dann wohl noch basteln z.B. beim automatischen Mounten von USB Sticks mit normalen Userrechten. Das muss ich bisher noch auf der Konsole als root erledigen.

USB Stick mount-Probleme 2

Ich hatte einmal in einem vorangegangenen Artikel “USB Stick mount-Probleme” das Problem mit einem nicht einhängbaren (sofern man nicht als root agiert) USB Stick geschildert.

Jetzt bin ich auf die Ursache des Problems gestoßen: ich habe irgendwann im Laufe des Tages den Stick an einem Mac-Rechner stecken gehabt und Dateien darauf abgelegt. Da ich heute zum dritten Male an einem solchen Apfel-Computer (in einem Tweet hab ich die Kisten mal als unixähnliches Nicht-Linux bezeichnet) sitzen durfte, ist mir das dann direkt aufgefallen. Wahrscheinlich setzt der Mac andere Berechtigungen für den USB Stick, so dass ihn nur der root einbinden kann.

Ich habe dazu zunächst vom Mac angelegte Dateien (.Trash/ und eine Datei mit dem Namen .DS_Storage) gelöscht, Stick rausgezogen und erneut angesteckt. Kam jedoch wieder diese Fehlermeldung. Erst ein Neustart mit eingestecktem Stick brachte da Abhilfe.

Respekt vor den LPIC Leveln

Erst mal zur Erklärung. bevor hier einer verdutzt das Gesicht verzieht, weil ich schon wieder mit diesen merkwürdigen Kürzeln anfange:

LPIC ist ein Zertifikat im Linux Systembereich. Mit solch einem Zertifikat kann man zeigen, dass man die Eigenheiten dieses Betriebssystems versteht und man damit umgehen kann. Ich würde sagen, dass es sowas Ähnliches ist wie MSCE in der Windows-Welt, nur halt für Linux.

Zum Ausklang des Tages, habe ich mir mal die Lernziele zum LPIC Level 1 angeguckt – nur mal zu sehen, was die da alles wissen wollen. Um den Level 1 – es gibt laut Homepage insgesamt 3 – zu erreichen, muss man die Prüfungen LPI 101 und LPI 102 erfolgreich abgelegt haben.

Ich lese mich so bei LPI 101 durch, denke: “Mhm” – “Ja” – “Kenne ich oder habe ich schon mal selbst unter Linux gemacht.”

Immerhin bin ich schon seit etwas mehr als zwei Jahren Linux-User und schaue mir nebenbei auch andere Distris an. So habe ich auch nach und nach einige Standard-Shell-Befehle gelernt, die man häufiger braucht.

Bei LPI 102 kommt das Schreiben von Shell-Skripts stärker zum Tragen. Ich persönlich habe noch nicht wirklich viele Shell-Skripte geschrieben. Bin also nur Gelegenheits-Shell-Skript-Schreiber. Im Bereich der MySQL-Datenbank kenne ich mich da schon wesentlich besser aus. Dasselbe gilt in etwa für die Netzwerk-Grundlagen. In den anderen Bereichen müsste ich halt mehr machen. Z.B. mal bei einer anderen Linux Installation händisch den X-Server konfigurieren, oder was anderes.

Bei den Themengebieten zum LPIC-2 Level kam ich dann nicht mehr all zu leicht mit. In Sachen Linux Kernel, wie man den mit verschiedenen Optionen bzw. Kernelmodulen kompiliert, bin ich noch ziemlich unerfahren. So Teilbereiche, wie das Entpacken von Programm-Quelltext, kompilieren und installieren habe ich dahingegen schon bei einigen Programmen gemacht. Auch weiß ich, wie man seine Festplatte oder USB Stick mountet. Aber wenn ich mir da so den Rest anschaue… Da habe ich einen Heidenrespekt davor.

Aber ich denke, wenn man über sowas Bescheid weiß, dann kennt man sein Linux-System wirklich! LPIC 1 wird für mich sicherlich irgendwann auch mal Thema sein, schließlich setze ich recht gerne mit Linux auseinander.

Der Versuch einen Firewall-Rechner zu basteln – 2

Sie funktioniert endlich! Der Firewall-Rechner tut, was er tun soll und ich bin glücklich. Inzwischen kann ich die Parameter von iptables mehr oder weniger auswendig – habe schließlich eine Woche mit dem Thema iptables und Firewalling im Allgemeinen zugebracht.  ;-) Keine Ahnung, wie viele Foren-Seiten, How-To’s und man-Pages ich dazu beackert habe. Und damit ich, falls ich noch einmal eine Firewall mit iptables konfigurieren muss, mich zurecht finde, habe ich mir paar Sachen zu dem Thema aufgeschrieben.

Während ich an einem dummy-Firewall-Script geübt habe, fand ich diese Seite von Pro-Linux, mit ihren Übersichten und Beispielen sehr nützlich. Diese ist viel anschaulicher als die man-Page zu iptables. Eine etwas allgemeinere Einführung zu Linux-Firewalls findet man mit dem kostenlosen O’Reilly Buch “Linux Firewalls – Ein praktischer Einstieg” . (Danke für den Tipp, Rolf  :-D )

Hier, mein aller erstes Übungsscript:
(zu einem Zeitpunkt geschrieben, als ich noch nicht so viel wusste  :-P )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash
 
# rc.firewall
# Ein Firewall Script fuer die auf IPTables aufbauende Firewall
# Erstellt am 21.07.2009
 
# Benoetigte Module fuer iptables laden
modprobe -v ip_tables
modprobe -v iptable_filter
modprobe -v ipt_state
 
# Grundlegende Firewall-Policies festlegen
# Als Standard-Policy wird hier das Verwerfen eingehender Pakete gewaehlt
# Erst einmal alles verbieten
 
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
 
# Zunaechst etablierte Verbindungen zulassen
 
# Ping erlauben
iptables -A INPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Kommunikation auf der lokalen Schleife zulassen
iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
# Ausgehende Verbindungen
iptables -A OUTPUT -p ALL -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
# Eingehende Verbindungen (nur spezifische)
 
# DNS
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# HTTP
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p udp --sport 80 -j ACCEPT
# POP3
iptables -A INPUT -p tcp --sport 25 -j ACCEPT
iptables -A INPUT -p udp --sport 25 -j ACCEPT
# SMTP
iptables -A INPUT -p tcp --sport 110 -j ACCEPT
iptables -A INPUT -p udp --sport 110 -j ACCEPT
 
# Ausgehende Verbindungen (nur Spezifische)
 
# DNS
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# HTTP
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
# POP3
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p udp --dport 25 -j ACCEPT
# SMTP
iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
iptables -A OUTPUT -p udp --dport 110 -j ACCEPT

Diese Firewall war in erster Linie dazu gedacht, Verbindungen für E-Mail und Internet für einen einzigen Computer zu erlauben. Ok, mag vielleicht nicht die beste Firewall zu sein, aber funktionierte. Mittlerweile habe ich da schon ein komplett verändertes Script, was mit ein wenig mehr Wissen geschrieben wurde.

NFS, Samba und FTP – oder wie hole ich meine Daten

Das war die große Frage, mit der ich mich am Wochenende auseinandersetzen durfte. Ich hatte vor ein paar größere Dateien auf meinen Laptop zu überspielen. Und CD’s bzw. DVD wollte ich nicht brennen. Also wäre die nächste logische Alternative eine Netzerkfreigabe im lokalen Netz. Immerhin habe ich diese Praktik durchaus gerne mal bei Windows-PC’s angewendet. Jedoch war es dieses Mal eine Verbindung zwischen zwei Linux-Rechern.

Kam dann schließlich die Frage: “Wie macht das eigentlich Linux mit den Dateifreigaben im Netzwerk?”
Ok, mit ein bisschen googeln und Wikipedia-lesen kam ich dann auf NFS – und nein, ich meine nicht damit ein gewisses Videospiel, sondern das Network File System.

Nächste Frage von mir: “Was brauche ich dazu überhaupt?”
Ja, schon wieder googeln. Schließlich bin ich beim LinuxWiki gelandet und habe mir zunächst diese Seite reingezogen. Das freizugebende Verzeichnis in die /etc/exports geklatscht und mir den nfsd (NFS-Dämon) für den Kernel installiert. Nachdem ich rausbekommen habe – Google, Man-Pages und ein wenig YaST-Gestöbere -, dass man den Server unter SuSE per

rcnfsserver start

initialisert und alle benötigten Dienste liefen, dachte ich mir: “Na, da kann man jetzt den Client einrichten.”
Meinen zweiten Rechner hochgefahren, in YaST NFS-Client aufgemacht und mal nach NFS-Servern im lokalen LAN suchen lassen. Und, was meint ihr? Hat NFS-Client den Server gefunden? Nö, nicht mal nach mehreren Anläufen. Liegt’s an der passwd und/oder group Datei? Kann eigentlich nicht sein, da es auf beiden Rechnern die selben Benutzernamen mit Passwort gibt. Irgendwann habe ich es mit dem Userspace-nfsd (nfs-server heißt das Paket im YaST) versucht und versucht den mit dem YaST-Frontend zu konfigurieren. Klappte auch nicht.

Nächste Alternative: Samba.
Ähm, die Konfiguration war mir ein wenig zu hoch. Mit Samba kann man die unter Windows üblichen smb-Freigaben unter Linux realisieren. Von Windows weiß ich, dass es reicht, wenn sich zwei Rechner in der selben Arbeitsgruppe befinden, um Freigaben untereinander zu haben. Ich trag auch schön brav unter Domäne oder Arbeitsgruppe im Konfigurationsfrontend eine Arbeitsgruppe ein (bei mir LISPM – so als kleine Anspielung auf die Lisp Maschine  :mrgreen: ). Sage zusätzlich, dass ich keinen PDC (Primärer Domänencontroller) will – warum soll ich da ‘ne Domäne aufmachen wenn eine Arbeitsgruppe ausreicht. Dann fummle ich besagten Arbeitsgruppennamen LISPM in auf dem Zweitrechner im Samba-Client rein. Da erscheint mir dann gleich ein Fehler, dass er die PAM Einstellungen nicht schreiben konnte und bricht dann natürlich ab. Nett, nicht wahr.

Meine Rettung: ein FTP-Server.
Da NFS nicht gefunzt hat und Samba mir ein wenig zu hoch war, habe ich dann einen FTP-Server draufgeschmissen, schnell Authentifizierungsmethode und FTP-Verzeichnis eingestellt. Auf meinem Läppi brauchte ich anschließend nur FileZilla anzuwerfen, um mich dann am FTP anzumelden.

Was für eine Odyssee. Aber es funktioniert. ;-)

Der Versuch einen Firewall-Rechner zu basteln

Seit geschlagenen vier Tagen kämpfe ich damit, einen Rechner mit Slackware 12.2 als Firewall für ein Netzwerk aufzubauen. Und ehrlich gesagt, habe ich so langsam aber sicher die Schnauze voll davon. Vielleicht liegt’s daran, dass ich ursprünglich nicht aus dem Netzwerk- und Systembereich komme – oder ich hab irgendwas nicht richtig konfiguriert, etc.

Erstmal eine Skizze, wie man sich das Netzwerk vorzustellen hat:

Netzwerkskizze

Die Firewall lässt halt E-Mail und normales Internet zu. FTP zum Beispiel können die Clients nicht machen. Der Firewall-Rechner hat zwei Netzwerkkarten: eine für das Verbindung zu Router/Internet hin und eine andere für das lokale Netzwerk. Nach Lektüre dieser Anleitung für einen Rechner, der als Router dient, habe ich gelernt, dass man für beide Netzwerkkarten unterschiedliche IP-Kreise vergeben muss – das wusste ich vorher nicht.

Ok, gut, dann gibt’s eben folgende Netze:

Karte 1 (Verbindung Router/Internet) IP: 192.168.1.254 Subnetzmaske: 255.255.255.0
Karte 2 (Verbindung lokales Netz) IP 192.168.5.1 Subnetzmaske: 255.255.255.0

Die IP von Karte 2 habe ich bei einem Test-Client als Gateway sowie DNS angegeben, nachdem ich nachgefragt habe, ob man das so angeben muss. Damit ist die Einstellung am Client erst einmal abgeschlossen.

Nun muss man halt auf dem Firewall-Rechner rumfrickeln. IP-Forwarding für den Kernel habe ich in Slackware mittels pkgtool -> setup -> services -> rc.ip_forward aktiviert, damit der Linux-Kernel überhaupt Routing betreiben, sprich die Datenpakete an den entsprechenden Client weiterreichen kann.

So bevor ich mich an irgendwelchen Regeln für iptables versuche, wollte ich mal schauen, ob man den Firewall-Rechner anpingen kann. Das Feine daran ist: ich kann noch nicht mal das Gateway (192.168.5.1) für den Client anpingen! Sprich, ich komme nicht über den Switch zur zweiten Netzwerkkarte der Firewall. Dabei habe ich schon Kabel getauscht und Ports am Switch durchprobiert, mit dem Ergebnis, dass es nicht geht, ob wohl ich auf dem Firewall-Rechner noch nicht mal blockende Regeln für iptables aufgestellt und aktiviert habe. Nett zu wissen ist übrigens auch, dass das Anpingen des Gateways (192.168.5.1) gestern noch funktioniert hat. :evil: :evil: :evil:

Zumindest ab hier macht die ganze Sache keinen Spaß mehr. Dem entsprechend bin ich auch nicht all zu gut gelaunt und muss mich auf das äußerste beherrschen, um nicht laut irgendwelche Schimpfwörter zu brüllen.Von den Vorgängen bzw. Einstellungen bei IP-Forwarding, Routing und Port Weiterleitungen habe ich gerade mal so viel Ahnung, wie ein Glas Wasser vom Bergsteigen – nämlich keine.

Ich hoffe mal, mir kann irgendwer in dieser Angelegenheit weiterhelfen, da ich so langsam aber sicher am Durchdrehen bin. Mit Grüßen, ein verzweifelter, kleiner Möchtegern-Sysadmin. :-|