Nmap не лучший инструмент для этого. Я люблю Nmap, и моя постоянная работа заключается в том, чтобы работать над этим и продвигать его, но это один из случаев, когда это не лучший инструмент для работы. Ядро Linux хранит исчерпывающие записи о том, какие порты открыты и какие процессы имеют их открытыми, и обычные инструменты командной строки могут запросить это. Команда, которая будет наиболее полезной для вас, - netstat -tulnp
это список всех номеров портов Listen ( -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».