Frage zu DNS Request

Hallo Experten,

ich bastle mir gerade einen DNS Resolver in C und komme gerade nicht mehr weiter und hoffe der ein oder andere hier erkennt mein Problem und kann mir dabei helfen.

Habe das ganze bereits getestet, „normale Seiten“ wie z.b. „www.google.de“ löst er auf und gibt mir die IP zurück (umgekehrt funktioniert auch).

Mein Problem tritt auf, wenn der DNS Server die Seite nicht kennt und mir eigentlich den Server nennen soll der ihn kennt. Leider schickt er mir nur die Frage zurück ohne eine Antwort.

Hier also meine Frage, kann es sein das die zugewiesen DNS Server (beim mir t-com: 217.0.43.81, 217.0.43.65) keine „Umleitung“ zu anderen DNS Server bereitstellen ?

Wenn Quellcode benötigt wird, poste ich den gern noch.

Danke für die Mühe im Voraus.
Hans W.

Du solltest als aller erstes überlegen welche Information zwischen welchen Einheiten ausgetauscht werden.

http://technet.microsoft.com/de-de/library/cc775637%…

Sofern ich Deine Beschreibung richtig verstanden habe verhält sich Dein DNS Server nicht entsprechend der Spezifikation.

Nein, das ist nicht was ich meinte.

Ich habe einen DNS Client (DNS Resolver) in C geschrieben, welcher Namen (www.google.de) in IP und umgekehrt auflöst, indem er sich mit den dem System übergebenen DNS Servern verbindet.

Kurz, so was wie „gehostbyname“ oder „gethostbyaddress“.

Das Problem ist, das ich zwar so was wie „www.google.de“ usw. auflösen kann, jedoch bei Adressen/Namen die nicht direkt auf dem DNS Server liegen (beim mir sind das die Telekom DNS Server : 217.0.43.81, 217.0.43.65), funktioniert es nicht und der Server sendet mir nur die anfrage wieder zurück, ohne antwort welcher DNS Server es weiß…

Normalerweise sollte er mir aber die möglichen Adressen von anderen DNS Server zusenden, damit ich dort „nachfragen kann“.

/* quellcode für dns anfrage */

typedef unsigned char MG_BYTE;
typedef unsigned short MG_USHORT;
typedef unsigned long MG_ULONG;

#define FLIPENDIAN(value) (MG_USHORT)( ( ((MG_USHORT)value) > 8 ) )
#define FLIPLONGENDIAN(value) (MG_ULONG)( (FLIPENDIAN(LOWORD(value)) -1;i–)
{
if (_dnssearch[i] == ‚.‘)
{
buffer[blength] = y;
_copymem(&buffer[blength + 1], &_dnssearch[i] + 1, y);
blength += y + 1; y = 0;
}
else
if (i == 0)
{
buffer[blength] = y + 1;
_copymem(&buffer[blength + 1], _dnssearch, y + 1);
blength += y + 2;

buffer[blength] = 7;
_copymem(&buffer[blength + 1], „IN-ADDR“, 7);
buffer[blength + 8] = 4;
_copymem(&buffer[blength + 9], „ARPA“, 4);
blength += 13;
}
else y++;
}
}
else
{ // nach adresse suchen
for (MG_INT i = 0;i

Hab das Problem gelöst…