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