Good to Know Database

Route zu einem Zielsystem mit ping ermitteln


Die Route zu einem Zielsystem kann man mit traceroute (www.gtkdb.de/index_7_739.html), Nmap (www.gtkdb.de/index_7_740.html) und vielen anderen Netzwerk-Tools ermitteln. Wenn jedoch keines dieser Programme auf einem System installiert ist, ist guter Rat teuer. Einen Traceroute-Scan mit ICMP-Testpaketen kann man jedoch auch ganz leicht mit dem Befehl ping durchführen, welcher auf jedem System verfügbar sein sollte.

Dazu sendet man mit Hilfe der Option -c einen einzelnen ICMP Echo Request an das Zielsystem, wobei man den TTL-Wert (Time to live) mit der Option -t manuell von 1 hochzählt. Sobald das Zielsystem erreicht wurde, erhalten Sie einen ICMP Echo Response anstelle einer ICMP Typ 11 Antwort mit dem Code 0 (Time to live exceeded) zurück.

[root@centos5 ~]# ping -c 1 -t 1 www.gtkdb.de
PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
From 192.168.10.1 icmp_seq=1 Time to live exceeded

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

[root@centos5 ~]# ping -c 1 -t 2 www.gtkdb.de
PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
From 217.0.118.30 icmp_seq=1 Time to live exceeded

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

[...]

[root@centos5 ~]# ping -c 1 -t 8 www.gtkdb.de
PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
From 81.169.146.78 icmp_seq=1 Time to live exceeded

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

[root@centos5 ~]# ping -c 1 -t 9 www.gtkdb.de
PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
64 bytes from w01.rzone.de (81.169.145.65): icmp_seq=1 ttl=245 time=861 ms

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 861.521/861.521/861.521/0.000 ms

Wie Sie sehen, muss man mehrere Pings senden bevor das Zielsystem antwortet und erhält dadurch die benutzte Route. Damit man den TTL-Wert nicht ständig manuell inkrementieren muss, setzen wir den Befehl einfach in eine For-Schleife welche diese Aufgabe für uns übernimmt.

[root@centos5 ~]# for i in $(seq 10); do ping -c 1 -t $i www.gtkdb.de; done
PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
From 192.168.10.1 icmp_seq=1 Time to live exceeded

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
From 217.0.118.30 icmp_seq=1 Time to live exceeded

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

[...]

PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
From 81.169.146.78 icmp_seq=1 Time to live exceeded

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
64 bytes from w01.rzone.de (81.169.145.65): icmp_seq=1 ttl=244 time=61.6 ms

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 61.625/61.625/61.625/0.000 ms
PING www.gtkdb.de (81.169.145.65) 56(84) bytes of data.
64 bytes from w01.rzone.de (81.169.145.65): icmp_seq=1 ttl=244 time=60.1 ms

--- www.gtkdb.de ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 60.135/60.135/60.135/0.000 ms

Es ist schon praktisch, dass wir den TTL-Wert jetzt nicht mehr von Hand angeben müssen, aber die Ausgabe ist noch sehr unübersichtlich. Deshalb filtern wir die Ausgabe von ping einfach mit grep wodurch wir eine leicht lesbare Ausgabe der benutzten Route erhalten.

[root@centos5 ~]# for i in $(seq 10); do ping -c 1 -t $i www.gtkdb.de | grep -i From; done
From 192.168.10.1 icmp_seq=1 Time to live exceeded
From 217.0.118.30 icmp_seq=1 Time to live exceeded
From 87.186.240.18 icmp_seq=1 Time to live exceeded
From 217.239.37.166 icmp_seq=1 Time to live exceeded
From dtag-gw-muc1.de.lambdanet.net (193.159.225.78) icmp_seq=1 Time to live exceeded
From FRA-1-eth010.de.lambdanet.net (217.71.96.165) icmp_seq=1 Time to live exceeded
From Strato-KAR.de.lambdanet.net (217.71.108.82) icmp_seq=1 Time to live exceeded
From 81.169.146.78 icmp_seq=1 Time to live exceeded
64 bytes from w01.rzone.de (81.169.145.65): icmp_seq=1 ttl=244 time=60.6 ms
64 bytes from w01.rzone.de (81.169.145.65): icmp_seq=1 ttl=244 time=59.9 ms

Ein großes Problem hat dieses Konstrukt jedoch noch. Angenommen Sie wollen einen Traceroute erstellen und das Zielsystem selbst oder ein Router auf dem Weg zum Zielsystem antwortet auf einen ICMP Echo Request nicht. Dadurch würde ping so lange auf eine Antwort warten, bis der Benutzer den Scan letztendlich abbricht. Durch die Option -W kann man einen Timeout festlegen nach welchem ping mit einem Fehler beendet wird. Den Rückgabewert von ping sollte man überprüfen, damit in der Ausgabe auf die fehlende ICMP-Antwort hingewiesen werden kann. Aus diesen Bedingungen folgt schließlich der folgende Befehl.

[root@centos5 ~]# for i in $(seq 20); do ping -c 1 -W 5 -t $i www.microsoft.de | grep -i From; if [ $? == 1 ]; then echo "Timeout reached"; fi; done
From 192.168.10.1 icmp_seq=1 Time to live exceeded
From 217.0.118.30 icmp_seq=1 Time to live exceeded
From 87.186.240.22 icmp_seq=1 Time to live exceeded
From 217.239.40.150 icmp_seq=1 Time to live exceeded
From 193.159.225.218 icmp_seq=1 Time to live exceeded
From ge-0-3-0-54.ash-64cb-1a.ntwk.msn.net (207.46.47.91) icmp_seq=1 Time to live exceeded
From ge-6-1-0-0.bl2-64c-1b.ntwk.msn.net (207.46.43.27) icmp_seq=1 Time to live exceeded
From 207.46.43.101 icmp_seq=1 Time to live exceeded
From 207.46.43.197 icmp_seq=1 Time to live exceeded
From ge-7-0-0-0.co1-64c-1b.ntwk.msn.net (207.46.43.173) icmp_seq=1 Time to live exceeded
From ge-7-0-0-0.wst-64cb-1a.ntwk.msn.net (207.46.47.76) icmp_seq=1 Time to live exceeded
From ge-7-0-0-0.tuk-64cb-1a.ntwk.msn.net (207.46.47.68) icmp_seq=1 Time to live exceeded
From ten2-4.cpk-76c-1a.ntwk.msn.net (207.46.47.191) icmp_seq=1 Time to live exceeded
From po14.tuk-65ns-mcs-1a.ntwk.msn.net (207.46.35.134) icmp_seq=1 Time to live exceeded
Timeout reached
Timeout reached
Timeout reached
Timeout reached
Timeout reached
Timeout reached


Dieser Eintrag wurde am 31.08.2009 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_7_741.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer