Entwicklung eines Parsers von BIND

Werbung
Entwicklung eines Parsers von BINDKonfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht
Seminarvortrag
15.01.2015
Inhaltsverzeichnis
1. Motivation
2. Domain Name System (DNS)
a. Domain Name
b. Nameserver
c. Anfrage an den Nameserver
3. Migration
a.
b.
c.
d.
e.
f.
Anforderungen
Ruby
Datenbank
Migrationsablauf
Probleme
Optimierung
4. Ausblick
5. Fazit
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Motivation
Motivation
Bisher:
•
•
•
•
Komplettes System vom Hostmaster manuell verwaltet P
E-Mail bei Änderungen -> entsprechende Dateien anpassen P
Keine automatische Validierung P
Keine automatische Versionskontrolle P
Ziele:
•
•
•
•
•
Kompletten Datenbestand in MySQL-Datenbank migrieren
Einfache Verwaltung
Nutzerschnittstelle mit Rechteverwaltung anbieten
Web-Portal zur Vereinfachung
Versionskontrolle bei Export
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Domain Name System (DNS)
Domain Name System (DNS)
• 1983 von Paul Mockapetris entwickelt
• Hauptaufgabe: Domain Namen in IP-Adressen übersetzen
 Einfach zu merken
 Einfache Änderungen
• Einer der wichtigsten Diensten in heutigen Netzwerken
DNS
www.rwth-aachen.de
137.226.107.63
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Domain Name System (DNS) - Domain Name
• Name zu einer IP-Adresse
• Korrekte Schreibweise: fully qualified domain name (FQDN)
 Endet immer mit einem Punkt
 Subdomains durch Punkte getrennt
• Baumstruktur mit Domains




Top-Level Domain geografisch oder organisatorisch
Second-Level Domain beginnt eigentliche Namensgebung
Gegebenenfalls weitere Subdomains
Zur Vereinheitlichung auf Dienst enden
.
heise
de
org
fh-aachen
rwth-aachen
com
uk
www
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
org
org
Domain Name System (DNS) - Nameserver
• Für Namensverwaltung zuständig
Nameserver
• Konfigurationsdatei und Zonendateien
Konfigurationsdatei
• Master- und Slavezonen
 Masterzonen selbst verwaltet
 Slavezonen werden „kopiert“
Zone
Zone
Zone
Zone
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Record
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Domain Name System (DNS) – Nameserver - Konfigurationsdatei
• Einstellungen für Nameserver (BIND)
• Import anderer Dateien
• Rechnernamen
• Sichten
• Zonen
 Zonentyp
 Pfad
 Benachrichtigungen
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Domain Name System (DNS) – Nameserver - Zonendateien
• Für Namensauflösung benötigt
• Beinhaltet beliebig viele Records
• Wird bei Fehlern nicht geladen
• Komplexe Syntax
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Domain Name System (DNS) – Nameserver – Resource Records
• Nötige Informationen zur Übersetzung
• Aufbau immer gleich





Zu übersetzender Domain Name
Optionale Time to live
Optionale Protokollgruppe
Recordtyp
Recorddaten
Domain Name
TTL
Klasse
Typ
Daten
www.test.de.
1234
IN
A
192.168.178.1
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Domain Name System (DNS) – Anfrage an den Nameserver
• Autoritative Antwort
 Antwort ist dem Nameserver bekannt
 Schnelle Antwort
• Nicht-Autoritative Antwort
 Antwort liegt auf unbekanntem Nameserver
 Antwort dauert länger
Anfrage
Client
nicht-autoritative
Antwort
Nameserver
nicht
bekannt
autorative
Antwort
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
bekannt
Cache
Migration
Migration
• Erstellen eines Parsers
• Mehrere Monate täglich laufen
 Parallelsystem
 Fehlerfrei und stabil
• Parser schafft Grundvoraussetzung
DNS
Parser
SQL
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Migration
ns1
aktueller
Nameserver
Cronjob
Kopierscript
halo
Maschine, auf
der gearbeitet
wird
komdb
Server mit
MySQLDatenbank
Migrationsscript
Exportscript
ns3
noc-backend
BackendMaschine zur
Verwaltung
Git
Repository
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
neuer
Nameserver
ns4
neuer
Nameserver
Migration - Anforderungen
• Komplett neue Struktur für Rechtesystem
• Automatische Erstellung von PTR Records
• Direkte Fehlerprüfung mit Abschlusslog
• 12 verschiedene Recordtypen beachten
• Automatisch erstellte Records in jeder Zone
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Migration - Ruby
• Dynamische und freie Programmiersprache
• Einfach anzuwenden und produktiv einzusetzen
• Leicht verständliche Syntax
• Anbindung an Frontend
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Migration - Datenbank
• Hostnamen in Baumstruktur
• Polymorphische Beziehung für Records
• PTR Records zu Adressrecords zuteilen
• Unterscheidung von Zonen zwischen Master und Slave
• Beliebig viele Records für Zonen
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Migration - Migrationsablauf
• Kopieren des aktuellen Datenbestands
• Anlegen der Logdatei
• Datenbank zurücksetzen
• Konfigurationsdatei einlesen und entsprechende Zonen anlegen
• Zonen einzeln initialisieren und importieren
• Logdatei mit Fehlern per E-Mail senden
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Migration - Probleme
• Records in falscher Zone
• Nicht beachtete Recordtypen
• TXT Records über mehrere Zeilen
• CERT Records haben keinen Domain Namen
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Migration - Optimierung
• Single Mass Insert für Records
 Lokal speichern
 ID Zähler
 Validierungen vorher abfragen
• Neuer Datenbankserver
• Single Mass Insert Hostnamen und Zonen
 Komplizierte Umstellung wegen Validierungen
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Ausblick
Ausblick
• DNS-Admin
 Rechtesystem
 Zugriff auf verschiedene Zonen und Recordtypen
 Bestätigen der Änderungen
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Fazit
Fazit
• Parser wichtiger Bestandteil für Umstellung
• Frontend für Nutzer
• Hostmaster entlastet
• Einfach erweiterbar
• Neue Möglichkeiten
Entwicklung eines Parser von BIND-Konfigurationsdateien zur Migration in eine
MySQL-Datenbank
Markus Dienstknecht | 15.01.2016
Vielen Dank
für Ihre Aufmerksamkeit
Herunterladen