PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gethostbyname und die Namensauflösung



bege
17.07.06, 14:31
Guten Tag,
ich habe ein Problem und weiss nicht, wie ich das genau lösen soll, geschweige denn nach was ich überhaupt suchen müsste.

Ich habe hier einen Netgear-Router, an dem sind zwei Rechner mit Windows XP (xp1 und xp2) angeschlossen. Diese beziehen ihre IP per DHCP, alles läuft soweit, kein Problem. Wenn ich nun den Rechner xp2 vom Rechner xp1 aus anpingen möchte, kann ich in der Konsole ping xp2 eingeben, die Adresse wird aufgelöst, funktioniert perfekt.

Nun habe ich einen dritten Rechner (lin1) an das Netz angeschlossen, auf dem läuft Linux. Mit dem DHCP-client udhcpc bezieht dieser seine IP und ist im Router korrekt mit IP und hostname eingetragen.

Das Problem ist nun, dass die Namensauflösung auf den Linuxrechner nicht klappt. Im Router ist dieser eingetragen mit IP und Hostname. Ein ping <ip> klappt, ping <hostname> geht nicht.

Die eigentliche Idee dahinter ist, dass ich ein Programm unter Windows benutzen möchte, welches mit der Funktion gethostbyname die Adresse diverser Linux oder Windows Rechner im Netz mit eindeutigen Namen (z.B. lin1 bis lin9) ansprechen möchte.
Mit den Windows Rechnern klappt das wunderbar, jedoch können die Linux Rechner nicht gefunden werden.

Nun frage ich mich, wo muss sich der Linux Rechner sonst noch anmelden/eintragen, um erkannt zu werden? Wieso kennen sich die Windows Rechner?

Die Zusammenstellung der Hardware dient hier nur als Beispiel. Fakt ist, dass ich keine zusätzlich Geräte/Dienste/usw in das Netz stellen kann, das ganze muss mit einem 0815 Router realisierbar werden können.

1'000 Dank für eure Hilfe.

fuffy
17.07.06, 15:37
Hi!

Die Windows-Rechner "kennen" sich durch das NetBIOS (http://de.wikipedia.org/wiki/NetBIOS)-Protokoll.

Falls dein Router das beherrscht: Verpass den Rechnern am Router über "Static DHCP" eine feste IP-Adresse und gib ihm den DNS-Namen an, dem die IP-Adresse zugeordnet werden soll.
Im Notfall stellst du von Hand statische IP-Adressen ein und trägst die Zuordnungen jeweils in die /etc/hosts ein. Auch Windows hat eine: C:\WINDOWS\system32\drivers\etc\hosts

Gruß
fuffy

bege
17.07.06, 16:00
Netbios, ok, danke, werde ich mal weiter suchen.

Die Zuweisung einer fixen IP ist leider nicht möglich, die Geräte müssen nur über den hostname identifizierbar sein.

fuffy
17.07.06, 16:03
Die Zuweisung einer fixen IP ist leider nicht möglich, die Geräte müssen nur über den hostname identifizierbar sein.
Wieso soll das nicht möglich sein? Bei festen IP-Adressen kannst du die zugehören DNS-Namen in die etc/hosts eintragen, die auch bei einem Aufruf von gethostbyname ausgewertet wird. Dafür sorgt der Name Resolver.

Gruß
fuffy

waxolunist
17.07.06, 16:15
Ich denke nicht, dass er alles über die hosts-Datei machen möchte. Ich würde das zumindest nicht wollen. Und wenn keine fixe IP-Adresse und auch kein bind gegeben ist, orientiert man sich halt am wins.

Dieses wird übrigens von samba gesteuert.

Also Stichwort "WINS"

waxolunist
17.07.06, 16:17
http://www.linuxforen.de/forums/showthread.php?t=217058

Hier hatte ich beinahe dasselbe Problem

fuffy
17.07.06, 16:29
Ich denke nicht, dass er alles über die hosts-Datei machen möchte. Ich würde das zumindest nicht wollen. Und wenn keine fixe IP-Adresse und auch kein bind gegeben ist, orientiert man sich halt am wins.
Klar, aber ich hätte auch keine Lust, nur wegen einer Anwendung, die keine IP-Adresse frisst, Samba einzurichten.

Gruß
fuffy

bege
17.07.06, 17:58
Es geht nicht darum, dass ich keine Lust habe das mit fixen IP zu lösen. Die Linux-Geräte können beliebig an diversen Routern hängen, die einzige Identifikation ist der hostname. Zudem sehe ich nicht ganz ein, wieso ein alter win98 Rechner das kann und acht Jahre später muss ich unter Linux jedesmal irgendwelche Dateien anpassen? Wohl kaum...

Ich frage mal anders herum: Wie kann ich sonst die IP der Geräte herausfinden? Gibt es eine möglichkeit, eine Tabelle mit allen hostnamen und IPs vom dhcp-Server zu holen?

Ich google mal weiter nach WINS. Danke für eure Antworten.

fuffy
17.07.06, 19:01
Es geht nicht darum, dass ich keine Lust habe das mit fixen IP zu lösen. Die Linux-Geräte können beliebig an diversen Routern hängen, die einzige Identifikation ist der hostname. Zudem sehe ich nicht ganz ein, wieso ein alter win98 Rechner das kann und acht Jahre später muss ich unter Linux jedesmal irgendwelche Dateien anpassen? Wohl kaum...
Der Punkt ist, dass Windows über sein eigenes Protokoll die Hostnamen per Broadcast ermittelt. Wenn ich jetzt einen 2. Rechner ins Netz hänge, der zufällig den gleichen Computernamen besitzt, knallts. Deshalb verlässt sich Linux auf das standardisierte DNS, wobei es einen zentralen Server geben muss.


Ich frage mal anders herum: Wie kann ich sonst die IP der Geräte herausfinden? Gibt es eine möglichkeit, eine Tabelle mit allen hostnamen und IPs vom dhcp-Server zu holen?
Ich hatte dir doch bereits als erstes vorgeschlagen, die Hostnamen am Router zu konfigurieren. Die Zuordnung würde über die MAC-Adresse laufen.

Das mit der /etc/hosts war nur als Notlösung gedacht, um die Anwendung zum Laufen zu bekommen.

Gruß
fuffy

bege
18.07.06, 06:54
Es ist leider nicht möglich, irgenwelche Einstellungen am Router vorzunehmen. Die Geräte müssen ans Netz angeschlossen und der Gerätename (hostname) eingegeben werden, fertig. Alles andere wäre nicht praktisch und würde nur Probleme geben.

Verstehe ich das jetzt richtig: Wenn ich einen Samba-Client installiere, dann sollte das so klappen, wie ich mir das vorstelle?

fuffy
18.07.06, 07:35
Hi!


Es ist leider nicht möglich, irgenwelche Einstellungen am Router vorzunehmen. Die Geräte müssen ans Netz angeschlossen und der Gerätename (hostname) eingegeben werden, fertig. Alles andere wäre nicht praktisch und würde nur Probleme geben.
Dafür gibt es Zeroconf (http://de.wikipedia.org/wiki/Zeroconf). Allerdings hat Windows natürlich von Haus aus keine Zeroconf-Unterstützung. Wo kämen wir auch hin, wenn Microsoft plötzlich IETF-Standards umsetzen würde. ;)
Ich gehe mal davon aus, dass du keine Lust hast, den freien mDNSResponder von Apple auf sämtlichen Windows-Rechnern zu installieren.


Verstehe ich das jetzt richtig: Wenn ich einen Samba-Client installiere, dann sollte das so klappen, wie ich mir das vorstelle?
Nein, du musst auf jedem Linux-Rechner den Samba-Server installieren, damit das so funktioniert, wie du dir das vorstellst. Den Client natürlich auch.

Gruß
fuffy

waxolunist
18.07.06, 08:44
Möchtest du allerdings später Freigaben machen, so kommst du ohnehin nicht an Samba vorbei. Ich finde daher einen Sambaserver jetzt nicht den großen Aufwand. Unter Windows läuft ja auch nichts anderes als ein Dienst, was einem Server unter Linux gleich kommt.

fuffy
18.07.06, 09:14
Möchtest du allerdings später Freigaben machen, so kommst du ohnehin nicht an Samba vorbei.
Wenn man das denn möchte.


Ich finde daher einen Sambaserver jetzt nicht den großen Aufwand. Unter Windows läuft ja auch nichts anderes als ein Dienst, was einem Server unter Linux gleich kommt.
Naja, ich habe am liebsten möglichst wenige Hintergrunddienste am laufen. Das ist im Übrigen auch ein Grund, weshalb ich auch für eine Druckerfreigabe nicht anfange, Samba einzurichten. Windows kennt seit 2000 das Internet Printing Protocol, das auch von zahlreichen netzwerkfähigen Druckern genutzt wird. Warum sollte man dann also nicht gleich den IPP-Dienst von Linux, nämlich CUPS, nutzen. Der läuft sowieso, wenn man unter Linux drucken möchte.

Wenn man natürlich Dateifreigaben eingerichtet hat, kann man auch die übrigen Funktionalitäten von Samba nutzen, da er ohnehin läuft.
Ansonsten würde ich lieber auf Sachen wie Zeroconf (Bonjour, mDNSResponder, avahi, ...) setzen, da sie auch Informationen darüber liefern, was auf den Rechnern an Diensten läuft, sei es ein SSH-Server, ein Webserver, ein Streaming-Server, etc.

Gruß
fuffy

bege
18.07.06, 09:14
Hi!
Ich gehe mal davon aus, dass du keine Lust hast, den freien mDNSResponder von Apple auf sämtlichen Windows-Rechnern zu installieren.


Mhhhhh.... wäre aber eine Option, mal schauen wie gross der Aufwand ist. Auf den Windows rechnern muss eh ein Programm für die Bedienung der Linux-Rechnern installiert werden.

Wenn man nur ein kleines Programm zusätzlich installieren müsste, wieso nicht?
Wichtig ist nur, dass ich mit den hostnamen arbeiten kann.

Edit:
Gibt es eine möglichkeit, einen Rechner über die MAC-Adresse zu finden?

waxolunist
18.07.06, 09:42
Versuchs mal mit rarp