1

Я пытаюсь запустить nmap чтобы увидеть, какие порты открыт на моем компьютере, в рамках следования этому руководству по настройке Docker. я использую

sudo nmap -sU -sS -T4 --defeat-rst-ratelimit -p 1-65535 localhost

Это займет вечность. Я опустил его до 500 портов, и это занимает около 45 секунд. В руководстве я вижу, что сканирование всех 65000 портов должно занять всего ~ 3 секунды. Я понятия не имею, что происходит.

Система представляет собой свежий Centos 7.4.1708 (установлен прошлой ночью). Во всяком случае, это не большой ноутбук (около 2010 года), но не имеет смысла, что он будет на много порядков медленнее. Я за потребительским маршрутизатором, но я не думаю, что это должно иметь значение, так как я делаю сканирование локального хоста.

Любая помощь / совет с благодарностью. Я пробовал команды, предложенные в этом вопросе

nmap -d -n -Pn -p 4730 localhost

nmap -d -n -sn localhost

nmap -d -sL localhost

и получили очень быстрые ответы: первый - 0.07 с, остальные - 0.01 с. Сканирование одного порта довольно быстрое, но оно очень медленное для большого количества портов. Кроме того, удаление --defeat-rst-ratelimit и -T4 не изменило скорость заметно.

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

1 ответ1

6

Nmap не лучший инструмент для этого. Я люблю Nmap, и моя постоянная работа заключается в том, чтобы работать над этим и продвигать его, но это один из случаев, когда это не лучший инструмент для работы. Ядро Linux хранит исчерпывающие записи о том, какие порты открыты и какие процессы имеют их открытыми, и обычные инструменты командной строки могут запросить это. Команда, которая будет наиболее полезной для вас, - это netstat -tulnp , в которой перечислены все номера портов прослушивания (-l) TCP (-t) и UDP (-u) (-n) и их идентификаторы процессов (-p) , Некоторые системы не поддерживают команду netstat, поэтому вместо нее можно использовать ss : ss -tunpo state listening

Что касается того, почему Nmap занимает так много времени, наиболее вероятной причиной является сканирование UDP (-sU). Nmap хочет определить, какие порты открыты, а какие закрыты, но UDP не требует ответного пакета от открытых портов. Вместо этого он отправляет сообщение ICMP Port Unreachable в ответ на зонды на закрытые порты. Linux ограничивает скорость этих сообщений ICMP, поэтому Nmap должен замедлить процесс, чтобы отличить тишину «открытый порт, нет ответа» от «закрытого порта, но пока не время отправлять сообщение ICMP».

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