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

Is het mogelijk om een adres te pingen:port?

Ik hou niet van netwerken, en ik heb de volgende vraag met betrekking tot het Linux ping commando.

Kan ik alleen een adres pingen? Bijvoorbeeld:

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

Of kan ik ook een adres:poort pingen, bijvoorbeeld: onofri.org:80?

Als ik deze probeer werkt het niet:

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

Is het mogelijk om iets als adres:poort te pingen? Als het mogelijk is, waarom werkt wat ik geprobeerd heb dan niet?

Antwoorden (11)

311
311
311
2014-06-16 18:19:26 +0000

Poorten zijn een concept van UDP en TCP . Ping-berichten worden technisch gezien aangeduid als ICMP Echo Request en [ ICMP Echo Reply (https://en.wikipedia.org/wiki/Ping_%28networking_utility%29#Echo_reply) die deel uitmaken van ICMP . ICMP, TCP en UDP zijn “broers en zussen”; ze zijn niet op elkaar gebaseerd, maar zijn drie afzonderlijke protocollen die bovenop IP lopen.

Daarom kunt u ping niet als poort gebruiken. Wat je kan doen, is een poortscanner als nmap gebruiken.

nmap -p 80 onofri.org

Je kunt ook telnet onofri.org 80 gebruiken, zoals gesuggereerd in een van de andere antwoorden (het geeft een fout als de poort gesloten of gefilterd is).

86
86
86
2014-06-16 18:24:11 +0000

Ik gebruik Telnet , omdat het in veel platforms is ingebouwd zonder extra downloads.

Gebruik gewoon het telnetcommando om verbinding te maken met de poort die je wilt testen. Als u het onderstaande bericht krijgt, of een bericht van de dienst zelf, dan leeft de poort.

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

Als u de commando’s kent voor de dienst waarmee u verbinding maakt, kunt u bijvoorbeeld een commando HTTP/FTP GET ) typen en het antwoord en de uitvoer in de terminal observeren. Dit is erg handig voor het testen van de service zelf, omdat het je foutinformatie laat zien die naar de klant wordt gestuurd, zoals HTTP 500 fouten.

Als je een bericht krijgt dat de verbinding is geweigerd, wordt de poort gesloten.

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

U kunt netcat gebruiken om verbinding te maken met een specifieke poort om te zien of u een verbinding krijgt. De -v-vlag zal de verbositeit verhogen om aan te geven of de poort open of gesloten is. De -z vlag zal ervoor zorgen dat netcat stopt zodra het een verbinding heeft. Je kunt dan de exitcodes via $? gebruiken om te zien of de verbinding al dan niet tot stand is gekomen.

$ 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

Daarnaast kun je mtr gebruiken met de -T vlag voor tcp en de -P vlag om een poort te specificeren. Dit zal iets gelijkaardigs doen als een traceroute over TCP in plaats van alleen ICMP. Dit kan echter overkill zijn.

sigh Ik moet dit bit bewerken om het toe te voegen, aangezien we geen code in commentaar kunnen plaatsen. Knoppix doet misschien iets anders met zijn versie van netcat, maar dit is wat ik krijg van 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]
48
48
48
2014-06-17 15:35:04 +0000

Ja, gebruik HPing om dat te doen: $ 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

Merk op dat het root-privileges (of SELinux-mogelijkheden) nodig heeft om ruwe IP-pakketten te maken, net als ping (die waarschijnlijk suid is op uw systeem).

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

U kunt gebruik maken van Paping , een platformoverschrijdende TCP-poorttest, die de functionaliteit van ping (poortping)

nabootst (zie ook Github als code.google.com is afgeschreven)

paping -p 80 google.com
19
19
19
2014-06-23 09:57:58 +0000

U kunt ook gebruik maken van nping (onderdeel van 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
8
8
8
2015-12-18 22:11:18 +0000

Je kunt dit in de schelp doen met Python als een niet zo korte voering:

$ 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

Ter referentie, ik wilde een bericht van Vivek Gite delen: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#comment-920398 ](https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#comment-920398) Hij somt verschillende manieren op, waarvan sommige al hier zijn gepost. Maar de meest verrassende was voor mij niets anders dan 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"

of een super eenvoudige versie: gewoon kijken naar de uitvoer van het volgende commandopatroon:

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

Nuttig bij het werken met willekeurige dockercontainers.

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

Ik voeg hier watch tool toe:

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

Het is eenvoudig met nmap

voorbeelden:

#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

Voor meer informatie zie dit:

typ in opdrachtregel dit: 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

Probeer je de communicatie te testen of krijg je een reactie van poort 80 op die node? PING zal proberen de communicatie naar een specifieke host op te zetten via ICMP die niets met poorten te maken heeft.

Probeer in plaats daarvan http://nmap.org/ om de poortinfo te controleren en de communicatie te testen:

nmap -v -p 80 onofri.org