Как я могу определить, подключен ли компьютер к сети без использования ping?


12

Раньше я использовал приложение, которое могло пропинговать или, возможно, запускать сканирование портов на машине, даже если машина была настроена так, чтобы не разрешать это.

В настоящее время я пытаюсь пропинговать удаленную машину в нашей глобальной сети, но я настроил машину так, чтобы она не разрешала пинг. Есть ли что-то похожее на ping, которое я могу использовать?

Опять же, это машина, расположенная в другом городе, который является частью нашего Вана.

Ответы:


4

Если вы используете XP / 2003 + (включая Vista / 2008/7 ), вы можете использовать Win32_PingStatus . Машины, на которых выполняется код скрипта, являются единственной системой, которая должна быть XP / 2003 +, и она работает так же, как и Ping.exe, только она не использует ping.exe, поэтому она должна служить лазейкой для вашей настройки безопасности, которая не разрешает выполнение 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

См. Статью Scripting Guy для получения дополнительной информации о том, как использовать Win32_PingStatus:

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


2
Насколько я понимаю, удаленный хост настроен так, чтобы он не отвечал на пакеты ICMP Echo Request, а не что ping.exe на локальном хосте был отключен. Таким образом, это не будет ничего отличаться от запуска ping.exe, то есть ничего.
Дэвид Пашли

15

Вы можете telnet к открытому порту TCP на машине. Например, если машина является веб-сервером и имеет открытый порт 80, просто:

telnet ip.ad.dre.ss 80

Это будет работать даже на зашифрованных портах (хотя вы не сможете понять данные)

Некоторые другие порты, чтобы попробовать это:

  • 443 для https сервера
  • 22 для SSH

(есть список портов / сервисов в / etc / services на машинах linux)


6

Ping - это ICMP, если вы заблокировали ICMP, вы не можете пропинговать.

Вы все еще можете проверить порты TCP или UDP, если принимаете соединения TCP / UDP.

Если вы запускаете тест на контейнерах, в которых отсутствуют ping, nc, telnet и другие инструменты, вы можете использовать этот трюк:

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

Это попытается соединиться через tcp / udp через устройство (вау, я знаю) и вывести «open», если порт открыт, или «closed», если он закрыт.

Он будет зависать некоторое время, прежде чем повторить «закрыть», когда это так.


2
Круто, я должен был использовать это в
Amorphous

4

Запустите агент SNMP на удаленном компьютере и используйте диспетчер для считывания одного из значений из стандартного MIB.


3

Если у вас нет брандмауэров и маршрутизаторов на пути, т. Е. Если вы находитесь в том же сегменте, что и хост, который вы пытаетесь проверить, - большинство решений, приведенных выше, немного исчерпывающие.

Неважно, к какому порту вы подключаетесь, и на самом деле, если вы подключаетесь к порту, на котором вряд ли будет запущена служба, вы можете выполнить работу без обнаружения.

Как?

Вы можете использовать любой инструмент, который вам нравится, но мы можем просто использовать 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
%

Это должно произойти немедленно, если только хост не отбрасывает пакеты. На самом деле происходит то, что стек TCP / IP на хосте отправляет вам обратно сегмент TCP с установленным битом RST, то есть завершает ваш пакет SYN.

Тот факт, что вы получили пакет RST, означает, что на другом конце действительно есть хост, и в качестве бонуса вы сделали это незамеченным (у TCP / IP не было приложения верхнего уровня, с которым можно было бы поговорить об этом соединении) ,

Однако вместо telnet я бы, вероятно, использовал что-то вроде scapy, напишу что-нибудь, что ищет флаг RST, и дам вам знать.

Просто для завершения этого, если на IP-адресе, который вы пробуете, нет хоста - он будет зависать некоторое время, и время ожидания - то же самое, что произошло бы , если бы принимающий хост имел брандмауэр с фильтром сбрасывания.

Если брандмауэры задействованы, то, как другие предложили, использовать такие инструменты, как nmapи все остальное.


3

Если у вас есть доступ к другой машине в той же локальной сети, что и ваша целевая машина, вы можете использовать arping .

Арпинг работает, отправляя пакеты ARP, нацеленные на компьютер, это прекрасно работает, потому что вы не можете блокировать пакеты arp, если хотите использовать сеть (ну, вы можете настроить статические таблицы arp везде: D) Но недостатком является то, что вы должны быть в пределах та же локальная сеть, что и у цели arping.


1

Есть ли какие-либо услуги, доступные на машине? Один из способов проверить, есть ли машина, - это использовать клиент telnet для подключения к ней, но изменив порт, на который вам нужно попасть.

Допустим, на компьютере работает MS SQL, который по умолчанию работает через порт 1433. Вы используете следующую команду

telnet machine-name-address 1433

Если Telnet подключается к компьютеру и работает, это не значит, что он работает правильно, но, тем не менее, прослушивает этот порт



1

nmap -T5 -sS -P0 ho.st.ip.addr Это покажет, какой порт доступен на этой машине. Рекомендую установить cygwin, если вы работаете в Windows или у вас нет доступа к машине Linux.


1

softperfect сетевой сканер.

Гугл за это.

Я использую это много. Прекрасно работает


1

Google для "Nmap". Я использую это все время. Отлично подходит для проверки того, что ваши брандмауэры работают как положено. Кроме того, я считаю, что на него ссылаются в фильме «Матрица», что делает его вдвойне удивительным.


1

Вы можете заставить аппарат отправлять ловушку snmp (пакет) один раз в минуту на удаленный монитор и настроить правило для отслеживания того, что вы получаете ловушку каждую минуту.


1
Это действительно хороший и очень правильный ответ. SNMP достаточно низкий уровень и может быть настроен в системах Windows. Это единственная альтернатива ICMP, фактически используемая сетевыми инженерами для мониторинга маршрутизаторов и систем через WAN и LAN
Abhishek Dujari

1

Простым решением этой проблемы будет использование утилиты netcat. Единственным предварительным условием для этого сценария является то, что необходимо знать хотя бы один порт, открытый на этой удаленной машине.

nc -nv ip_address номер_порта

Приведенная выше команда выдаст результат, который определит, открыт ли указанный порт или нет, и, следовательно, доступность компьютера.


0

Вы можете установить простой веб-сервер и использовать веб-страницу с надписью «ONLINE». Вы должны подключаться к нему только там, где вы хотите. Конечно, вам нужен статиновый IP или сервисы linke dyndns


0

Очень простой подход заключается в том, чтобы подключиться к порту TCP, который должен быть открыт на сервере, а именно:

telnet theServerHostname 80

Хотя, если служба не работает, вы получите тот же результат, как если бы хост не работал.

С помощью nmap можно выполнять всевозможные сканирования, узнайте о них на сайте nmap, и вы должны стать экспертом по проверке работоспособности хоста. Это включает использование протоколов, отличных от icmp (ping), таких как TCP (как это делает telnet) и UDP.

Кроме того, если вы хотите что-то, что включает в себя возможность подключения к udp, что похоже на telnet в этом смысле, рассмотрите netcat .


0

Сканер портов PortQry, принадлежащий Microsoft, версия 2.0

Я использую его для частого тестирования портов SQL Server

открытый порт = СЛУШАЕТ или НЕ СЛУШАЕТ брандмауэр = ФИЛЬТРИРОВАНО

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.