Ich bin gerade dabei, unsere Anwendung in kleinere Dienste aufzuteilen. Ich füge die neuen Dienste auf einem Backend-Server hinzu (d. h. nicht öffentlich zugänglich) und mache dann Einträge in der Datei /etc/hosts unserer Webserver. Beispieleintrag
10.160.x.xx newservice.mydomain.com
Dieser Ansatz funktioniert. Aber wenn ich den Dienst vom Webserver aus teste, sehe ich, dass Ping funktioniert, nicht nslookup. Also ping newservice.mydomain.com
ist es erfolgreich, nicht nslookup newservice.mydomain.com
. Warum ist das so? Wie kann ich dafür sorgen, dass auch nslookup funktioniert?
Antwort1
nslookup
fragt die DNS-Server, und diese haben keine Kenntnis von Ihrer lokalen hosts
Datei, daher lösen sie die darin enthaltenen Einträge nicht auf. Wenn Sie möchten, dass Ihre hosts
Datei über DNS-Lookups zugänglich ist, müssen Sie einen DNS-Server verwenden, der Kenntnis davon hat (der beispielsweise so systemd-resolved
konfiguriert werden kann, dass er die Datei analysiert).
Die Verwendung eines hosts
Eintrags scheint hier jedoch überflüssig, da jede Compute Engine-Instanz über den standardmäßigen Google Cloud DNS-Server () aufgelöst werden kann 169.254.169.254
. Der Name jeder Compute Engine lautet [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal
(weitere Infos zum internen DNS gibt es hier), Sie sollten also unter diesem Namen auf Ihre Server zugreifen können.