arping

F√ľr was ben√∂tigt man arping √ľberhaupt?

Nun … z.B. um mit diesem Utility feststellen zu k√∂nnen ob ein bestimmter Rechner bzw. eine IP-Adresse im LAN an ist oder nicht. Daf√ľr ist zwar eigentlich ping das √ľbliche Utility aber falls der betreffende Rechner ICMP-Echo-Requests √ľber eine Firewall sperrt erh√§lt man keine Antwort mehr. Diese Firewall-Einstellung ist z.B. bei Windows XP mit Service-Pack 2 und allen neueren Versionen von Windows die Default-Einstellung.

Hier ein Beispiel:

r-andreas:~ # ping 172.16.0.201
PING 172.16.0.201 (172.16.0.201) 56(84) bytes of data.
^C
--- 172.16.0.201 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 5999ms

Es sieht also so aus als ob dieses Rechner derzeit nicht am Netz ist.

Aber: F√ľr die Zustellung eines IP-Pakets wird in einem Ethernet-LAN die MAC-Adresse des Zielrechners ben√∂tigt. Ist diese nicht bekannt wird diese im Hintergrund √ľber eine ARP-Anfrage in Erfahrung gebracht. Genau das passiert auch bei einem ICMP-ping. Der ICMP-Echo-Request wird in einem IP-Paket an den Zielrechner gesendet und um diese IP-Paket in einen Ethernet-Frame zu verpacken wird die MAC-Adresse des Zielrechners √ľber ARP in Erfahrung gebracht. Das kann man √ľber Einsicht in den ARP-Cache unmittelbar nach dem ICMP-ping auch sehen:

r-andreas:~ # arp -n
Address                  HWtype  HWaddress           Flags Mask  Iface
172.16.0.132             ether   00:0f:1f:ca:76:dc   C           eth0
172.16.0.1               ether   00:0d:88:fc:c0:5f   C           eth0
172.16.0.201             ether   00:0c:29:1b:a1:2c   C           eth0

Hier ist der Rechner 172.16.0.201 sehr wohl aufgef√ľhrt. Da ARP ein unbedingt notwendiges Protokoll ist, wird es √ľber die Firewall nicht gesperrt. Ohne ARP k√∂nnten die Clients im Netz nicht untereinander kommunizieren. Die Idee von arping ist es den ICMP-ping gleich zu umgehen, mit ARP-Requests zu arbeiten und dabei das altbekannt e ping-Utility nachzuahmen.

arping am Beispiel openSUSE 11.2

openSUSE 11.2 bringt im Paket „iputils“ bereits ein arping-Utility mit. Damit kann man nun in einem Schritt feststellen ob eine bestimmte IP-Adresse im LAN aktuell vorhanden ist und dabei im Gegensatz zum vorherigen Ansatz wieder die Round-Trip-Zeiten wie beim normalen ping sehen.

r-andreas:~ # arping 172.16.0.201
ARPING 172.16.0.201 from 172.16.0.131 eth0
Unicast reply from 172.16.0.201 [00:0C:29:1B:A1:2C]  1.046ms
Unicast reply from 172.16.0.201 [00:0C:29:1B:A1:2C]  0.809ms
Unicast reply from 172.16.0.201 [00:0C:29:1B:A1:2C]  1.156ms
Unicast reply from 172.16.0.201 [00:0C:29:1B:A1:2C]  0.753ms
^CSent 4 probes (1 broadcast(s))
Received 4 response(s)

Das betreffende arping-Utility ist die Variante von Alexey Kuznetsov.

Alternative arping-Version

Es gibt im Internet auch noch eine arping-Version von Thomas Habets. Diese Version erm√∂glicht es als Zielangabe auch eine MAC-Adresse statt einer IP-Adresse anzugeben. Die Idee dahinter ist es zu einem unbekannten Rechner von dem aber die MAC-Adresse bekannt ist die zugeh√∂rige IP-Adresse in Erfahrung zu bringen. Daf√ľr verwendet arping von Thomas Habets dann wieder einen ICMP-Echo-Request der aber wie schon oben erw√§hnt z.B. von Windows XP SP2+ gesperrt und somit nicht beantwortet wird. Als Ziel-Adresse wird die Non-directed-Broadcast-Adresse 255.255.255.255 verwendet.

Schreibe einen Kommentar