Aus Linux-Magazin 04/2009

Replizierende Wins-Server unter Linux auf Basis von Samba

© Martina Berg, Fotolia.com

Windows-Server verteilen mit dem Wins-Dienst die Einträge in ihren Datenbanken untereinander. Das ist meist der Grund, in manchen Netzen überhaupt noch Windows-Server mitlaufen zu lassen. Mit Samba4Wins als Bestandteil des kommenden Samba 4 wird das jetzt überflüssig.

Um Netbios kommt kaum jemand herum, der Windows und seine Protokolle einsetzt oder mittels Samba heterogene Systeme verbindet. Auch heute noch ist die einstige Programmierschnittstelle hauptsächlich dafür verantwortlich, Namen in solchen Netzen aufzulösen, auch wenn es damit in Konkurrenz zu offenen Standards wie DNS steht. Clients finden so ihre Anmeldeserver, und Verzeichnisdienste gleichen auf diesem Wege ab, wer welche Dienste anbietet.

Andere Auskünfte

Um Namen aufzulösen oder Dienste zu reservieren, verwendet Netbios normalerweise Broadcasts an den UDP-Port 137. Dieser Ansatz hat neben Broadcast-Stürmen den Schönheitsfehler, dass er in gerouteten Netzen nicht funktioniert. Router leiten Broadcasts einfach nicht weiter, die Anfragen verbleiben daher in den Subnetzen, aus denen sie kamen.

Abhilfe schafft hier die Windows-Implementierung des Netbios-Namenservers Wins (Windows Internet Name Service), der Netbios-Namen in einer Datenbank dynamisch pflegt. Die Namensreservierung und die Auflösung bewerkstelligen die Clients dann nicht per Broadcast, sondern durch UDP-Pakete an den Wins-Server (siehe Abbildung 1). Die IP-Adresse des Wins-Servers stellt der Administrator bei allen Windows-Versionen in den Eigenschaften des TCP/IP-Protokolls im Reiter »Wins« in den erweiterten Einstellungen ein (siehe Abbildung 2). Samba teilt der Admin die Adresse des Wins-Servers mit dem Parameter »wins server = IP-Adresse« im Abschnitt »[global]« der »smb.conf« mit.

Abbildung 1: Der Rechner »SABAKI« registriert seinen Namen und seine IP mit dem Resource-Typ 0x20 beim Wins-Server (1) und erhält eine Bestätigung (2). Auch aus einem anderen Subnetz erhält »OKAWANGO« per gerichteter UDP-Anfrage (3) nach »SABAKI« eine Antwort (4). Das ist per Broadcast nicht möglich.

Abbildung 1: Der Rechner »SABAKI« registriert seinen Namen und seine IP mit dem Resource-Typ 0x20 beim Wins-Server (1) und erhält eine Bestätigung (2). Auch aus einem anderen Subnetz erhält »OKAWANGO« per gerichteter UDP-Anfrage (3) nach »SABAKI« eine Antwort (4). Das ist per Broadcast nicht möglich.

Abbildung 2: Auch Windows-Clients dürfen von dem unter Samba betriebenen Wins-Server profitieren.

Abbildung 2: Auch Windows-Clients dürfen von dem unter Samba betriebenen Wins-Server profitieren.

Router leiten gerichtete UDP-Pakete an den Wins-Server weiter. Gleichzeitig hat dessen Einsatz den angenehmen Effekt, dass weniger Broadcast-Stürme im Netz toben und sich dadurch die Wartezeit aller Clients verkürzt.

Um auch Anwender freier Betriebssysteme in den Genuss dieses Dienstes zu bringen, hat der bei Samba stark involvierte Dienstleister Sernet das Projekt Samba4Wins aufgesetzt [1]. Die Software ersetzt einen Wins-Server von Microsoft funktional und ist darüber hinaus in der Lage, die Daten auch auf andere Server zu replizieren. Das ist auch dringend notwendig, da von dem Namensdienst fast alle anderen Services abhängen.

Neue Version 1.0.7

Projektleiter Stefan Metzmacher hat diese Funktionalität in der Mitte Januar erschienenen Version 1.0.7 implementiert und gleich noch ein paar Speicherlecks geschlossen. Samba4Wins hat er aus Samba 4 kopiert, jedoch alle Features deaktiviert, die ein Wins-Server nicht benötigt, beispielsweise die Integration in eine Active-Directory-Umgebung. Wenn das Team Samba 4 eines Tages veröffentlicht, lösen dessen Pakete das separate Samba4Wins ab.

Bis dahin darf der Admin den Daemon parallel zu Samba 3 ab Version 3.0.21 einsetzen. So betreibt er mehrere Wins-Server mit freier Software, die untereinander ihre Datenbestände abgleichen. Zwar erlaubt auch Samba 3 einen Wins-Server ohne Samba4Wins zu starten. Der lässt sich bislang aber nicht mit anderen Wins-Servern abgleichen – das ist jedoch in vielen komplexen Netzwerken notwendig. Wählt der Admin eine aktuelle Samba-3-Release als Wins-Server, stehen die Anwender im Regen, wenn der Server abstürzt oder nicht erreichbar ist. In gerouteten Netzen wäre dann der Netbios-Namensraum verloren, da die Subnetze vom Wins-Server getrennt werden.

Die Anwender können dann einzig auf die lokalen Server zugreifen, da nur noch Broadcasts ihre Netbios-Namen auflösen. Die sind bekanntlich nicht in der Lage, Subnetz-Grenzen zu überschreiten. Bislang hatte nur Microsoft das Protokoll für die Replikation einer Wins-Datenbank mit anderen Wins-Servern implementiert – für manchen Admin der letzte Grund, in seinen Netzen überhaupt noch Windows-Server mitlaufen zu lassen.

Stürme verhindern

Der Einsatz eines Wins-Servers in heterogenen Netzen ist allein deshalb empfehlenswert, weil er Broadcasts minimiert. Will der Admin zusätzlich den Datenbestand zwischen mehreren Wins-Servern replizieren, installiert er die aktuelle Version 1.0.7 von Samba4Wins. Source- und Binärpakete bietet das Projekt für Debian-Derivate und die großen Enterprise-Distributionen RHEL 4 sowie SLES 9 und 10 an [1]. Sie laufen auch parallel zu einer bestehenden Samba-Installation als separater Daemon »smbd4wins«. Dazu bedarf es der Samba-Pakete nicht notwendigerweise.

Von Haus aus gerüstet

Die Konfigurationsdatei »samba4wins.conf« findet der Admin im Verzeichnis »/etc/samba4wins/«. Die Entwickler empfehlen den Server mit den mitgelieferten Default-Einstellungen, nämlich einer leeren Datei, zu starten. Setzt der Admin den Logging-Parameter »log level = 4«, erfährt er zusätzlich detailliert, was im Server passiert. Auch weitere Parameter, die der Samba-Admin bereits aus Samba 3 kennt, lässt »samba4wins.conf« zu (siehe Listing 1). Einzig die Option »nbtd:disable_broadcast« ist im Parallelbetrieb mit Samba 3 auf »yes« zu setzen, damit Samba4Wins nicht weiter auf Broadcasts an UDP-Port 137 reagiert. Derer nimmt sich der »nmbd«-Daemon der Samba-Installation selbst an.

Listing 1: Konfigurationsdatei
»smb4wins.conf«

01 [globals]
02     netbios name = winssrv-01
03     workgroup = dbsys
04     interfaces = eth0
05     bind interfaces only = yes
06     log level = 4

Doppelt genäht

Die Konfigurationsparameter eines Wins-Partners zur Replikation sind in einer Samba-LDB-Datenbank »wins_config.ldb« abgelegt, die der Server im Verzeichnis »/var/lib/samba4wins/private/« erwartet. Wer Einträge darin prüfen oder verändern möchte, greift auf »ldbedit« zurück. Das Tool öffnet die Datenbankinhalte im favorisierten Editor. So legt der Systemverwalter den Replikationspartner für seinen Wins-Server fest. Dazu gibt er auf der Konsole das Kommando

cd /var/lib/samba4wins/private 
ldbedit -H wins_config.ldb -a

ein. Die Option »-H« übergibt die LDB-URL, auf die sich das Tool verbindet, hier eine lokale Datei. Das abschließende »-a« veranlasst, alle Records der Datenbank zu bearbeiten. Wins benutzt übrigens die LDIF-Syntax wie bei einem LDAP-Server – Active Directory lässt grüßen! LDIF (LDAP Data Interchange Format) ist ein Textformat, das Informationen aus einem LDAP-Verzeichnis darstellt. Auf »WinsSRV-02« steht in der »wins_config.ldb«:

dn: CN=WinsSRV-01,CN=PARTNERS
objectClass: wreplPartner
address: 192.168.1.100

Der Eintrag bewirkt, die Wins-Datenbank mit dem Rechner »WinsSRV-01« und der IP 192.168.1.100 abzugleichen. Der Namensbestandteil »CN=PARTNERS« ist wichtig, damit der Server den Eintrag auch als Replikationspartner anerkennt. Natürlich trägt der Admin auf »WinsSRV-02« spiegelbildliche Einträge für die Replikation ein:

dn: CN=WinsSRV-02,CN=PARTNERS
objectClass: wreplPartner
address: 192.168.1.200

In dieser Minimalkonfiguration agieren beide Wins-Server gleichsam als Pull-und-Push-Partner. Das heißt, der Abgleich erfolgt in beide Richtungen. Nützliche Informationen und weiterführende Konfigurationsmöglichkeiten etwa zu Netz, Lastverteilung oder Timeouts finden sich in »samba4wins-1.0.7-HOWTO.txt« auf dem Download-Server. Die endgültige Konfiguration sichert der Sysadmin in der Shell mit »ldbsearch«:

cd /var/lib/samba4wins/private
ldbsearch -Hwins_config.ldb objectClass=*> /backup/wins_config-backup.ldif 

Der Befehl durchsucht die Datenbank »wins_config.ldb« nach allen Records, die auf den Ausdruck »objectClass=*« zutreffen, und lenkt die Ausgabe in die Datei »/backup/winssrv-01_backup.ldif« um. Das Kommando »ldbadd« hilft dem Admin die so gesicherten Backups der Konfiguration im LDIF-Format in die LDB-Datenbank zurückzuschreiben (siehe Listing 2).

Listing 2: Wins-Sicherungskopie
restaurieren

01 cd /var/lib/samba4wins/private
02 ldbadd -H wins_config.ldb < 
03   /backup/winssrv-01_backup.ldif
04 Added 1 records with 0 failures

Im gleichen Stil lässt sich auch die Wins-Datenbank sichern, die der Admin unter »/var/lib/samba4wins/wins.ldb« findet (siehe Listing 2). Ist die Konfiguration abgeschlossen und hat der Admin den Daemon auf beiden Servern je nach Distribution mit »/etc/init.d/smbd4wins start« oder »samba4wins« gestartet, lässt sich die Replikation über den TCP-Port 42 mit dem Sniffer Wireshark verfolgen (siehe Abbildung 3). Das Tool bringt den Dissector Winsrepl mit, der das Protokoll visualisiert [2].

Abbildung 3: Der Netzwerksniffer Wireshark visualisiert die Wins-Replikation auf TCP-Port 42.

Abbildung 3: Der Netzwerksniffer Wireshark visualisiert die Wins-Replikation auf TCP-Port 42.

Um Namen winseln

Das Diagnosewerkzeug »nmblookup« hilft beim Abfragen der beiden Wins-Datenbanken. Abbildung 4 zeigt, wie das Werkzeug den Server auf der IP-Adresse 192.168.1.100 nach dem Namen »sabaki« befragt. Die Netbios-Tools von Samba unterscheiden übrigens nicht zwischen Groß- und Kleinschreibung. Analog dazu testet der Admin die replizierte Datenbank, indem er das Tool »nmblookup« für den zweiten Wins-Server aufruft.

Abbildung 4: »nmblookup« fragt den Wins-Server 192.168.1.100 nach dem Netbios-Namen »sabaki«.

Abbildung 4: »nmblookup« fragt den Wins-Server 192.168.1.100 nach dem Netbios-Namen »sabaki«.

Wenn alles funktioniert, sind die Ergebnisse identisch – einzig die IPs der befragten Server differieren. Das bereits vorgestellte Kommando »ldbsearch« liefert ebenso die registrierten Namen zurück – im LDIF-Format. Benutzer rufen durch die Anfrage nach »objectClass=winsRecord« alle Einträge oder auch nur bestimmte Resource-Typen ab.

Resource-Typen

Der Resource-Typ ist das 16. Byte eines Netbios-Namens. Die Windows-Welt notiert ihn typischerweise hexadezimal, oft in spitzen Klammern hinter dem eigentlichen Namen. Mit Hilfe dieses Suffixes sind mehrere Anwendungen auf einem Rechner in der Lage, Namen zu reservieren, ohne sich gegenseitig zu stören. So steht etwa das Suffix »0x03« für den Nachrichtendienst. Bietet ein Rechner Datei- oder Druckdienste an, baut der Client eine Verbindung zum Server mit dem Netbios-Namen auf, der mit dem Typfeld »0x20« registriert ist. Mehr Hintergründe zu Resource-Typen finden sich in einem Artikel der Microsoft Knowledge Base [3].

Wer lieber mit Namen als mit Resource-Typen arbeitet, darf die LDB auch nach Namen-Records mit der Option »name=Netbios-Name« durchsuchen. User geben dabei den Netbios-Namen in Versalien an (siehe Listing 3).

Listing 3: »ldbsearch -H
wins.ldb name=SABAKI«

01 # record 1
02 dn: name=SABAKI,type=0x20
03 type: 0x20
04 name: SABAKI
05 objectClass: winsRecord
[...]
10 expireTime: 20090120004152.0Z
11 versionID: 6
12 winsOwner: 192.168.1.100
13 address: 192.168.1.83;winsOwner:192.168.1.100;expireTime:20090120004152.0Z;
14 distinguishedName: name=SABAKI,type=0x20
[...]

Lücke geschlossen

Replizierende Wins-Server lassen sich mit wenigen Handgriffen aufsetzen. Die Alleinherrschaft der Systeme aus Redmond bei der Wins-Replikation endet mit Samba4Wins – ebenso die Angst eines Linux-Administrators, sich gänzlich auf einen einzigen Wins-Server verlassen zu müssen. (mg)

Infos

[1] Download Samba4Wins: [http://enterprisesamba.org/index.php?id=88]

[2] Wireshark-Dissector für Wins: [http://wiki.wireshark.org/WINS-Replication]

[3] Netbios-Resource-Typen: [http://support.microsoft.com/kb/163409/DE/]

Der Autor

Walter Neu arbeitet als Systemadministrator bei der Eurodata GmbH & Co. KG und ist Dozent für Wirtschaftsinformatik an der ASW-Berufsakademie Saarland, University of cooperative education in den Fächern Linux-Einführung, Windows-Networking und Webserver-Technologie.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben