Wie kann ich feststellen, ob ein Computer online ist, ohne Ping zu verwenden?

12

Ich habe früher eine Anwendung verwendet, die einen Ping-Befehl oder einen Port-Scan auf einem Computer ausführen konnte, obwohl der Computer so konfiguriert war, dass er dies nicht zuließ.

Ich versuche gerade, einen Remote-Computer in unserem WAN zu pingen, habe den Computer jedoch so konfiguriert, dass Ping nicht zulässig ist. Gibt es etwas Ähnliches wie Ping, das ich verwenden kann?

Auch dies ist eine Maschine in einer anderen Stadt, die Teil unseres Wan ist.

cop1152
quelle

Antworten:

4

Wenn Sie XP / 2003 + (einschließlich Vista / 2008/7 ) verwenden, können Sie den Win32_PingStatus verwenden . Die Computer, auf denen der Skriptcode ausgeführt wird, sind das einzige System, auf dem XP / 2003 + ausgeführt werden muss, und es funktioniert genauso wie mit Ping.exe, nur dass ping.exe nicht verwendet wird, sodass es als Sicherheitslücke für Ihre Sicherheitseinstellung fungieren sollte erlaubt die Ausführung von ping.exe nicht.

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

Weitere Informationen zur Verwendung von Win32_PingStatus finden Sie im Scripting Guy-Artikel:

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

mrTomahawk
quelle
2
Nach meinem Verständnis wurde der Remotehost so konfiguriert, dass er nicht auf ICMP-Echoanforderungspakete antwortet, und nicht, dass ping.exe auf dem lokalen Host deaktiviert wurde. Daher wird dies nichts anderes tun als ping.exe auszuführen, das heißt nichts.
David Pashley
15

Sie können eine Telnet-Verbindung zu einem offenen TCP-Port auf dem Computer herstellen. Wenn es sich bei dem Computer beispielsweise um einen Webserver handelt und Port 80 geöffnet ist, gehen Sie wie folgt vor:

telnet ip.ad.dre.ss 80

Dies funktioniert auch bei verschlüsselten Ports (obwohl Sie die Daten nicht verstehen können)

Einige andere zu versuchende Ports sind:

  • 443 für einen https-Server
  • 22 für ssh

(Es gibt eine Liste der Ports / Dienste in / etc / services auf Linux-Rechnern)

Brent
quelle
6

Ping ist ICMP. Wenn Sie ICMP blockiert haben, können Sie kein Ping durchführen.

Möglicherweise können Sie weiterhin TCP- oder UDP-Ports testen, wenn Sie TCP / UDP-Verbindungen akzeptieren.

Wenn Sie Ihren Test für Container ausführen, denen Ping, NC, Telnet und andere Tools fehlen, können Sie diesen Trick anwenden:

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

Dadurch wird versucht, eine Verbindung über TCP / UDP über das Gerät herzustellen (wow, ich weiß), und es wird das Echo "offen" ausgegeben, wenn der Port offen ist, oder "geschlossen", wenn er geschlossen ist.

Es bleibt eine Weile hängen, bevor es in diesem Fall "close" zurücksendet.

David Rz Ayala
quelle
2
Kühle Ich hatte diesen Einsatz in Docker pod ;-)
Amorphe
4

Führen Sie einen SNMP-Agenten auf dem Remotecomputer aus und verwenden Sie einen Manager, um einen der Werte aus der Standard-MIB zu lesen.


quelle
3

Wenn Sie keine Firewalls und Router im Weg haben, dh wenn Sie sich im selben Segment wie der Host befinden, den Sie überprüfen möchten, sind die meisten der oben genannten Lösungen ein wenig erschöpfend.

Es spielt keine Rolle, mit welchem ​​Port Sie eine Verbindung herstellen. Wenn Sie eine Verbindung mit einem Port herstellen, auf dem wahrscheinlich kein Dienst ausgeführt wird, können Sie die Aufgabe erledigen, ohne dass dies erkannt wird.

Wie?

Sie können jedes beliebige Tool verwenden, aber wir können nur Telnet verwenden ...

% 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
%

Dies sollte sofort geschehen, es sei denn, der Host verwirft Pakete. Was tatsächlich passiert, ist, dass der TCP / IP-Stack auf dem Host Ihnen ein TCP-Segment mit gesetztem RST-Bit zurücksendet - dh, Sie beenden Ihr SYN-Paket.

Die Tatsache, dass Sie ein RST-Paket erhalten haben, bedeutet, dass tatsächlich ein Host am anderen Ende verfügbar ist, und als Bonus - Sie haben dies unentdeckt getan (TCP / IP hatte keine Anwendung der oberen Schicht, mit der Sie über diese Verbindung sprechen konnten). .

Anstatt jedoch Telnet zu verwenden, würde ich wahrscheinlich so etwas wie Scapy verwenden, etwas aufschreiben, das nach der RST-Flagge sucht, und Sie wissen lassen.

Um dies zu vervollständigen: Wenn Sie versuchen, einen Host auf der IP-Adresse zu finden, bleibt dieser für eine Weile hängen, und die Zeitüberschreitung ist dasselbe, was passieren würde , wenn der empfangende Host eine Firewall mit einem Drop-Filter hätte.

Wenn Firewalls beteiligt sind, verwenden Sie, wie andere vorgeschlagen haben, Tools wie nmapund was auch immer.

Xerxes
quelle
3

Wenn Sie auf einen anderen Computer im selben LAN wie Ihr Zielcomputer zugreifen können, können Sie Arping verwenden .

Arping funktioniert durch das Senden von ARP-Paketen an den Computer. Dies funktioniert perfekt, da Sie Arp-Pakete nicht blockieren können, wenn Sie das Netzwerk verwenden möchten (Sie können überall statische Arp-Tabellen einrichten: D) dasselbe LAN wie Ihr Arping-Ziel.

hayalci
quelle
1

Sind auf der Maschine irgendwelche Dienste verfügbar? Eine Möglichkeit, um festzustellen, ob ein Computer vorhanden ist, besteht darin, den Telnet-Client zu verwenden, um eine Verbindung zu ihm herzustellen, aber den Port zu ändern, den Sie treffen müssen.

Angenommen, auf dem Computer wird MS SQL ausgeführt, das standardmäßig auf Port 1433 ausgeführt wird. Sie verwenden den folgenden Befehl

telnet machine-name-address 1433

Wenn eine Telnet-Verbindung hergestellt wird, ist der Computer betriebsbereit. Dies bedeutet nicht, dass der Computer ordnungsgemäß ausgeführt wird, hört aber trotzdem auf diesen Port

Brettski
quelle
1

denn ich in seq 1 65535; tcpconnect -v remotehost $ i ausführen; erledigt

Vish
quelle
Ich wusste nichts über tcpconnect. Für die Leute, die danach suchen: packages.debian.org/tcputils
serverhorror
1

nmap -T5 -sS -P0 ho.st.ip.addr Hier sehen Sie, welche Ports auf diesem Computer verfügbar sind. Empfehlen Sie die Installation von cygwin, wenn Sie unter Windows arbeiten oder keinen Zugriff auf einen Linux-Computer haben.

Dan
quelle
1

softperfect Netzwerkscanner.

google dafür.

Ich benutze es viel. Funktioniert super

Therulebookman
quelle
1

Google für "nmap". Ich benutze das die ganze Zeit. Hervorragend geeignet, um zu überprüfen, ob Ihre Firewalls erwartungsgemäß funktionieren. Außerdem glaube ich, dass es in einem Matrix-Film erwähnt wurde, was es doppelt fantastisch macht.

Neobyte
quelle
1

Sie könnten das Gerät einmal pro Minute eine SNMP-Trap (Paket) an einen Remote-Monitor senden lassen und eine Regel einrichten, die überwacht, dass Sie die Trap jede Minute empfangen.

Stuart Woodward
quelle
1
Dies ist in der Tat eine gute und sehr richtige Antwort. SNMP ist niedrig genug und kann auf Windows-Systemen konfiguriert werden. Es ist die einzige Alternative zu ICMP und wird von Netzwerktechnikern routinemäßig zur Überwachung von Routern und Systemen über WAN und LAN verwendet
Abhishek Dujari,
1

Die einfache Lösung für dieses Problem ist die Verwendung des Dienstprogramms netcat. Einzige Voraussetzung für dieses Szenario ist, dass mindestens ein Port bekannt ist, der auf diesem Remotecomputer offen ist.

nc -nv ip_address port_number

Der obige Befehl gibt ein Ergebnis aus, das bestimmen würde, ob der Port offen ist oder nicht, und daher die Verfügbarkeit der Maschine

MVnD3X
quelle
0

Sie können einen einfachen Webserver installieren und eine Webseite mit der Aufschrift "ONLINE" verwenden. Die müssen Sie nur verbinden, wo immer Sie wollen. Natürlich benötigen Sie eine statin ip oder services linke dyndns


quelle
0

Ein sehr einfacher Ansatz besteht darin, eine Telnet-Verbindung zu einem TCP-Port herzustellen, der auf dem Server geöffnet sein sollte.

telnet theServerHostname 80

Wenn der Dienst nicht verfügbar ist, erhalten Sie dasselbe Ergebnis wie bei einem nicht verfügbaren Host.

Es gibt alle möglichen Arten von Scans, die mit nmap durchgeführt werden können. Informieren Sie sich auf der nmap-Website darüber und erfahren Sie, wie Sie testen können, ob ein Host aktiv ist. Dazu gehören andere Protokolle als icmp (ping), wie z. B. TCP (wie bei Telnet) und UDP.

Wenn Sie eine Verbindung zu udp herstellen möchten, die in diesem Sinne mit Telnet vergleichbar ist, ziehen Sie netcat in Betracht .

Kyle Brandt
quelle
0

Microsofts eigener PortQry Command Line Port Scanner Version 2.0

Ich benutze es oft, um SQL Server-Ports zu testen

offener Port = LISTENING oder NOT LISTENING Firewall = FILTERED

Jerryhung
quelle