ANSI-C Linux: Nameserver akrualisieren

Hallo zusammen, ich würde gerne unter Linux den Nameserver in der Datei resolv.conf ändern. So weit so gut, jetzt möchte ich gerne noch im selben Programm diese Veränderung testen. Nun wie ich das machen kann, das möchte ich gerne wissen.

Greets Destrukto

Moin,

Hallo zusammen, ich würde gerne unter Linux den Nameserver in
der Datei resolv.conf ändern. So weit so gut, jetzt möchte ich
gerne noch im selben Programm diese Veränderung testen. Nun
wie ich das machen kann, das möchte ich gerne wissen.

Wie willst du das denn testen? Willst du resolv.conf nochmal einlesen und schauen obs richtig drin steht? Oder willst du einen Namen auflösen, was vorher nicht ging?

Falls du letzteres willst, lies mal

man 3 gethostbyname

Grüße,
Moritz

Der Ablauf ist folgendermassen:

  • Namen Auflösen (z.B. www.google.com)
  • Nameserver ändern falls nich funktionierte
  • Namen nochmal auflösen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also um die ganze Sache etwas zu erklären, ich suche nur eine Funktion mit der ich Linux sagen kann er soll den soeben eingetragenen Nameserver verwenden.

Hallo,

Also um die ganze Sache etwas zu erklären, ich suche nur eine
Funktion mit der ich Linux sagen kann er soll den soeben
eingetragenen Nameserver verwenden.

das macht Linux per Default, ausser du verwendest irgend eine Art von Caching (nscd zum Beispiel)

Grüße,
Moritz

Ja das Problem ist nur, dass das zu langsam ist. Wenn ich nach dem ändern des Nameservers wieder eine anfrage starte, verwendet Linux immer noch den alten.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Es müsste eine Möglichkeit geben wie ich während mein Programm läuft Linux dazu bringen kann den neu Eingetragenen Nameserver zu verwenden. Ich verwende zum testen die Funktion gethostbname(). Das Einzige Problem das ich habe ist eben das, dass ich nicht weiss wie ich Linux klarmache den neuen Nameserver zu verwenden. So ist momentan der Ablauf:

  • teste Nameserver {www.google.com mit gethostbyname()}
  • Wenn nicht funktioniert ändere den nameserver sonst ende
    (ändern von /etc/resolv.conf geht ohne Probleme)
  • erneut testen ob www.google.com aufgelöst werden kann
    (hier ist das Problem, obwohl der richtige Server eingetragen wurde kann www.google.com nicht aufgelöst werden, da immer noch der alte Nameserver verwendet wird)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Es müsste eine Möglichkeit geben wie ich während mein Programm
läuft Linux dazu bringen kann den neu Eingetragenen Nameserver
zu verwenden.

Du kannst z.B. dem Kommando `dig’ sagen, welchen Nameserver er benutzen soll.
Würde dir das helfen?

Grüße,
Moritz

Wie geht das? Soweit ich weiss kann man mit dig doch lediglich herausfinden welcher Nameserver verwendet wierd.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Wie geht das? Soweit ich weiss kann man mit dig doch lediglich
herausfinden welcher Nameserver verwendet wierd.

Schonmal vom „man“ Befehl gehört? „dig @server …“ Genaueres unter „man dig“.

Aber was soll das ganze eigentlich? In der resolv.conf kannst Du bereits bis zu drei Nameserver angeben, die sukzessive durchprobiert werden. Du kannst mit Hilfe von ip-up Skripten je nach Verbindung die resolv.conf mit verschiedenen Nameservern anlegen lassen. Last not least kannst Du sicher mit C das gewünschte Programm schreiben, aber ein einfaches shell- oder perl Skript würde es ebenfalls tun.

Gruß

Fritze

Das Problem ist ein anderes, ich verwende den PC standalone und hab ein Programm am laufen welches mir gewisse Services in meinem Netzwerk ausführt. Und als teil eines Services muss ich den Nameserver zur Laufzeit ändern können, da damit Linux automatisch den neuen Nameserver verwendet das ganze Programm neu gestartet werden müsste was nicht sehr sinnvoll wäre.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Das Problem ist ein anderes, ich verwende den PC standalone
und hab ein Programm am laufen welches mir gewisse Services in
meinem Netzwerk ausführt. Und als teil eines Services muss ich
den Nameserver zur Laufzeit ändern können, da damit Linux
automatisch den neuen Nameserver verwendet das ganze Programm
neu gestartet werden müsste was nicht sehr sinnvoll wäre.

Vielleicht erklärst Du erstmal in verständlichen Worten, was Du gerne machen möhtest. Diese Beschreibung hier weicht doch sehr weit von Deiner ursprünglichen Frage ab.

Gruß

Fritze

Hallo,

Das Problem ist ein anderes, ich verwende den PC standalone
und hab ein Programm am laufen welches mir gewisse Services in
meinem Netzwerk ausführt. Und als teil eines Services muss ich
den Nameserver zur Laufzeit ändern können, da damit Linux
automatisch den neuen Nameserver verwendet das ganze Programm
neu gestartet werden müsste was nicht sehr sinnvoll wäre.

Vielleicht erklärst Du erstmal in verständlichen Worten, was
Du gerne machen möhtest. Diese Beschreibung hier weicht doch
sehr weit von Deiner ursprünglichen Frage ab.

Gruß

Im prinzip ist es ja ganz einfach ich hab ein Testprogramm geschrieben dessen funktion habe ich oben erklärt. Ich muss nur eine Möglichkeit finden während ein Programm läuft den Nameserver zu ändern, so dass dieser auch effektiv verwendet wird.

Fritze