2017-03-21 3 views
6

Ich versuche, ein Netzwerkproblem mit tcpdump zu diagnostizieren. Ich betreibe den Befehlcurl zeigt keine Ausgabe in tcpdump

tcpdump -i eth0 -nS host nameless.host.io 

Als ich Ausgabe entweder traceroute oder ping Befehle nameless.host.io Ich sehe Informationen von tcpdump zu treffen, aber wenn ich curl verwenden, um Inhalte vom Host abzurufen

curl http://nameless.host.io/mycontent/data 

der curl Befehl gibt die Inhalt erwarte ich, aber ich sehe keine Ausgabe von tcpdump. Der Host ist definitiv "extern", also sollte es an den Leitungen ausgehen.

Warum sollte tcpdump auf einem erfolgreichen curl Befehl schweigen?

+0

Ich möchte dies auch wissen. –

+1

Können Sie Ihre Schnittstellen auf dem Rechner auflisten, der 'tcpdump' ausführt? Ich schätze, du versuchst, auf der Schnittstelle "eth0" zu hören, aber vielleicht verwendest du die WiFi-Schnittstelle? Könnten Sie mehr Input bereitstellen? – Elyasin

Antwort

4

i von 3 verschiedenen Möglichkeiten denken kann dies geschehen kann -

1: zu viele Pakete zu schnell, die Pakete-to-Print-Puffer laufen voll, und der Kernel „fällt“ die Pakete curl sendet vor tcpdump hat eine Chance, sie Ihnen zu drucken. Lösung wäre, den Pufferraum zu vergrößern, zB indem man --buffer-size=102400 verwendet (das würde ungefähr 100MB Ram dem Puffer widmen, ich bin nicht sicher, was die Standardgröße ist, aber ich denke, es liegt im Bereich von 1-4MB)

2: Sie haben mehrere Netzwerk- "Schnittstellen" und Sie hören auf die falsche. Ich bin mir nicht sicher, wie man fragt, welche Schnittstelle es verwendet, aber Sie können Curl explizit über eine bestimmte Schnittstelle herunterladen, indem Sie curl --interface eth0 URL - und unter Linux & Mac & BSD, können Sie eine Liste der verfügbaren Schnittstellen, indem Sie tun sudo ifconfig (und ich denke, das Windows-Äquivalent ist in der Systemsteuerung irgendwo, aber IDK)

3: tcpdump der Standardbenutzer kann nicht lesen, die Pakete des Benutzers curl läuft als aus irgendeinem Grund ... stellt sich tcpdump standardmäßig Drop in seinen eigenen Benutzer namens tcpdump beim Capturen, könnten Sie versuchen, von dem gleichen Benutzer zu erfassen, die Locken wie mit -Z curluser, oder erzwingen tcpdump, um als root zu erfassen, indem Sie -Z root

0

Haben Sie die richtige Schnittstelle wählen? (EthX, WLANx ....)

Versuchen: tcpdump -s 0 -i [interface] host nameless.host.io and tcp port http