hwr-notes/Netzwerke/zusammenfassungen/nw5 - zusammenfassung.md
2026-04-09 11:24:56 +02:00

752 lines
No EOL
36 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Netzwerktechnik Vorlesung 5: Layer 4 (TCP/UDP), Layer 3 (NAT), Layer 7 (DNS)
**Modul:** IT2221 Netwerktechnik
**Dozentin:** Gabriele Schrenk (e_schrenk@doz.hwr-berlin.de)
**Datum:** 20.03.2026
-----
## LAYER 4 Transport Layer (Transportschicht)
### Wiederholung TCP/IP Referenzmodell Schicht 4
Schicht 4 (Transport) ist zuständig für die Verbindung zwischen Endsystemen. Die Dateneinheit auf dieser Schicht heißt **Segment**. Die Transportschicht stellt Dienstgüte (Quality of Service) und Zuverlässigkeit sicher.
Das OSI-Modell von oben nach unten: Application → Presentation → Session → **Transport** → Network → Data Link → Physical.
-----
### TCP Transmission Control Protocol
TCP ist Teil der Protokollfamilie TCP/IP und ermöglicht **Ende-zu-Ende-Kommunikation**. Der Datenstrom wird auf verschiedene Anwendungen aufgeteilt. Daten werden mit einem TCP-Header versehen und anschließend an das IP-Protokoll übergeben. Datenpakete werden beim Sender sortiert und an adressierte Anwendungen (identifiziert über **Portnummern**) geschickt.
#### Wichtigste Eigenschaften von TCP
- **Verbindungsmanagement:** TCP ist verbindungsorientiert und stellt die richtige Reihenfolge der Daten sicher.
- **Flusskontrolle (Flow Control):** Schützt gegen Pufferüberlauf beim Empfänger.
- **Zeitüberwachung (Timer):** Überwacht, ob Bestätigungen rechtzeitig eintreffen.
- **Fehlerbehandlung (Retransmission):** Verlorene oder fehlerhafte Pakete werden durch Neuübertragung korrigiert.
-----
### Aufbau des TCP-Headers
Der TCP-Header besteht aus folgenden Feldern:
|Feld |Beschreibung |
|--------------------------|---------------------------------------------------------------------|
|**Quell-Port / Ziel-Port**|Identifizieren die sendende und empfangende Anwendung |
|**Sequenz-Nummer** |Nummer des ersten Bytes im aktuellen Segment |
|**Acknowledgement-Nummer**|Nummer des nächsten erwarteten Datenpakets |
|**Data-Offset** |Anzahl der 32-bit-Blöcke im TCP-Header (entspricht der Header Length)|
|**Flags** |SYN, ACK, FIN, RST, URG, PSH, ECE, CWR |
|**Window-Größe** |Größe des Empfangs-Puffers (für Flusskontrolle) |
|**Check-Summe** |Prüfsumme zur Fehlererkennung |
|**Urgent-Pointer** |Zeigt auf das Ende dringender Daten (schnelle Zustellung) |
|**Options** |Optionale Felder wie Max. Segment Size (MSS), Window Scale, Timestamp|
Aufbau als Tabellenstruktur:
```
| Quell-Port | Ziel-Port |
| Sequenz-Nummer |
| Acknowledgement-Nummer |
| Data-Offset | Reserviert | Flags | Window |
| Check-Summe | Urgent-Pointer |
| Option / Füllbits |
| Daten... |
```
-----
### TCP Portnummern
Ports werden von der **Internet Assigned Numbers Authority (IANA)** für alle Transportprotokolle vergeben. Es gibt drei Bereiche:
|Bereich |Portnummern|Beschreibung |
|-------------------------------|-----------|-------------------------------------------|
|**Well-Known Ports** |01023 |Standardisierte, allgemein bekannte Dienste|
|**Registered Ports** |102449151 |Registrierte Dienste und Anwendungen |
|**Dynamically Allocated Ports**|4915265535|Dynamisch zugewiesene (ephemere) Ports |
#### Beispiele für TCP-Ports
|Port|Protokoll|Anwendung |
|----|---------|--------------------------------------------|
|21 |FTP |Dateitransfer |
|22 |SSH |Secure Shell Service |
|23 |Telnet |Konsole |
|25 |SMTP |Simple Mail Transfer Protocol |
|80 |HTTP |Hypertext Transfer Protocol (World Wide Web)|
|110 |POP3 |Post Office Protocol v3 für E-Mail |
|123 |NTP |Dienst zur Zeitsynchronisierung |
|179 |BGP |Border Gateway Protocol |
|220 |IMAP3 |Internet Message Access Protocol für E-Mail |
|443 |HTTPS |HTTP Secure |
-----
### TCP Acknowledgement-Mechanismus
TCP verwendet Sequenz- und Acknowledgement-Nummern zur zuverlässigen Datenübertragung.
**Ablauf-Beispiel:**
1. Sender schickt Paket mit Seq=10 (Source-Port 1028, Dest-Port 23, Ack=1).
2. Empfänger empfängt Paket #10 und antwortet mit Ack=11 (Source-Port 23, Dest-Port 1028, Seq=1, Ack=11). Die Ack-Nummer 11 bedeutet: „Ich erwarte als nächstes Paket #11.”
3. Sender sendet nächstes Paket mit Seq=11 (Ack=2).
Die **Acknowledgement-Nummer** gibt immer die Sequenznummer des **nächsten erwarteten** Pakets an.
-----
### TCP Verbindungsaufbau (Three-Way-Handshake)
Der TCP-Verbindungsaufbau erfolgt in drei Schritten:
**Schritt 1:** Client (Host A) sendet ein **SYN**-Paket an den Server (Host B).
- `seq=100, ctl=SYN`
**Schritt 2:** Server empfängt das SYN und antwortet mit **SYN+ACK**.
- `seq=300, ack=101, ctl=SYN,ACK`
- Der Server bestätigt den Empfang (ACK) und schickt gleichzeitig seinen eigenen Verbindungswunsch (SYN). Die ack=101 bestätigt, dass seq=100 empfangen wurde und als nächstes seq=101 erwartet wird.
**Schritt 3:** Client bestätigt mit **ACK**. Die Verbindung ist hergestellt.
- `seq=101, ack=301, ctl=ACK`
Zusammenfassung: Client sendet SYN → Server antwortet SYN+ACK → Client bestätigt ACK → Datenaustausch möglich.
-----
### TCP Verbindungsabbau (4-Way-Handshake)
Der Verbindungsabbau ist dem Aufbau ähnlich, aber umgekehrt und benötigt **vier Schritte**:
**Schritt 1:** Host A sendet **FIN** (Verbindungsabbauwunsch).
- `seq=101, ctl=FIN`
**Schritt 2:** Host B empfängt FIN und bestätigt mit **ACK**.
- `seq=300, ack=101, ctl=ACK`
**Schritt 3:** Host B sendet seinerseits **FIN** (eigener Abbauwunsch).
- `seq=301, ack=101, ctl=FIN`
**Schritt 4:** Host A bestätigt mit **ACK**. Die Verbindung ist beendet.
- `seq=102, ack=302, ctl=ACK`
-----
### TCP Sliding Window
#### Motivation
- TCP muss die Menge an gleichzeitig übertragenen Bytes verarbeiten.
- Es gibt Methoden zur Bestätigung der Pakete und Flusskontrolle.
- Bei **Paketverlust** wird ab dem verlorenen Paket erneut übertragen (erkannt durch ausbleibende ACKs oder Timeout) → Garantie, dass alle Pakete ankommen.
- Pakete werden in der richtigen Reihenfolge an die Anwendungsschicht übergeben und müssen daher zwischengepuffert werden → Risiko eines **Pufferüberlaufs**.
#### Sliding Window Mechanismus
- Das Sliding Window regelt die **Senderate** in Bezug auf den Buffer des Empfängers.
- Der TCP-Stack hat unterschiedlich viel Speicher.
- Wird Verlust festgestellt, wird der Sender informiert.
- Der Sender **reduziert** daraufhin die Anzahl der zu sendenden Pakete pro Zeiteinheit.
#### Fenster-Größe = 1 (Stop-and-Wait)
Bei Fenstergröße 1 wird jeweils nur ein Paket gesendet und auf dessen ACK gewartet, bevor das nächste Paket gesendet wird. Bei Paketverlust: der **Retransmission-Timer** läuft ab und das Paket wird erneut gesendet.
**Beispiel mit Paketverlust (Fenstergröße 1):**
- Sender sendet Paket 1 → Empfänger bestätigt mit ACK 2.
- Sender sendet Paket 2 → Paket geht verloren.
- Retransmission-Timer läuft ab → Sender sendet Paket 2 erneut.
- Empfänger empfängt Paket 2 → Sendet ACK 3.
**Variante:** Das ACK geht verloren statt des Datenpakets. Der Sender sendet Paket 2 erneut, der Empfänger empfängt es doppelt (verwirft das Duplikat dank Sequenznummer) und sendet erneut ACK 3.
#### Fenster-Größe = 3
Mit einer größeren Fenstergröße können **mehrere Pakete** gleichzeitig gesendet werden, ohne auf einzelne ACKs zu warten.
- Das Fenster (Sliding Window) liegt über den zu sendenden Paketen.
- Alle Pakete innerhalb des Fensters werden verschickt.
- Beispiel mit Fenstergröße 3: Die ersten 3 Pakete werden verschickt. Paket 4 geht erst raus, wenn das ACK für Paket 1 eingetroffen ist.
- Pakete, für die kein ACK vorliegt, werden **nochmals verschickt**.
**Beispiel mit Paketverlust (Fenstergröße 3):**
- Sender sendet Pakete 1, 2, 3.
- Paket 2 geht verloren. Empfänger empfängt 1 und 3, sendet ACK 2 (fordert Paket 2 erneut an).
- Nach Empfang von ACK 2 sendet der Sender erneut Pakete 2, 3, 4.
- Empfänger empfängt 2, 3, 4 → Sendet ACK 5.
**Beispiel mit ACK-Verlust (Fenstergröße 3):**
- Sender sendet Pakete 1, 2, 3 → Empfänger empfängt alle, sendet ACK 4.
- ACK 4 geht verloren → Retransmission-Timer läuft ab.
- Sender sendet Paket 1 erneut → Empfänger empfängt 1 erneut, sendet ACK 4.
- Sender empfängt ACK 4 → Sendet Paket 4.
#### Gruppenaufgaben
**Aufgabe 1:** Sender sendet drei Pakete (seq=100, 101, 102; alle mit ack=5). Alle drei kommen beim Empfänger an.
**Lösung:** Empfänger antwortet mit `seq=5, ack=103, ctl=ACK` (erwartet als nächstes Paket 103).
**Aufgabe 2:** Sender sendet drei Pakete (seq=100, 101, 102; alle mit ack=5). Paket 101 geht verloren (nur 100 und 102 kommen an).
**Lösung:** Empfänger antwortet mit `seq=5, ack=101, ctl=ACK` (fordert Paket 101 erneut an, da es fehlt).
-----
### TCP Flusskontrolle
- Pakete und Meldungen werden mit **Sequenznummern** versehen.
- Mögliche Übertragungsprobleme: doppelte Datenpakete, doppelte Quittierungen.
- Durch Nummern ist Reihenfolge und Zuordnung bekannt.
- Es folgen erst wieder Datenpakete, wenn das erste ACK kommt.
- Die **Fenstergröße wird während der Übertragung angepasst** durch:
- **Slow Start:** Exponentielles Wachstum der Fenstergröße bis zum Threshold.
- **Fast Retransmit:** Sofortige Neuübertragung ohne Warten auf den Timer, wenn **3 doppelte ACKs** empfangen werden.
- **Additive Erhöhung (Congestion Avoidance):** Lineares Wachstum der Fenstergröße nach dem Threshold für faire und effiziente Zuteilung der Bandbreite.
#### CWND (Congestion Window) zur Vermeidung von Überlast
Das CWND beschreibt die Menge der unbestätigten Pakete. Der Verlauf über die Zeit:
1. **Slow-Start-Phase:** CWND wächst exponentiell (Verdopplung pro RTT).
2. Ab dem **Threshold** wechselt es in die **Congestion Avoidance** Phase: CWND wächst linear.
3. Bei **Fast Retransmit** (3 doppelte ACKs): CWND wird halbiert, neuer Threshold wird gesetzt, dann wieder lineares Wachstum.
-----
### UDP User Datagram Protocol
#### Eigenschaften von UDP
- **Kein** Verbindungs-Aufbau / -Management (verbindungslos).
- **Ungesicherter Dienst** (keine Garantie für Zustellung).
- Verzichtet auf den bei TCP notwendigen Overhead.
- Für **Multicast** und **Broadcast** nutzbar.
#### UDP Funktionsweise
UDP hat im Vergleich zu TCP die gleichen grundlegenden Funktionen (Port-Zuordnung, Datenweiterleitung), aber **keine**:
- Kontrollfunktion
- Sicherstellung von Datenempfang
- Nummerierung der Datenpakete
UDP ist **schlanker und einfacher** zu verarbeiten. Daten werden direkt an die Anwendungen weitergeleitet. Die Anwendung trägt selbst die Verantwortung für die Sicherstellung der Übertragung, zum Beispiel durch einen **Jitterbuffer**, der Laufzeitvarianzen ausgleicht.
Typische Einsatzgebiete: DNS-Anfragen, Echtzeit Audio-/Video-Streaming, VPN.
#### UDP-Header
Der UDP-Header ist mit nur **8 Byte** sehr schlank:
|Feld |Größe |Beschreibung |
|-----------|------|---------------------------------------|
|Quell-Port |2 Byte|Source Port |
|Ziel-Port |2 Byte|Destination Port |
|Länge |2 Byte|Gesamtlänge von Header und Datenbereich|
|Check-Summe|2 Byte|CRC zur Fehlererkennung |
Danach folgen die Daten.
#### Beispiele für UDP-Ports
|Port|Protokoll|Anwendung |
|----|---------|--------------------------------------------|
|53 |DNS |Domain Name Server |
|67 |DHCP |Dynamic Host Configuration Protocol (Server)|
|68 |DHCP |Dynamic Host Configuration Protocol (Client)|
|69 |TFTP |Trivial File Transfer Protocol |
|161 |SNMP |Simple Network Management Protocol |
-----
### SCTP Stream Control Transmission Protocol
SCTP wurde im Jahr 2000 von der IETF als Transportprotokoll standardisiert. Eigenschaften:
- **Zuverlässig und verbindungsorientiert** (wie TCP).
- Unterstützt das Konzept von **Assoziationen** (logische Verbindungen).
- **Multistreaming:** Mehrere Datenströme gleichzeitig über eine einzige Assoziation möglich.
- **Multihoming:** Unterstützt mehrere IP-Adressen pro Endpunkt für Ausfallsicherheit.
- Dienstgüte ähnlich wie TCP (Fluss-/Überlastkontrolle).
Einsatzgebiete:
- Signalübertragung zwischen RAN und EPC in **LTE**.
- Transportprotokoll für das **Diameter-Protokoll** (AAA: Authentifizierung, Autorisierung, Abrechnung) in LTE.
- Control Plane Protokoll im **5G Core Netz**.
- Robuste **IoT-Anwendungen** (Internet of Things).
-----
## LAYER 3 Network Layer (Vermittlungsschicht) NAT
### Konzept von NAT in IPv4
**NAT (Network Address Translation)** wird in IPv4-Netzwerken verwendet, um die Anzahl benötigter öffentlicher IP-Adressen zu **minimieren** und gleichzeitig **Sicherheit** und **Flexibilität** des Netzwerks zu erhöhen.
NAT ermöglicht, dass mehrere Systeme in einem privaten Netzwerk über eine **einzige öffentliche IP-Adresse** auf das Internet zugreifen.
Hauptfunktionen:
- **Adressübersetzung:** Private IP-Adressen der internen Systeme werden in eine öffentliche IP-Adresse übersetzt.
- **Verstecken der internen Struktur:** Interne IP-Adressen sind von außen nicht sichtbar → erhöht die Sicherheit.
- **Verwaltung von IP-Adressen:** Organisationen können ihre internen Netzwerke unabhängig von den öffentlichen IP-Adressen verwalten.
-----
### Arten von NAT
|NAT-Typ |Beschreibung |
|-------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
|**Static NAT** |Feste 1:1-Zuordnung zwischen einer privaten und einer öffentlichen IP-Adresse |
|**Dynamic NAT** |Zuordnung von mehreren privaten IP-Adressen zu einer Gruppe (Pool) von öffentlichen IP-Adressen |
|**PAT (Port Address Translation) / NAT Overload**|Mehrere private IP-Adressen teilen sich **eine einzige** öffentliche IP-Adresse, unterschieden über Portnummern|
-----
### Prozess der NAT-Umsetzung (PAT-Beispiel)
Szenario: Internes Netzwerk mit PC1 (192.168.1.2), PC2 (192.168.1.3), PC3 (192.168.1.4). Router hat die öffentliche IP-Adresse 203.0.113.5 und verwendet PAT.
**Ausgehender Verkehr (PC1 → Webserver 93.184.216.34):**
1. PC1 sendet ein Paket an 93.184.216.34. Das Paket hat Quell-IP 192.168.1.2.
2. Der Router empfängt das Paket und erkennt die private Quelladresse.
3. Er ändert die Quell-IP-Adresse auf seine öffentliche Adresse **203.0.113.5** und weist eine eindeutige L4-Portnummer zu (z.B. **10001**).
4. Das Paket wird mit der neuen Quelladresse 203.0.113.5:10001 ins Internet gesendet.
**Eingehender Verkehr (Antwort vom Webserver):**
1. Der Webserver antwortet an 203.0.113.5:10001.
2. Der Router empfängt die Antwort und schaut in seiner **NAT-Tabelle** nach.
3. Er übersetzt die Zieladresse zurück zu 192.168.1.2, indem er die Portnummer 10001 verwendet, um den richtigen internen PC zu identifizieren.
PC2 und PC3 erhalten eigene Portnummern (z.B. 10002, 10003). Der Router verwendet die **gleiche** öffentliche IP-Adresse, aber **verschiedene Ports** für die Zuordnung.
-----
### Zuweisung der Portnummer im Detail
- Die Portnummer wird vom **Router** während des NAT-Prozesses zugewiesen, wenn ein internes System eine Verbindung zu einem externen Server initiiert.
- Der Router führt eine Übersetzung der **Quell-IP-Adresse** und der **Quell-Portnummer** durch.
- Ein Eintrag in einer **NAT-Tabelle** wird erstellt, der die Zuordnung von interner IP:Port zu externer IP:Port speichert.
- Portnummern werden auf der **Transport-Schicht (Schicht 4)** des OSI-Modells zugewiesen und sind im **Transport-Header** (TCP oder UDP) des IP-Pakets kodiert.
**Konkretes Beispiel:**
- PC mit IP 192.168.1.2 und Quellport 50000 möchte zu Webserver 93.184.216.34 (Port 80 HTTP).
- IP-Paket enthält: IP-Header (Quell-IP 192.168.1.2, Ziel-IP 93.184.216.34) + TCP-Header (Quellport 50000, Zielport 80).
- Router ändert Quell-IP auf 203.0.113.5 und weist neuen Quellport 10001 zu.
- NAT-Tabelle: 192.168.1.2:50000 ↔ 203.0.113.5:10001.
- Paket wird gesendet mit Quell-IP 203.0.113.5, Quellport 10001. Die **Zielportnummer bleibt unverändert** (80).
-----
### Sicherheitskonzept hinter NAT
#### 1. Verstecken interner IP-Adressen
- NAT verbirgt die internen IP-Adressen der Systeme (**Anonymität**).
- Alle Systeme greifen mit der öffentlichen IP-Adresse des Routers auf das Internet zu.
- Angreifer können nicht direkt auf interne Systeme zugreifen, da die IP-Adressen nicht bekannt sind.
- Für mehrere Systeme (PCs, Smartphones etc.) sieht ein externer Server nur die öffentliche IP-Adresse des Routers.
- Interne Adressen (z.B. 192.168.1.2, 192.168.1.3) sind für den externen Server **unsichtbar**.
#### 2. Einschränkung eingehender Verbindungen
- NAT erlaubt standardmäßig **keine eingehenden Verbindungen** von externen Quellen.
- Nur **intern initiierte** Verbindungen erhalten eine Rückantwort.
- Ein Angreifer kann keine Verbindung nach intern herstellen, **außer** eine spezifische **Portweiterleitung** oder Regel wurde konfiguriert.
- Ein Webserver im Internet kann seine Antwort nur an die öffentliche IP-Adresse des Routers senden.
#### 3. Port Address Translation (PAT)
- Bei PAT (NAT Overload) nutzen alle Systeme dieselbe öffentliche IP-Adresse mit **verschiedenen Portnummern**.
- Erhöht die Sicherheit durch **Verringerung der Angriffsvektoren**.
- Ein Angreifer, der eine Verbindung zu 203.0.113.5 versucht, hat keine Information darüber, welches interne Gerät auf welchem Port aktiv ist.
#### 4. Einfachheit der Konfiguration
- NAT-Implementierungen bieten oft eine **eingebaute Firewall-Funktionalität**.
- Der NAT-Router blockiert automatisch unerwünschte eingehende Verbindungen.
- Viele Angriffsarten (z.B. Port-Scanning-Versuche) werden erschwert.
**Wichtig:** NAT ist **kein vollständiger Ersatz** für Sicherheitslösungen wie Firewalls oder Intrusion Detection Systems, sondern nur eine **weitere Ergänzung** der Sicherheitsarchitektur.
-----
### NAT in IPv6
Bei IPv6 wird die Notwendigkeit für NAT oft in Frage gestellt, da IPv6 einen nahezu **unbegrenzten Adressraum** bietet. NAT bleibt jedoch in bestimmten Szenarien relevant. Die relevanten Konzepte sind **NAT64** und **NPTv6**.
#### NAT64
NAT64 ermöglicht **IPv6-Clients den Zugriff auf IPv4-Ressourcen**.
Funktionsweise:
1. Ein IPv6-Client möchte auf einen IPv4-Webserver zugreifen (z.B. 203.0.113.10).
2. Der NAT64-Router übersetzt die Ziel-IPv4-Adresse in ein IPv6-Format. Die IPv4-Adresse 203.0.113.10 wird in das Well-Known IPv6-Präfix **64:ff9b::** eingebettet (Ergebnis z.B. 64:ff9b::cb00:710a).
3. Der Webserver sendet die Antwort zurück an die IPv4-Adresse des NAT64-Routers.
4. Der NAT64-Router übersetzt die Antwort von IPv4 zurück zu IPv6 und leitet sie an den Client weiter.
Vorteile von NAT64:
- **Interoperabilität:** IPv6-Clients erhalten Zugriff auf IPv4-Ressourcen.
- **Keine Änderungen an IPv4-Servern** nötig.
- **Erleichtert den Übergang** von IPv4 zu IPv6, da bestehende IPv4-Dienste weiterhin nutzbar bleiben.
#### NPTv6 (Network Prefix Translation)
NPTv6 ist eine Art NAT, die **nur das Präfix** einer IPv6-Adresse ändert (der Interface-Identifier bleibt gleich).
Anwendungsfall: Ein Netzwerk wechselt den ISP. Der neue ISP vergibt ein neues IPv6-Präfix (z.B. 2001:0db8:1234::/48 statt des alten 2001:0db8:abcd::/48). Der NPTv6-Router wird so konfiguriert, dass er eingehende/ausgehende Pakete mit dem alten Präfix in das neue Präfix übersetzt.
Beispiel: Quelladresse 2001:0db8:abcd:0001::1 wird zu 2001:0db8:1234:0001::1 übersetzt.
Vorteile von NPTv6:
- **Einfache Migration:** Internes Adressschema kann trotz ISP- oder Präfix-Wechsel beibehalten werden.
- **Minimale Änderungen:** Keine Neukonfiguration aller internen Geräte nötig.
- **Transparente Übersetzung:** Geschieht transparent für die internen Geräte, keine Änderungen an Anwendungen oder Diensten.
#### Warum NAT auch bei IPv6 noch relevant ist
- **Transition IPv4→IPv6:** In der Übergangsphase existieren noch viele IPv4-Ressourcen → NAT64 nötig.
- **Sicherheitsaspekte:** NAT verbirgt die interne Netzwerkstruktur. Auch wenn IPv6 Sicherheit durch IPsec bietet, möchten Organisationen möglicherweise zusätzliche Schutzmaßnahmen.
- **Routenmanagement:** NPTv6 ermöglicht präfixbasierte Strategien, die Routing und Netzwerkinfrastruktur vereinfachen.
- **Flexibles Adressmanagement:** Organisationen können Adressierungssysteme anpassen, ohne interne Strukturen zu beeinträchtigen → NPTv6.
- **Legacy-Systeme:** Viele bestehende Systeme sind noch auf IPv4 konfiguriert → NAT64 ermöglicht den gleichzeitigen Betrieb.
-----
## LAYER 7 Application Layer (Anwendungsschicht) DNS
### Domain Name Service (DNS) Grundlagen
DNS ist ein **hierarchisches System** zur Namensauflösung. Es wandelt **Domainnamen** (z.B. www.example.com) in **IP-Adressen** (z.B. 192.0.2.1) um. Der Zweck ist die Verwendung leicht merkbarer Domainnamen statt numerischer IP-Adressen, was eine benutzerfreundliche Navigation im Internet ermöglicht.
Zwei Kernkomponenten:
- **Name-Server:** Software/Server zum Beantworten von DNS-Anfragen. Pro Zone gibt es einen primären Server.
- **Resolver:** Software zum Auflösen von Rechnernamen. Ergebnisse werden im Cache gespeichert (Caching).
-----
### DNS-Struktur (Hierarchien)
Das DNS ist hierarchisch aufgebaut:
- **Root-Domain:** Höchste Ebene, dargestellt als Punkt (.). Umfasst alle TLDs. Der Root-Server ist der Ausgangspunkt für alle DNS-Abfragen.
- **Top-Level-Domains (TLD):** z.B. .com, .net, .edu, .org, .gov, .de. Umfassen verschiedene Kategorien von Domains.
- **Second-Level-Domains:** z.B. example.com. Typischerweise der Name einer Organisation oder eines Unternehmens.
- **Subdomains:** z.B. www.example.com, mail.example.com. Befinden sich unter der Second-Level-Domain und dienen zur Strukturierung von Inhalten.
```
Root-Domain (.)
├── Top-Level-Domain (TLD)
│ ├── .com
│ ├── .org
│ └── .net
└── Second-Level-Domain
├── example.com
└── test.org
└── sub.test.org
```
-----
### FQDN Fully Qualified Domain Name
- Besteht aus **Hostname** und **Domain-Name**.
- Domain-Name besteht aus Subdomain(s) und Toplevel-Domain.
- Trennung durch Punkte, der absolute Pfad endet mit einem **Punkt**.
- Format: `Hostname.Subdomain.Toplevel-Domain.` → Beispiel: `mail.example.com.`
- **Maximale Länge:** 255 Zeichen.
- Jede **Subdomain** ist 1 bis 63 Zeichen lang.
- **Protokoll:** UDP-Port 53 für normale Anfragen, TCP-Port 53 für Zonentransfer.
-----
### Root-DNS-Server
- Es gibt **13 Gruppen** von Root-DNS-Servern weltweit verteilt, bezeichnet mit Buchstaben **A bis M** (z.B. a.root-servers.net, b.root-servers.net usw.).
- Diese Root-Server sind **nicht speziell** für .com zuständig, sondern sind die erste Anlaufstelle für alle TLD-Anfragen.
- Aktuell bestehen die 13 Gruppen aus **1.907 Instanzen**, verwaltet von **12 Organisationen**.
- Die Verwaltung wird von der **ICANN** (Internet Corporation for Assigned Names and Numbers) koordiniert einer gemeinnützigen Organisation, zuständig für die Koordination von IP-Adressen und Domainnamen.
- Website: root-servers.org
- **RIPE** (Réseaux IP Européens): 1989 gegründeter gemeinnütziger Verein als Forum zur technischen Koordination des Internets. **RIPE NCC** (RIPE Network Coordination Centre) hat seinen Sitz in Amsterdam.
-----
### DNS-Record-Typen
#### A-Record (Address Record)
- Verknüpft einen Domainnamen mit einer **IPv4-Adresse**.
- Eintrag: `example.com. IN A 192.0.2.1`
- Wenn jemand example.com eingibt, wird er zur IP-Adresse 192.0.2.1 geleitet.
#### AAAA-Record (IPv6 Address Record)
- Verknüpft einen Domainnamen mit einer **IPv6-Adresse**.
- Eintrag: `example.com. IN AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334`
#### CNAME-Record (Canonical Name Record)
- Erstellt einen **Alias** für einen anderen Domainnamen.
- Eintrag: `www.example.com. IN CNAME example.com.`
- Zugriff auf www.example.com wird auf example.com umgeleitet. Alle Anfragen werden an die IP-Adresse von example.com weitergeleitet.
#### MX-Record (Mail Exchange Record)
- Gibt den **Mailserver** für die Domain an.
- Eintrag: `example.com. IN MX 10 mail.example.com.`
- E-Mails an example.com werden an mail.example.com weitergeleitet.
- Die Zahl (10) gibt die **Priorität** an: niedrigere Zahlen = höhere Priorität.
#### NS-Record (Name Server Record)
- Zeigt, welche DNS-Server **autoritativ** für die Domain sind.
- Eintrag: `example.com. IN NS ns1.exampledns.com.`
#### PTR-Record (Pointer Record)
- Auflösung einer **IP-Adresse zu einem Domainnamen** (Reverse DNS).
- Eintrag: `1.2.0.192.in-addr.arpa. IN PTR example.com.`
- IP-Adresse 192.0.2.1 wird auf example.com aufgelöst.
#### SOA-Record (Start of Authority Record)
- Enthält **administrative Informationen** über die Domain, einschließlich des primären DNS-Servers und der Kontaktinformationen.
- Eintrag: `example.com. IN SOA ns1.exampledns.com. hostmaster.example.com. (2023010101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL)`
Felder des SOA-Records:
- **Name:** Domainname
- **TTL bei Antwort:** Wie lange Informationen gespeichert werden
- **Zonen-Klasse (IN):** Steht für Internet
- **Primärer Server:** Domain Name des primären DNS-Servers (Master)
- **Verantwortlicher:** E-Mail-Adresse des Administrators (mit `.` statt `@`)
- **Seriennummer:** Nummer der Zonendatei, anhand derer Secondary-Server erkennen, ob eine Aktualisierung nötig ist
- **Refresh-Zeit:** Zeit in Sekunden, die ein Secondary Server wartet, bevor er erneut die Seriennummer abfragt (typisch 112h)
- **Retry-Zeit:** Erneuter Versuch, wenn Refresh nicht erfolgreich war
- **Expire-Zeit:** Gültigkeitsdauer in Sekunden. Nach Ablauf gibt der Secondary keine Antworten mehr
- **TTL bei keiner Antwort (Minimum):** Dauer der Speicherung von „Domain existiert nicht”-Antworten. Verhindert Überlastungen
Beispiel SOA-Record für google.com (abfragbar mit `nslookup type=SOA google.com`):
```
google.com. 21599 IN SOA ns1.google.com. dns-admin.google.com.
2023032701 ; serial
7200 ; refresh (2 hours)
1800 ; retry (30 minutes)
604800 ; expire (1 week)
60 ; minimum (1 minute)
```
-----
### DNS-Server und Resolver
#### Aufgaben eines DNS-Servers
- Hostet die DNS-**Zonendateien**.
- Ist **autoritativ** für bestimmte Domains.
- Liefert Informationen über Domainnamen und deren zugehörige IP-Adressen.
#### Aufgaben eines DNS-Resolvers
- Ist **nicht autoritativ**, bearbeitet Anfragen von Clients.
- Liefert IP-Adressen an den Client.
- Fungiert als **Vermittler** zwischen dem Client und den DNS-Servern.
#### DNS-Resolver Installation
- Kann ein öffentlicher DNS-Resolver eines ISPs sein.
- Kann ein separater, lokaler Server in einem Unternehmensnetzwerk sein.
- Cloud Provider bieten DNS-Resolver als Teil ihres Services an.
-----
### DNS-Namensauflösung Zwei Methoden
#### 1. Rekursive Anfrage (Verantwortung beim DNS-Resolver)
Der Resolver übernimmt die **komplette Auflösung** im Auftrag des Clients:
1. Benutzer fragt im Browser nach www.example.com → Client fragt den lokalen DNS-Resolver.
2. Resolver prüft seinen **Cache**. Falls vorhanden: IP-Adresse direkt zurückgeben.
3. Falls nicht im Cache: Resolver fragt einen **Root-DNS-Server** → dieser gibt den TLD-Server für .com zurück.
4. Resolver fragt den **TLD-Server** → dieser gibt den autoritativen DNS-Server für example.com zurück.
5. Resolver fragt den **autoritativen DNS-Server** → dieser gibt die IP-Adresse zurück.
6. Resolver gibt die IP-Adresse an den Client und **speichert sie im Cache**.
#### 2. Iterative Anfrage (Anfrage an andere Server)
Der Resolver fragt nur **einmal** den bekannten DNS-Server. Hat der Server die Antwort nicht, gibt er entweder die IP-Adresse eines anderen Servers zurück oder einen Fehler.
Ablauf:
1. Client-Anfrage geht ein, Resolver prüft den Cache.
2. Sendet Abfrage an den **Root-DNS-Server**.
3. Root-Server liefert die Adresse des **TLD-Servers** (nicht die finale Antwort).
4. Resolver muss dann **separat** den TLD-Server anfragen.
5. Falls der TLD-Server die Antwort nicht hat, verweist er auf den autoritativen Server → Resolver stellt **erneute Anfrage**.
6. IP-Adresse wird an den Client geliefert, nachdem alle Anfragen durchgeführt sind.
**Vergleich:**
- **Rekursiv** wird verwendet, wenn eine vollständige Auflösung gewünscht ist → Standardkonfiguration der meisten DNS-Resolver der ISPs.
- **Iterativ** wird in bestimmten Architekturen verwendet, mit eventuellen Vorteilen bei Ressourcennutzung, Kontrolle, Sicherheit und Performance.
-----
### DNS Root Zone Management
Die **IANA** (Internet Assigned Numbers Authority) ist verantwortlich für das Management der DNS Root Zone. Sie weist Operators zu Top-Level Domains zu und verwaltet die administrativen Details → **Root Zone Database**.
IANA-Whois-Service zeigt Informationen zu TLDs:
- **.com** (USA): Registriert 1985, Organisation: VeriSign Global Registry Services, Reston VA.
- **.cn** (China): Registriert 1990, Organisation: China Internet Network Information Center (CNNIC), Beijing.
- **.de** (Deutschland): Registriert 1986, Organisation: DENIC eG, Frankfurt am Main.
-----
### DNS-Zone
- Eine Zone ist der **Teil des Domain-Baumes**, für den ein Server zuständig ist.
- Ein Server kann **primäre und sekundäre** Zonen verwalten.
- Daten werden in der **primären Zone** gepflegt.
- Übertragung an Secondary DNS-Server erfolgt über **Zonentransfer** (Backup-Server).
**Zwei Mechanismen für Zonentransfer:**
1. **Benachrichtigung durch Master (Push):** Der Master (Primary) unterrichtet die Slaves (Secondaries) über Änderungen. Der Slave fordert dann die geänderten Daten oder die komplette Zone an.
2. **Daten werden vom Slave angefordert (Pull):** Der Secondary DNS-Server fordert regelmäßig den **SOA-Record** an und vergleicht die **Seriennummer**. Falls die Seriennummer des Secondary kleiner ist als die des Servers → Zonentransfer wird eingeleitet.
-----
### DNS Reverse Lookup
Reverse Lookup ist die Umsetzung einer **IP-Adresse in einen Namen** (umgekehrte Richtung zur normalen Namensauflösung).
- Zone: `in-addr.arpa.` für IPv4, `ip6.arpa.` für IPv6.
- IP-Oktette werden **von rechts nach links** aufgelöst.
- IP: 134.30.15.41 → Reverse: `41.15.30.134.in-addr.arpa.`
- Jedes Oktett der IP-Adresse bildet eine **Ebene** in der DNS-Hierarchie.
- Adressen können in höheren Ebenen eingetragen sein.
- Feinere Unterteilungen als **/24** sind nicht möglich.
-----
### Dynamisches DNS (DDNS ≠ DynDNS)
#### Dynamische Client-Konfiguration
- Name wird vom DHCP-Server zugeordnet.
- Client behält seinen Namen und nimmt nur die IP vom DHCP-Server.
#### DynDNS
- Konstante Aktualisierung der IP-Adresse für ein Domainame
- Aktualisierung über **Web-Interface** oder **Client-Software**.
- Die letzte Zuordnung bleibt bestehen.
- Verwendet **sehr kurze TTL**, damit Änderungen schnell wirksam werden.
#### DDNS
- Aktualisierung **direkt beim Name-Server** (standardisiertes DNS-Update-Protokoll).
- Aktualisierungen werden an andere Server der Zone **weitergereicht**.
- Erfordert **Authentifizierung**.
-----
### DNS Service Record (SRV)
SRV-Records ermöglichen es, **Dienste dynamisch zu lokalisieren**. Sie sind ein spezieller Typ von DNS-Eintrag, der Informationen über Dienste bereitstellt. Clients können den Standort eines bestimmten Dienstes (z.B. VoIP, Instant Messaging) finden, ohne im Voraus zu wissen, auf welchem Server der Dienst läuft.
#### Struktur eines SRV-Records
|Feld |Beschreibung |
|------------|---------------------------------------------------------------|
|**Service** |Name des Dienstes (z.B. `_sip` für SIP) |
|**Protocol**|Verwendetes Protokoll (z.B. `_tcp`, `_udp`) |
|**Name** |Domainname, für den der SRV-Record gilt |
|**Priority**|Priorität des Dienstes (niedrigere Werte = höhere Priorität) |
|**Weight** |Gewicht für Lastenausgleich zwischen Servern gleicher Priorität|
|**Port** |Port, über den der Dienst erreichbar ist |
|**Target** |Zielhost, der den Dienst bereitstellt |
#### Beispiel: SRV-Record für VoIP über UDP
```
_sip._udp.example.com. 3600 IN SRV 10 60 5060 sipserver.example.com.
```
Erklärung der Felder:
- `_sip._udp`: SIP-Dienst über UDP-Protokoll. Der Unterstrich `_` kennzeichnet einen speziellen Dienst.
- `example.com.`: Domain, die den VoIP-Dienst bereitstellt.
- `3600`: TTL in Sekunden (1 Stunde).
- `IN`: Klasse Internet.
- `SRV`: Record-Typ.
- `10`: Priorität (höhere Priorität als z.B. ein Eintrag mit 20).
- `60`: Gewicht für Lastverteilung (höherer Wert = höhere Wahrscheinlichkeit, ausgewählt zu werden).
- `5060`: Port für SIP über UDP.
- `sipserver.example.com.`: Hostname des SIP-Servers.
SRV-Records sind besonders nützlich für VoIP-Dienste, da sie Clients ermöglichen, dynamisch den richtigen Server zu finden.
-----
### Sicherheitsaspekte von DNS
#### 1. DNS Spoofing (Cache Poisoning)
- **Angriff:** Angreifer sendet **gefälschte DNS-Antworten** an einen DNS-Resolver, um dessen Cache zu manipulieren.
- **Auswirkung:** Benutzer werden auf gefälschte oder schadhafte Websites umgeleitet.
- **Schutzmaßnahmen:**
- **DNSSEC** (Domain Name System Security Extensions): Fügt **digitale Signaturen** zu DNS-Daten hinzu, um deren Authentizität zu überprüfen. Stellt sicher, dass die Daten nicht manipuliert wurden.
#### 2. DDoS-Angriffe (Distributed Denial of Service)
- **Angriff:** DNS-Server werden mit einer großen Anzahl von Anfragen **überflutet**. Richtige Anfragen erhalten keinen Zugriff auf den Dienst.
- **Schutzmaßnahmen:**
- **Lastverteilung** auf mehrere Server (Minimierung der Auswirkung).
- **Rate-Limiting:** Begrenzt die erlaubte Anzahl der Anfragen einer IP-Adresse in einem bestimmten Zeitraum.
- Spezialisierte **DDoS-Schutzlösungen** (z.B. Cloudflare, Akamai, AWS Shield), die Traffic in Echtzeit analysieren und Angriffe abwehren.
#### 3. DNS-Tunneling
- **Angriff:** Angreifer installiert Malware, die **Daten über DNS-Anfragen und -Antworten** sendet. Daten werden in kleinen DNS-Paketen übertragen (Datenexfiltration oder Command-and-Control-Kommunikation).
- **Schutzmaßnahmen:**
- Überwachung des DNS-Verkehrs auf **ungewöhnliche Muster**.
- Mittels **Firewall-Regeln** DNS-Anfragen auf autorisierte Server begrenzen.
#### 4. Man-in-the-Middle-Angriffe
- **Angriff:** Abfangen der Kommunikation zwischen Client und DNS-Server. **Manipulation** der DNS-Anfragen oder Weiterleiten auf schädliche Webseiten.
- **Schutzmaßnahmen:**
- Verwendung von **DNSSEC** stellt sicher, dass DNS-Antworten authentisch sind.
- **Verschlüsselung** der DNS-Kommunikation durch DNS-over-HTTPS (DoH) oder DNS-over-TLS (DoT).
#### 5. Phishing über DNS
- **Angriff:** Nutzung gefälschter DNS-Einträge (z.B. A-Record oder SRV-Record), um Benutzer auf **bösartige Websites** umzuleiten (z.B. gefälschte Bank-Website). Benutzer werden dazu gebracht, Anmeldedaten einzugeben.
- **Schutzmaßnahmen:**
- **Bewusstsein und Schulung:** Benutzer sollten über die Risiken von Phishing informiert und geschult werden, um verdächtige Links zu erkennen.
- **DNS-Filtering:** Technologien, die den Zugriff auf bekannte bösartige Domains blockieren.