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

Est-il possible de pinger une adresse:port ?

Je ne suis pas dans le réseau, et j'ai la question suivante liée à la commande ping de Linux.

Puis-je seulement pinger une adresse ? Par exemple :

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

Ou puis-je également envoyer un ping à une adresse:port, par exemple : **Si j'essaie celle-ci, elle ne fonctionne pas :

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

Est-il possible d'envoyer un ping à une adresse comme address:port ? Si c'est possible, pourquoi ce que j'ai essayé ne fonctionne pas ?

Réponses (11)

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

Les ports sont un concept de UDP et TCP . Les messages Ping sont techniquement appelés ICMP Echo Request et ICMP Echo Reply qui font partie de ICMP . ICMP, TCP et UDP sont des “frères et sœurs” ; ils ne sont pas basés l'un sur l'autre, mais sont trois protocoles distincts qui fonctionnent en plus de l'IP.

Par conséquent, vous ne pouvez pas ping un port. Ce que vous pouvez faire, c'est utiliser un scanner de port comme nmap.

nmap -p 80 onofri.org

Vous pouvez aussi utiliser telnet onofri.org 80, comme suggéré dans une des autres réponses (il donnera une erreur si le port est fermé ou filtré).

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

J'utilise Telnet , car il est intégré à de nombreuses plateformes sans téléchargement supplémentaire.

Utilisez simplement la commande telnet pour vous connecter au port que vous voulez tester. Si vous obtenez le message ci-dessous, ou un message du service lui-même, alors le port est vivant.

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

Si vous connaissez la séquence de commande pour le service auquel vous vous connectez, vous pouvez taper une commande HTTP/FTP GET par exemple) et observer la réponse et la sortie dans le terminal. C'est très utile pour tester le service lui-même, car cela vous montrera les informations d'erreur envoyées au client, comme les erreurs HTTP 500.

Si vous recevez un message indiquant que la connexion a été refusée, le port est fermé.

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

Vous pouvez utiliser netcat pour vous connecter à un port spécifique afin de voir si vous obtenez une connexion. Le drapeau -v augmentera la verbosité pour montrer si le port est ouvert ou fermé. Le drapeau -z entraînera l'arrêt de netcat une fois qu'il aura obtenu une connexion. Vous pouvez alors utiliser les codes de sortie par $ ? pour voir si la connexion a été établie ou non.

$ 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

De plus, vous pouvez utiliser mtr avec le drapeau -T pour tcp et le drapeau -P pour spécifier un port. Cela fera quelque chose de similaire à un traceroute sur TCP au lieu de simplement ICMP. Cela peut être un peu exagéré, cependant.

sigh Je dois modifier pour ajouter ce bit, car nous ne pouvons pas mettre de code dans les commentaires. Knoppix fait peut-être quelque chose de différent avec sa version de netcat, mais voici ce que j'obtiens de 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

Oui, utilisez HPing pour ce faire :

$ 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

Notez qu'il a besoin des privilèges root (ou des capacités SELinux) pour créer des paquets IP bruts, tout comme le ping (qui est très probablement adapté à votre système).

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

Vous pouvez utiliser Paping , un test de port TCP multi-plateforme, émulant la fonctionnalité de ping (port ping)

(voir aussi Github car code.google.com a été déprécié)

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

Vous pouvez également utiliser nping (partie de 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

Vous pouvez faire cela dans le shell avec Python comme un liner pas si court :

$ 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

Juste pour référence, je voulais partager un billet de Vivek Gite : https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#comment-920398

Il énumère différentes manières, dont certaines sont déjà publiées ici. Mais le plus surprenant pour moi n'était rien d'autre que 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"

Ou une version super simple : il suffit de regarder la sortie du modèle de commande suivant :

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

Utile pour travailler avec des conteneurs docker aléatoires.

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

J'ajoute l'outil watch ici :

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

C'est simple avec nmap

exemples :

#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

Pour plus d'informations voir ceci :

tapez en ligne de commande ceci : 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

Essayez-vous de tester la communication ou d'obtenir une réponse du port 80 sur ce nœud ? PING essaiera d'établir une communication vers un hôte spécifique par le biais de l'ICMP qui n'a rien à voir avec les ports.

Essayez plutôt http://nmap.org/ pour vérifier les informations sur les ports et tester la communication :

nmap -v -p 80 onofri.org