242 votes

Est-il possible d'effectuer un ping sur une adresse et un port ?

Je ne suis pas dans le domaine des réseaux, et j'ai la question suivante concernant le système Linux ping comando.

Puis-je envoyer un ping à une seule 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 aussi envoyer un message à un adresse:port par exemple : onofri.org:80 ?

Si j'essaie celui-là, ça ne marche pas :

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

Est-il possible d'envoyer quelque chose comme adresse:port ? Si c'est possible, pourquoi ce que j'ai essayé ne fonctionne-t-il pas ?

8 votes

Qu'est-ce que vous essayez d'accomplir ? Pour vérifier le bon fonctionnement d'un service, vous devez interroger le service et évaluer la réponse. Un serveur Web pourrait, par exemple, accepter votre connexion, mais renvoyer une erreur en raison d'une mauvaise configuration.

0 votes

@AndreaNobili - C'est une bonne question. Veuillez répondre aux questions de Daniel, mais je peux dire que vous avez fait des recherches appropriées avant de poser cette question.

5 votes

C'est une partie de ce que j'aime dans Telnet. Vous pouvez vous connecter à un serveur web, et taper GET /index.html HTTP\1.1 et voir la réponse 200 (ou le code d'erreur) ainsi que le balisage résultant.

328voto

BenjiWiebe Points 8464

Les ports sont un concept de UDP y TCP . Les messages Ping sont techniquement appelés Demande d'écho ICMP y Réponse d'écho ICMP 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 au-dessus d'IP.

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

nmap -p 80 onofri.org

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

27 votes

+1 vous comprenez bien. ICMP est construit au-dessus d'IP, qui a un concept d'adresses IP mais pas de ports. TCP et UDP se situent également au-dessus d'IP, et ce sont ces protocoles qui ajoutent les "ports". ICMP, TCP et UDP sont tous au même "niveau" en termes de protocole par lequel ils sont transportés.

15 votes

+1. Beaucoup, beaucoup de gens pensent que s'ils ne peuvent pas faire un ping sur quelque chose, ils ne peuvent pas s'y connecter... mais comme vous le dites, ICMP est différent de TCP et UDP : si vous avez l'intention de servir, par exemple, une page web sur TCP 80, vous devez seulement ouvrir TCP 80 sur le pare-feu, rien d'autre (donc un ping vers la même IP pourrait (... devrait !) être bloqué, par exemple).

0 votes

En complément de ce qu'a dit @OlivierDulac, une erreur fréquente est l'utilisation de ping pour tester des connexions dans, disons, un réseau de base que vous mettez en place, si le ping ne répond pas, parfois les gens ne pensent pas à vérifier si les réponses ping sont réellement activées / bloquées, et passent beaucoup de temps sur le mauvais chemin à chercher d'autres raisons. C'est notamment le cas lorsque les gens installent un serveur chez eux et essaient de le tester à partir du monde extérieur, sans se rendre compte que leur routeur (ou peut-être leur fournisseur d'accès) bloque spécifiquement les réponses ping.

92voto

Frank Thomas Points 33103

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 souhaitez 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 du service auquel vous vous connectez, vous pouvez taper une commande ( HTTP/FTP GET par exemple) et observez la réponse et la sortie dans le terminal. Ceci est très utile pour tester le service lui-même, car il vous montrera les informations d'erreur envoyées au client, comme les erreurs HTTP 500.

Si vous obtenez 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

8 votes

Si l'écran devient complètement noir, c'est aussi un signe que vous êtes connecté.

0 votes

Excellente suggestion. J'avais l'habitude de l'utiliser pour tester si un serveur web était opérationnel lorsqu'un navigateur web n'était pas une option facile.

0 votes

@Brandon comme quand on se connecte à des machines de développement ^.^

53voto

d33tah Points 1203

Oui, utilisez HPing pour le 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 ping (qui est très probablement suid sur votre système).

3 votes

J'aimerais que ce soit la "réponse acceptée". hping était facilement trouvable dans plusieurs repos, contrairement à paping qui est un ancien code crufty qui ne compile pas sur ARM. Aussi contrairement à NMAP, haping renvoie un code d'état qui est facilement testible à partir d'un Shell Shell, donc c'est un substitut parfait pour où vous utiliseriez autrement ping. Merci pour cette réponse, dommage que je n'ai pas fait défiler assez loin pour la voir et que j'ai dû la trouver sur un autre site web à la place.

0 votes

Je ne peux pas installer hping dans ubuntu Paquet non trouvé Mais j'ai trouvé hping3 Est-ce la même chose que hping3 ? @d33tah

0 votes

Ok, j'ai essayé hping3 et il ping tous les ports Peu importe qu'ils soient fermés ou ouverts Comment puis-je savoir si un port est fermé ou ouvert ?

50voto

Vincent Scheib Points 2702

Vous pouvez utiliser netcat pour vous connecter à un port spécifique afin de voir si vous obtenez une connexion. L'indicateur -v augmentera la verbosité pour montrer si le port est ouvert ou fermé. Le drapeau -z fera en sorte que netcat quitte une fois la connexion établie. Vous pouvez alors utiliser les codes de sortie via $ ? 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 l'option -T pour tcp et l'option -P pour spécifier un port. Cela fera quelque chose de similaire à un traceroute sur TCP au lieu de seulement ICMP. Cela peut être exagéré, cependant.

soupir Je dois éditer pour ajouter cette partie, 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]

0 votes

Le problème est que si vous essayez nc -z www.google.com 8000 ça peut prendre beaucoup de temps - 5 secondes et plus. Si je fais -w 1 alors cela prend 5 secondes. Si je fais -w 3 alors cela prend 3 fois plus de temps 15 clignotements du curseur, 15 secondes. -w 1 est censé être d'une seconde mais testé sur cygwin . 5 secondes. C'est super rapide quand il y a un serveur sur le port mais un peu lent quand il n'y en a pas.

0 votes

Malédiction sans saut de ligne dans les commentaires... Cela semble être un bug avec cygwin. Le test avec linux Mint montre un délai de quelques secondes spécifié. exécuté ceci pour tester : date;nc-zw5 www.google.com 8000;date

0 votes

J'ai aussi upvoted @BenjiWiebe avec les demandes nmap. nc est plus facile à mettre dans un script, mais il est BEAUCOUP plus facile d'utiliser nmap visuellement.

24voto

kxmp Points 388

Vous pouvez utiliser Paping un test de port TCP multiplateforme, qui émule la fonctionnalité de ping (port ping).

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

paping -p 80 google.com

8 votes

Une explication de ce que fait ce programme serait utile.

26 votes

Pour tous ceux qui trouvent cette réponse, comme je l'ai fait, pour découvrir que paping n'est dans aucun dépôt et que c'est un ancien code qui ne compile même pas sur ARM - descendez plus bas vers la réponse 'hping'. C'est une solution parfaite pour remplacer ping lorsque vous avez besoin de tester un port et elle est facilement accessible dans divers dépôts (par exemple Ubuntu, Arch), y compris ARM.

0 votes

Comment puis-je installer paping ? J'ai visité le repo mais il n'y a pas de version. Ah, c'est pas grave google code n'était pas accessible pour moi à ce moment-là.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X