300 - Plattformübergreifende Dienste in ein Netzwerk integrieren

Marktplatz - WPAD

image.png

Was passiert bei DHCP Discovery?

Kurzfassung

Bei DHCP wird eine bestimmte Option weitergegeben

WPAD DHCP Option = 252

Diese Option enthält den DNS Namen oder direkt die IP auf der die WPAD Konfiguration liegt

Value = «example.com»

Die normale Abfrage erfolgt über den Link auf der rechten Seite.

Webserver = «http(s)://example.com/wpad.dat»

Was passiert bei DNS Discovery?

Kurzfassung

Der Host führt einen Reverse-Lookup auf sich selbst durch und findet so seinen FQDN heraus.

1.2.3.4 è host-1-2-3-4.pop1.isp.net

Der Host prüft dann, ob es einen WPAD-Eintrag in der gleichen Domain gibt.

wpad.pop1.isp.net

Wenn er nichts findet, sind die meisten Clients so konfiguriert, dass sie einen Fallback verwenden, d.h. sie prüfen, ob die übergeordnete Domain einen WPAD-Eintrag hat.

wpad.isp.net

Wurde der Eintrag gefunden, wird die WPAD-Datei wie bei DHCP abgerufen.

Webserver = «http(s)://wpad.isp.net/wpad.dat»

Vorteile

Nachteile

Automatische Konfiguration

Sicherheitsrisiken (Überwachung von Traffic)

Netzwerkmanagement (Zentrales Steuern des Internetzugriffes)

Fehlkonfigurationen

Flexibilität (Änderungen sind schnell umsetzbar)

Komplexität

Entstehungsgeschichte:

Das Web Proxy Auto-Discovery Protocol (WPAD) wurde in den späten 1990er Jahren entwickelt, um die automatische Erkennung von Web-Proxy-Servern in Netzwerken zu ermöglichen und die Konfiguration von Client-Computern zu vereinfachen. Es wurde ursprünglich von Microsoft unterstützt und in Produkten wie Internet Explorer integriert, bevor es zu einem weit verbreiteten Standard für die automatische Proxy-Konfiguration in verschiedenen Betriebssystemen und Browsern wurde.

Marktplatz - DHCP

image.png

Marktplatz - Kollaboration

image.png

Zweck

Kollaborationstools wie Teams und Slack dienen dazu, die Kommunikation und Zusammenarbeit in
Teams bzw. Unternehmen zu erleichtern. Kollaborationstools bieten unter anderem folgende Funktionen:

Sie bieten auch Integrationen mit anderen Tools, um die Effizienz und Produktivität bei der
Zusammenarbeit (→ Kollaboration) zu steigern.

Entstehung

Es ist schwer zu bestimmen, welches das erste Kollaborationstool war. Tools für die Zusammenarbeit
gibt es schon seit eh und je, beispielsweise kann man die E-Mail-Kommunikation als grobe Form von
Kollaboration sehen.

Ein Pionier für die Kollaboration ist Lotus Notes von IBM, welches in den 1980er Jahren entwickelt
wurde. Lotus Notes ermöglicht das Erstellen, Teilen und gemeinsame Bearbeiten von Dokumenten.
Zudem ermöglichte Lotus Notes, einen Gruppenkalender zu führen. Dieses Kollaborationstool gibt es
heute noch, jedoch wird es seit 2019 unter dem Namen HCL Notes weiterentwickelt.

Funktionsweise

Heute werden die meisten Kollaborationstools als Software as a Service (SaaS) angeboten. Die
Infrastruktur von Skype for Business, dem Vorgänger von Teams, konnte man noch On-Premise
betreiben. Diese Möglichkeit wurde jedoch mit dem Rollout von Teams abgeschafft und kann nur
noch als SaaS bezogen werden.

image.png

Produkte

image.png

Microsoft Teams

Teams ist eine Kollaborationsplattform, welche es Usern
ermöglicht, in real-time miteinander zu kommunizieren
und arbeiten. Es ermöglicht Chat, Videoanrufe,
Dateifreigabe, Aufgabenverwaltung und die
Zusammenarbeit an Dokumenten in einer einzigen
Software. Teams ist das weitverbreitetste
Kollaborationstool und wird vor allem von Schulen und
Unternehmen verwendet. 

image.png

Slack

Slack ist hauptsächlich eine Messaging-Plattform,
welche für den Datei- & Informationsaustausch
verwendet wird. Man kann verschiedene Kanäle und
Gruppen erstellen, was die Organisation und den
Überblick enorm erleichtert. Gleich wie bei Teams ist
Slack nur als SaaS erhältlich und hat verschiedene
Abonnementmöglichkeiten. 

image.png

Google Workspace

Google Workspace ist eine Suite von verschiedenen
Kollaborationstools im Web (SaaS). Folgende Tools sind
die wichtigsten:
Gmail                    Mail-Lösung
Google                  Drive Cloudspeicher & Dateifreigabe
Google                  Meet Videokonferenzplattform
Google                  Calendar Kalender-Lösung

Anwendungsfall

Ein neuer Virus, COVID-20, bricht aus. Alle Mitarbeiter müssen wieder ins Homeoffice verlegen. Die
Arbeitsmoral und die Produktivität sinken, Projekte werden verzögert. Mitarbeiter kommen nicht
mehr in den Austausch miteinander.
Durch die Einführung von MS Teams kommt man wieder täglich in den Austausch mit anderen
Mitarbeitern. Dazu könnte man zum Beispiel ein Daily Standup einführen. (Projekt-)Meetings kann
man Dank Teams (fast) wie gewohnt durchführen. Die Zusammenarbeit kann durch das Teilen von
Dateien ebenfalls gewährleistet werden.

Schauen sie nur, wie fröhlich alle Mitarbeiter wieder sind:

image.png

Plattformübergreifend?

Natürlich! Kollaborationstools würden ihren Zweck nicht erfüllen, wenn ein Teamkollege mit einem
MacOS ausgeschlossen werden würde.
Die Tools sind meistens auf jedem gängigen Desktop OS (Windows, MacOS, Linux), sowie Mobile OS
(iOS, Android) erhältlich. Zudem kann man sich im Web einloggen und eine teils abgespeckte Version
ist im Browser erhältlich.

Marktplatz - Mailempfang

Zweck

E-Mail ist eine der am häufigsten verwendeten Kommunikationsmethoden in der heutigen digitalen
Welt und wird für persönliche und geschäftliche Zwecke genutzt. Der Mailempfang dient dazu, EMails von anderen Personen oder Systemen zu empfangen und in einem E-Mail-Postfach anzuzeigen,
damit man sie lesen und darauf antworten kann. 

image.png

Entstehung

E-Mail ist eine wichtige Erfindung für die Kommunikation. Früher haben die Leute Nachrichten per
Brief, Telegramm oder Fax verschickt. Dann, Ende der 1980er Jahre, hat sich die E-Mail auf der
ganzen Welt verbreitet, besonders durch das Arpanet. Ein Mann namens Ray Tomlinson gilt als
Erfinder, weil er 1971 den ersten elektronischen Brief verschickt hat. Heute benutzen wir oft SMTP,
um E-Mails zu verschicken, und es gibt verschiedene Wege, um E-Mails abzurufen, wie zum Beispiel
POP3, IMAP und Webmail.

Funktionsweise

Die Funktionsweise des Mailempfangs beinhaltet das Synchronisieren der E-Mails von einem
Mailserver zu einem Mail-Client. Es basiert auf verschiedenen Protokollen, die für den Austausch von
E-Mails zwischen Servern und Clients verwendet werden. Das häufigste Protokoll für den
Mailempfang ist das Internet Message Access Protocol (IMAP) oder das Post Office Protocol (POP).

Vergleich IMAP / POP

IMAP

IMAP ermöglicht es, E-Mails auf dem Server zu lassen und sie synchronisiert zwischen Server und
Client zu halten. Dies ist nützlich, wenn man von mehreren Geräten auf ein E-Mail-Konto zugreifen
möchte, da der Zustand der E-Mails überall gleich bleibt.

POP

Bei POP werden E-Mails vom Server auf den Client heruntergeladen und vom Server gelöscht. Es ist
eine einfachere Methode, die für Offline-Zugriff geeignet ist. Ein Anwendungsfall für POP3 ist das
Abrufen von E-Mails aus einem Ticketsystem. Dabei ist es nicht erforderlich, dass die E-Mails der
bearbeiteten Tickets weiterhin auf dem Mailserver bestehen bleiben.

IMAP POP3
Verbindung auf Port 143 (Verschlüsselt: 993) Verbindung auf Port 110 (Verschlüsselt: 995)
Dauerhafte Verbindung Verbindung nur zum E-Mail-Abruf
Antwort auf Kommandos wird nicht abgewartet Kommandos benötigen sofortige Antwort
E-Mails bleiben auf dem Server, bis sie gelöscht werden E-Mails werden nach erfolgreichem Abrufen vom Mailserver gelöscht
Abruf der Nachrichten von mehreren Clients möglich Abruf der Nachrichten nur von einem einzige Client möglich
Nur gewünschte Mails werden abgerufen Alle erhaltenen Mails werden abgerufen

image.png

Produkte

Es gibt eine Vielzahl von E-Mail-Client-Software und Dienstleistern, die den Mailempfang
ermöglichen. Einige der bekanntesten sind Microsoft Outlook, Mozilla Thunderbird, Mailbird und
viele mehr. Darüber hinaus bieten verschiedene Unternehmen E-Mail-Hosting-Dienste an, die den
Mailempfang auf Serverebene ermöglichen.

Anwendungsfall

Ein Anwendungsfall für plattformübergreifenden Mailempfang könnte die Verwaltung von GeschäftsE-Mails sein. Ein Mitarbeiter, der mehrere Geräte und Plattformen nutzt, muss in der Lage sein, EMails nahtlos auf verschiedenen Geräten wie Desktops, Laptops, Tablets und Smartphones zu
empfangen und zu verwalten. Eine plattformübergreifende Maillösung würde es ermöglichen, dass
alle eingehenden E-Mails unabhängig vom Gerät oder der Plattform sofort empfangen und
bearbeitet werden können. Dies würde die Effizienz und Produktivität in geschäftlichen
Kommunikationsprozessen verbessern, unabhängig davon, welches Gerät gerade genutzt wird.

Plattformübergreifend?

E-Mails können von verschiedenen Geräten und Betriebssystemen empfangen werden, da
standardisierte Protokolle wie SMTP, POP3 und IMAP von Mail-Clients auf allen Betriebssystemen
unterstützt werden. Dies ermöglicht eine reibungslose und universelle E-Mail-Kommunikation,
unabhängig vom verwendeten Gerät oder Betriebssystem.

Marktplatz - Datenbanken

Wozu dient’s?

Für effiziente, dauerhafte und fehlerfreie Speicherung großer Datenmengen sowie in der
bedarfsgerechten Bereitstellung benötigter Informationen.

Wie entstand’s?

IBM hat die ersten grossen DBMS (Datenbank Management System) erfunden. (1970)
NoSQL kam in den 2000ern richtig auf.

Wie funktioniert’s?

image.png

Marktplatz - HTTP

1989-XXXX

HTTP wurde zusammen mit dem WWW für Zugriffe auf Webserver entwickelt. Durch die Standardisierung des Protokolls wird es bis heute in der HTTPS Variante eingesetzt. Mit sogenannten Methods können verschiedene Arten von Anfragen an einen Server gesendet werden. 

Client

Jeglicher moderner Browser oder cli.

Server

nginx, Apache, Flask, IIS

Marktplatz - GOPHER

1991-1993

Daten Zugriff ohne Authentifizierung für Universitäten und Regierungen. Als Ersatz für das aufwendige File Transfer Protokoll. Nachdem OS Visuell besser wurden und FTP sich weiterentwickelte starb das Protokoll aus. Unteranderem weil Spezielle Browser für den Zugriff nötig waren da HTTP nicht verwendet wurde.

Client

Veronica. Ein Browser mit den Nötigen Tools.

Server

Gopherd

Marktplatz - Mailversand

Wozu dient’s?

Der Mailversand ist eine essenzielle elektronische Form der Kommunikation für die zwischen zwei Benutzern, welches durch das Internet oder Private Netzwerk versendet werden. Ausserdem dient es zu wohl als Austausch von Informationen, Dateien und Dokumenten.

image.png

Wie entstand’s?

1965

Vermutlich wurde das erste E-Mail-System «Mailbox» am Institut für Technologie in Massachusetts
in den USA verwendet. Die Methodik war an diesem Zeitpunkt, dass die Kollegen an den Computern
sich gegenseitig eine Nachricht hinterlassen konnten, welches beim nächsten Login angezeigt wird.

1971

1971 versandte Ray Tomlinson die erste E-Mail im heutigen Sinne, wobei er das @-Zeichen
auswählte, um den lokalen Teil von der Domain zu trennen. Er schickte sich selbst eine Nachricht
und kreierte somit die erste E-Mail-Adresse der Welt: "tomlinson@bbntenexa".

1984

Auch in Deutschland wurde die erste E-Mail empfangen. Michael Rotert von der Universität
Karlsruhe empfing unter seiner eigenen E-Mail-adresse «rotert@germany» eine E-Mail aus den USA,
welches 1 Tag zuvor geschickt wurde. Die Antwort kam vom der US Plattform CSNET und lautete
«Wilkommen in CSNET! Michael, this is your official welcome to CSNET.»

1996

Auch mit dem Bereitstellen des Internetszugangs in den 90er, bereitstellte sich Mit Hotmail (heute
Outlook) stand der Allgemeinheit der erste kostenfreie E-Mail-Anbieter zur Verfügung! Nun konnte
man sich selbst eine Adresse anlegen und mit verschiedenem Benutzer kommunizieren. In kürzester
Zeit stellten sich weitere Provider auf den Markt.

Heute

Heute ist der Mailvesand nicht mehr wegzudenken. Nachrichten, Dateien und Dokumente werden
alltäglich über die Breite Welt versendet. Im Privaten, sowie im Geschäftlichen Teil, ist der
Mailversand sehr praktisch für den Austausch.

Wie funktioniert’s?

Simple Mail Transfer Protocol (SMTP)

image.png

Überlegen Sie sich einen sinnvollen Anwendungsfall

Ein sinnvoller Anwendungsfall für den Mailversand ist beispielsweise die Kommunikation in einem Unternehmen. Mitarbeiter können E-Mails verwenden, um Informationen auszutauschen, Projektupdates zu teilen, Termine zu vereinbaren und wichtige Dokumente zu versenden. Durch die Verwendung von E-Mail können Mitarbeiter effizient kommunizieren, ohne physisch am selben Ort sein zu müssen.

image.png

Plattformübergreifend?

der Mailversand ist in der Regel plattformübergreifend. E-Mails können von verschiedenen Geräten und Betriebssystemen gesendet und empfangen werden, solange sie über einen Internetzugang verfügen und mit einem kompatiblen E-Mail-Client oder Webmail-Dienst verbunden sind. Dies ermöglicht eine nahtlose Kommunikation zwischen Benutzern unabhängig von ihren Geräten oder Betriebssystemen.

image.png

Marktplatz - FTP

Aufgabe / Dienst

Wie der Name (Dateitransfer) schon sagt, ermöglicht er es den Austausch von Befehlen und Daten zwischen einem Computer / Programm und dem Server.

image.png

Entstehung

Das FTP-Protokoll wurde damals 1971 von einem IT-Student mit dem Namen Abhay Bhushan entwickelt. Ursprünglich sollte das Protokoll den Austausch zwischen Computer im ARPANET ermöglichen.

image.png

ARPANET: Das Arpanet war damals ein Computernetzwerk, welches von der US AirForce genutzt worden ist, es ist bekannt als der Vorgänger des heutigen Internets

Funktionalität

image.png

Die Verbindung zu einem FTP-Server, verläuft wie oben abgebildet, über 2 Kanäle.
Datenkanal: Hier werden Dateien übertragen.
Steuerkanal: Hier werden Kommandos und Befehle übertragen.

FTP Produkte

Hier in der Tabelle sieht man 9 verschiedene Produkte, Lösungen welche man beziehen kann, wenn man einen FTP Server betreiben möchte.

Name Erscheinungsjahr Entwickler Plattform Kosten
Commander One 2015 Eltima Software macOS  29,99 $
Cyberduck 2002 Iterate Windows, macOS Kostenfrei
FileZilla 2001 Tim Kosse Windows, macOS, Linux Kostenfrei
FireFTP 2004 Mime Cuvalo Plattformübergreifend Kostenfrei
ForkLift  2007 BinaryNights macOS 29,95 $
SmartFTP 2001 SmartSoft Ltd. Windows 40$ / Jahr
Transmit 1998  Panic macOS 45 $
WinSCP 2000 Martin Prikry Windows Kostenfrei
WISE-FTP 1998 AceBIT Windows 50 $ 
Anwendungsfall

Typischerweise benutzt man den FTP-Server, wenn man eine sehr grosse Menge an Dateien versenden/hochladen möchte.
Ablauf:

  1. Der Benutzer stellt per IP-Adresse und Port, eine Verbindung zum FTP-Server her. Der Server antwortet anschliessend darauf, das die Verbindung erfolgreich war.
  2. Der Benutzer authentifiziert sich nun auf dem Server mit Benutzername und Passwort.
  3. Der Benutzer kann nun Befehle auf dem FTP-Server ausführen, z.B. hochladen, herunterladen oder löschen.

Anwendungsfall wäre nun, wenn jemand ganz viele Bilder von einem Firmenevent versenden möchte, funktioniert dies über das Mail z.B. nicht. Nun kann der Benutzer, diese Bilder auf den FTP-Server hochladen. All diejenigen, welche diese dann benötigen, können sich auf den Server anmelden und diese Bilder herunterladen.

image.png

Plattformübergreifend

Dies ist von Produkt zu Produkt unterschiedlich, wie oben in der Tabelle dargestellt, kann man dort sehen welches Produkt für welche Plattformen geeignet ist.

DHCP-Auftrag

Aufgabenstellung

Erstellung eines Netzwerklabors

1. Vorbereitung der Geräte:
2. Netzwerksetup:

Einrichtungen und Konfiguration des DHCP-Servers

1. Server-Setup auf Debian:
2. Server-Konfiguration:
3. Überprüfung:

Erweiterte Konfiguration und Analyse

1. DHCP-Relay:
2. Vergleich von DHCP-Implementierungen:
3. Fortgeschrittene Server-Optionen:

image.png

DHCP Auftrag.excalidraw

Theorie

Grundlagen zu DHCP

Das Dynamic Host Configuration Protocol (DHCP) ist ein Netzwerkprotokoll, das in IP-Netzwerken eingesetzt wird, um Computern und anderen Geräten automatisch IP-Adressen und weitere notwendige Netzwerkinformationen zuzuweisen. Dieser Prozess erleichtert die Netzwerkverwaltung erheblich, da die manuelle Konfiguration von Netzwerkgeräten in großen und dynamischen Netzwerken umständlich und fehleranfällig wäre.

DHCP-Discover und DHCP-Offer

Der DHCP-Vorgang beginnt mit einem DHCP-Discover-Paket, das ein Client ins Netzwerk sendet, um einen DHCP-Server zu finden. Dieses Paket wird als Broadcast gesendet, da der Client zu diesem Zeitpunkt noch keine IP-Adresse hat. DHCP-Server im Netzwerk antworten darauf mit einem DHCP-Offer-Paket, das dem Client eine IP-Adresse und eventuell weitere Konfigurationsparameter wie Subnetzmaske, DNS-Server und Standardgateway anbietet.

DHCP-Request und DHCP-Acknowledgment

Nachdem der Client ein oder mehrere Angebote erhalten hat, wählt er eines aus und sendet einen DHCP-Request zurück an den Server, um das Angebot anzunehmen. Der DHCP-Server bestätigt die Zuteilung der IP-Adresse und der Netzwerkeinstellungen mit einem DHCP-Acknowledgment. Erst nach diesem Schritt ist der Client vollständig im Netzwerk konfiguriert und kommunikationsfähig.

DHCP-Relay

In größeren Netzwerken oder Netzwerken mit mehreren Subnetzen ist es oft notwendig, DHCP-Anfragen über Router hinweg weiterzuleiten, da Broadcasts nicht durch Router weitergeleitet werden. Hier kommt das DHCP-Relay ins Spiel. Ein DHCP-Relay-Agent leitet DHCP-Pakete zwischen Clients und Servern über verschiedene Netzwerksegmente hinweg. So können Clients in einem Subnetz IP-Konfigurationen von einem DHCP-Server in einem anderen Subnetz erhalten.

DHCP-Optionen

DHCP ermöglicht die Verwendung verschiedener Optionen, um eine Vielzahl von Konfigurationsparametern zu übermitteln. Zu den gängigen Optionen gehören Router (Standardgateway), DNS-Server, NTP-Server und viele andere. Diese Optionen erlauben eine flexible und detaillierte Konfiguration der Client-Geräte und unterstützen spezifische Netzwerkanforderungen.

Aufbau der Labor Umgebung

vogelsrv42001 - Router (VYOS)

image.png

Grundkonfiguration

Aktivierung der permanenten Konfiguration

Nach dem Einloggen mit den Zugangsdaten (Benutzername: vyos, Passwort: vyos) wurde VyOS dauerhaft auf der Festplatte installiert, indem den Anweisungen des Installationsassistenten gefolgt wurde. Dies gewährleistet, dass die Konfiguration auch nach einem Neustart erhalten bleibt.

install image
Einrichten der Netzwerkschnittstellen

Mit der abgeschlossenen Installation begann die Konfiguration der Netzwerkschnittstellen, Routing-Protokolle und NAT-Regeln:

1. Starten des Konfigurationsmodus.

configure

2. Konfiguration der Netzwerkschnittstellen mit festen IP-Adressen oder über DHCP und Zuweisung passender Beschreibungen:

set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address 192.168.1.1/26
set interfaces ethernet eth1 description 'VOGEL_INTNET'
set interfaces ethernet eth2 address 192.168.1.65/26
set interfaces ethernet eth2 description 'VOGEL_DHCP_RELAY'

3. Einrichten einer statischen Route für den Internetzugang durch Ersetzen von <Your_Gateway_IP> mit der IP des Gateways.

set protocols static route 0.0.0.0/0 next-hop <Your_Gateway_IP>

4. Einrichten von NAT-Regeln, um internen Netzwerken Zugang zum Internet zu ermöglichen:

set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/26
set nat source rule 100 translation address masquerade
set nat source rule 101 outbound-interface name eth0
set nat source rule 101 source address 192.168.1.64/26
set nat source rule 101 translation address masquerade

5. Anwenden und Speichern der Konfiguration:

commit
save
Überprüfung der Konfiguration

Nach dem Speichern der Konfiguration erfolgte eine Überprüfung, um die korrekte Einrichtung sicherzustellen:

1. Überprüfung der Schnittstellenkonfiguration mittels Anzeige aller Konfigurationen der Schnittstellen, inklusive der zugewiesenen IP-Adressen und Beschreibungen.

show interfaces

image.png

2. Testen der Konnektivität und Routing-Einstellungen durch erfolgreiches Pingen der IP-Adresse 8.8.8.8 (Google DNS), was die korrekte Funktion der statischen Route und Internetverbindung bestätigte.

ping 8.8.8.8

image.png

3. Überprüfung der NAT-Regeln, wobei der entsprechende Befehl die konfigurierten NAT-Regeln und ihre Details anzeigte, was bestätigte, dass das NAT korrekt eingerichtet wurde.

show nat source rules

image.png

vogelsrv42002 - Ubuntu-Server (ISC-DHCP)

image.png

Grundkonfiguration

Überprüfen der aktuellen Netzwerkkonfiguration (Normalerweise nicht nötig):

Öffnen eines Terminals auf dem Debian- oder Ubuntu-Server und Ausführen des Befehls ip a zur Anzeige der aktuellen Netzwerkeinstellungen und -schnittstellen.

ip a

image.png

Konfiguration der Netzwerkschnittstelle ens33

Ziel war es, die Schnittstelle ens33 mit einer statischen IP-Adresse einzurichten, durch Bearbeitung der Netplan-Konfigurationsdatei in einem Texteditor wie nano.

nano /etc/netplan/00-installer-config.yaml

Hinzufügen eines Abschnitts zur Datei, der ens33 eine statische IP-Adresse zuweist.

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.2/26]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [1.1.1.1, 1.0.0.1]
  version: 2
Anwenden der Netzwerkkonfiguration

Durch Ausführung des entsprechenden Befehls wurde ens33 mit der in der Netplan-Konfigurationsdatei festgelegten statischen IP-Adresse konfiguriert.

sudo netplan apply

Einrichten und Konfigurieren eines DHCP-Servers

ISC-DHCP-Server Installation

Zunächst erfolgte die Installation des ISC-DHCP-Servers durch Öffnen eines Terminals und Eingabe des Installationsbefehls.

sudo apt install isc-dhcp-server
DHCP-Server konfigurieren

Die Hauptkonfigurationsdatei dhcpd.conf wurde mit einem Texteditor wie nano bearbeitet, um den DHCP-Server zu konfigurieren.

nano /etc/dhcp/dhcpd.conf

Es wurde eine Basis-Konfiguration eingefügt, die eine Standard-Lease-Zeit und eine maximale Lease-Zeit festlegt. Ein Subnetz wurde definiert, das einen IP-Bereich für die DHCP-Clients bereitstellt.

# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}
Netzwerkschnittstelle für DHCP festlegen

Die isc-dhcp-server-Konfigurationsdatei wurde bearbeitet und die INTERFACES-Variable auf die entsprechende Schnittstelle gesetzt, in diesem Fall ens33.

nano /etc/default/isc-dhcp-server

image.png

DHCP-Server neu starten

Um die Änderungen anzuwenden, wurde der DHCP-Server neu gestartet.

sudo systemctl restart isc-dhcp-server
Überprüfung und Analyse

Es wurde ein Client im selben Netzwerk getestet, um sicherzustellen, dass der DHCP-Server korrekt arbeitet.

image.png

Konfiguration des DHCP-Servers mit Reservation

Die Hauptkonfigurationsdatei dhcpd.conf wurde erneut bearbeitet, um den DHCP-Server weiter zu konfigurieren.

nano /etc/dhcp/dhcpd.conf
# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}

host vogelsrv42010 {
 hardware ethernet 00:50:56:9e:c7:d7;
 fixed-address 192.168.1.9;
}

Es wurde eine spezielle Konfiguration hinzugefügt, die einem Gerät mit der MAC-Adresse 00:50:56:9e:c7:d7 immer die IP-Adresse 192.168.1.9 zuweist, wenn es eine DHCP-Anfrage stellt. Nachdem diese Einstellung vorgenommen wurde, wurde der DHCP-Server neu gestartet, um die Änderungen zu übernehmen.

sudo systemctl restart isc-dhcp-server

image.png

vogelsrv42010 / vogelsrv42011 - Windows-Server

image.png

image.png

Erweiterte Konfiguration und Analyse

Einrichtung eines DHCP-Relays

Für die Einrichtung eines DHCP-Relays auf einem Router, beispielsweise VyOS, wurden folgende Schritte durchgeführt:

1. Beginn mit der Konfiguration im Konfigurationsmodus.

configure

2. Konfiguration des DHCP-Relay-Services, um Anfragen von eth2 zu sammeln und diese über eth1 an den DHCP-Server mit der Adresse 192.168.1.2 weiterzuleiten.

set service dhcp-relay server 192.168.1.2
set service dhcp-relay upstream-interface eth1
set service dhcp-relay listen-interface eth2
commit
save
Erstellung neuer DHCP-Subnets

Für die Erstellung neuer DHCP-Subnets wurde die DHCP-Konfigurationsdatei bearbeitet:

1. Öffnen der Datei `dhcpd.conf` mit einem Texteditor.

nano /etc/dhcp/dhcpd.conf

2. Hinzufügen der Konfiguration für die neuen Subnets und anschließendes Neustarten des DHCP-Servers, um die Änderungen zu übernehmen.

# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}

subnet 192.168.1.64 netmask 255.255.255.192 {
 range 192.168.1.70 192.168.1.110;
 option routers 192.168.1.65;
 option domain-name-servers 1.1.1.1;
}

3. Nachdem die Datei gespeichert und geschlossen wurde, startete den DHCP-Server neu, um die Änderungen zu übernehmen.

sudo systemctl restart isc-dhcp-server
Testen des DHCP-Relays

Zur Überprüfung des DHCP-Relays wurde ein neuer Windows-Server in das Netzwerk integriert und überprüft, ob dieser eine korrekte IP-Konfiguration vom DHCP-Server erhält.

1. Eine neue Windows-VM wurde im Netzwerk eingerichtet, das von eth2 bedient wird.

2. Nach dem Hochfahren der VM überprüft man, ob sie eine IP-Adresse aus dem entsprechenden DHCP-Bereich erhielt (z.B. 192.168.1.70 bis 192.168.1.110 für das Subnet 192.168.1.64/26).

3. Auf dem Windows-Server führt man in der Befehlszeile (CMD) den Befehl `ipconfig /all` aus, um die erhaltene IP-Konfiguration zu überprüfen. Es bestätigte sich, dass die VM korrekt eine IP-Adresse, Subnetzmaske, den Standardgateway und die DNS-Serverinformationen vom DHCP-Server zugewiesen bekam.

image.png

Einrichtung und Konfiguration eines DHCP-Servers mit udhcpd

Wichtig ist, dass DHCP-Relay von udhcpd nicht unterstützt wird und daher nur eine einfache DHCP-Konfiguration verwendet wurde.

udhcpd Installation:

Zunächst wurde udhcpd durch Öffnen eines Terminals und Eingabe des Installationsbefehls installiert:

sudo apt install udhcpd
DHCP-Server konfigurieren:

Die Hauptkonfigurationsdatei /etc/udhcpd.conf wurde mit einem Texteditor wie nano bearbeitet, um den DHCP-Server zu konfigurieren. Es wurde eine Basis-Konfiguration eingefügt, die einen IP-Bereich für die DHCP-Clients bereitstellt:

sudo nano /etc/udhcpd.conf
start 192.168.1.10    # Start des IP-Bereichs
end 192.168.1.50     # Ende des IP-Bereichs
option subnet 255.255.255.192
option router 192.168.1.1
option dns 1.1.1.1
option lease 600    # Standard-Lease-Zeit in Sekunden
interface ens33
lease_file /var/lib/misc/udhcpd.leases
static_lease 00:50:56:9e:c7:d7 192.168.1.9
udhcpd aktivieren und starten:

Um udhcpd zu aktivieren und zu starten, wurde zunächst überprüft, ob es nicht durch eine Einstellung in /etc/default/udhcpd deaktiviert ist. Anschließend wurde der DHCP-Server neu gestartet, um die vorgenommenen Änderungen anzuwenden:

sed -i '/DHCPD_ENABLED/ s/no/yes/' /etc/default/udhcpd
touch /var/lib/misc/udhcpd.leases
update-rc.d udhcpd defaults
sudo service udhcpd restart
udhcpd testen:

Nach dem Neustart wurde die Funktionalität von udhcpd getestet, indem ein Client im Netzwerk überprüft wurde, ob er eine IP-Adresse aus dem konfigurierten Bereich erhält.

image.png

Unterschiede zwischen udhcpd und dem ISC DHCP Server:

Einrichten eines ISC DHCP-Servers auf BSD

ISC DHCP-Server Installation:

Zuerst wurde die passende Version des ISC DHCP-Servers identifiziert und installiert:

pkg search isc-dhcp

image.png

sudo pkg install isc-dhcp44-server-4.4.3P1
DHCP-Server konfigurieren:

Die Hauptkonfigurationsdatei /usr/local/etc/dhcpd.conf wurde mit einem Texteditor bearbeitet, um den DHCP-Server zu konfigurieren:

sudo nano /usr/local/etc/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}
DHCP-Server aktivieren und starten:

Um den DHCP-Server zu aktivieren und beim Systemstart automatisch zu starten, wurde die Datei /etc/rc.conf bearbeitet und der DHCP-Server gestartet:

dhcpd_enable="YES"

Dann haben wir den DHCP-Server gestartet, um sicherzustellen, dass unsere Konfigurationen angewandt werden:

sudo service isc-dhcpd start
FreeBSD DHCP testen:

Die Funktion des DHCP-Servers auf FreeBSD wurde getestet, indem überprüft wurde, ob ein Windows Server im Netzwerk eine IP-Konfiguration vom DHCP erhält.

image.png

Wireshark Analyse

Schliesslich wurde der Ablauf einer `ipconfig /renew` Anfrage in Wireshark aufgezeichnet und bestätigte die Übereinstimmung mit der Struktur, wie sie auch auf Wikipedia beschrieben ist.

image.png

Packet Tracer - DHCP Relay

DHCP-Auftrag.pkt

Overview

Folgend ist der Packet Tracer Aufbau zu sehen um DHCP Relay zu testen.

image.png

vogelsrv42001

GigabitEthernet0/0

Konfiguration vom Router Interface zum VOGEL_INTNET Switch

image.png

GigabitEthernet1/0

Konfiguration vom Router Interface zum VOGEL_DHCP_RELAY Switch

image.png

DHCP-Relay konfiguration

Die Folgende konfiguration muss man noch extra auf dem Router machen damit der DHCP Relay funktioniert.

conf t
interface GigabitEthernet1/0
ip helper-address 192.168.1.2
exit
wr

vogelsrv42002

Server Netzwerkkonfiguration

Netzwerkkonfiguration des DHCP Servers im VOGEL_INTNET

image.png

DHCP VOGEL_INTNET Konfiguration

DHCP Konfiguration von VOGEL_INTNET. Der Name darf nicht geändert werden, da der Packet Tracer sonst einen neuen erstellt, was zu Problemen führen kann.

image.png

DHCP VOGEL_DHCP_RELAY Konfiguration

DHCP Konfiguration von VOGEL_DHCP_RELAY.

image.png

vogelsrv42010

DHCP Konfiguration

Prüfen, ob der Client eine DHCP IP im VOGEL_INTNET erhält.

image.png

vogelsrv42011

DHCP Konfiguration

Prüfen, ob der Client eine DHCP IP im VOGEL_DHCP_RELAY erhält.

image.png

PXE-Auftrag

Aufgabenstellung

Vorbereitung der Geräte

Einrichtung und Konfiguration des TFTP PXE Servers

Testen und Überprüfung

image.png

PXE Auftrag.excalidraw

Theorie

Aufbau der Umgebung

Konfiguration des TFTP Servers

Ubuntu Server

TFTP SERVER in Betrieb nehmen

Installation des TFTP-Servers:

apt install tftpd-hpa
systemctl enable tftpd-hpa

Erstellung des TFTP-Verzeichnisses:

mkdir /srv/tftp
PXELinux in Betrieb nehmen

Installation von PXELinux und Syslinux:

Für Netzwerk-Boot-Dienste ist die Installation von PXELinux notwendig. Der Befehl apt install pxelinux syslinux-common installiert PXELinux sowie die notwendigen Syslinux-Komponenten auf Ihrem Server. Diese Software ermöglicht es Netzwerkgeräten, über das Netzwerk zu booten, indem sie die erforderlichen Boot-Dateien bereitstellt.

apt install pxelinux syslinux-common

Kopieren der PXELinux Boot-Dateien:

Nach der Installation müssen die PXELinux Boot-Dateien in das TFTP-Verzeichnis kopiert werden. Dies wird durch die Befehle cp /usr/lib/PXELINUX/lpxelinux.0 /srv/tftp/. und cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/. erreicht. Diese Dateien sind notwendig, um den Boot-Prozess über das Netzwerk zu initiieren.

cp /usr/lib/PXELINUX/lpxelinux.0 /srv/tftp/.
cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/.

Erstellung des PXELinux Konfigurationsverzeichnisses:

mkdir /srv/tftp/pxelinux.cfg

Konfiguration des Boot-Menüs:

In der Konfigurationsdatei default unter /srv/tftp/pxelinux.cfg fügen Sie die notwendigen Einträge für das Booten des Slitaz Betriebssystems hinzu. Dies beinhaltet den Namen der Boot-Option, das zu startende Menü-Label, den Pfad zum Kernel und die Kernel-Optionen, einschließlich der Spezifikation der Initrd-Dateien und Boot-Parameter.

nano /srv/tftp/pxelinux.cfg/default
default slitaz
prompt 0
label slitaz
    menu label Slitaz
    kernel slitaz/bzImage
    append initrd=slitaz/rootfs4.gz,slitaz/rootfs3.gz,slitaz/rootfs2.gz,slitaz/rootfs1.gz rw root=/dev/null vga=normal autologin
Slitaz-Dateien bereitstellen

Kopieren der Slitaz-Dateien:

Die letzten Schritte umfassen das Kopieren der Slitaz-Betriebssystemdateien in das TFTP-Serververzeichnis. Dazu gehören der Kernel (bzImage) und die Initrd-Dateien (rootfs*.gz). Diese Dateien müssen in den entsprechenden Unterverzeichnissen innerhalb des /srv/tftp Verzeichnisses platziert werden, damit sie während des Boot-Prozesses über das Netzwerk zugänglich sind.

cd ~
wget http://mirror.slitaz.org/iso/4.0/slitaz-4.0.iso
mount -o loop slitaz-4.0.iso /mnt
mkdir /srv/tftp/slitaz
cp /mnt/boot/bzImage /mnt/boot/rootfs* /srv/tftp/slitaz/.
umount /mnt

Konfiguration des DHCP Servers

Voraussetzung des folgenden ist das man den DHCP Auftrag bereits erledigt hat: DHCP-Auftrag

Wenn man einen funktionierenden DHCP hat kann man die folgende host Konfiguration hinzufügen (Wichtig ist es die richtige MAC-Adresse zu verwenden)

nano /etc/dhcp/dhcpd.conf
host vogelsrv42012 {
 hardware ethernet 00:50:56:9e:27:5e;
 fixed-address 192.168.1.8;
 next-server 192.168.1.3;
 filename "lpxelinux.0";
}
sudo systemctl restart isc-dhcp-server

Testen des PXE Boots

Durchführung eines Boot-Tests über das Netzwerk, um die Konfiguration und Funktionsfähigkeit des gesamten Setups zu überprüfen.

image.png

DNS-Auftrag

Aufgabenstellung

Einrichtung des Labors:

Konfiguration des DNS-Servers:

Analyse und erweiterte Konfiguration:

image.png

DNS-Auftrag.excalidraw

Theorie

DNS Einträge

A (Address Record)

AAAA (IPv6 Address Record)

PTR (Pointer Record)

TXT (Text Record)

MX (Mail Exchange Record)

SRV (Service Record)

SPF (Sender Policy Framework)

NAPTR (Naming Authority Pointer)

CAA (Certificate Authority Authorization)

NS (Name Server Record)

DS (Delegation Signer)

Hauptunterschiede und Änderungen bei DNS über IPv6

  1. IPv6-Adressen:

    • IPv6-Adressen sind länger und komplexer als IPv4-Adressen. Sie bestehen aus 128 Bit und werden in hexadezimaler Notation dargestellt, z. B. 2001:0db8:85a3:0000:0000:8a2e:0370:7334.
  2. AAAA-Records:

    • Für IPv6-Adressen wird der AAAA-Record (Quad-A-Record) anstelle des A-Records verwendet, um eine Hostadresse zu speichern. Ein AAAA-Record kann eine IPv6-Adresse zu einem Domainnamen auflösen.
    • Beispiel:
      www.example.com. 3600 IN AAAA 2001:0db8:85a3::8a2e:0370:7334

       

  3. Reverse DNS:

Aufbau der Umgebung

Konfiguration des DNS Servers (Master)

Schritt 1: Installation von BIND

Paketdatenbank aktualisieren:
sudo apt-get update
BIND Installieren:

Alle nötigen Bind9 Packete installieren

sudo apt-get install bind9 bind9utils bind9-doc dnsutils

Schritt 2: Konfiguration von BIND

Edit the named.conf.options file:

Im named.conf.options file stehen allgemeine Konfigurationen drin wie zum beispiel, welches Subnetz abfragen machen darf oder zu welchem DNS die restlichen DNS Abfragen forgewarded werden sollen.

sudo nano /etc/bind/named.conf.options
acl LAN {
192.168.1.0/26;
};
options {
        directory "/var/cache/bind"; // default directory
        allow-query { localhost; LAN; }; // allow queries from localhost and 192.168.1.0-192.168.1.255
        forwarders { 1.1.1.1; }; // use CloudFlare 1.1.1.1 DNS as a forwarder
        recursion yes;  // allow recursive queries
};

Mit named-checkconf kann man alle bind9 Dateien auf Syntax errors kontrollieren.

named-checkconf /etc/bind/named.conf.options

image.png

Edit the named.conf.local file

Im named.conf.local file stehen die Einstellungen für die einzelnen Zonen.

sudo nano /etc/bind/named.conf.local
zone "test.local" {
    type master;
    file "/etc/bind/zones/db.test.local"; # Pfad zur Zonendatei
    allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers
};
zone "1.168.192.in-addr.arpa" IN {
     type master;
     file "/etc/bind/zones/db.test.local.rev"; # Pfad zur Zonendatei
     allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers
}
named-checkconf /etc/bind/named.conf.local

image.png

Zone Folder erstellen:
mkdir /etc/bind/zones
Forward Zone File erstellen:
nano /etc/bind/zones/db.test.local
$TTL    604800
@       IN      SOA     ns1.test.local. admin.test.local. (
                           3         ; Serial
                      604800         ; Refresh
                       86400         ; Retry
                     2419200         ; Expire
                      604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.test.local.
@       IN      NS      ns2.test.local.
ns1     IN      A       192.168.1.4
ns2     IN      A       192.168.1.5
router  IN      A       192.168.1.1
named-checkzone test.local /etc/bind/zones/db.test.local

image.png

Reverse Zone File erstellen:
nano /etc/bind/zones/db.test.local.rev
$TTL    604800
; SOA record with MNAME and RNAME updated
@       IN      SOA     cherry.example. root.cherry.example. (
                              2         ; Serial Note: increment after each change
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; Name server record
@       IN      NS      ns1.test.local.
@       IN      NS      ns2.test.local.
; A record for name server
ns1     IN      A       192.168.1.4
ns2     IN      A       192.168.1.5
; PTR record for name server
4       IN      PTR     ns1.test.local.
5       IN      PTR     ns2.test.local.
; PTR record for clients
1       IN      PTR     router.test.local.
named-checkzone test.local /etc/bind/zones/db.test.local.rev

image.png

Bind Neustarten
systemctl restart bind9

Testen des DNS Servers

Forward Zone
nslookup ns1.test.local 192.168.1.4
nslookup ns2.test.local 192.168.1.4
nslookup router.test.local 192.168.1.4

image.png

Reverse Zone
nslookup 192.168.1.1 192.168.1.4
nslookup 192.168.1.4 192.168.1.4
nslookup 192.168.1.5 192.168.1.4

image.png

Konfiguration des DNS Servers (Slave)

Schritt 1: Installation von BIND

Paketdatenbank aktualisieren:
sudo apt-get update
BIND Installieren:
sudo apt-get install bind9 bind9utils bind9-doc dnsutils

Schritt 2: Konfiguration von BIND

Edit the named.conf.options file:
sudo nano /etc/bind/named.conf.options
acl LAN {
192.168.1.0/26;
};
options {
        directory "/var/cache/bind"; // default directory
        allow-query { localhost; LAN; }; // allow queries from localhost and 192.168.1.0-192.168.1.255
        forwarders { 1.1.1.1; }; // use CloudFlare 1.1.1.1 DNS as a forwarder
        recursion yes;  // allow recursive queries
};
named-checkconf /etc/bind/named.conf.options

image.png

Edit the named.conf.local file
sudo nano /etc/bind/named.conf.local
zone "test.local" {
    type slave;
    file "secondary/db.test.local"; # Pfad für die sekundäre Zonendatei
    masters { 192.168.1.4; }; # IP des primären DNS-Servers
};
zone "1.168.192.in-addr.arpa" IN {
     type slave;
     file "secondary/db.test.local.rev";
     masters { 192.168.1.4; };
};
named-checkconf /etc/bind/named.conf.local

image.png

Bind Neustarten
systemctl restart bind9

Testen des DNS Servers

Forward Zone
nslookup ns1.test.local 192.168.1.5
nslookup ns2.test.local 192.168.1.5
nslookup router.test.local 192.168.1.5

image.png

Reverse Zone
nslookup 192.168.1.1 192.168.1.5
nslookup 192.168.1.4 192.168.1.5
nslookup 192.168.1.5 192.168.1.5

image.png

Erweiterte Konfiguration und Analyse

Einbinden in vorhandenes Netzwerk

vogelsrv42002 - DHCP Konfiguration ändern
sudo nano /etc/dhcp/dhcpd.conf
# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 192.168.1.4, 192.168.1.5;
}
systemctl restart isc-dhcp-server
Testen der neuen Konfiguration
nslookup /release
nslookup /all

image.png

Wireshark Analyse der DNS abfragen

Forward abfragen

DNS-forward.pcapng

nslookup router.test.local

image.png

PTR-Auflösung des DNS-Servers:

image.png

Response der PTR-Auflösung:

image.png

A-Auflösung des DNS-Namens router.test.local:

image.png

Response der A-Auflösung:

image.png

AAAA-Auflösung des DNS-Namens router.test.local:

image.png

Response der AAAA-Auflösung:

image.png

Reverse abfragen

DNS-reverse.pcapng

nslookup 192.168.1.1

image.png

PTR-Auflösung des DNS-Servers:

image.png

Response der PTR-Auflösung:

image.png

PTR-Auflösung der IP-Adresse:

image.png

Response der PTR-Auflösung:

image.png

Host File

Editor als Administrator öffnen: Um die Hosts-Datei zu bearbeiten, müssen Sie den Editor mit Administratorrechten öffnen. Klicken Sie dazu auf das Startmenü, geben Sie "Editor" ein, klicken Sie mit der rechten Maustaste auf "Editor" und wählen Sie "Als Administrator ausführen".

image.png

Hosts-Datei öffnen: Im Editor, den Sie als Administrator geöffnet haben, navigieren Sie zu der Hosts-Datei. Gehen Sie zu "Datei" > "Öffnen" und geben Sie den folgenden Pfad ein: C:\Windows\System32\drivers\etc

Stellen Sie sicher, dass Sie "Alle Dateien (.)" auswählen, um die Hosts-Datei sichtbar zu machen.

DNS-Einträge hinzufügen: Fügen Sie am Ende der Hosts-Datei die gewünschten DNS-Einträge hinzu. Die Syntax ist einfach: zuerst die IP-Adresse, gefolgt von einem oder mehreren Domain-Namen, die zu dieser IP-Adresse aufgelöst werden sollen. Zum Beispiel:

1.1.1.1			bbw-it.ch

In diesem Beispiel wird bbw-it.ch auf die IP-Adresse 1.1.1.1 aufgelöst.

  1. Änderungen speichern: Nachdem Sie die gewünschten Einträge hinzugefügt haben, speichern Sie die Datei. Gehen Sie dazu auf "Datei" > "Speichern". Stellen Sie sicher, dass Sie die Datei im gleichen Verzeichnis und mit dem gleichen Namen speichern.

  2. DNS-Cache leeren: Damit die Änderungen sofort wirksam werden, sollten Sie den DNS-Cache leeren. Öffnen Sie dazu die Eingabeaufforderung als Administrator. Klicken Sie auf das Startmenü, geben Sie "cmd" ein, klicken Sie mit der rechten Maustaste auf "Eingabeaufforderung" und wählen Sie "Als Administrator ausführen". Geben Sie dann den folgenden Befehl ein:

    ipconfig /flushdns
  3. Überprüfung der Einträge: Überprüfen Sie die neuen oder aktualisierten DNS-Einträge, um sicherzustellen, dass die Änderungen korrekt übernommen wurden. Verwenden Sie dazu den Befehl nslookup oder versuchen Sie, die entsprechende Domain in Ihrem Browser aufzurufen.
    Wieso man nicht nslookup gebrauchen kann: https://serverfault.com/questions/698058/nslookup-not-using-hosts-file

    ping bbw-it.ch

    image.png


Cloud DNS (AWS)

In AWS besitze Ich bereits eine DNS Zone Namens mregli.cloud. Die Zone wird gemanaged in einem Service Namens Route 53 (DNS-Service). Das UI sieht wie folgt aus:

image.png

In AWS kann man die folgenden DNS Einträge erstellen:

image.png

Der Grund wieso man den AWS DNS benutzen soll ist da man die DNS Server im Hintergrund nicht selber Managen muss und da die DNS Server eine 100% Verfügbarkeit versprechen da die DNS Funktion niemals ausfallen darf.

Dynamische DNS-Updates (Local)

Verzeichnis für Geheimnisse erstellen: Erstellen Sie ein Verzeichnis, um die generierten Schlüssel sicher zu speichern.

mkdir /secrets
tsig-keygen ddns >> /secrets/ddns

TSIG-Schlüssel (Transaction Signature) generieren: Erstellen Sie einen TSIG-Schlüssel, der zur Authentifizierung von DNS-Updates verwendet wird.

key "ddns" {
        algorithm hmac-sha256;
        secret "TYkYPXTJXYVc9gM3cDvSbuwSaZ73bLf6LVfeKmDCB78=";
};

DNS-Zonendatei konfigurieren: Konfigurieren Sie Ihre DNS-Zonendatei, um dynamische Updates zu ermöglichen. Diese Konfiguration definiert die Zone, die als Master fungiert, und legt die Datei fest, in der die Zonendaten gespeichert werden.

key "ddns" {
        algorithm hmac-sha256;
        secret "D/Y0qfay469q2Nk7ROASD48oSCnjfUUvw1hLirl6Gqc=";
};
...
zone "test.local" {
    type master;
    file "/etc/bind/zones/db.test.local"; # Pfad zur Zonendatei
    allow-transfer { 192.168.1.5; }; # IP des sekundären DNS-Servers
    allow-update { key "ddns"; };
};
...

Anpassung des AppArmor-Profils für BIND

AppArmor ist ein Sicherheitsmodul, das die Berechtigungen von Anwendungen auf Systemebene einschränkt. Um dynamische DNS-Updates zuzulassen, müssen Sie das AppArmor-Profil für den BIND-DNS-Server anpassen:

AppArmor-Profil für BIND lokalisieren: Das AppArmor-Profil für BIND befindet sich normalerweise unter /etc/apparmor.d/usr.sbin.named. Öffnen Sie diese Datei zur Bearbeitung:

sudo nano /etc/apparmor.d/usr.sbin.named

AppArmor-Profil ändern: Fügen Sie die erforderlichen Berechtigungen für das Verzeichnis und die Dateien hinzu, die mit den DNS-Updates verbunden sind. Stellen Sie sicher, dass die folgenden Zeilen (oder ähnliche) enthalten und korrekt konfiguriert sind:

image.png

AppArmor-Profile neu laden: Nachdem Sie das Profil geändert haben, laden Sie die AppArmor-Profile neu, um die Änderungen anzuwenden:

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.named

Berechtigungen überprüfen: Stellen Sie sicher, dass der BIND-Benutzer (named oder ähnlich) die erforderlichen Berechtigungen hat, um in das Verzeichnis /etc/bind/zones zu schreiben und die Datei db.test.local.jnl zu erstellen oder zu ändern. Falls dies noch nicht geschehen ist, passen Sie die Berechtigungen an:

sudo chown -R bind:bind /etc/bind/zones
sudo chmod -R 755 /etc/bind/zones

BIND neu starten: Starten Sie den BIND-Dienst neu, um die Änderungen anzuwenden:

systemctl restart bind9

Update erneut versuchen: Versuchen Sie, das DDNS-Update erneut durchzuführen:

nsupdate -k /secrets/ddns
> server ns1.test.local
> update add home.test.local 200 A 1.2.3.4
> send

Testen kann man es dann über einen einfachen normalen nslookup.

nslookup home.test.local

image.png

Dynamische DNS-Updates (Maas)

image.png

TSIG-Schlüssel speichern: Erstellen Sie die Datei /secrets/maas und fügen Sie den TSIG-Schlüssel ein:

nano /secrets/maas

Fügen Sie den folgenden Inhalt in die Datei ein:

key "manuel.regli" {
	algorithm hmac-sha256;
	secret "m5W38E9ugk8hIsi0dav9FkOoIFIny2yiyISpn0MMDtA=";
};

Berechtigungen setzen: Stellen Sie sicher, dass die Datei die richtigen Berechtigungen hat, sodass nur der notwendige Benutzer (in diesem Fall der Benutzer, der nsupdate ausführt) darauf zugreifen kann:

sudo chown root:root /secrets/maas
sudo chmod 600 /secrets/maas

DNS-Update durchführen: Verwenden Sie nsupdate, um den DNS-Eintrag zu aktualisieren:

nsupdate -k /secrets/maas
> server ns.users.bbw-it.ch.
> update add test.manuel.regli.users.bbw-it.ch. 200 IN A 2.12.21.2
> send

Überprüfung des Updates: Überprüfen Sie den neuen DNS-Eintrag mit nslookup:

nslookup test.manuel.regli.users.bbw-it.ch

image.png

nslookup test.manuel.regli.users.bbw-it.ch ns.users.bbw-it.ch

image.png

image.png

IPv6

Forward Zone file bearbeiten

Öffnen Sie die Zonendatei zur Bearbeitung:

nano /etc/bind/zones/db.test.local

Fügen Sie die IPv6-Einträge und andere DNS-Einträge wie folgt hinzu:

$ORIGIN .
$TTL 604800     ; 1 week
test.local              IN SOA  ns1.test.local. admin.test.local. (
                                4          ; serial
                                604800     ; refresh (1 week)
                                86400      ; retry (1 day)
                                2419200    ; expire (4 weeks)
                                604800     ; minimum (1 week)
                                )
                        NS      ns1.test.local.
                        NS      ns2.test.local.
$ORIGIN test.local.
$TTL 200        ; 3 minutes 20 seconds
home                    A       1.2.3.4
$TTL 604800     ; 1 week
ns1                     A       192.168.1.4
ns1                     AAAA    fe80::250:56ff:fe9e:7055
ns2                     A       192.168.1.5
router                  A       192.168.1.1
Reverse Zone file bearbeiten

Um herauszufinden wie der Eintrag lauten muss kann man den folgenden Trick verwenden:

dig -x fe80::250:56ff:fe9e:7055

image.png

Reverse Zone Datei bearbeiten: Öffnen Sie die Datei zur Bearbeitung:

nano /etc/bind/zones/db.8.e.f.ip6.arpa

Inhalt der Reverse Zone Datei: Fügen Sie die PTR-Einträge hinzu, um die IPv6-Adresse aufzulösen:

$TTL 3600
@   IN  SOA ns1.example.com. admin.example.com. (
            2024052601 ; Seriennummer
            3600       ; Refresh
            1800       ; Retry
            1209600    ; Expire
            3600 )     ; Minimum TTL

@    IN  NS  ns1.test.local.
@    IN  NS  ns2.test.local.

5.5.0.7.e.9.e.f.f.f.6.5.0.5.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. 3600 IN PTR ns1.test.local.
Konfiguration in named.conf.local

named.conf.local bearbeiten: Öffnen Sie die Datei zur Bearbeitung:

nano /etc/bind/named.conf.local

Konfigurationsblock für die Reverse Zone hinzufügen: Fügen Sie den folgenden Block hinzu:

zone "8.e.f.ip6.arpa" IN {
     type master;
     file "/etc/bind/zones/db.8.e.f.ip6.arpa";
     allow-transfer { 192.168.1.5; };
};
Testen

Forward Zone

image.png

Reverse Zone:

dig -x fe80::250:56ff:fe9e:7055

image.png

Reflexion

Zusammenfassend kann ich sagen, dass die Arbeit an sich Spass gemacht hat, ausser vielleicht der Teil mit IPv6, aber das liegt eher an mir und meinem Hass darauf. Probleme an sich hatte ich nur einmal mit Dyndns als der Bind9 Server die Journaldatei nicht erstellen wollte und ich 2 Stunden gebraucht habe um herauszufinden das es am AppArmor lag. Ansonsten war es im Grossen und Ganzen ein angenehmer Auftrag.