Damit IPv4 im Ethernet funktioniert braucht man das ARP (Address Resolution Protocol) als Unterbau. Denn sonst würden die IPv4 Pakete ja ihren Weg nicht zur richtigen Netzwerkkarte finden. ARP und IPv4 sind dabei völlig unabhängige Protokolle, sie arbeiten nur seit Jahrzenhten Hand in Hand. Das vergessen viele schnell 🙂
Möchte man also nun herausfinden welche MAC Adresse das System (im gleichen Ethernet-Netzwerk) hat, mit welchem man sich gerade unterhält… Ja, dann bemüht man das ARP.
Unter Linux:
$ arp Address HWtype HWaddress Flags Mask Iface errorgrab.kernel-error. ether 00:ff:c9:05:01:c7 C enp2s0 wurstsuppe.kernel-error. ether 50:ff:5d:85:73:48 C enp2s0
Unter Openindiana/Solaris 11:
$ arp -a Net to Media Table: IPv4 Device IP Address Mask Flags Phys Addr ------ -------------------- --------------- -------- --------------- rge0 router.kernel-error 255.255.255.255 00:ff:42:72:2b:a6 rge0 192.168.1.31 255.255.255.255 00:ff:b0:ae:0b:eb rge0 sebastian-solaris.kernel-error 255.255.255.255 SPLA 80:ff:73:4a:38:c7 rge0 all-routers.mcast.net 255.255.255.255 S 01:ff:5e:00:00:02
Bei IPv6 schaut es nun etwas anders aus. Man könnte sagen, hier wurde ARP direkt mit in IPv6 integriert. Es findet sich im Neighbor Discovery wieder. Möchte man hier seine „Nachbarn“ sehen klappt es so:
Unter Linux:
$ ip -6 neigh show fe80::1 dev enp2s0 lladdr 50:ff:5d:85:73:48 router STALE fe80::2ff:c9ff:fe05:1c7 dev enp2s0 lladdr 00:ff:c9:05:01:c7 router REACHABLE
Unter Openindiana/Solaris 11:
$ netstat -pf inet6 Net to Media Table: IPv6 If Physical Address Type State Destination/Mask ----- ----------------- ------- ------------ --------------------------- rge0 33:33:ff:00:00:01 other REACHABLE ff02::1:ff00:1 rge0 00:ff:42:72:2b:a6 dynamic REACHABLE router.kernel-error rge0 33:33:00:00:00:01 other REACHABLE ff02::1 rge0 33:33:00:01:00:02 other REACHABLE ff02::1:2 rge0 33:33:ff:00:00:06 other REACHABLE ff02::1:ff00:6 rge0 33:33:ff:10:98:82 other REACHABLE ff02::1:ff10:9882 rge0 33:33:ff:ad:7a:dd other REACHABLE ff02::1:ffad:7add rge0 33:33:ff:00:00:11 other REACHABLE ff02::1:ff00:11 rge0 33:33:00:00:00:16 other REACHABLE ff02::16 rge0 46:ff:91:30:98:3d dynamic REACHABLE 2001:7d8:8001:0:ffff:bdb9:6810:9882 rge0 80:ff:73:4a:38:c7 local REACHABLE sebastian-solaris.kernel-error rge0 80:ff:73:4a:38:c7 local REACHABLE fe80::ffff:73ff:fe4a:38c7 rge0 00:ff:42:72:2b:a6 dynamic REACHABLE fe80::fff:42ff:fe72:2ba6 rge0 33:33:ff:4a:38:c7 other REACHABLE ff02::1:ff4a:38c7
Früher war es mit dem ARP „einfacher“. Zumindest musste man sich nur einen Befehl merken und dann halt die für das jeweilige Betriebsystem nötigen Schalter herausfinden. Mit IPv6 ist es nun mit in die jeweiligen IP-Tools gewandert. Ich halte es für sauberer auch wenn man sich nun nicht mehr mit den Befehlt „arp“ behelfen kann.
BSD und ihre Ableger nutzen „ndp„.
Bei Linux verschwindet alles in den iproute2-Tools mit dem Befehl: „ip“ (ifconfig, route, usw. usw…. alles im Tool ip)
Microsoft wirft alles in „netsh„.
Unixbasierendes hält sich ans gute alte „netstat„.
Also bis dahin…
Schreibe einen Kommentar