DevDNS - DNS Server zum entwickeln

Veröffentlicht: 22.07.2023

Ich hatte in letzter Zeit beim Entwickeln, vorallem in Kombination mit Kubernetes, das Problem das mehrere Anwendungen parallell liefen und diese über mehrere Domain Namen ansprechbar sein sollten. Jedesmal die Hosts Datei hierfür anpassen ist jedoch etwas nervig, daher habe ich einen DNS Server geschrieben, mit welchem es möglich ist die gewünschte IP Adresse im Domain mit zu übergeben. Der Dienst ist unter devdns.icu erreichbar. Wen noch interesiert wie dies genau umgesetzt wurde kann gerne den kompletten Artikel lesen.

Ursprünglich war geplant den kompletten DNS Server selber zu schreiben, da DNS ein sehr einfaches Protokoll ist wäre dies auch kein Problem gewesen, jedoch habe ich beim weiteren umschauen das Pipe Backend für den PowerDNS Server gefunden, hierbei läuft ein PowerDNS Server als DNS Server und dieser gibt die Anfragen dann an einen externen Dienst weiter, welcher dann den DNS Eintrag zurückliefert. Dieser Ansatz hat auch den Vorteil, dass PowerDNS für jeden Thread auch einen Pipe Dienst startet. Dadurch kann die Performance relativ leicht skaliert werden. Zusätzlich lassen sich über den PowerDNS Server auch Dinge wie Caching konfigurieren. Ich habe das Backend in Python geschrieben und dann in einem Docker container fertig gepackt. Zusätzlich zum Container gibt es auch ein Helm Chart, um den DNS Server schneller auf einem Kubernetes Cluster ausrollen zu können. Gebaut werden die Images sowohl für x86 als auch für ARM64 Architektur, sodass diese auf eigentlich allen Host Systemen laufen sollten. Für das ansprechen des des DNS Servers gibt es zwei Möglichkeiten, entweder die IP Adresse wird im Domain mit übergeben oder der Server gibt die localhost Adresse ( 127.0.0.1 zurück ) Ein paar Beispiele für Domains lauten:

Domain aufeglöste IP
webserver.devdns.icu 127.0.0.1
1.2.3.4.devdns.icu 1.2.3.4
this.is.my.webserver.1.2.3.4.devdns.icu 1.2.3.4
1.2.3x.4.devdns.icu 127.0.0.1

Wie bei eigentlich allen Projekten ist auch bei diesem der Quellcode wieder öffentlich auf dem Gitlab zu finden, der genaue URL lautet onasled.dev/jonasled/devdns

Neues Kommentar verfassen



captcha