Nmap: znajdź darmowe adresy IP z zakresu


14

Czy istnieje sposób skanowania w poszukiwaniu wolnych adresów IP w sieci? Używam, nmap -sP 192.168.1.0/24ale tak naprawdę pokazuje, które hosty działają.


10
nie odpowiada na ping, niekoniecznie oznacza nieużywany.
Grant

1
Chcesz skanera IPAM, a nie nmap.
TheCleaner

2
@Grant Skanowanie wykrywania hosta Nmapa (czasami nazywane „skanem ping”) wysyła wiele różnych sond, nie tylko żądania echa ICMP. W przypadku adresów na tym samym łączu danych wykorzystuje żądania ARP, których w zasadzie nie można zignorować.
bonsaiviking

1
Należy również pamiętać, że hosty, które nie są włączone, również będą wyświetlane jako nieposiadające adresu IP.
Tero Kilkanen

Odpowiedzi:


26

Używanie Nmap w ten sposób jest dość dokładnym sposobem wykonywania tego, o co prosiłeś, pod warunkiem, że spełnione są pewne warunki wstępne:

  1. Musisz uruchomić skanowanie jako root (lub administrator w systemie Windows), aby wysyłać żądania ARP, a nie połączenia TCP. W przeciwnym razie skanowanie może zgłosić adres jako „wyłączony”, gdy jest po prostu zaporą ogniową.
  2. Możesz to zrobić tylko z systemu na tym samym łączu danych (warstwa 2) co skanowany zakres adresów. W przeciwnym razie Nmap będzie musiał użyć sond warstwy sieci, które mogą być blokowane przez zaporę ogniową.

Aby uzyskać „dostępne” adresy, musisz uzyskać listę adresów, które Nmap zgłasza jako „wyłączone”. Możesz to zrobić za pomocą prostej komendy awk:

sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

Podsumowanie zastosowanych opcji Nmap:

  • Gdy skorzystasz z tej -vopcji, Nmap wydrukuje adresy, które znajdzie jako „w dół”, oprócz tych, które są „w górę”.
  • Zamiast tego -sPzastąpiłem nowszą pisownię -sn, która nadal wykonuje ten sam skan, ale oznacza „pomiń skanowanie portu” zamiast mylącego „skanowania ping” (ponieważ faza wykrywania hosta niekoniecznie oznacza skanowanie echa ICMP lub ping ).
  • Ta -nopcja pomija odwrotne wyszukiwanie DNS, co kosztuje trochę czasu, ponieważ nie interesują Cię nazwy, a jedynie adresy IP.
  • Ta -oGopcja mówi Nmapowi , aby wyświetlił format grep , który jest łatwiejszy do przetworzenia przez awk. Argument „ -” mówi mu, aby wysłał to wyjście na standardowe wyjście.

Polecenie awk wyszukuje następnie „Status: Down” i drukuje drugie pole zawierające adres IP.

Oczywiście, jeśli masz dostęp do uruchomionych konfiguracji przełącznika lub dzierżawy serwera DHCP, możesz uzyskać tę odpowiedź o wiele bardziej autorytatywnie bez skanowania, który może wywołać alarmy bezpieczeństwa.


1
Całkowicie dodaj to do zakładek do przyszłego użytku i to nawet nie moje pytanie :)
MartinC

1

Nie jestem pewien co do n-map, ale można rozsądnie założyć, że jeśli napiszesz skrypt ping, który wysyła 1 ping na każdy adres, wszystkie hosty, które powrócą z „nieosiągalnym miejscem docelowym”, nie będą zajęte, a wszystko, co wróci, „przekroczy limit czasu żądania” jest zajęty, ale nie odpowiada na ping. Różnica między tymi dwiema odpowiedziami polega na tym, że „docelowy nieosiągalny” nie otrzymał odpowiedzi na swoje żądanie ARP. „Limit czasu żądania” oznacza, że ​​coś zareagowało na żądanie ARP, ale nie pakiet ICMP.


Po uruchomieniu z uprawnieniami roota Nmap po prostu wykonuje żądanie ARP i podaje adresy, które odpowiadają.
bonsaiviking

0

To samo w PowerShell ....

((nmap -v -sn -n 10.208.2.0/24 -oG - ) -match "Status\:\sDown") | foreach {($_).Split(" ")[1]}

0

Oto kolejny inspirowany przez Andersa Larssona

dla ip w 172.18.5. {129..254}; do {ping -c 1 -W 1 $ ip; } &> / dev / null || echo $ ip i gotowe | sortować

Co to znaczy: „Spróbuj pingować wszystkie Ips w zakresie. Jeśli„ ping ”nie wydrukuje tego adresu IP”

Jeśli zrobisz

nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

Działa szybko, ale zauważyłem, że niektóre hosty zgłoszone jako „Down” są w rzeczywistości „Up”

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.