Kann man eine Adresse anpingen: port?


212

Ich beschäftige mich nicht mit Netzwerken und habe die folgende Frage im Zusammenhang mit dem Linux- Ping- Befehl.

Kann ich nur eine Adresse anpingen? Zum Beispiel:

miner@raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56(84) bytes of data.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms

Oder kann ich auch eine Adresse anpingen : port , zum Beispiel: onofri.org:80 ?

Wenn ich dieses probiere, funktioniert es nicht:

miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80

Kann man so etwas wie address: port pingen ? Wenn es möglich ist, warum funktioniert das, was ich versucht habe, nicht?


8
Was versuchst du zu erreichen? Um die ordnungsgemäße Ausführung des Dienstes zu überprüfen, müssen Sie den Dienst tatsächlich abfragen und die Antwort auswerten. Ein Webserver könnte zum Beispiel Ihre Verbindung akzeptieren, aber aufgrund einer falschen Konfiguration einen Fehler zurückgeben.
Daniel B

5
Das ist ein Teil dessen, was ich an Telnet mag. Sie können eine Verbindung zu einem Webserver herstellen und GET /index.html HTTP\1.1die 200-Antwort (oder den Fehlercode) zusammen mit dem resultierenden Markup eingeben und anzeigen.
Frank Thomas

7
@FrankThomas HTTP\1.1? "Ja wirklich?"
Glglgl

5
@ Navin Vielleicht HTTP/1.1...
Glglgl

3
@glglgl; Was? Sie haben nie einen Hack gemacht, wohin ein Schrägstrich führen sollte? aber du hast recht, es sollte ein Schrägstrich sein.
Frank Thomas

Antworten:


20

Sie können Paping verwenden , einen plattformübergreifenden TCP-Port-Test, der die Funktionalität von Ping (Port-Ping) emuliert.

(Siehe auch Github, da code.google.com abgeschrieben wurde.)

paping -p 80 google.com

8
Eine Erklärung der Funktionsweise dieses Programms wäre hilfreich.
David Schwartz

16
für jeden, der diese Antwort findet, wie ich es getan habe, nur um Paping zu finden, gibt es keine Repositorys und es handelt sich um alten Code, der nicht einmal in ARM kompiliert werden kann - scrollen Sie weiter nach unten zur Antwort 'hping'. Es ist ein perfektes Drop-In für Ping, wenn Sie einen Port testen müssen, und in verschiedenen Repositorys (z. B. Ubuntu, Arch), einschließlich ARM, leicht zugänglich.
Mark

Wie kann ich installieren paping? Ich habe das Repo besucht, aber es gibt keine Veröffentlichungen. Ah, vergiss nicht. Auf Google-Code konnte ich zu diesem Zeitpunkt nicht zugreifen.
Shayan

310

Ports sind ein Konzept von UDP und TCP . Ping-Nachrichten werden technisch als ICMP-Echoanforderung und ICMP-Echoantwort bezeichnet, die Teil von ICMP sind . ICMP, TCP und UDP sind "Geschwister". Sie basieren nicht aufeinander, sondern sind drei separate Protokolle, die auf IP ausgeführt werden.

Daher kannst du keinen pingPort. Was Sie können tun, ist es, einen Port - Scanner verwenden , wie nmap.

nmap -p 80 onofri.org

Sie können auch telnet onofri.org 80wie in einer der anderen Antworten vorgeschlagen verwenden (es wird ein Fehler angezeigt, wenn der Port geschlossen oder gefiltert ist).


22
+1 Du verstehst es richtig. ICMP basiert auf IP, das ein Konzept von IP-Adressen, jedoch keine Ports enthält. TCP und UDP stehen ebenfalls über IP, und es sind diese Protokolle, die "Ports" hinzufügen. ICMP, TCP und UDP sind in Bezug auf das Protokoll, über das sie übertragen werden, alle auf der gleichen "Ebene".
Jason C

14
+1. Viele, viele Leute denken, wenn sie etwas nicht anpingen können, können sie keine Verbindung dazu herstellen ... aber wie Sie sagen, ICMP unterscheidet sich von TCP und UDP: Wenn Sie beabsichtigen, beispielsweise eine Webseite über TCP 80 zu bedienen, als Sie brauchen nur TCP 80 auf der Firewall zu öffnen, nichts anderes (so Ping auf die gleiche IP könnte (... sollte!) blockiert werden, zum Beispiel)
Olivier Dulac

6
Um die Informationen genau zu halten, ist ICMP kein Transportschichtprotokoll wie TCP oder UDP. Wie eine Reihe von Protokollen passt es nicht vollständig in die konzeptionellen Netzwerkmodelle, wird jedoch im Allgemeinen als Netzwerk- / Internetwork-Layer-Protokoll angesehen, ebenso wie IP. Es wurde auch manchmal als L3.5-Protokoll bezeichnet.
YLearn

2
@BenjiWiebe, stimmte zu, aber aus Genauigkeitsgründen sollte die Aussage gemacht werden, weshalb ich sie hinzugefügt habe. Bisher wurde nur gesagt, dass ICMP, TCP und UDP in Beziehung stehen. Der am meisten gewählte Kommentar geht sogar so weit, zu sagen, dass sie alle auf der gleichen "Ebene" sind. Während dies für den durchschnittlichen Benutzer keinen Unterschied macht, gibt es viele nicht-durchschnittliche Benutzer, die diese Site besuchen.
YLearn

4
@OlivierDulac Ich weiß nicht, ob Sie es blockieren sollten . Die meisten Webserver, die ich kenne, lassen es offen. ICMP bringt das Internet in Schwung. Warum möchten Sie, dass die Leute denken, sie könnten Sie nicht erreichen, wenn sie können?
Cruncher

86

Ich benutze Telnet , da es in vielen Plattformen ohne zusätzliche Downloads eingebaut ist.

Verwenden Sie einfach den Befehl telnet, um eine Verbindung zu dem Port herzustellen, den Sie testen möchten. Wenn Sie die folgende Nachricht oder eine Nachricht vom Dienst selbst erhalten, ist der Port aktiv.

Minty16 ~ $ telnet localhost 139
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Wenn Sie die Befehlssequenz für den Dienst kennen, zu dem Sie eine Verbindung herstellen, können Sie einen Befehl eingeben ( z. B. HTTP / FTP GET ) und die Antwort und Ausgabe im Terminal beobachten. Dies ist sehr nützlich, um den Dienst selbst zu testen, da hier Fehlerinformationen angezeigt werden, die an den Client gesendet wurden, z. B. HTTP 500-Fehler.

Wenn Sie eine Meldung erhalten, dass die Verbindung abgelehnt wurde, wird der Port geschlossen.

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

8
Auch wenn der Bildschirm komplett schwarz wird, ist dies ein Zeichen dafür, dass Sie ebenfalls verbunden sind.
Tensigh

Hervorragender Vorschlag. Ich habe dies verwendet, um zu testen, ob ein Webserver in Betrieb war, obwohl ein Webbrowser keine einfache Option war.
Brandon

@ Brandon wie beim SSHING in Dev-Maschinen ^. ^
Cruncher

Entwicklertools in Browsern sind viel einfacher, da sie weiterhin alle richtigen HTTP-Anforderungsheader senden, Sie jedoch die vollständige HTTP-Antwort überprüfen können. Andererseits, wenn Sie die Anfrage auch anpassen möchten, ist Telnet der richtige Weg.
Leichtigkeit Rennen im Orbit

Ich denke, alle Antworten hier verpassen die wichtigsten Informationen. Wäre es technisch nicht möglich, einen Port wie folgt zu "pingen"? Sie können eine TCP / UDP-Verbindung herstellen und zählen, wie viele Millisekunden zum Herstellen dieser Verbindung benötigt wurden.
David

47

Ja, verwenden Sie HPing, um dies zu tun:

$ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

Beachten Sie, dass es Root-Rechte (oder SELinux-Fähigkeiten) benötigt, um rohe IP-Pakete zu erstellen, genau wie Ping (was auf Ihrem System sehr wahrscheinlich zutrifft).


3
Ich wünschte, dies wäre die "akzeptierte Antwort". hping war in mehreren Repos leicht auffindbar, im Gegensatz zu paping, einem alten crufty Code, der nicht in ARM kompiliert werden kann. Im Gegensatz zu NMAP gibt haping auch einen Statuscode zurück, der mit einem Shell-Skript leicht zu testen ist. Dies ist also ein perfekter Ersatz für die Verwendung von ping. Vielen Dank für diese Antwort, schade, dass ich nicht weit genug gescrollt habe, um sie zu sehen, und stattdessen auf einer anderen Website suchen musste.
Mark

Ich kann hping nicht in ubuntu installieren .. paket nicht gefunden .. aber ich habe gefunden. hping3Ist es das selbe wie hping3? @ d33tah
Shayan

Ok, ich habe es versucht hping3und es pingt alle Ports. Egal ob geschlossen oder offen. Wie kann ich feststellen, ob ein Port geschlossen oder offen ist?
Shayan

46

Sie können mit netcat eine Verbindung zu einem bestimmten Port herstellen, um festzustellen, ob Sie eine Verbindung erhalten. Das Flag -v erhöht die Ausführlichkeit, um anzuzeigen, ob der Port offen oder geschlossen ist. Das Flag -z bewirkt, dass netcat beendet wird, sobald eine Verbindung besteht. Sie können dann die Exit-Codes über $? um zu sehen, ob die Verbindung hergestellt wurde oder nicht.

$ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) open
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet) : Connection refused
$ echo $?
1

Darüber hinaus können Sie mtr mit dem Flag -T für tcp und dem Flag -P verwenden, um einen Port anzugeben. Dadurch wird etwas Ähnliches wie bei einer Traceroute über TCP ausgeführt, anstatt nur ICMP. Dies kann jedoch übertrieben sein.

seufz ich muss editieren um dieses bit hinzuzufügen, da wir keinen code in kommentare schreiben können. Knoppix macht vielleicht etwas anderes mit seiner Version von Netcat, aber das ist, was ich von Linux Mint bekomme

$ date;nc -z -w 1 www.google.com 8000;date
Fri Jun 20 15:55:26 PDT 2014
Fri Jun 20 15:55:27 PDT 2014
$ date;nc -z -w 4 www.google.com 8000;date
Fri Jun 20 15:55:33 PDT 2014
Fri Jun 20 15:55:37 PDT 2014

$ nc -h
[v1.10-40]

Problem ist, wenn Sie versuchen nc -z www.google.com 8000 , kann es eine lange Zeit dauern, 5 Sekunden und mehr. Wenn ich das tue -w 1, dauert es 5 Sekunden. Wenn ich das tue -w 3, dauert es ungefähr dreimal länger. 15 Blitze des Cursors, 15 Sekunden. -w 1soll eine Sekunde sein, wurde aber auf cygwin getestet.,. 5 Sekunden. Es ist super schnell, wenn ein Server am Port ist, aber ein bisschen langsam, wenn es keinen gibt.
Barlop

Verfluche keine Zeilenumbrüche in Kommentaren ... Das scheint ein Fehler bei Cygwin zu sein. Das Testen mit Linux Mint zeigt eine Verzögerung von wie vielen Sekunden auch immer. lief dies zum Testen: Datum; nc-zw5 www.google.com 8000; Datum
falsche Namen

Ich habe auch @BenjiWiebe mit den nmap-Anfragen upvoted. nc ist einfacher in ein Skript einzufügen, aber es ist VIEL einfacher, nmap visuell zu verwenden.
Falsenames

Ich versuche es in Knoppix. nc -zv -w 1 www.google.com Wie veranlassen Sie es, es nur einmal zu versuchen? Wenn ich es versuche, funktioniert ja das -w 1, aber jede Sekunde wiederholt es, bis ich Strg-C tue.
Barlop

Ich bin nicht sicher, was die Knoppix-Version von "nc -zv -w 1 www.google.com 80" tut. Auf meinem System funktioniert das einwandfrei. Einmal abfragen und löschen, genau wie es -z tun soll. Ohne die angegebene Portnummer gibt Mine nicht an, dass kein Port angegeben ist.
Falsenames

18

Sie könnten auch nping(einen Teil von nmap) verwenden:

$ nping -p 80 localhost

Starting Nping 0.6.00 ( http://nmap.org/nping ) at 2014-06-23 11:57 CEST
SENT (0.0015s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (0.0016s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (1.0027s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (1.0027s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (2.0038s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (2.0039s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (3.0050s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (3.0050s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (4.0061s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (4.0062s) Handshake with localhost:80 (127.0.0.1:80) completed

Max rtt: 0.032ms | Min rtt: 0.008ms | Avg rtt: 0.012ms
TCP connection attempts: 5 | Successful connections: 5 | Failed: 0 (0.00%)
Tx time: 4.00575s | Tx bytes/s: 99.86 | Tx pkts/s: 1.25
Rx time: 4.00575s | Rx bytes/s: 49.93 | Rx pkts/s: 1.25
Nping done: 1 IP address pinged in 4.01 seconds

6
nping --tcp -p 80 localhost
K-Gun

Ich teste JEDEN Port (Ports, die nicht geöffnet sind) und erhalte immer noch zwei Handshakes ...
Shayan

8

Sie können dies in der Shell mit Python als nicht so kurzem Einzeiler tun:

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSED; }
$ portping 8.8.8.8 54
CLOSED
$ portping 8.8.8.8 53
OPEN

7

Nur als Referenz, wollte einen Beitrag von Vivek Gite teilen: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/# comment-920398

Er listet verschiedene Wege auf, von denen einige bereits hier gepostet sind. Das Überraschendste für mich war jedoch nichts anderes als bash:

(echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/udp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Opened 22" || echo "Closed 22"
(echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Opened 443" || echo "Closed 443"

Oder eine supereinfache Version: Schauen Sie sich nur die Ausgabe des folgenden Befehlsmusters an:

echo >/dev/{tcp|udp}/{host}/{port}

Nützlich, wenn Sie mit zufälligen Docker-Containern arbeiten.


looking at the output- Nur der Rückkehrcode $?kann hilfreich sein. Auch es hängt an geschlossenen Ports, kann eine gewisse Zeitüberschreitung überall konfiguriert werden ...
vp_arth

Diese Lösung sieht ordentlich aus, wird jedoch echo >/dev/tcp/{hostname}/{portnumber}nicht beendet, wenn der Port geschlossen ist. Und echo >/dev/tcp/{hostname}/{portnumber}zeigt nichts, obwohl der Port offen ist und ich es in einem Browser sehen kann.
Miguelmorin

Hallo mmorin, welches Betriebssystem benutzt du? Unter Ubuntu verhält es sich wie erwartet: Wenn der Port geschlossen ist, bekomme ich Connection refused. Andernfalls wird nichts angezeigt und echo $?der Beendigungscode wird angezeigt1
Jacek

3

Ich füge watchWerkzeug hier hinzu:

watch nmap -p22,80 google.com

Every 2,0s: nmap -p22,80 google.com   Mon Jun 15 16:46:33 2015

Starting Nmap 6.40 ( http://nmap.org ) at 2015-06-15 16:46 NOVT
Nmap scan report for google.com (127.0.0.1)
Host is up (0.0012s latency).
rDNS record for 127.0.0.1: google.com
PORT     STATE  SERVICE
22/tcp open   ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds

3

Es ist einfach mit nmap

Beispiele:

#sintaxis
nmap -p [port] hostName
#first is command, after scan ports, type port - port or range ports, and ip or name of website...

## Scan port 80
nmap -p 80 onofri.org

## Scan TCP port 80
nmap -p T:80 onofri.org

## Scan UDP port 53
nmap -p U:53 onofri.org

## Scan two ports ##
nmap -p 80,443 onofri.org

## Scan port ranges ##
nmap -p 80-200 onofri.org

## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 onofri.org
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 onofri.org

## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1

## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org

Weitere Informationen finden Sie hier:

Geben Sie in der Befehlszeile Folgendes ein: man nmap

http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/


1

Versuchen Sie, die Kommunikation zu testen oder eine Antwort von Port 80 auf diesem Knoten zu erhalten? PINGversucht, über ICMP eine Verbindung zu einem bestimmten Host herzustellen, die nichts mit Ports zu tun hat.

Versuchen Sie stattdessen http://nmap.org/ , um die Portinformationen zu überprüfen und die Kommunikation zu testen:

nmap -v -p 80 onofri.org

1
Sie sind sich nicht sicher, welche Version von nmap Sie verwenden. Auf meinem System müssen -v und -p wie bei 'nmap -v -p 80 onofri.org' getrennt werden. Dies liegt daran, dass -v und -vv unterschiedliche Bedeutungen haben, wobei -v mehr v als Argument verwendet werden.
Falsenames
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.