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.

cop1152
źródło

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

mrTomahawk
źródło
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)

Brent
źródło
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”.

David Rz Ayala
źródło
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.


źródło
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.

Kserkses
źródło
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.

Hayalci
źródło
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

Brettski
źródło
1

dla mnie w seq 1 65535; wykonaj tcpconnect -v remotehost $ i; gotowy

Vish
źródło
nie wiedziałem o tcpconnect. Dla osób, które go szukają: packages.debian.org/tcputils
Martin M.
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.

Dan
źródło
1

softperfect skaner sieciowy.

google za to.

Używam tego dużo. Działa świetnie

therulebookman
źródło
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.

Neobajt
źródło
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ę.

Stuart Woodward
źródło
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

MVnD3X
źródło
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


źródło
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 .

Kyle Brandt
źródło
0

Własny skaner portów PortQry firmy Microsoft w wersji 2.0

Używam go często do testowania portów SQL Server

open port = LISTENING lub NOT LISTENING firewall = FILTERED

jerryhung
źródło