2014-06-16 18:17:25 +0000 2014-06-16 18:17:25 +0000
217
217

Ist es möglich, eine Adresse anzupingen:port?

Ich stehe nicht auf Netzwerke, und ich habe die folgende Frage im Zusammenhang mit dem Linux-Befehl ping.

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 zum Beispiel auch eine Adresse:port anpingen? onofri.org:80?

Wenn ich das hier versuche, funktioniert es nicht:

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

Ist es möglich, etwas wie address:port anzupingen? Wenn es möglich ist, warum funktioniert das, was ich versucht habe, nicht?

Antworten (11)

311
311
311
2014-06-16 18:19:26 +0000
86
86
86
2014-06-16 18:24:11 +0000

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

Benutzen Sie einfach den Befehl telnet, um sich mit dem Port zu verbinden, den Sie testen wollen. Wenn Sie die unten stehende 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, mit dem Sie sich verbinden, können Sie beispielsweise einen Befehl eingeben HTTP/FTP GET ) und die Antwort und die Ausgabe im Terminal beobachten. Dies ist sehr nützlich, um den Dienst selbst zu testen, da es Ihnen Fehlerinformationen anzeigt, die an den Client gesendet werden, wie 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
49
49
49
2014-06-16 21:15:05 +0000

Sie können netcat verwenden, um sich mit einem bestimmten Port zu verbinden, um zu sehen, ob Sie eine Verbindung erhalten. Das -v Flag erhöht die Ausführlichkeit, um anzuzeigen, ob der Port offen oder geschlossen ist. Das -z-Flag veranlasst netcat zum Beenden, sobald eine Verbindung besteht. Sie können dann die Exit-Codes durch $? verwenden, 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

Zusätzlich können Sie mtr mit dem -T-Flag für tcp und dem -P-Flag verwenden, um einen Port anzugeben. Dies macht etwas Ähnliches wie ein Traceroute über TCP anstelle von nur ICMP. Dies könnte jedoch übertrieben sein.

seufz Ich muss dieses Bit bearbeiten, um es hinzuzufügen, da wir keinen Code in Kommentare einfügen können. Knoppix macht vielleicht etwas anderes mit seiner Version von netcat, aber das ist es, was ich von Linux Mint

$ 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]
``` bekomme
48
48
48
2014-06-17 15:35:04 +0000

Ja, verwenden Sie dazu HPing :

$ 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 erzeugen, genau wie ping (das auf Ihrem System höchstwahrscheinlich suid ist).

21
21
21
2015-01-21 08:02:45 +0000

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
19
19
19
2014-06-23 09:57:58 +0000

Sie können auch nping (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
8
8
8
2015-12-18 22:11:18 +0000

Sie können dies in der Shell mit Python als einem nicht so kurzen 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
7
7
2017-06-06 13:07:40 +0000

Nur zur 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. Aber das Überraschendste für mich war nichts weiter 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: Ich schaue mir einfach die Ausgabe des folgenden Befehlsmusters an:

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

Nützlich bei der Arbeit mit zufälligen Docker-Containern.

3
3
3
2015-06-15 10:48:37 +0000

Ich füge hier watch 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
3
3
2016-07-25 18:26:01 +0000

Mit den Beispielen nmap

ist es ganz einfach:

#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 die Befehlszeile Folgendes ein: man nmap http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/

1
1
1
2014-06-19 15:58:08 +0000

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

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

nmap -v -p 80 onofri.org