20

Почему Nmap выдает сообщение «Хост, кажется, не работает», когда простой пинг успешен?

me@computer:~$ ping 123.45.67.89
PING 123.45.67.89 (123.45.67.89) 56(84) bytes of data.
64 bytes from 123.45.67.89: icmp_req=1 ttl=45 time=91.1 ms
64 bytes from 123.45.67.89: icmp_req=2 ttl=45 time=102 ms
64 bytes from 123.45.67.89: icmp_req=3 ttl=45 time=100 ms
^C
--- 123.45.67.894 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 91.136/98.182/102.417/5.022 ms

me@computer:~$ nmap 123.45.67.89

Starting Nmap 5.21 ( http://nmap.org ) at 2014-04-02 14:23 EDT
Note: Host seems down. If it is really up, but blocking our ping probes, try -PN
Nmap done: 1 IP address (0 hosts up) scanned in 3.04 seconds

Отличаются ли "пинговые зонды" Nmap от командного пинга?

3 ответа3

27

Nmap отправляет много разных проб, чтобы определить, работает ли хост. В вашем конкретном случае, поскольку вы запускаете Nmap без полномочий root, он не может отправлять эхо-запросы ICMP, как это использует утилита ping . В этом случае он пытается подключиться к порту 80 и порту 443, сообщая хосту о том, что он работает, если соединение открыто или отклонено. У вашей цели должен быть межсетевой экран, который сбрасывает весь трафик на эти порты.

Чтобы Nmap мог найти систему, попробуйте запустить ее с правами root. Команда sudo часто используется для этой цели, например, sudo nmap 123.45.67.89

ping может отправлять ICMP-пакеты, потому что он установлен setuid для пользователя root, что означает, что любой пользователь может запустить его, но он будет работать как пользователь root, когда он это сделает. Программы Setuid должны быть очень осторожны, чтобы не дать обычным пользователям получить оболочку через это дополнительное разрешение. В частности, Nmap не может предотвратить повышение привилегий, поэтому его нельзя устанавливать setuid.

2

Да, они отличаются по умолчанию, ping - это ICMP, и nmap ping отправляет пакет syn на порт 80, если я правильно помню, попробуйте использовать флаги -PE, -PM, -PP, чтобы заставить его выполнять ICMP-пинг

0

без привилегий вы можете сканировать порт с помощью netcat:

nc -z -w5 hostname 22; echo $?

ответ 1, если не удалось, в противном случае ответ:

Соединение с портом hostname 22 [tcp/ssh] успешно завершено!

0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .