Comment puis-je déterminer si une machine est en ligne sans utiliser de ping?

12

J'avais l'habitude d'utiliser une application qui pouvait cingler ou peut-être exécuter une analyse de port sur une machine même si la machine était configurée pour ne pas l'autoriser.

J'essaie actuellement d'envoyer une requête ping à une machine distante sur notre WAN, mais j'ai configuré la machine pour qu'elle n'autorise pas la requête ping. Y a-t-il quelque chose de similaire au ping que je peux utiliser?

Encore une fois, c'est une machine située dans une autre ville qui fait partie de notre wan.

cop1152
la source

Réponses:

4

Si vous utilisez XP / 2003 + (cela inclut Vista / 2008/7 ), vous pouvez utiliser Win32_PingStatus . Les machines sur lesquelles le code de script est exécuté sont le seul système qui doit être XP / 2003 +, et cela fonctionne exactement comme l'utilisation de Ping.exe, mais il n'utilise pas ping.exe, il devrait donc agir comme une échappatoire à votre paramètre de sécurité qui ne permet pas l'exécution de ping.exe.

strComputer = "192.168.1.1"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_PingStatus " & _
        "Where Address = '" & strComputer & "'")
For Each objItem in colItems
    If objItem.StatusCode = 0 Then 
        WScript.Echo "Reply received."          
    End If
Next

Consultez l'article Scripting Guy pour plus d'informations sur l'utilisation de Win32_PingStatus:

http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx

mrTomahawk
la source
2
Ma compréhension est que l'hôte distant a été configuré pour ne pas répondre aux paquets de demande d'écho ICMP, pas que ping.exe sur l'hôte local a été désactivé. En tant que tel, cela ne fera rien de différent de l'exécution de ping.exe, c'est-à-dire rien.
David Pashley
15

Vous pouvez vous connecter à un port TCP ouvert sur la machine. Par exemple, si la machine est un serveur Web et que le port 80 est ouvert, il suffit:

telnet ip.ad.dre.ss 80

Cela fonctionnera même sur les ports cryptés (bien que vous ne puissiez pas comprendre les données)

Quelques autres ports à essayer sont:

  • 443 pour un serveur https
  • 22 pour ssh

(il y a une liste de ports / services dans / etc / services sur les machines linux)

Brent
la source
6

Ping est ICMP, si vous avez bloqué ICMP, vous ne pouvez pas ping.

Vous pourrez toujours tester les ports TCP ou UDP si vous acceptez les connexions TCP / UDP.

Si vous exécutez votre test sur des conteneurs, qui manquent de ping, nc, telnet et d'autres outils, vous pouvez utiliser cette astuce:

(echo >/dev/tcp/${host}/${port}) &>/dev/null && echo "open" || echo "closed"

Cela tentera de se connecter via tcp / udp via le périphérique (wow, je sais) et fera écho "ouvert" si le port est ouvert ou "fermé" s'il est fermé.

Il va se bloquer pendant un certain temps avant de faire écho à "close" lorsque c'est le cas.

David Rz Ayala
la source
2
Cool, je devais l'utiliser dans le docker pod ;-)
Amorphous
4

Exécutez un agent SNMP sur la machine distante et utilisez un gestionnaire pour lire l'une des valeurs de la MIB standard.


la source
3

Si vous n'avez pas de pare-feu et de routeurs sur le chemin, c'est-à-dire si vous êtes sur le même segment que l'hôte que vous essayez de vérifier - la plupart des solutions ci-dessus sont un peu exhaustives.

Peu importe le port auquel vous vous connectez, et en fait, si vous vous connectez à un port qui a peu de chances d'avoir un service en cours d'exécution, vous pouvez faire le travail sans être détecté.

Comment?

Vous pouvez utiliser n'importe quel outil que vous aimez, mais nous pouvons simplement utiliser telnet ...

% telnet <host> 313373
Trying 10.211.55.3...
telnet: connect to address 10.211.55.3: Connection refused
telnet: Unable to connect to remote host
%

Cela devrait se produire immédiatement, à moins que l'hôte ne supprime des paquets. Ce qui se passe réellement, c'est que la pile TCP / IP sur l'hôte vous renvoie un segment TCP avec le bit RST défini - c'est-à-dire la fin de votre paquet SYN.

Le fait que vous ayez reçu un paquet RST signifie qu'il y a en effet un hôte à l'autre extrémité, et en bonus - vous l'avez fait sans être détecté (Le TCP / IP n'avait pas d'application de couche supérieure pour parler de cette connexion) .

Plutôt que telnet cependant, j'utiliserais probablement quelque chose comme scapy, j'écrirais quelque chose qui cherche le drapeau RST et nous vous le ferons savoir.

Juste pour terminer cela, s'il n'y a pas d'hôte sur l'IP que vous essayez - cela va se bloquer pendant un certain temps et le délai d'attente - la même chose qui se produirait si l'hôte de réception avait un pare-feu avec un filtre de suppression.

Si des pare-feu sont impliqués, alors comme d'autres l'ont suggéré, utilisez des outils tels que nmapet quoi que ce soit d'autre.

Xerxès
la source
3

Si vous avez accès à une autre machine sur le même LAN que votre machine cible, vous pouvez utiliser l' arping .

Arping fonctionne en envoyant des paquets ARP ciblant la machine, cela fonctionne parfaitement car vous ne pouvez pas bloquer les paquets arp si vous souhaitez utiliser le réseau (eh bien, vous pouvez configurer des tables d'arp statiques partout: D) ​​Mais l'inconvénient est que vous devez être dans le même LAN que votre cible arping.

hayalci
la source
1

Y a-t-il des services disponibles sur la machine? Une façon de voir si une machine est là est d'utiliser le client telnet pour s'y connecter, mais en changeant le port que vous devez frapper.

Disons donc que la machine exécute MS SQL qui s'exécute sur le port 1433 par défaut. Vous utilisez la commande suivante

telnet machine-name-address 1433

Si Telnet se connecte, la machine est opérationnelle, cela ne signifie pas qu'elle fonctionne correctement, mais l'écoute de ce port n'en reste pas moins

Brettski
la source
1

pour i in seq 1 65535; faire tcpconnect -v remotehost $ i; terminé

Vish
la source
ne connaissait pas tcpconnect. Pour les personnes qui le recherchent: packages.debian.org/tcputils
Martin M.
1

nmap -T5 -sS -P0 ho.st.ip.addr Cela verra ce qui est disponible en termes de port sur cette machine .. Recommandez d'installer cygwin si vous utilisez Windows ou n'avez pas accès à une machine Linux.

Dan
la source
1

scanner réseau softperfect.

google pour cela.

Je l'utilise beaucoup. Fonctionne très bien

therulebookman
la source
1

Google pour "nmap". Je l'utilise tout le temps. Idéal pour vérifier que vos pare-feu fonctionnent comme prévu également. De plus, je crois qu'il a été référencé dans un film Matrix, ce qui le rend doublement génial.

Neobyte
la source
1

Vous pouvez demander à la machine d'envoyer un trap snmp (paquet) une fois par minute à un moniteur distant et de définir une règle pour contrôler que vous recevez le trap chaque minute.

Stuart Woodward
la source
1
C'est en effet une bonne réponse et très correcte. SNMP est suffisamment bas et peut être configuré sur les systèmes Windows. C'est la seule alternative à ICMP et en fait couramment utilisée par les ingénieurs réseau pour surveiller les routeurs et les systèmes sur WAN et LAN
Abhishek Dujari
1

La solution simple à ce problème sera d'utiliser l'utilitaire netcat. La seule condition préalable à ce scénario est que l'on doit connaître au moins un port ouvert sur cette machine distante.

nc -nv adresse_ip numéro_port

La commande ci-dessus donnera un résultat qui déterminera si ledit port est ouvert ou non et donc la disponibilité de la machine

MVnD3X
la source
0

Vous pouvez installer un simple serveur Web et utiliser une page Web indiquant "EN LIGNE". Vous n'avez qu'à vous y connecter où vous voulez Bien sûr, vous avez besoin d'un IP statin ou de services linke dyndns


la source
0

Une approche très simple consiste à telnet vers un port TCP qui doit être ouvert sur le serveur, c'est-à-dire:

telnet theServerHostname 80

Bien que si le service est en panne, vous obtiendrez le même résultat que si l'hôte était en panne.

Il existe toutes sortes d'analyses qui peuvent être effectuées avec nmap, découvrez-les sur le site de nmap et vous devriez devenir un expert sur la façon de tester si un hôte est opérationnel. Il s'agit notamment d'utiliser des protocoles autres que icmp (ping), tels que TCP (comme le fait telnet) et UDP.

De plus, si vous voulez quelque chose qui inclut la possibilité de se connecter à udp, qui est similaire à telnet dans ce sens, pensez à netcat .

Kyle Brandt
la source
0

Microsoft PortQry Command Line Port Scanner Version 2.0

Je l'utilise souvent pour tester les ports SQL Server

port ouvert = pare-feu ECOUTE ou NON ECOUTE = FILTRE

jerryhung
la source