PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nmb blockiert NetBIOS im Netz(?)



frafi
31.05.2006, 13:41
Hallo,

ich bin auf ein Problem gestossen, das ich nicht allein lösen kann:

In meinem Netzwerk sind zwei PCs mit Windows2000 und ein Laptop mit Linux(Suse10.0, Samba 3.0.20b), alle im gleichen subnetz und in der gleichen Arbeitsgruppe (keine Domäne).

Jetzt habe ich folgendes Phänomen:

Sobald auf dem Linux-Laptop der nmb-Dienst läuft, läßt sich von keinem der Windowsrechner mehr die Arbeitsgruppe öffnen. Die Arbeitsgruppe taucht aber weiter in der Netzwerkumgebung auf.
Fehlermeldung ist: "Auf <Arbeitsgruppe> kann nicht zugegriffen werden. Der Netzwerkpfad wurde nicht gefunden."
Die Windows-Rechner(die Freigaben) sind immer noch erreichbar, wenn man den Rechner mit 'Ausführen >> \\hostname' anwählt.
Dies funktioniert aber nicht mit dem Linux-Rechner als Ziel. Dieser läßt sich aber (und nur) über die IP-Adresse öffnen. (\\192.168.1.133)

Von dem Linux-PC aus sieht die Sache etwas anders aus:
Die Arbeitsgruppe ist zusehen und die einzelnen Hosts in der Arbeitsgruppe ebenfalls. Nur das öffnen der Hosts über den Host-Namen in der Arbeitsgruppe ist nicht möglich.
Die Fehlermeldung ist z.Bsp. "Keine Verbindung zum Rechner für smb://w2k030/" (aus dem Konqueror) .
Das Öffnen über die IP-Adresse funktioniert.

Wird der nmb-Dienst auf dem Linux-PC beendet, ist die Arbeitsgruppe auf den Windosen nach einiger Zeit wieder verfügbar. Auch der Linux-Rechner taucht dort auf, läßt sich aber nicht öffnen (nur wieder über die IP-Adresse)

Die Browsing Optionen auf dem Linux sind:
os level = 65
preferred master = yes
local master = yes
domain master = yes (wobei ich auch 'no' probiert hab >> gleiches Verhalten)
name resolve order = bcast host lnhosts wins
wins support = no

serucrity = user

Ich kann mir dieses Verhalten nicht erklären. Ich habe nur den unbestimmten Eindruck, daß die NetBIOS-Auflösung des Arbeitsgruppennamens durch den nmb-Dienst blockiert wird. Nur wie???

Wär schön, wenn mir da jemand helfen könnte und sei es nur durch weitere Lösungsansätze.

PS: nmb blockiert, weil der Linux-Rechner die Master-Browser-Rolle an sich reißt, aber diese Aufgabe nicht fehlerfrei erfüllt (Konfigurationsproblem?) Wenn man das verhindert (siehe die Antworten zu diesem Thema), funktioniert der Rest des Netzes wieder. Nur der Zugriff vom bzw. zum Linux ist nach wie vor nur eingeschränkt möglich!


PS:
Nach den Denkanstößen hier habe ich mir die Namensauflösung mal etwas genauer angesehen:
Mit dieser Konfiguration hat nmb offensichtlich heftige Probleme :-) (oder ich hab Probleme, die dem nmb schmackhaft zu machen :-)).

1. Zwei Netzwerkkarten: eine feste, eine über wlan, beide im gleichen subnetz (!!!), wenn die wlan aktiv ist, ist die andere nicht aktiv und umgekehrt, aber(!) bei der Auflösung des eigenen Hostnamens erwischt er regelmäßig die IP der nicht aktiven Karte (wahrscheinlich aus irgendeinem Puffer, bzw. einer alten BrowseList).
2. die PCs haben eine feste Verbindung (über router) ins Internet und einen Hostnamen, der in Verbindung mit der Domain von Linux aus über dns auflösbar ist, also versucht nmb den Hostnamen zu guter Letzt immer über DNS aufzulösen und bekommt die Außenadresse des Internetrouters als antwort. Der reagiert natürlich nicht auf SMB-Anfragen.
Das läßt sich nur durch löschen von 'hosts' aus der resolver-liste von samba verhindern.
3. auch wenn 1. und 2. korrigiert wurden und die PCs unter der richtigen IP für nmb bekannt sind, sieht es so aus, als ob nmb immer noch versucht die Verbindung wieder über den Host-Namen aufzubauen, so daß das System selbst nochmals eine DNS-Anfrage startet und wieder die falsche IP zurückbekommt(oder gar keine).

Ich würde das Thema gern schließen, weil das wohl über ein reines Samba-Problem hinausgeht, weiß aber nicht genau wie, sorry? :-(.

theton
31.05.2006, 15:31
Wenn du die Linux-Kiste nicht als Domain-Controller nutzen willst, mach domain master wieder auf 'no'. Bei der resolve order wuerde ich 'host' an erste Stelle setzen. Ist die richtige Arbeitsgruppe im Samba eingetragen? Hast du dem Rechner einen Namen gegeben? Gibt es eine username-map? Duerfte sonst schwierig werden mit security = user. Wieso hast du das Ding als local Master gesetzt?

phrenicus
31.05.2006, 15:40
Hallo,

Deine Browsing-Direktiven führen dazu, dass der Linux-Rechner die Browsingliste
an sich reißt.

Wie theton schon richtig ausgeführt hat, muss domain master auf no stehen, wenn Du keinen Domänenmaster willst. Außerdem führt preferred master = yes dazu, dass der Linux-Rechner beim Neustart Neuwahlen für den Master Browser erzwingt (und wegen des hohen OS Level) auch gewinnt. Ich würde es mal so versuchen:



# Wir beteiligen uns an der Wahl zum Master Browser
local master = yes
# aber mit einer geringen Punktzahl
os level = 8
# wir erzwingen keine Neuwahlen
preferred master = no
# und werden auch nicht Domänenchef
domain master = no
# und versuchen das ganze ohne viel Traffic zu lösen
name resolve order = host bcast
# und WINS haben oder brauchen wir nicht
wins support = no


Grüße

frafi
31.05.2006, 19:15
Der tipp war erst mal gut :-), danke. Wenn die linux-kiste nicht masterbrowser ist, läuft wieder alles zwischen den windosen, nur auf den linux-rechner kann ich nach wie vor nur über die IP zugreifen. Und der linuxrechner kommt auch an die Windowsrechner nur über die IP.

Mit dieser Lösung ist mir zwar erst mal geholfen, aber die eigentliche Ursache ist wohl nicht beseitigt :-(. Außerdem würde ich auch gern über die Hostnamen zugreifen, wenn der Linux-Rechner beteiligt ist (als Quelle oder als Ziel).

Die Frage, die sich mir da aufdrängt wäre: Ist eine Konstellation denkbar, das der Linux sich die Masterbrowserrolle krallt, aber die Funktion dann nicht ausführt?? Weil die Windoof-Fehlermeldung könnte doch bedeuten, das der Masterbrowser zwar existiert (weil sonst hätte sich der windows-rechner ja zum masterbrowser erklärt), aber die Browserliste nicht rausrückt, oder liege ich da völlig falsch?

Die username-map ist wohl nicht nötig, weil ich ja über die IP-Adresse problemlos auf den linux zugreifen kann. Nur die Anmeldenamen und das Paßwort müssen wohl überall identisch sein.

Achso, noch zur Ergänzung: die Firewall hab ich auf dem Linux und auf den windows-pcs probeweise deaktiviert >> auch keine Änderung der Situation.

theton
31.05.2006, 21:28
Wenn du Netbios-Namen fuer die IPs vergeben willst, kannst du das mit der Datei lmhosts aus der Samba-Konfiguration machen. Mehr dazu ist auch in der 'man smb.conf' zu finden.

frafi
31.05.2006, 21:51
Ja das ist mir schon klar.Auch die Einträge in der hosts (sowohl auf der windows- als auch auf der linux-seite) werden richtig aufgelöst.
Das Problem ist nur, das zwei der beteiligten Rechner darunter auch der Linux-rechner mit dhcp konfiguriert werden (schlepptop mit wlan). Damit kommt zumindest für diese eine feste Adressvergabe nicht in Frage und damit ist wäre eine Namensauflösung über files etwas umständlich.

Außerdem muss doch die Namensauflösung über nmb in den Griff zu bekommen sein.

In der Zwischenzeit habe ich aber festgestellt, das vom Linux-Rechner aus auch ein nmblookup auf den masterbrowser fehlschlägt, das Problem ist also wohl nicht unbedingt am nmbd festzumachen. Viel mehr scheint es so zu sn, daß auch der smbclient unter die Hostnamen nicht auflösen kann.

Das dumme ist nur, das ich auch mit dem höchsten verfügbaren Debuglevel keinen Hinweis darauf bekomme, wieso das nicht funktioniert. Allerdings zeigt mir tcpdump bei der Namensauflösung ausschließlich Broadcasts an. Ich weiss nicht, ob das normal ist, also ob bei NetBIOS wirklich alles über Broadcast läuft. Ich dachte immer da musste auch mal eine gezielte Antwort an eine bestimmte Adresse kommen. Ist aber nichts derartiges zu sehen, obwohl auf beiden testsystemen die Firewalls deaktiviert sind, zumindest dem äußeren Anschein nach.

theton
31.05.2006, 22:18
Du kannst im DHCP-Server normalerweise die IPs fuer bestimmte Hardware-Adressen auch festlegen, damit duerfte das Problem wohl erledigt sein. Bei NetBIOS laeuft alles ueber Broadcasts, eine Einfuehrung dazu findest du auf meiner Seite http://www.bitmuncher.de/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=9

frafi
31.05.2006, 23:58
Deine Einführung ist Klasse.Hab ich mir gerade im Überblick mal reingezogen. Guck ich mir morgen aber noch mal im Detail an. Ist mir für heute abend einfach zu spät.

Das mit der Zuweisung im DHCP-Server geht bei meinem nicht (ist nur ein DSL-Router mit eingebautem DHCP-Server).

Und ich lass mich doch nicht von so nem Rechner veralbern :-). Muss doch raus zu kriegen sein, warum das nicht funktioniert.

Ausserdem hab ich gerade festgestellt, daß die Namensauflösung auf dem Linux-Rechner auch mit bestückter lmhosts bzw. hosts - Datei nicht funktioniert.
Ich geh davon aus, das der nmb (sowohl als client als auch als daemon) 'verkonfiguriert' ist oder eben nicht so funktionirt wie er soll.

Der Zugriff unter Angabe der IP-Adresse funktioniert jedenfalls in beiden Richtungen. Der Zugriff von Windows auf Linux mit Hostnamen nur über lmhosts- oder hosts- Einträge, der Zugriff von Linux auf Windows mit Hostnamen gar nicht.

Im Moment weiß ich allerdings gar nicht mehr genau, was ich alles geändert habe beim Probieren. Mir ist nur aufgefallen, das Änderungen erst mal einige Zeit brauchen, bis die sich im Netz bemerkbar machen.

Der tcpdump im fehlerfall ist auch nicht besonders aussagekräftig (für mich jedenfalls), aber vielleicht kannst du oder jemand, der das liest ja mehr daraus lesen (Versuch die windose w2k030 mit ip 192.168.110.30 von linux mit ip 192.168.110.50 über hostnamen im konqueror zu öffnen):

22:08:04.021110 IP 192.168.110.50.1083 > 192.168.110.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
22:08:04.302039 IP 192.168.110.50.1083 > 192.168.110.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
22:08:08.824408 IP 192.168.110.50.1083 > 192.168.110.30.137: NBT UDP PACKET(137): QUERY; REQUEST; UNICAST
22:08:08.824621 IP 192.168.110.30.137 > 192.168.110.50.1083: NBT UDP PACKET(137): QUERY; POSITIVE; RESPONSE; UNICAST
22:08:08.824738 IP 192.168.110.50.29016 > 192.168.110.30.139: P 1098210458:1098210462(4) ack 2563913546 win 1996 <nop,nop,timestamp 3964748 23310> NBT Session Packet: Session Keepalive
22:08:08.824781 IP 192.168.110.50.29016 > 192.168.110.30.139: P 4:131(127) ack 1 win 1996 <nop,nop,timestamp 3964748 23310> NBT Session Packet: Session Message
22:08:08.825116 IP 192.168.110.30.139 > 192.168.110.50.29016: . ack 131 win 62927 <nop,nop,timestamp 23947 3964748>
22:08:08.825389 IP 192.168.110.30.139 > 192.168.110.50.29016: P 1:69(68) ack 131 win 62927 <nop,nop,timestamp 23947 3964748> NBT Session Packet: Session Message
22:08:08.825403 IP 192.168.110.50.29016 > 192.168.110.30.139: . ack 69 win 1996 <nop,nop,timestamp 3964748 23947>

Sieht fürmich eigentlich ok aus, bekomme aber trotzdem ne Fehlermeldung, das smbclient mit einem unbestimmten Fehler abbricht und nmblookup liefert kein Ergebnis. Kann mir im Moment einfach keinen Reim drauf machen.

theton
01.06.2006, 00:28
Was sagt dir denn smbmount (mount -t smb blabla), wenn du versuchst eine Freigabe eines Windows-Rechners ueber seinen Namen zu mounten und was geht dabei im Log ab?

frafi
01.06.2006, 08:57
Guten Morgen :-),

ich hab den linux erst mal wieder als Masterbrowser laufen, der sollte sich also nur selbst abfragen bei der Namensauflösung. In der Netzwerkumgebung (konqueror) ist die Arbeitsgruppe mit beiden aktiven Rechnern zu sehen.
In den Anhang hab ich die Meldungen von smbmount, nmblookup und das parallele log von tcpdump (bei nmblookup) gelegt.

Übrigens mit dem Eintrag in der lmhosts konnte der Linux heute morgen nach dem Hochfahren den windows-rechner auflösen und darauf zugreifen. Den Eintrag hab ich allerdings erst mal wieder raus genommen (soll ja auch über Broadcast funktionieren). Da hab ich gestern garantiert vergessen einen der Daemons neu zu starten nach der Änderung. Ich weiss nur nicht gnau welchen. Evtl. xinetd?? Die samba-daemons hab ich neu gestartet.

Ich glaube es ist an der Zeit mich mal für die Mühe, die du dir machst zu bedanken :respekt: