Jak mogę ustalić, czy komputer jest online bez użycia polecenia ping?


12

Kiedyś korzystałem z aplikacji, która mogła pingować lub uruchomić skanowanie portów na komputerze, nawet jeśli komputer został skonfigurowany tak, aby na to nie zezwalać.

Obecnie próbuję wysłać polecenie ping do zdalnego komputera w sieci WAN, ale skonfigurowałem maszynę tak, aby nie zezwalała na pingowanie. Czy jest coś podobnego do ping, którego mogę użyć?

Znów jest to maszyna zlokalizowana w innym mieście, które jest częścią naszej wanny.

Odpowiedzi:


4

Jeśli używasz XP / 2003 + (obejmuje to Vista / 2008/7 ), możesz użyć Win32_PingStatus . Maszyny, na których działa kod skryptu, to jedyny system, który musi być XP / 2003 +, i działa tak samo jak przy użyciu Ping.exe, tyle że nie używa ping.exe, więc powinien działać jako luka w ustawieniach zabezpieczeń, które nie zezwala na wykonanie polecenia 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

Zobacz artykuł Guy Scripting, aby uzyskać więcej informacji na temat korzystania z Win32_PingStatus:

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


2
Rozumiem, że host zdalny został skonfigurowany tak, aby nie odpowiadał na pakiety żądania echa ICMP, nie że ping.exe na hoście lokalnym został wyłączony. W związku z tym nie spowoduje to nic innego niż uruchomienie narzędzia ping.exe, to znaczy nic.
David Pashley,

15

Możesz telnet na otwarty port TCP na komputerze. Na przykład, jeśli komputer jest serwerem WWW i ma otwarty port 80, po prostu:

telnet ip.ad.dre.ss 80

Będzie to działać nawet na zaszyfrowanych portach (chociaż nie będziesz w stanie zrozumieć danych)

Niektóre inne porty do wypróbowania to:

  • 443 dla serwera https
  • 22 dla ssh

(istnieje lista portów / usług w / etc / services na komputerach z linuksem)


7

Ping to ICMP, jeśli zablokowałeś ICMP, nie możesz pingować.

Nadal możesz testować porty TCP lub UDP, jeśli akceptujesz połączenia TCP / UDP.

Jeśli przeprowadzasz test na kontenerach, w których brakuje ping, nc, telnet i innych narzędzi, możesz użyć tej sztuczki:

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

Spowoduje to próbę połączenia przez tcp / udp przez urządzenie (wow, wiem) i echo „otwórz”, jeśli port jest otwarty lub „zamknięty”, jeśli jest zamknięty.

W takim przypadku zawiesi się na chwilę, a następnie powtórzy „zamknij”.


2
Fajnie, musiałem użyć tego w dokerze ;-)
Amorphous

4

Uruchom agenta SNMP na zdalnym komputerze i użyj menedżera, aby odczytać jedną ze standardowych wartości MIB.


3

Jeśli nie masz na sobie zapór ogniowych i routerów, tj. Jeśli jesteś w tym samym segmencie, co host, który próbujesz sprawdzić - większość powyższych rozwiązań jest trochę wyczerpująca.

Nie ma znaczenia, z jakim portem się łączysz, a w rzeczywistości, jeśli podłączysz się do portu, który prawdopodobnie nie uruchomi usługi, możesz wykonać zadanie bez wykrycia.

W jaki sposób?

Możesz użyć dowolnego narzędzia, które ci się podoba, ale możemy po prostu użyć 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
%

Powinno to nastąpić natychmiast, chyba że host upuści pakiety. W rzeczywistości stos TCP / IP na hoście wysyła z powrotem segment TCP z ustawionym bitem RST - tzn. Kończy pakiet SYN.

Fakt, że otrzymałeś pakiet RST oznacza, że ​​na drugim końcu rzeczywiście znajduje się host, a jako bonus - zrobiłeś to niezauważony (TCP / IP nie miał aplikacji wyższej warstwy, z którą można by porozmawiać o tym połączeniu) .

Jednak zamiast telnet, prawdopodobnie użyłbym czegoś takiego jak scapy, napiszę coś, co szuka flagi RST i dam ci znać.

Aby to zrobić, jeśli nie ma hosta w adresie IP, którego spróbujesz - zawiesi się na chwilę, a limit czasu - to samo, co by się stało, gdyby host odbierający miał zaporę ogniową z filtrem upuszczającym.

Jeśli w grę wchodzą zapory ogniowe, jak sugerują inni, skorzystaj z narzędzi takich jak nmapi cokolwiek innego.


3

Jeśli masz dostęp do innego komputera w tej samej sieci LAN, co komputer docelowy, możesz użyć arping .

Arping działa poprzez wysyłanie pakietów ARP kierowanych na maszynę, działa to doskonale, ponieważ nie można blokować pakietów arp, jeśli chcesz korzystać z sieci (cóż, wszędzie można ustawić statyczne tabele arp: D) Ale wadą jest to, że musisz być w zasięgu ta sama sieć LAN, co twój cel arping.


1

Czy na maszynie są dostępne jakieś usługi? Jednym ze sposobów sprawdzenia, czy jest tam maszyna, jest skorzystanie z klienta Telnet, aby się z nią połączyć, ale zmieniając port, który musisz nacisnąć.

Powiedzmy, że na komputerze działa MS SQL, który domyślnie działa na porcie 1433. Używasz następującego polecenia

telnet machine-name-address 1433

Jeśli Telnet się połączy, urządzenie jest uruchomione i nie działa, nie oznacza to, że działa poprawnie, ale nasłuchuje tego portu



1

nmap -T5 -sS -P0 ho.st.ip.addr To zobaczy, co jest dostępne pod względem portów na tej maszynie. Zaleca się instalację cygwin, jeśli używasz systemu Windows lub nie masz dostępu do maszyny linux.



1

Google dla „nmap”. Używam tego cały czas. Idealne do sprawdzenia, czy zapory działają również zgodnie z oczekiwaniami. Ponadto uważam, że wspomniano o nim w filmie Matrix, co czyni go podwójnie niesamowitym.


1

Możesz kazać maszynie wysyłać pułapkę snmp (pakiet) raz na minutę do zdalnego monitora i konfigurować regułę monitorowania, że ​​co chwila otrzymujesz pułapkę.


1
To rzeczywiście dobra i bardzo poprawna odpowiedź. SNMP jest wystarczająco niski i można go skonfigurować w systemach Windows. Jest to jedyna alternatywa dla ICMP i faktycznie wykorzystywana rutynowo przez inżynierów sieciowych do monitorowania routerów i systemów za pośrednictwem sieci WAN i LAN
Abhishek Dujari,

1

Prostym rozwiązaniem tego problemu będzie użycie narzędzia netcat. Jedynym warunkiem wstępnym tego scenariusza jest znajomość przynajmniej jednego portu otwartego na tym zdalnym komputerze.

nc -nv adres_IP numer_portu

Powyższe polecenie da wynik, który określi, czy wspomniany port jest otwarty, czy nie, a tym samym dostępność maszyny


0

Możesz zainstalować prosty serwer WWW i użyć strony internetowej z napisem „ONLINE”. Musisz się z nim połączyć tylko tam, gdzie chcesz. Oczywiście potrzebujesz statutu ip lub usług linke dyndns


0

Bardzo prostym podejściem jest telnet do portu TCP, który powinien być otwarty na serwerze, tj .:

telnet theServerHostname 80

Chociaż jeśli usługa nie działa, wynik będzie taki sam, jak w przypadku awarii hosta.

Istnieje wiele rodzajów skanów, które można wykonać za pomocą nmap, dowiedz się o nich na stronie nmap i powinieneś zostać ekspertem w testowaniu, czy host działa. Obejmują one używanie protokołów innych niż icmp (ping), takich jak TCP (jak robi to telnet) i UDP.

Ponadto, jeśli chcesz czegoś, co obejmuje możliwość połączenia z udp, co w tym sensie przypomina telnet, rozważ netcat .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.