Come posso determinare se una macchina è online senza usare il ping?


12

Utilizzavo un'applicazione che poteva eseguire il ping o forse eseguire una scansione delle porte su una macchina anche se la macchina era configurata per non consentirla.

Attualmente sto provando a eseguire il ping di una macchina remota sulla nostra WAN, ma ho configurato la macchina per non consentire il ping. C'è qualcosa di simile al ping che posso usare?

Ancora una volta, questa è una macchina situata in un'altra città che fa parte del nostro declino.

Risposte:


4

Se si utilizza XP / 2003 + (incluso Vista / 2008/7 ), è possibile utilizzare Win32_PingStatus . Le macchine in cui è in esecuzione il codice di script è l'unico sistema che deve essere XP / 2003 + e funziona esattamente come l'utilizzo di Ping.exe, solo che non utilizza ping.exe, quindi dovrebbe fungere da scappatoia alle impostazioni di sicurezza che non consente l'esecuzione di 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

Vedi l'articolo Scripting Guy per maggiori informazioni su come usare Win32_PingStatus:

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


2
La mia comprensione è che l'host remoto è stato configurato per non rispondere ai pacchetti di richiesta eco Echo ICMP, non che ping.exe sull'host locale è stato disabilitato. In quanto tale, questo non farà nulla di diverso nell'esecuzione di ping.exe, vale a dire nulla.
David Pashley,

15

È possibile telnet su una porta tcp aperta sulla macchina. Ad esempio, se la macchina è un server Web e ha la porta 80 aperta, basta:

telnet ip.ad.dre.ss 80

Funzionerà anche su porte crittografate (anche se non sarai in grado di capire i dati)

Alcune altre porte da provare sono:

  • 443 per un server HTTPS
  • 22 per ssh

(c'è un elenco di porte / servizi in / etc / services su macchine linux)


6

Il ping è ICMP, se hai bloccato ICMP non puoi eseguire il ping.

Potrebbe essere comunque possibile testare le porte TCP o UDP se si accettano connessioni TCP / UDP.

Se stai eseguendo il test su container, che mancano di ping, nc, telnet e altri strumenti, puoi usare questo trucco:

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

Questo tenterà di connettersi tramite tcp / udp attraverso il dispositivo (wow, lo so) ed echo "aperto" se la porta è aperta o "chiusa" se è chiusa.

Si bloccherà per un po 'prima di fare eco "chiudi" quando questo è il caso.


2
Bene, ho dovuto usarlo nel docker pod ;-)
Amorfo

4

Eseguire un agente SNMP sul computer remoto e utilizzare un gestore per leggere uno dei valori dal MIB standard.


3

Se non hai firewall e router in mezzo, vale a dire se sei sullo stesso segmento dell'host che stai cercando di verificare, la maggior parte delle soluzioni di cui sopra sono un po 'esaustive.

Non importa a quale porta ti connetti, e infatti, se ti connetti a una porta che è improbabile che abbia un servizio in esecuzione, puoi fare il lavoro senza essere rilevato.

Come?

Puoi usare qualsiasi strumento che ti piace, ma possiamo semplicemente usare 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
%

Ciò dovrebbe avvenire immediatamente, a meno che l'host non stia rilasciando pacchetti. Quello che sta realmente accadendo è che lo stack TCP / IP sull'host ti sta inviando indietro un segmento TCP con il bit RST impostato, ovvero terminando il pacchetto SYN.

Il fatto che tu abbia ricevuto un pacchetto RST significa che c'è davvero un host all'altra estremità, e come bonus - lo hai fatto inosservato (Il TCP / IP non aveva un'applicazione di livello superiore con cui parlare di questa connessione) .

Invece di telnet, tuttavia, probabilmente userei qualcosa come Scapy, scrivo qualcosa che cerca la bandiera RST e ti faccio sapere.

Proprio per completare questo, se non ci sono host IP che si prova - si bloccherà per un po ', e il timeout - la stessa cosa che sarebbe accaduto se la ricezione ospite ha avuto un firewall con un filtro goccia.

Se sono coinvolti firewall, come altri hanno suggerito, utilizzare strumenti come nmape quant'altro.


3

Se hai accesso a un altro computer sulla stessa LAN del tuo computer di destinazione, puoi utilizzare l' arping .

L'arping funziona inviando pacchetti ARP destinati alla macchina, questo funziona perfettamente perché non è possibile bloccare i pacchetti arp se si desidera utilizzare la rete (beh, è ​​possibile impostare tabelle arp statiche ovunque: D) Ma il rovescio della medaglia è che devi essere all'interno del stessa LAN del bersaglio arping.


1

Ci sono servizi disponibili sulla macchina? Un modo per vedere se c'è una macchina è usare il client telnet per connettersi ad essa, ma cambiando la porta che devi colpire.

Supponiamo quindi che la macchina stia eseguendo MS SQL, che viene eseguito sulla porta 1433 per impostazione predefinita. Si utilizza il seguente comando

telnet machine-name-address 1433

Se Telnet si collega la macchina è attiva e funzionante, non significa che funzioni correttamente, ma che comunque ascolta quella porta



1

nmap -T5 -sS -P0 ho.st.ip.addr Questo vedrà ciò che è disponibile dal punto di vista della porta su quella macchina .. Consiglia l'installazione di Cygwin se si sta eseguendo Windows o non si ha accesso a una macchina Linux.


1

scanner di rete softperfect.

google per questo.

Lo uso molto. Funziona alla grande


1

Google per "nmap". Lo uso sempre. Ottimo per verificare che i firewall funzionino come previsto. Inoltre credo che sia stato menzionato in un film Matrix che lo rende doppiamente fantastico.


1

È possibile fare in modo che la macchina invii una trap snmp (pacchetto) una volta al minuto a un monitor remoto e imposti una regola per monitorare la ricezione della trap ogni minuto.


1
Questa è davvero una buona risposta e molto corretta. SNMP è abbastanza basso livello e può essere configurato su sistemi Windows. È l'unica alternativa all'ICMP e di fatto utilizzata abitualmente dagli ingegneri di rete per il monitoraggio di router e sistemi su WAN e LAN
Abhishek Dujari,

1

La semplice soluzione a questo problema sarà utilizzare l'utilità netcat. L'unico prerequisito per questo scenario è che si dovrebbe essere consapevoli di almeno una porta che è aperta su quella macchina remota.

nc -nv indirizzo_ip numero_porta

Il comando precedente fornirà un risultato, che determinerebbe se detta porta è aperta o meno e quindi la disponibilità della macchina


0

È possibile installare un semplice server Web e utilizzare una pagina Web che dice "ONLINE". Devi solo collegarti dove vuoi Ovviamente hai bisogno di un IP statin o di servizi linke dyndns


0

Un approccio molto semplice è telnet a una porta TCP che dovrebbe essere aperta sul server, ovvero:

telnet theServerHostname 80

Sebbene se il servizio non è attivo si otterrebbe lo stesso risultato come se l'host non fosse attivo.

Esistono tutti i tipi di scansioni che possono essere eseguite con nmap, conoscerle sul sito di nmap e dovresti diventare un esperto su come testare se un host è attivo. Questi includono l'uso di protocolli diversi da icmp (ping), come TCP (come Telnet) e UDP.

Inoltre, se si desidera qualcosa che include la possibilità di connettersi a udp, che è simile a telnet in questo senso, considerare netcat .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.