Weitere Informationen zu DNS ist zu finden unter: DNS
Um die Kommunikation zwischen System übersichtlicher zu gestalten, lassen sich eindeutige Namen den IP-Adressen zuordnen. Die Umwandlung einer IP-Adresse in einen Hostnamen nennt man Namensauflösung. Es gibt verschiedene Möglichkeiten, die Namensauflösung durchzuführen.
/etc/hosts (lokale Datei):
Jedes TCP/IP-Betriebssystem hat eine Datei mit dem Namen "hosts". In dieser Datei sind IP-Adressen und Computernamen tabellarisch aufgelistet. Weil diese Datei händisch gepflegt werden muss, trägt man hier temporär nur die Adressen und Namen lokaler Systeme ein. Die Datei findet man unter /etc/hosts (Linux, BSD, macOS) bzw. C:\Windows\System32\drivers\etc\hosts (Windows).
DNS (Domain Name System): DNS ist ein dezentrales und hierarchisch angeordnetes System zur Auflösung von Domain-Namen in IP-Adressen. Ein Client, der einen Domain-Namen in eine IP-Adresse auflösen will, stellt eine Anfrage an einen DNS-Server. Kann dieser DNS-Server die Anfrage nicht beantworten, dann befragt er einen übergeordneten DNS-Server, bis eine IP-Adresse ermittelt und an den anfragenden Client zurück geliefert werden kann. - Mehr dazu unter DNS.
Die oben aufgeführte DNS-Methode nennt man auch Reverse DNS (rDNS).
Angenommen die Domain server1.example.com zeigt auf die IP Adressen 203.0.113.65 sowie 2001:db8::567:89ab. In dem Fall sehen die DNS Einträge so aus:
server1.example.com. 1800 IN A 203.0.113.65
server1.example.com. 1800 IN AAAA 2001:db8::567:89ab
Hier verwendet man also das A Record für die Zuordnung der Domain auf eine IPv4 Adresse und ein AAAA Record zur Zuordnung der Domain auf eine IPv6 Adresse. Um das A-Record für server1.example.com zu erhalten, geht man dabei praktisch von hinten nach vorne vor, d.h. es wird der für .com zuständige Nameserver (NS) aufgelöst, und dem wird gefragt, welcher NS für example.com authorativ ist. Dieser wird angefragt, wer für server1.example.com authorativ ist. Der authorative Nameserver wird dann anschließend nach dem A Record angefragt und liefert die IP-Adresse 203.0.113.65.
Nun kann man jedoch auch die IP Adressen 203.0.113.65 sowie 2001:db8::567:89ab auf einen Namen zeigen lassen. In dem Fall sehen die zugehörigen DNS EInträge wie folgt aus:
65.113.0.203.in-addr.arpa. 1285 IN PTR server1.example.com.
b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. 1285 IN PTR server1.example.com.
Man nutzt also ein PTR Record um eine IP Adresse auf eine Domain aufzulösen und nutzt dabei die zugehörige in-addr.arpa bzw. ip6.arpa Domain zur IPv4 bzw. IPv6 Adresse.
Dabei erfolgen die Anfragen ähnlich wie oben an dem Beispiel von server1.example.com beschrieben. Daher ist das erste Oktett direkt vor in-addr.arpa zu setzen. Das Zonefile könnte dabei wie folgt aussehen:
65 IN PTR server1.example.com.
Dabei ist das eine Zonendatei für den IP-Adressbereich 203.0.113.0/24 und das letzte Oktett steht ganz weit vorne.
Sind zwei Knoten via Layer 2 miteinander verbunden, wird die IP-Adresse in eine MAC-Adresse (Hardware-Adresse) aufgelöst und das Ethernet-Paket via Layer 2 übermittelt. Dies geschieht mittels ARP (Address Resolution Protocol).
Eine MAC-Adresse ist die eine Hardwarekomponente eindeutig identifizierende 48-Bit Hardware-Adresse. Die signifikanten 24-Bit beschreiben die Organisations-ID, bzw. Hersteller-ID und die unteren 24-Bit die Hardware.
| 47 - 24 | 23 - 0 |
|---|---|
| Org-ID | NIC-ID |
Mit IPv6 wird NDP (Neighbor Discovery Protocol) statt ARP verwendet. Dies hat unter anderem Sicherheitsgründe aufgrund von ARP-Spoofing, MAC-Flooding & MAC-duplication. Weitere Infos unter: Why is ARP replaced by NDP in IPv6? - Super User.
In einem IPv4 Subnet wird das Address Resolution Protocol (ARP) zur Adressauflösung verwendet. Damit findet erst die Zuordnung der logischen Layer 3 IPv4 Adresse auf die physische Link-Layer bzw. Layer 2 MAC-Adresse statt.
ARP-Paket:
| 31 - 24 | 23 - 16 | 15 - 8 | 7 - 0 |
|---|
| Hardware Type (Ethernet=1); 16-Bits | Protocol Type (IPv4=0x800); 16-Bits |
| #bytes phys addr; 8-Bits | #bytes proto addr; 8-Bits | Operation (1=Request, 2=Reply); 16-Bits |
| Sender Hardware Address (Ethernet -> 48-Bit MAC); variable Länge |
| Sender Protocol Address (IPv4 -> 32-Bit IP Address); variable Länge |
| Target Hardware Address (Ethernet -> 48-Bit MAC); variable Länge |
| Target Protocol Address (IPv4 -> 32-Bit IP Address); variable Länge |
Sollten der Absender und das Ziel verschiedene Netz-IDs (IP) haben, also auch nicht im selben Layer-2 Netz sein, erreicht das ARP Paket das Gateway bzw. den Router und das Gateway sendet nun ein Broadcast mit einem ARP Request. Der ursprüngliche Absender erhält die MAC Adresse des Gateways als Antwort und das Gateway die MAC-Adresse des Ziels, bzw. eines anderen Gateways.
In der ARP-Tabelle des Systems werden die Adresse (Bspw. IPv4), Hardware-Typ (Bspw. Ethernet), die Hardware-Adresse (Bspw. MAC-Adresse) und das Interface über das die Hardware zu erreichen ist gecached. Man kann die Tabelle wie folgt betrachten:
arp -en
Der Neighbor Discovery Protocol (NDP) wird in IPv6 Netzwerken genutzt, u.a. für SLAAC, Adressauflösung, Neigbor Unreachability Detection (NDU) und Duplicate Address Detection (DAD). NDP ersetzt für IPv6 die sonst in IPv4-Netzwerken genutzten Protokolle ARP, sowie ICMP Router Discovery und ICMP Redirect Nachrichten, und ermöglicht gleichzeitig weitere Funktionalitäten. Ähnlich wie ARP im IPv4 arbeitet auch NDP im Layer 2. Das Protokoll ist in RFC 4861 definiert.
Die Knoten (Geräte) im IPv6-Netzwerk nutzen NDP für:
Router sind grundsätzlich auch Knoten, die IP implementieren. Sie erfüllen jedoch eine weitere Kerneigenschaft: Das Weiterleiten von Netzwerkpaketen (Network Layer Forwarding) im IP.[1]
[1] vgl. Definition des Routers gemäß RFC 1812
Auf den Punkt wie ein NDP Paket konkret aufgebaut ist, wird hier nicht eingegangen. Die Details sind jedoch unter RFC 2461 & RFC 4861 zu finden. Stattdessen werden hier die relevantesten Funktionen von NDP näher geführt.
NDP nutzt grundsätzlich 5 Nachrichtentypen, um die genannten Funktionen zu ermöglichen:
Diese Nachricht wird von einem Host bzw. Knoten gesendet, damit IPv6 Router auf dem Link ihre Router Advertisements sofort senden statt erst zur nächsten geplanten Zeit. Die Antwort des Routers in Form eines Router Advertisements findet sofort statt, ist jedoch an den Anfragenden direkt adressiert statt ein Broadcast an alle Hosts darzustellen.
Die Nachricht wird via Multicast an die Gruppe aller IPv6 Router gesendet, also an FF02::2/128. Als Ziel MAC-Adresse wird hier die 33:33:00:00:00:02 gesetzt. Die Faustregel lautet dabei, dass für alle Layer 3 Multicast Adressen die MAC-Adressen 33:33:xx:xx:xx:xx genutzt wird, wobei die letzten 32 Bits der Layer 3 Multicast Adresse statt der x einzutragen sind.
Damit kündigt der Router seine Präsenz auf dem Link an. Diese Nachricht enthält Informationen womit die Interfaces auf dem Link sich selber konfigurieren können, u.a.:
Router senden dabei ihre Advertisement Nachrichten periodisch per Broadcast. Um Synchronisiserungsprobleme zwischen Routern zu vermeiden, werden die Intervalle dabei zufällig gewählt.
Ein IPv6 Knoten nutzt diese Nachricht hauptsächlich zu den folgenden 3 Zwecken:
Neighbor Solicitation Nachrichten werden zudem auch für Duplicate Address Detection (DAD) verwendet. Dazu wird eine spezielle Neighbor Solicitation Nachricht gesendet, in der die Source-Adresse eine unspezifizierte ::/128 Adresse ist. Als Ziel-Adresse wird die Solicited Node Multicast Gruppenadresse von der IPv6 Adresse gewählt, die der Host zu nutzen beabsichtigt.
Ein IPv6 Knoten nutzt diese Nachricht, um auf eine Neighbor Solicitation Nachricht zu antworten (via Unicast). Der Knoten nutzt diesen zudem auch, um Veränderungen an der eigenen Link-Layer Adresse anzukündigen (via Solicited Node Multicast).
Die Neighbor Advertisement Nachricht enthält folgende Informationen:
IPv6 Router nutzen die Redirect Nachricht, um einem Host mitzuteilen, dass für das Ziel ein besseres Next-Hop besteht. Bspw. wenn ein Ziel über einen anderen Router im Netzwerk besser erreichbar ist. DIese Art von Nachricht wird nur in einem Multi-Router Setup zu sehen sein.