Bir ağda kullanılan tüm IP adresleri nasıl bulunur


94

İşimde çok fazla bilgisayar var ve şaka yapmak istiyorum. Bilgisayarı ağ üzerinden kapatabilirim ancak IP adreslerini bulmak benim için zor.

Tüm çevrimiçi IP adreslerini 192.168.1.aa'dan 192.168.1.zz'ye nasıl kolayca bulabilirim?


4
deneyinangry ip scanner
Web-E


2
ciddi anlamda? iş arkadaşlarınızı şaka için bizim yardım ister misiniz?
Dan H

Yanıtlar:


141

Genellikle nmapağları hızlıca taramak için oldukça kullanışlıdır.

Nmap'ı kurmak için, terminale aşağıdaki komutu girin:

sudo apt-get install nmap

Uygulama yüklendikten sonra, aşağıdaki komutu girin:

nmap -sn 192.168.1.0/24

Bu, 192.168.1.0 ve 192.168.1.255 arasında hangi ana bilgisayarların ağdaki ping isteklerine yanıt verdiğini gösterir.


Nmap'ın daha eski sürümleri için -sPşunları kullanın :

nmap -sP 192.168.1.0/24

Ek referanslar için aşağıdaki sayfalara bakınız:

NMAP Kurulum Kılavuzu

NMAP Referans Kılavuzu

Öğrenmek için çok yararlı bir araçtır.


2
Tüm ana bilgisayarlar ping'e yanıt vermiyor. ARP, en azından IPv4'te gitmek için bir yoldur.
Marcin Kaminski

3
Bu benim için yeterli ve internet üzerinde çalışıyor

1
sadece bilgisayarım mı yoksa bu komutun çalışması sonsuza kadar sürüyor mu?
JohnMerlino

4
Nmap taramasını hızlandırmak için -T4 (hız) ve -n (yalnızca sayısal) bayraklar eklemelisiniz.
Sergiy Kolodyazhnyy

3
Eğer gerektiğini unutmayın sudo aksi sıfır sonuç döndürülür, nmap komut için.
machineaddict,

40

Ağınızdaki tüm bilgisayarlar Ubuntu veya avahi-daemon( DNS-SD ) kullanan diğer herhangi bir dağıtımsa, aşağıdakileri yaparak ayrıntılı bir listesini (ana bilgisayar adı ve IP adresiyle) alabilirsiniz:

avahi-browse -rt _workstation._tcp

Ağınızda kullanılan tüm IP adreslerini bilmek istiyorsanız, şunları kullanabilirsiniz arp-scan:

sudo arp-scan 192.168.1.0/24

Varsayılan olarak yüklenmediğinden, onu yüklemeniz gerekir sudo apt-get install arp-scan. arp-scanARP paketlerini yerel ağa gönder ve alınan yanıtları görüntüler, böylece güvenlik duvarı olan ana bilgisayarları bile gösterir (IP paketlerini temel alan trafiği engeller).


3
Bu komut kesinlikle yukarıdaki komuttan daha iyidir. Çalışan nmap yaş aldı, ancak bu belirtilen ağdaki düğümlerle anında cevap verdi.
JohnMerlino

3
Benim durumumda, çoğu zaman, arp-scankablosuz ağımla ilişkili tüm cihazları bulamıyor. Şimdi, örneğin, sudo arp-scan 192.168.2.0/242 sonuç gösterir (.1 ve .1); nmap -sn 192.168.2.0/244 sonuç gösterir (.1, .2, .3 ve .4). Yani, bu nmapdaha doğru görünüyor (ağa bağlı 4 cihaz olduğundan eminim). Bu neden?
tigerjack89

2
Belki de cevabı başka bir soruya yapılan yorumda buldum. “Açılmadıkça bazı aygıtların görünmeyebileceği belirtilmelidir. Ekran açık olmadıkça nexus 4'üm görünmez.” Ancak, aynı cihazların her zaman ping'lere yanıt vermesi ilginçtir nmap.
tigerjack89

arp-scanGüzel !
forzagreen

17

Okuyucuya not : Orijinal cevap bir süre önce ve sadece kabuk yazmayı öğrendiğim sırada gönderildi. Çok daha hızlı performans gösteren yeni ve geliştirilmiş bir komut dosyası için aşağıdaki gözden geçirilmiş sürüme bakın.

Orijinal cevap

nmapbenim # 1 seçimim olurdu, ama ya sen yoksa? DIY yolu, ağdaki olası her ip adresinden manuel olarak geçen bir ping komut dosyasıyla olacaktır. Burada sahip olduğumuz şey sadece döngüde, adrese son numarayı koyduğumuz, adrese sessiz tek ping attığımız, komutun başarılı olup olmadığını (ve başarılı olduysa ev sahibi açıktır) ve printfdeyimi kontrol etmektir . Hızlı ve kirli bir şekilde, bana yazmak için yaklaşık 10 dakika sürdü, ancak çalışma zamanı biraz yavaş olabilir.

#!/bin/sh
# set -x
NUM=1

while [ $NUM -lt 256  ];do 
    ping -q -c 1 192.168.0.$NUM > /dev/null 
    RESULT=$(echo $?)
    if [ $RESULT -eq 0 ]; then 
        printf 192.168.0.$NUM"\n"
    fi
    NUM=$(expr $NUM + 1)
done

Tekrar Cevaplandı

Bu cevabı ilk olarak Ağustos 2015'te yayınladım. O zamandan beri kabuk komut dosyası yazma hakkında biraz daha fazla şey öğrendim ve bir kez bu senaryoyu gördüm, birkaç iyileştirme eklemek için bu cevabı tekrar gözden geçirmenin iyi bir fikir olacağını düşündüm. İşte birkaç fikir:

  • Komut dosyası açıkça yavaştır ve pingana bilgisayardan yanıt bekler. Varsayılan olarak, pingağ ve bildiğim kadarıyla anladığım kadarıyla TCP protokolü bekleme süresi her defasında iki katına nasıl sıkışık bağlı olarak değişir iki RTT için (en azından göre bu ). Bu yüzden bayrakla pingzaman aşımına uğramaya zorlayabilirdik -w 1. 256 adresimiz olduğundan ve her adres için 1 saniye olduğunu düşündüğümüzden, komut dosyası yaklaşık 256/60 = 4,27 dakika sürer.

  • Bir komut yapmak ve ardından çıkış durumunu yakalamak $?gerçekten gerekli değildi. if ... then;...fiDoğrudan komutlar üzerinde çalışabilir. Başka bir deyişle, bunu yapmak yeterlidir:

    if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
    then
         <some other code here>
    fi
    
  • printfKomut böylece tekrar yazılabilir:

    printf "IP %s is up\n" 192.168.0."$NUM"
    

    Bu daha çok stilistik bir değişimdir, ancak printfalıntı "$NUM"değişkeniyle birçok başka dilde nasıl çalıştığı ve göründüğü ile tutarlıdır . Burada alıntı yapmak gerekli değildir - yalnızca sayılarla uğraştığımızdan, değişkende boşluklar olduğu için sözcük bölmeyi beklememiz gerekmez.

  • Birkaç arka plan süreci ortaya çıkarırsak çok daha iyi performans artışı sağlanabilir. Aşağıdaki kod düzenleme tam olarak bunu yapar. Ben koymak pingve printfbir fonksiyonu haline, pingf(evet, bayat adı, biliyorum). Şimdi, maindöngü ve çağrı yapan tek bir fonksiyon var pingf.

#!/bin/sh
# Uncomment for debugging
#set -x
pingf(){
    if ping -w 2 -q -c 1 192.168.0."$1" > /dev/null ;
    then 
        printf "IP %s is up\n" 192.168.0."$1"
    fi
}

main(){

    NUM=1
    while [ $NUM -lt 255  ];do 
        pingf "$NUM" &
        NUM=$(expr "$NUM" + 1)
    done
    wait
}

main

Bu ne kadar iyi çalışıyor? Fena değil, aslında, birkaç saniye sürer.

$ time ./ping_script.sh                                                                      
IP 192.168.0.1 is up
IP 192.168.0.101 is up
IP 192.168.0.27 is up
IP 192.168.0.29 is up
    0m02.50s real     0m00.01s user     0m00.12s system

Akılda Tutulması Gerekenler

  • Windows (Windows 7'den başlayarak sanırım) ICMP yankı isteklerine yanıt vermeyi engellemeye başladılar. Bunun üzerine sorun Ubuntu ve diğer tür sitelerde Ask "Linux bilgisayarım canlandırabilir ama Windows'lar değil, bunun nesi var?" Yalnızca daha yeni Windows sürümleri için ICMP yankılarına yanıt vermeniz gerektiğini unutmayın.

2
Bu tür bir çözüm
hoşuma gidiyor


4

fpingICMP üzerinden bir ağ üzerinde birden fazla ana bilgisayarı taramak için harika bir araçtır. Takılı değilse, aşağıdakileri kurabilirsiniz:

sudo apt-get install fping

fping ICMP ECHO_REQUEST paketleri gönderir ve ana makineden ECHO_RESPONSE alırsa bir ana bilgisayarı Yukarı olarak işaretler.

Örneğin, alt ağın ana bilgisayarlarını taramak için 192.168.1.0/24şunları yapabilirsiniz:

fping -g 192.168.1.0/24

Belirli bir ana bilgisayar sayısı için gelen örneğin 192.168.1.15için 192.168.1.140:

fping -g 192.168.1.15 192.168.1.140

fping son derece yapılandırılabilir; örneğin kaç paket gönderileceği, yanıt beklenecek süre, çıktı formatı vb.

man fpingDaha fazla fikir edinmek için kontrol edin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.