Question Est-il possible de faire un ping sur une adresse: port?


Je ne suis pas en réseau, et j'ai la question suivante liée à Linux ping commander.

Puis-je seulement cingler 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 aussi cingler un adresse: port, par exemple: onofri.org:80?

Si j'essaie celui-ci ça ne marche pas:

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

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


195
2018-06-16 18:17


origine


Qu'est-ce que vous essayez d'accomplir? Pour vérifier le bon fonctionnement du service, vous devez interroger le service et évaluer la réponse. Un serveur Web peut, par exemple, accepter votre connexion, mais renvoyer une erreur en raison d'une mauvaise configuration. - Daniel B
C'est une partie de ce que j'aime chez 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) avec le balisage résultant. - Frank Thomas
@FrankThomas HTTP\1.1? Vraiment? - glglgl
@Navin Peut-être HTTP/1.1... - glglgl
@glglgl; quelle? vous ne mettez jamais un hack où une barre oblique devrait aller? mais vous avez raison, ça devrait être une barre oblique. - Frank Thomas


Réponses:


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

(voir également Github comme code.google.com a été déprécié)

paping -p 80 google.com

18
2018-01-21 08:02



Une explication de ce que fait ce programme serait utile. - David Schwartz
pour tous ceux qui trouvent cette réponse, comme je l’ai fait, le fait de trouver du papier ne se trouve dans aucun dépôt et c’est un ancien code qui ne se compilera même pas sur ARM - faites défiler la liste jusqu’à la réponse «hping». C'est un drop-in idéal pour le ping lorsque vous devez tester un port et est facilement accessible dans divers référentiels (par exemple, Ubuntu, Arch), y compris ARM. - Mark


Les ports sont un concept de UDP et TCP. Les messages Ping sont techniquement appelés Demande d'écho ICMP et ICMP Echo Reply qui font partie de ICMP. ICMP, TCP et UDP sont des "frères et soeurs"; ils ne sont pas basés les uns sur les autres, mais sont trois protocoles distincts exécutés au-dessus de IP.

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

nmap -p 80 onofri.org

Vous pouvez aussi 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é).


297
2018-06-16 18:19



+1 tu comprends bien. ICMP est construit sur IP, qui a un concept d'adresses IP mais pas de ports. TCP et UDP sont également en tête de l'IP, et ce sont ces protocoles qui ajoutent des "ports". ICMP, TCP et UDP sont tous au même "niveau" en termes de protocole par lequel ils sont transportés. - Jason C
+1. Beaucoup, beaucoup de gens pensent que s'ils ne peuvent pas cingler quelque chose, ils ne peuvent pas s'y connecter ... mais comme vous dites, ICMP est différent de TCP et UDP: si vous avez l'intention de servir, par exemple, une page Web sur TCP 80, que vous avez seulement besoin d'ouvrir TCP 80 sur le pare-feu, rien d'autre (donc Ping sur la même IP pourrait (... devrait!) être bloqué, par exemple) - Olivier Dulac
Juste pour garder des informations précises, ICMP n'est pas un protocole de couche de transport comme TCP ou UDP. Comme un certain nombre de protocoles, il ne correspond pas entièrement aux modèles conceptuels de réseau, mais il est généralement considéré comme un protocole de couche réseau / interréseau, tout comme l’IP. Il a aussi parfois été appelé protocole L3.5. - YLearn
@BenjiWiebe, d'accord, mais encore une fois, pour plus de précision, la déclaration doit être faite, c'est pourquoi je l'ai ajouté. Tout ce qui est dit jusqu'à présent, c'est que ICMP, TCP et UDP sont liés. Le commentaire le plus voté va même jusqu'à dire qu'ils sont tous au même niveau. Bien que cela ne fasse aucune différence pour l'utilisateur moyen, il y a beaucoup d'utilisateurs non moyens qui visitent ce site. - YLearn
@OlivierDulac Je ne sais pas si vous devrait bloque le. La plupart des serveurs Web que je connais laissent ouverte. ICMP fait circuler l'Internet. Pourquoi voudriez-vous que les gens pensent qu'ils ne peuvent pas vous joindre s'ils le peuvent? - Cruncher


j'utilise Telnet, depuis sa construction dans de nombreuses plates-formes sans aucun 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, le port est actif.

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

Si vous connaissez la séquence de commandes du 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. Ceci est très utile pour tester le service lui-même, car il vous montrera les informations d'erreur envoyées au client, telles que 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

78
2018-06-16 18:24



De plus, si l'écran devient complètement noir, c'est un signe que vous êtes également connecté. - Tensigh
Excellente suggestion J'avais l'habitude d'utiliser cela pour tester si un serveur Web était en ligne quand un navigateur Web n'était pas une option facile. - Brandon
@ Brandon comme quand on se connecte à des machines de développement ^. ^ - Cruncher
Les outils de développement des navigateurs sont beaucoup plus simples, car ils envoient toujours tous les en-têtes de requête HTTP corrects, mais vous pouvez inspecter la réponse HTTP complète. Si vous souhaitez également adapter la demande, telnet est la solution. - Lightness Races in Orbit
Je pense que toutes les réponses ici manquent l'information la plus cruciale. Techniquement, ne serait-il pas possible de "cingler" un port comme suit? Vous pouvez établir une connexion TCP / UDP et compter le nombre de millisecondes nécessaires pour établir cette connexion. - David


Oui, utiliser HPing pour faire ça:

$ 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 de privilèges root (ou de capacités SELinux) pour créer des paquets IP bruts, tout comme ping (qui est probablement le suid de votre système).


40
2018-06-17 15:35



Je souhaite que ce soit la "réponse acceptée". hping était facilement détectable dans plusieurs mises en pension, contrairement au paping qui est un ancien code qui ne compile pas sur ARM. Contrairement à NMAP, haping renvoie un code d’état facilement vérifiable à partir d’un script shell, ce qui en fait un substitut parfait à l’endroit où vous utiliseriez autrement ping. Merci pour cette réponse, dommage que je n'ai pas fait défiler suffisamment loin pour le voir et que je devais le trouver sur un autre site Web. - Mark


Vous pouvez utiliser netcat pour vous connecter à un port spécifique pour voir si vous obtenez une connexion. L'option -v augmentera la verbosité pour indiquer si le port est ouvert ou fermé. L'option -z provoquera la fermeture de netcat une fois la connexion établie. Vous pouvez ensuite 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'indicateur -T pour tcp et l'indicateur -P pour spécifier un port. Cela fera quelque chose de similaire à un traceroute sur TCP au lieu de simplement ICMP. Cela peut être excessif, cependant.

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

40
2018-06-16 21:15



le problème est si vous essayez nc -z www.google.com 8000  cela peut prendre beaucoup de temps - 5 secondes plus. Si je fais -w 1 alors cela prend 5 secondes. Si je fais -w 3 alors ça prend 3 fois plus longtemps .. 15 clignotements du curseur, 15 secondes. -w 1 est censé être 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. - barlop
ne maudissez pas de nouvelles lignes dans les commentaires ... Cela semble être un bug avec cygwin. Les tests avec Linux Mint indiquent un délai de plusieurs secondes spécifié. a exécuté ceci pour tester: date; nc-zw5 www.google.com 8000; date - Falsenames
J'ai aussi voté @BenjiWiebe avec les requêtes nmap. nc est plus facile à mettre dans un script, mais BEAUCOUP plus facile à utiliser visuellement. - Falsenames
L'essayer dans knoppix. nc -zv -w 1 www.google.com Comment essayez-vous une seule fois? Quand je l'essaie oui, -w 1 fonctionne mais chaque seconde, il réessaye jusqu'à ce que je fasse Ctrl-C. - barlop
Vous ne savez pas ce que fait la version Knoppix de 'nc -zv -w 1 www.google.com 80'. Cela fonctionne bien sur mon système, en interrogeant une fois et en laissant tomber comme -z est supposé faire. De plus, sans le numéro de port spécifié, le mien échoue en disant qu’il n’ya pas de port spécifié. - Falsenames


Vous pouvez aussi 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

15
2018-06-23 09:57



nping --tcp -p 80 localhost - K-Gun


Vous pouvez le faire avec šhell avec Python comme une ligne moins rapide:

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSET; }
$ portping 8.8.8.8 54
CLOSET
$ portping 8.8.8.8 53
OPEN

5
2017-12-18 22:11



Vous ne collez pas cela en python idiot d'oie. Collez-le dans bash. - AXE-Labs
ouais je suis un idiot, commentaire enlevé, merci ça a fonctionné parfaitement. - rob
PLACARD, loooool - srghma