====== shackDNS ====== **Entwickler / Ansprechpartner:** [[leute:xq]] **Service-Name:** [[http://shackdns.shack/|shackdns.shack]] **Repository:** [[https://git.shackspace.de/rz/shackdns|rz/shackdns]] **Konfiguration:** [[https://git.shackspace.de/rz/dns|rz/dns]] ===== Projektbeschreibung ===== Die Netzwerk-Infrakstruktur auf einem Blick: * Anzeige der aktuell vergebenen DHCP-Leases * Anzeige aller verfügbaren DNS-Einträge * Anzeige der aktuell im Space verweilenden Personen (opt-in) * Anzeige der Netzwerk-Infrastruktur (to be done) ==== Leases ==== In dieser Tabelle werden alle aktuell vom DHCP-Server vergebenen Leases angezeigt. Für jedes Lease werden folgende Daten angezeigt: * Gerätename * MAC-Adresse * Hersteller des PHYs * IP-Adresse des Geräts * Zeitpunkt des Erhalts des Leases * Zeitpunkt des letzten Refreshs. ==== Services ==== In dieser Tabelle werden die im shack vergebenen DNS-Einträge angezeigt. Für jeden Eintrag gibt es folgende Angaben: * Service / Hostname des Geräts * Kontaktadresse zum Service (to be done) * Primärer DNS-Eintrag * IP-Adressen * Zeitpunkt, zudem der Service das letzte mal erreichbar war * Verfügbarkeit (Erreichbarkeit des Service in den letzten 48h) (to be done) * Links (Links zu Wiki-Seite o.ä.) (to be done) ==== Infrastruktur-Dokumentation ==== //Hier könnte ihre Infrastruktur dokumentiert sein.// Geplant ist es, hier die Struktur der V-Lans sowie Subnetze graphisch darzustellen. ===== Einstellungen / Konfiguration ===== shackDNS wird komplett über das GitLab-CI und dem [[https://git.shackspace.de/rz/dns|rz/dns-Repository]] konfiguriert. ==== leases ==== Die Lease-Liste wird aus den Daten des [[https://www.isc.org/dhcp/|ICS DHCP Servers]], der auf infra01 deployed ist, bezogen. Diese wird alle paar Sekunden geparsed und dann in den Datensatz übernommen. ==== services ==== Die Liste an Services wird im Moment aus der [[https://git.shackspace.de/rz/dns/blob/master/bind/pri/db.shack|Bind-Konfiguration]] erzeugt. ==== shackles ==== shackles wird über die [[https://git.shackspace.de/rz/dns/blob/master/shackles/shackles.db|shackles.db]] konfiguriert. Jede Zeile stellt einen Eintrag für eine Einstellung dar. Zur Zeit ist nur eine Konfigurations-Option möglich: *user* mac *mac* Diese hinterlegt für den Benutzer *user* eine MAC-Adresse, die, falls verfügbar als Quelle für die Online-Information hinterlegt wird. ===== Entwicklung ===== Das Projekt besteht aus einem Server-Backend in C# ohne Framework und benötigt [[https://github.com/JamesNK/Newtonsoft.Json|Newtonsoft.Json]] sowie eine .NET/Mono-Runtime mit Support für .NET 4.5. Das Frontend ist in HTML/CSS/JavaScript entwickelt und besitzt zur Zeit noch keine mobile Ansicht. ==== Deployment ==== Der Service läuft zur Zeit auf infra01, da dieser Host die meisten V-LANs direkt erreichen kann und kein Routing benötigt. Die Software ist unter /opt/shackDNS installiert und greift direkt auf die benötigten Dateien zu. Diese sind in der /opt/shackDNS/shackDNS.cfg eingestellt. Zudem wird über eine nginx-Konfiguration unter /etc/nginx/sites-enabled/shackdns.shack ein Reverse-Proxy konfiguriert, der den shackDNS-Service über den normalen HTTP-Service anbietet. Der Service selbst ist als systemd-Service konfiguriert, dieses File liegt unter /etc/systemd/system/shackDNS.service. Das Deployment kann, mit ausreichend Rechten, direkt via "**make deploy**" durchgeführt werden. Dies kopiert die benötigten Dateien aus dem Repository auf infra01 und startet den Service neu. {{tag> software infrastructure computing networking shackoperations}}