Ich habe eine IP-Adresse und kann die Route verfolgen, aber ich kann keinen Ping-Befehl senden.
Sie sehen, ich kann traceroute 43.224.226.50
:
dele-MBP:~ ll$ traceroute 43.224.226.50
traceroute to 43.224.226.50 (43.224.226.50), 64 hops max, 52 byte packets
1 router.asus.com (192.168.2.1) 2.082 ms 1.039 ms 0.924 ms
2 100.64.0.1 (100.64.0.1) 3.648 ms 3.795 ms 3.955 ms
3 118.112.212.225 (118.112.212.225) 4.252 ms 4.569 ms 4.168 ms
4 171.208.203.73 (171.208.203.73) 6.378 ms
171.208.198.25 (171.208.198.25) 6.943 ms
171.208.203.61 (171.208.203.61) 7.055 ms
5 202.97.36.225 (202.97.36.225) 38.149 ms
202.97.36.221 (202.97.36.221) 39.949 ms
202.97.36.225 (202.97.36.225) 40.780 ms
6 202.97.90.158 (202.97.90.158) 37.894 ms
202.97.94.146 (202.97.94.146) 39.885 ms 39.354 ms
7 202.97.38.166 (202.97.38.166) 45.324 ms
202.97.39.149 (202.97.39.149) 40.097 ms
202.97.94.77 (202.97.94.77) 40.580 ms
8 202.97.51.118 (202.97.51.118) 374.218 ms
202.97.27.238 (202.97.27.238) 187.573 ms
202.97.86.138 (202.97.86.138) 197.524 ms
9 218.30.53.190 (218.30.53.190) 201.597 ms
218.30.54.190 (218.30.54.190) 194.194 ms
218.30.53.190 (218.30.53.190) 204.027 ms
10 182.54.129.91 (182.54.129.91) 220.026 ms 282.360 ms
et-11-1-5.r01.laxus01.us.bb.bgp.net (182.54.129.38) 185.700 ms
11 182.54.129.91 (182.54.129.91) 229.700 ms 508.509 ms 266.683 ms
12 * 212.95.128.2 (212.95.128.2) 565.161 ms *
13 43.224.226.50 (43.224.226.50) 200.531 ms 201.911 ms 191.566 ms
Aber ich kann es nicht pingen:
dele-MBP:~ ll$ ping 43.224.226.50
PING 43.224.226.50 (43.224.226.50): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
Request timeout for icmp_seq 6
Request timeout for icmp_seq 7
Request timeout for icmp_seq 8
Request timeout for icmp_seq 9
Request timeout for icmp_seq 10
Request timeout for icmp_seq 11
Wenn es ein Verbot von ICMP gibt, traceroute
sollte das auch nicht funktionieren. Was ist der Grund dafür?
Ich habe überprüft, ob die Firewall des Servers gestoppt ist.
ping
networking
icmp
traceroute
244boy
quelle
quelle
Antworten:
Auf eine ähnliche Frage hier erklärte Luke Savage es perfekt:
quelle
traceroute
Befehl verwenden und nicht,tracert
was mich zu der Annahme veranlasste, dass Sie ein Unix- oder Gnu-basiertes Betriebssystem verwenden. In der Antwort, die ich erwähnte, können Sie sehen, dass Unix-basierte Systeme nichtICMP
für verwendentraceroute
. Mit anderen Worten, da verwendetPING
wirdICMP
(was meiner Meinung nach von dem System, das Sie erreichen möchten, blockiert wird) und TracerouteUDP
Pakete mit einer inkrementellen FeldmethodeTTL
verwendet (was meines Erachtens bei dem System, das Sie erreichenPING
möchten, nicht blockiert ist), schlägt dies fehl aber esTraceroute
gelingt.traceroute
ist mit ICMP, auch wenn es sendet UDP, nämlich sie und auswertet erwartetTTL exceeded
Nachrichten aus dem Hopfen auf dem Weg. Ein Host, der alle ICMP blockiert, ist eine schlechte Idee,ping
schlägt jedoch fehl, wennICMP echo
Anforderungen oder Antworten auf dem Zielhost blockiert werdenUm die Antwort von @ naïveRSA zu ergänzen , kann es vorkommen, dass ein ICMP-Paket für "Echo Reply" (Ping) blockiert ist, ein ICMP-Paket für "Time Overed" (Tracert) jedoch zulässig ist, wenn der Pfad Filterung / Firewalling enthält . Dies würde zu denselben Ergebnissen führen, auch wenn nur ICMP (Windows) verwendet wird.
In beiden Fällen (Absender, der UDP oder ICMP verwendet) ist die Fehlerkommunikation ICMP (dh der Knoten, der auf ein Ping- oder Tracer * -Paket antwortet).
quelle
Schauen wir uns an, was passiert.
8.8.8.8 ist ein gutes Beispiel, denn zumindest von meinem Standort aus kann ich es sowohl mit
traceroute
als auch erreichenping
.Lassen Sie uns zuerst versuchen, zu
ping 8.8.8.8
beobachten, was passiert:So
ping
sendet eine ICMP - Echo - Request und erwartet eine ICMP - Echo - antworten.Jetzt
traceroute -n 8.8.8.8
:So
traceroute
zumindest die Umsetzung habe ich installiert, nicht ICMP senden. Es werden vielmehr UDP-Pakete gesendet.Was in diesem Trace nicht sichtbar ist (obwohl es wäre, wenn ich
tcpdump
a gäbe,-v
um die Ausführlichkeit zu erhöhen), ist, dass die ersten Sonden eine ttl von 1 haben und dann die ttl für spätere Sonden inkrementieren. Dies führt dazu, dass die Router zwischen mir und 8.8.8.8 mit einem ICMP-TTL-Überschreitungsfehler antworten. Auf diese Weise erkennt traceroute die Router zwischen hier und da.Schließlich ist die ttl lang genug, um bis 8.8.8.8 zu gelangen, und 8.8.8.8 antwortet mit einem nicht erreichbaren ICMP-Port-Fehler, da kein Prozess den UDP-Port 44838 überwacht. Auf diese Weise weiß traceroute, dass er das endgültige Ziel erreicht hat .
Wenn zwischen hier und da etwas alles ICMP blockiert , funktionieren weder Ping noch Traceroute.
In der Regel ist jedoch nicht alles ICMP blockiert, obwohl dies auch nicht selten der Fall ist. Das Blockieren des gesamten ICMP ist problematisch: Beispielsweise wird die Pfad-MTU-Erkennung unterbrochen , die auf einem für die ICMP-Fragmentierung erforderlichen Fehler beruht. ICMP-Pakete haben einen Typ und einen Code, und verantwortliche Netzbetreiber blockieren nur einige Typen oder Codes, die möglicherweise missbräuchlich sind oder bestimmte Informationen preisgeben.
Einige Hosts reagieren beispielsweise überhaupt nicht auf eine ICMP-Echoanforderung, und daher funktioniert Ping nicht. Die Idee ist, dass es für einen Angreifer schwieriger ist, herauszufinden, welche Hosts im Netzwerk vorhanden sind, wenn er nicht auf Pings antwortet. In der Praxis ist dies fraglich, da es andere Möglichkeiten gibt, nach einem Host zu suchen. Beispielsweise kann ein TCP-SYN an Port 80 gesendet werden, um Webserver zu finden.
Viele Hosts senden auch keinen nicht erreichbaren ICMP-Port-Fehler, wenn sie ein UDP-Datagramm oder eine TCP-SYN an einen Port senden, an dem sie keinen Prozess überwachen, und dies führt zu einer Unterbrechung der Traceroute. Wieder ist die Idee, es einem Angreifer zu erschweren, das Netzwerk zuzuordnen, aber dies ist für einen Angreifer nur eine kleine Enttäuschung.
Da es sich bei traceroute um ein Programm und kein bestimmtes Protokoll handelt, gibt es andere Möglichkeiten zum Prüfen. Sie alle sind darauf angewiesen, die TTL zu erhöhen, um die Router zu ermitteln. Es können jedoch verschiedene Arten von Tests gesendet werden, die mehr oder weniger die Chance haben, eine Antwort vom Endpunkt auszulösen. Beispielsweise
man tcpdump
listet my eine-I
Option zur Verwendung von ICMP-Echosonden auf, die mit ping identisch ist.-T
Anstelle von UDP müssen auch TCP-SYN-Prüfpunkte verwendet werden. Wenn Sie ein Host wissen reagieren wirdping
dann-I
macht sehr viel Sinn. Wenn Sie wissen, dass der Host einen bestimmten TCP-Port-T
überwacht, ist dies möglicherweise in Verbindung mit der-p
Option zur Auswahl des Ports sinnvoll .Leider erfordern diese Optionen möglicherweise Root- oder spezielle Funktionen, sodass UDP einen angemessenen Standardwert darstellt. Tatsächlich hat ein ähnliches Tool
tracepath
in seiner Manpage Folgendes zu sagen:quelle
TLDR; Pings können auf einem Remote-Host blockiert werden (ICMP-Blockierung), Traceroute kann jedoch die Route zu diesem Host mithilfe des Standard-Netzwerkroutings (UDP oder TCP / IP) ermitteln (jedes Protokoll, siehe /networkengineering//a/36509/. 58968 ). Beachten Sie, dass Ihr Ping wahrscheinlich auch den Host erreichen kann (es sei denn, Sie haben irgendwo eine sehr intelligente Firewall, die den ICMP-Ping-Verkehr blockiert), der Host antwortet einfach nicht.
quelle
Linux verwendet UDP anstelle von ICMP für Traceroute. Die Firewall hat diesen UDP-Port nicht blockiert
quelle
Sie können nmap (insecure.org) installieren und nping entweder mit UDP oder TCP und jedem Port verwenden. Funktioniert hervorragend in Netzwerken, in denen Ping ausgehend blockiert ist.
Um einen Webserver zu pingen, nping --tcp -p 80,443
So pingen Sie einen Zeitserver an: nping --udp -p 123
https://nmap.org/book/nping-man.html
quelle
Eine kurze Antwort auf Ihre Frage lautet, dass sich das
ping
Dienstprogramm auf das ICMP-Protokoll stützt, das manchmal an der Netzwerk-Firewall oder an der Firewall des Geräts selbst blockiert ist. Der häufigste Grund, warum Netzwerkadministratoren ICMP blockieren, besteht darin, das "Scannen" des Netzwerks zu verhindern, das sie als Sicherheitsbedenken betrachten. Dastraceroute
Dienstprogramm unter Linux verwendet UDP, ein völlig anderes Protokoll, das in diesem Fall von den Netzwerkadministratoren nicht blockiert wird. UDP hat eine Vielzahl von Verwendungsmöglichkeiten und das Blockieren würde dazu führen, dass viele Dinge in einem Netzwerk unbrauchbar werden. Die Art der ICMP-Kontrollnachricht, die von benötigt wird,ping
ist eine Teilmenge eines Protokolls, was bedeutet, dass das Blockieren dieser Art von ICMP-Paketen in einem Netzwerk weniger Probleme verursacht und daher eher blockiert wird als UDP.quelle