Ich beschäftige mich nicht mit Netzwerken und habe die folgende Frage im Zusammenhang mit dem Linux-Befehl ping .
Kann ich nur eine Adresse anpingen? Zum Beispiel:
[email protected] ~ $ 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 es versuche, funktioniert es nicht:
[email protected] ~ $ ping onofri.org:80
ping: unknown Host onofri.org:80
Kann man so etwas wie Adresse: Port anpingen? Wenn es möglich ist, warum funktioniert das, was ich versucht habe, nicht?
Ports sind ein Konzept von UDP und TCP . Ping-Nachrichten werden technisch als ICMP Echo Request und ICMP Echo Reply 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.
Aus diesem Grund kann ein Port nicht ping
sein. Was Sie können tun, ist einen Port-Scanner wie nmap
zu verwenden.
nmap -p 80 onofri.org
Sie können auch telnet onofri.org 80
verwenden, wie in einer der anderen Antworten vorgeschlagen (es wird ein Fehler ausgegeben, wenn der Port geschlossen oder gefiltert ist).
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, beispielsweise 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
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 und nicht nur über ICMP ausgeführt. Dies kann jedoch übertrieben sein.
seufz Ich muss bearbeiten, um dieses Bit 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, 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]
Ja, benutze HPing um das 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 höchstwahrscheinlich sinnvoll ist).
Sie können auch nping
verwenden (Teil von nmap
):
$ 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
Sie können dies in der Shell mit Python als nicht allzu 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
Ich füge watch
tool 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
Versuchen Sie, die Kommunikation zu testen oder eine Antwort von Port 80 auf diesem Knoten zu erhalten? PING
versucht, ü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
Mit nmap
ist es einfach
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 die folgende Befehlszeile ein: man nmap
http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/http://www.tecmint.com/nmap-command-examples/