Як я можу визначити, чи машина в мережі, не використовуючи ping?


12

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

Наразі я намагаюся пінг на віддаленій машині на нашій WAN, але я налаштував машину, щоб не дозволяти ping. Чи є щось подібне до ping, яке я можу використовувати?

Знову ж таки, це машина, розташована в іншому місті, яке є частиною нашого WAN.

Відповіді:


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

Дивіться статтю Хлопчик сценаріїв для отримання додаткової інформації про те, як використовувати Win32_PingStatus:

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


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

15

Ви можете телефонувати на відкритий порт TCP на пристрої. Наприклад, якщо машина є веб-сервером і відкритий порт 80, просто:

telnet ip.ad.dre.ss 80

Це працюватиме навіть на зашифрованих портах (хоча ви не зможете зрозуміти дані)

Деякі інші порти, які слід спробувати:

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

(є список портів / служб у / etc / services на машинах Linux)


7

Ping - це ICMP, якщо ви заблокували ICMP, ви не можете пінг.

Ви все ще зможете протестувати порти TCP або UDP, якщо приймаєте TCP / UDP-з'єднання.

Якщо ви проводите тест на контейнерах, у яких відсутні пінг, nc, telnet та інші інструменти, ви можете скористатися цим фокусом:

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

Це спробує підключитися через tcp / udp через пристрій (вау, я знаю), і відлуння "відкрити", якщо порт відкритий або "закритий", якщо він закритий.

Він буде звисати деякий час, перш ніж лунати "закрити", коли це так.


2
Класно, мені довелося скористатися цим у docker pod ;-)
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 не мала додатків верхнього рівня, щоб поговорити про це з'єднання) .

Замість телнету, однак, я, мабуть, використовую щось на зразок скапі, написати щось, що шукає прапор RST, і дамо вам знати.

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

Якщо брандмауери задіяні, то, як пропонують інші, використовуйте такі інструменти, як nmapі будь-що інше.


3

Якщо у вас є доступ до іншої машини в тій же локальній мережі, що і ваша цільова машина, ви можете використовувати arping .

Arping працює, надсилаючи ARP-пакети, орієнтовані на машину, це прекрасно працює, оскільки ви не можете блокувати пакети arp, якщо хочете користуватися мережею (ну, ви можете налаштувати статичні таблиці arp скрізь: D) Але недоліком є ​​те, що ви повинні знаходитись у межах та ж локальна мережа, що і ваша цільова стрілка.


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 мережний сканер.

Google для нього.

Я використовую це багато. Чудово працює


1

Google для "nmap". Я цим постійно користуюся. Чудово підходить для перевірки того, що ваші брандмауери функціонують так, як очікувалося. Плюс я вважаю, що на нього посилалось у фільмі Matrix, що робить його вдвічі приголомшливим.


1

Ви могли б змусити машину надсилати пастку snmp (пакет) раз на хвилину на віддалений монітор і встановлювати правило для моніторингу того, що ви отримували пастку щохвилини.


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

1

Простим рішенням цього питання буде використання утиліти netcat. Єдиною умовою цього сценарію є те, що слід знати, щонайменше, один порт, відкритий на цій віддаленій машині.

nc -nv ip_address port_number

Наведена вище команда дасть результат, який би визначив, чи є згаданий порт відкритим чи ні, а отже, і доступність машини


0

Ви можете встановити простий веб-сервер і використовувати веб-сторінку з надписом "ONLINE". Вам потрібно підключитися до нього лише там, де ви хочете. Звичайно, вам потрібен statin ip або служби linke dyndns


0

Дуже простий підхід - це телнет до порту TCP, який повинен бути відкритим на сервері, тобто:

telnet theServerHostname 80

Хоча якщо служба знижена, ви отримаєте такий самий результат, як і хостинг.

Існують всілякі сканування, які можна зробити за допомогою nmap, дізнайтеся про них на сайті nmap, і ви повинні стати експертом, як перевірити, чи хост працює. Вони включають використання протоколів, крім icmp (ping), таких як TCP (як телнет) і UDP.

Крім того, якщо ви хочете щось, що включає можливість підключення до udp, що є подібним до telnet в цьому сенсі, врахуйте netcat .


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.