[gelöst] attr global dnsServer & Hosts-Datei

Begonnen von ThoTo, 14 Oktober 2017, 23:59:05

Vorheriges Thema - Nächstes Thema

ThoTo

Hallo zusammen!

Ich hatte bis dato, um Blockaden zu verhindern, meinen internen DNS via attr global dnsServer festgelegt.

In den letzten Tagen bin ich auf eine Docker-Umgebung umgestiegen und habe dabei einige Services in eigenständige Container ausgelagert.
Aus FHEM heraus rufe ich die Services zB via HTTP-GET auf:

sub HttpRequest($)
{
my ($url)= @_;

HttpUtils_NonblockingGet({ url=>$url, callback=>sub($$$) { my ($hash, $err, $data) = @_;; Log 1, "$err/$data" } })
}

{ HttpRequest("http://fhem_tools/MilightAPI?action=test") }


fhem_tools ist der Name des Containers, der via --link in "docker run" angebunden ist.
Dazu wird im Container von FHEM automatisch ein Eintrag in der Hosts-Datei hinzugefügt.

Problem dabei ist nun, dass solange attr global dnsServer gesetzt ist, der Eintrag in der Hosts-Datei ignoriert wird und somit der Link auf den Container nicht funktioniert:
DNS: No A record found/

Ist dieses Verhalten gewollt oder habe ich einen Denk- und/oder Konfigurationsfehler?


Danke Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

dev0


ThoTo

Danke für den Hinweis, somit ein beabsichtigtes Verhalten.

Wäre gut wenn bei gesetztem dnsServer Attribut zukünftig auch die Hosts Datei ausgelesen wird.

Spricht etwas gegen eine solche Implementierung??
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

dev0


ThoTo

Dann sollte das Thema jetzt im richtigen Forum sein.
Gerade für Docker-Deployments wäre die Abfrage der Hosts-Datei wünschenswert.


LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

dev0

Zitat von: ThoTo am 15 Oktober 2017, 11:35:32
Dann sollte das Thema jetzt im richtigen Forum sein.
Ja.

Leider hat unser SMF Board das Manko, dass ein verschobener Beitrag den Abonenten nicht (per eMail) signalisiert wird. Wenn der Maintainer nach ein paar Tagen nicht reagiert, dann kann man ihn auch per PN/Email auf den Beitrag hinweisen. Sorry, ist zZ. leider so.

rudolfkoenig

ZitatSpricht etwas gegen eine solche Implementierung??
Prinzipiell ja: Implementierungsaufwand, Performance-Penalty, Code-Wachstum und damit Kompexitaet
Ob das alles die Interesse an dem Feature ueberwiegt, weiss ich aber noch nicht :)

Bevor ich Zeit investiere, wollte ich wissen, ob es Alternativen gibt, das Problem zu loesen, z.Bsp. mit IP statt Name, oder IP/Name einem DNS-Server mitteilen.

Wernieman

Dad Problem bei Docker .. die IP kann sich ändern, der Name eines Containers wird nicht.

Wenn Du aber kein DNS-Server in FHEM angiebst, sollte es doch funktionieren, da Du dann das Normale Verhalten des Containers verwendests ... oder?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ThoTo

@rudolfkoenig
Docker vergibt den Containern nach dem Start in aufsteigender Reihenfolge IP-Adressen, quasi zufällig.
Sinn ist, dass die Container untereinander nur über den Container-Namen bzw. einen Alias ansprechbar sind - genau das ist der Eintrag in der Hosts-Datei.
Das Vergeben einer festen IP oder eines DNS-Eintrages wären möglich, aber widerspricht wohl der gedachten Architektur  :-X

@Wernieman
Korrekt. Dann sind DNS-Abfragen aber wieder blockierend.
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

Frank_Huber



Zitat von: ThoTo am 18 Oktober 2017, 18:10:26
@rudolfkoenig
Docker vergibt den Containern nach dem Start in aufsteigender Reihenfolge IP-Adressen, quasi zufällig.
Sinn ist, dass die Container untereinander nur über den Container-Namen bzw. einen Alias ansprechbar sind - genau das ist der Eintrag in der Hosts-Datei.
Das Vergeben einer festen IP oder eines DNS-Eintrages wären möglich, aber widerspricht wohl der gedachten Architektur  :-X

@Wernieman
Korrekt. Dann sind DNS-Abfragen aber wieder blockierend.

Dein erster Teil ist etwas widersprüchlich.
Ob ich jetzt eine name zu ip Kombi in die hosts eintrage oder einen dns Eintrag mache kommt prinzipiell aufs gleiche raus.
Nur dass die hosts nicht mit dem global dns Attribut zusammenspielt.
Ich kenne Docker nicht im Detail, aber wie du es beschreibst scheint es ja mittelalterliche Methoden zu verwenden...



Gesendet von meinem S3_32 mit Tapatalk


ThoTo

Der Eintrag in der Hosts-Datei ist dynamisch und betrifft nur Docker Container untereinander, hat also nichts mit DNS (bzw. dem konfigurierten Nameserer) zu tun.
Schau mal hier bei Interesse: https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/

Mit mittelarlterichen Methoden hat das nichts zu tun, nennt sich nur Microservice Architektur.
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

rudolfkoenig

Habs implementiert, man muss dazu "attr global dnsHostsFile filename" setzen. Aus der commandref:
ZitatdnsHostsFile
If dnsServer is set, check the contents of the file specified as argument. To use the system hosts file, set it to /etc/hosts on Linux/Unix/OSX and C:\windows\system32\drivers\etc\hosts on Windows.

Habs unter Windows nicht getestet.
Und mit IPV6 funktioniert es nicht.

ThoTo

Zitat von: rudolfkoenig am 18 Oktober 2017, 21:50:17
Habs implementiert, man muss dazu "attr global dnsHostsFile filename" setzen.

Vielen Dank, Rudi!
Ich werde es baldigst testen und dir noch eine finale Rückmeldung geben - vielleicht schaffe ich den Windows-Test auch gleich!
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

Frank_Huber

Zitat von: ThoTo am 18 Oktober 2017, 20:19:34
Der Eintrag in der Hosts-Datei ist dynamisch und betrifft nur Docker Container untereinander, hat also nichts mit DNS (bzw. dem konfigurierten Nameserer) zu tun.
Schau mal hier bei Interesse: https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/

Mit mittelarlterichen Methoden hat das nichts zu tun, nennt sich nur Microservice Architektur.
Ah, OK.
Ich dachte jetzt an die klassische hosts Datei wie man sie früher in NT Netzwerken oft verwendet hat.

Gesendet von meinem S3_32 mit Tapatalk


dev0

Zitat von: rudolfkoenig am 18 Oktober 2017, 21:50:17
Und mit IPV6 funktioniert es nicht.
Siehst Du die Notwendigkeit nicht oder ist es Dir zu aufwendig?
Zumindest wäre es mAn sinnvoll das in der commandref zu erwähnen, sonst würde ich erwarten, dass es mit IPv6 funktioniert.