¿Cómo puedo determinar si una máquina está en línea sin usar ping?

12

Solía ​​usar una aplicación que podía hacer ping o tal vez ejecutar un escaneo de puertos en una máquina, incluso si la máquina estaba configurada para no permitirlo.

Actualmente estoy tratando de hacer ping a una máquina remota en nuestra WAN, pero he configurado la máquina para que no permita el ping. ¿Hay algo similar al ping que pueda usar?

Nuevamente, esta es una máquina ubicada en otra ciudad que es parte de nuestro wan.

cop1152
fuente

Respuestas:

4

Si usa XP / 2003 + (esto incluye Vista / 2008/7 ), puede usar Win32_PingStatus . Las máquinas en las que se ejecuta el código de script es el único sistema que necesita ser XP / 2003 +, y funciona igual que usar Ping.exe, solo que no usa ping.exe, por lo que debería actuar como un vacío para su configuración de seguridad que no permite la ejecución 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

Consulte el artículo de Scripting Guy para obtener más información sobre cómo usar Win32_PingStatus:

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

mrTomahawk
fuente
2
Tengo entendido que el host remoto se ha configurado para no responder a los paquetes de solicitud de eco ICMP, no que ping.exe en el host local se haya deshabilitado. Como tal, esto no va a hacer nada diferente a ejecutar ping.exe, es decir, nada.
David Pashley
15

Puede telnet a un puerto TCP abierto en la máquina. Por ejemplo, si la máquina es un servidor web y tiene el puerto 80 abierto, simplemente:

telnet ip.ad.dre.ss 80

Esto funcionará incluso en puertos cifrados (aunque no podrá comprender los datos)

Algunos otros puertos para probar son:

  • 443 para un servidor https
  • 22 para ssh

(hay una lista de puertos / servicios en / etc / services en máquinas Linux)

Brent
fuente
6

Ping es ICMP, si bloqueó ICMP no puede hacer ping.

Es posible que aún pueda probar los puertos TCP o UDP si acepta conexiones TCP / UDP.

Si está ejecutando su prueba en contenedores que carecen de ping, nc, telnet y otras herramientas, puede usar este truco:

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

Esto intentará conectarse a través de tcp / udp a través del dispositivo (wow, lo sé) y eco "abierto" si el puerto está abierto o "cerrado" si está cerrado.

Colgará por un tiempo antes de hacer eco de "cerrar" cuando ese sea el caso.

David Rz Ayala
fuente
2
Genial, tuve que usar esto en la ventana acoplable ;-)
Amorfo
4

Ejecute un agente SNMP en la máquina remota y use un administrador para leer uno de los valores de la MIB estándar.


fuente
3

Si no tiene firewalls y enrutadores en el camino, es decir, si está en el mismo segmento que el host que está tratando de verificar, la mayoría de las soluciones anteriores son un poco exhaustivas.

No importa a qué puerto se conecte, y de hecho, si se conecta a un puerto que es poco probable que tenga un servicio en ejecución, puede hacer el trabajo sin ser detectado.

¿Cómo?

Puede usar cualquier herramienta que desee, pero podemos usar 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
%

Esto debería suceder de inmediato, a menos que el host descarte paquetes. Lo que realmente sucede es que la pila TCP / IP en el host le está enviando un segmento TCP con el conjunto de bits RST, es decir, terminando su paquete SYN.

El hecho de que haya recibido un paquete RST significa que de hecho hay un host en el otro extremo, y como beneficio adicional, lo ha hecho sin ser detectado (El TCP / IP no tenía una aplicación de capa superior para hablar sobre esta conexión) .

Sin embargo, en lugar de telnet, probablemente usaría algo como miedo, escriba algo que busque la bandera RST y se lo haga saber.

Sólo para completar esto, si no hay un host de la IP que intenta - colgará por un tiempo, y el tiempo de espera - lo mismo que le sucedería si el host receptor tenía un cortafuegos con un filtro de caída.

Si hay firewalls involucrados, entonces, como otros han sugerido, utilice herramientas como nmapy cualquier otra cosa.

Jerjes
fuente
3

Si tiene acceso a otra máquina en la misma LAN que su máquina de destino, puede usar arping .

Arping funciona enviando paquetes ARP dirigidos a la máquina, esto funciona perfectamente porque no puede bloquear paquetes arp si desea utilizar la red (bueno, puede configurar tablas de arp estáticas en todas partes: D) Pero la desventaja es que debe estar dentro del misma LAN que su objetivo de arping.

hayalci
fuente
1

¿Hay algún servicio disponible en la máquina? Una forma de ver si hay una máquina es usar el cliente telnet para conectarse a ella, pero cambiando el puerto al que debe acceder.

Entonces, supongamos que la máquina ejecuta MS SQL que se ejecuta en el puerto 1433 de forma predeterminada. Utiliza el siguiente comando

telnet machine-name-address 1433

Si Telnet se conecta, la máquina está en funcionamiento, no significa que esté funcionando correctamente, pero no obstante escucha ese puerto

Brettski
fuente
1

porque yo en seq 1 65535; hacer tcpconnect -v remotehost $ i; hecho

Vish
fuente
No sabía sobre tcpconnect. Para las personas que lo buscan: packages.debian.org/tcputils
Martin M.
1

nmap -T5 -sS -P0 ho.st.ip.addr Eso verá qué puerto está disponible en esa máquina. Recomiende instalar cygwin si está ejecutando en Windows o no tiene acceso a una máquina Linux.

Dan
fuente
1

escáner de red softperfect.

google para ello

Lo uso mucho. Funciona genial

therulebookman
fuente
1

Google para "nmap". Uso esto todo el tiempo. Ideal para verificar que sus firewalls también estén funcionando como se esperaba. Además, creo que se hizo referencia en una película de Matrix que lo hace doblemente increíble.

Neobyte
fuente
1

Puede hacer que la máquina envíe una trampa snmp (paquete) una vez por minuto a un monitor remoto y establezca una regla para monitorear que estaba recibiendo la trampa cada minuto.

Stuart Woodward
fuente
1
De hecho, esta es una buena respuesta y una muy correcta. SNMP es lo suficientemente bajo y puede configurarse en sistemas Windows. Es la única alternativa a ICMP y, de hecho, los ingenieros de redes lo utilizan de manera rutinaria para monitorear enrutadores y sistemas a través de WAN y LAN
Abhishek Dujari
1

La solución simple a este problema será usar la utilidad netcat. El único requisito previo para este escenario es que uno debe conocer al menos un puerto que esté abierto en esa máquina remota.

nc -nv dirección_ip número_puerto

El comando anterior dará un resultado, que determinaría si dicho puerto está abierto o no y, por lo tanto, la disponibilidad de la máquina

MVnD3X
fuente
0

Puede instalar un servidor web simple y usar una página web que diga "EN LÍNEA". Solo tienes que conectarte a él donde quieras Por supuesto que necesitas una IP estatina o servicios linke dyndns


fuente
0

Un enfoque muy simple es hacer telnet a un puerto TCP que debería estar abierto en el servidor, es decir:

telnet theServerHostname 80

Aunque si el servicio está inactivo, obtendría el mismo resultado que si el host estuviera inactivo.

Hay todo tipo de escaneos que se pueden hacer con nmap, infórmese sobre ellos en el sitio de nmap y debería convertirse en un experto sobre cómo probar si un host está activo. Estos incluyen el uso de protocolos distintos de icmp (ping), como TCP (como lo hace telnet) y UDP.

Además, si desea algo que incluya la capacidad de conectarse a udp, que es similar a telnet en este sentido, considere netcat .

Kyle Brandt
fuente