วิธีค้นหาที่อยู่ IP ที่ใช้ทั้งหมดบนเครือข่าย


94

ในงานของฉันมีคอมพิวเตอร์จำนวนมากและฉันต้องการสร้างเรื่องตลก ฉันสามารถปิดคอมพิวเตอร์ผ่านเครือข่าย แต่การค้นหาที่อยู่ IP นั้นยากสำหรับฉัน

ฉันจะหาที่อยู่ IP ออนไลน์ทั้งหมดได้อย่างง่ายดายจาก 192.168.1.aa ถึง 192.168.1.zz ได้อย่างไร


4
ลองangry ip scanner
Web-E


2
อย่างจริงจัง? คุณต้องการความช่วยเหลือของเราในการเล่นตลกเพื่อนร่วมงานของคุณ?
Dan H

คำตอบ:


141

โดยทั่วไปแล้วnmapค่อนข้างมีประโยชน์ในการสแกนเครือข่ายอย่างรวดเร็ว

ในการติดตั้ง nmap ให้ป้อนคำสั่งต่อไปนี้ในเทอร์มินัล:

sudo apt-get install nmap

เมื่อติดตั้งแอปพลิเคชันแล้วให้ป้อนคำสั่งต่อไปนี้:

nmap -sn 192.168.1.0/24

สิ่งนี้จะแสดงให้คุณเห็นว่าโฮสต์ใดตอบคำขอ ping บนเครือข่ายระหว่าง 192.168.1.0 ถึง 192.168.1.255


สำหรับ Nmap เวอร์ชันเก่าให้ใช้-sP:

nmap -sP 192.168.1.0/24

สำหรับการอ้างอิงเพิ่มเติมดูหน้าต่อไปนี้:

คู่มือการติดตั้ง NMAP

คู่มืออ้างอิง NMAP

มันเป็นเครื่องมือที่มีประโยชน์มากในการเรียนรู้


2
โฮสต์ทั้งหมดไม่ตอบสนองต่อการปิง ARP เป็นวิธีที่จะไปอย่างน้อยใน IPv4
Marcin Kaminski

3
นั่นเพียงพอสำหรับฉันและใช้งานได้บนอินเทอร์เน็ต

1
มันเป็นแค่คอมพิวเตอร์ของฉันหรือคำสั่งนี้ใช้ตลอดไปหรือไม่
JohnMerlino

4
หมายเหตุเพื่อเพิ่มความเร็วในการสแกน nmap คุณควรเพิ่มแฟล็ก -T4 (ความเร็ว) และ -n (ตัวเลขเท่านั้น)
Sergiy Kolodyazhnyy

3
จำไว้ว่าคุณต้องใช้sudoสำหรับคำสั่ง nmap มิฉะนั้นจะส่งคืนผลลัพธ์เป็นศูนย์
machineaddict

40

หากคอมพิวเตอร์ทุกเครื่องในเครือข่ายของคุณเป็น Ubuntu หรือการแจกจ่ายอื่น ๆ ที่ใช้งานavahi-daemon( DNS-SD ) คุณสามารถรับรายการโดยละเอียด (ด้วยชื่อโฮสต์และที่อยู่ IP) โดยทำดังนี้

avahi-browse -rt _workstation._tcp

หากคุณต้องการทราบที่อยู่ IP ทั้งหมดที่ใช้ในเครือข่ายของคุณคุณสามารถใช้arp-scan:

sudo arp-scan 192.168.1.0/24

sudo apt-get install arp-scanในขณะที่มันไม่ได้ติดตั้งโดยค่าเริ่มต้นคุณจะต้องติดตั้งด้วย arp-scanส่งแพ็คเก็ต ARP ไปยังเครือข่ายท้องถิ่นและแสดงการตอบสนองที่ได้รับดังนั้นมันจึงแสดงให้เห็นแม้กระทั่งโฮสต์ไฟร์วอลล์


3
คำสั่งนี้ดีกว่าคำสั่งข้างต้นอย่างแน่นอน การเรียกใช้ nmap ใช้เวลานาน แต่อันนี้ตอบกลับทันทีพร้อมกับโหนดในเครือข่ายที่ระบุ
JohnMerlino

3
ในกรณีของฉันบ่อยครั้งมากarp-scanไม่พบอุปกรณ์ทั้งหมดที่เชื่อมโยงกับเครือข่ายไร้สายของฉัน ตัวอย่างเช่นตอนนี้sudo arp-scan 192.168.2.0/24แสดง 2 ผลลัพธ์ (.1 และ. 1) ในขณะที่ nmap -sn 192.168.2.0/24แสดงผลลัพธ์ 4 รายการ (.1, .2, .3 และ. 4) ดังนั้นดูเหมือนว่าnmapจะแม่นยำมากขึ้น (ฉันรู้แน่นอนว่ามีอุปกรณ์ 4 ชิ้นเชื่อมต่อกับเครือข่าย) ทำไมนี้
tigerjack89

2
บางทีฉันอาจพบคำตอบในความคิดเห็นของคำถามอื่น "ควรสังเกตว่าอุปกรณ์บางอย่างอาจไม่ปรากฏขึ้นหากไม่ได้เปิดใช้งาน Nexus 4 ของฉันจะไม่ปรากฏเว้นแต่ว่าหน้าจอเปิดอยู่" แต่ก็น่าสนใจว่าอุปกรณ์เดียวกันเสมอตอบสนองต่อการส่ง Ping nmapจาก
tigerjack89

arp-scanเป็นสิ่งที่ดี!
forzagreen

17

หมายเหตุถึงผู้อ่าน : คำตอบดั้งเดิมได้รับการโพสต์เมื่อครู่ที่ผ่านมาและในช่วงเวลาที่ฉันเพิ่งเรียนรู้การเขียนสคริปต์เปลือก ดูเวอร์ชันที่ได้รับการเยี่ยมชมอีกครั้งด้านล่างเพื่อดูสคริปต์ใหม่และปรับปรุงที่ทำงานได้เร็วขึ้นมาก

คำตอบเดิม

nmapจะเป็นตัวเลือกอันดับ 1 ของฉัน แต่ถ้าคุณไม่มีมัน วิธี DIY จะมีสคริปต์ ping ที่ผ่านแต่ละที่อยู่ IP ที่เป็นไปได้บนเครือข่ายด้วยตนเอง สิ่งที่เรามีที่นี่คือในขณะที่วนรอบที่เราตั้งหมายเลขสุดท้ายในที่อยู่ทำการ ping เดียวเงียบไปยังที่อยู่ตรวจสอบว่าคำสั่งประสบความสำเร็จหรือไม่ (และถ้ามันประสบความสำเร็จแล้วโฮสต์จะเห็นได้ชัด) และprintfคำสั่ง วิธีที่รวดเร็วและสกปรกใช้เวลาประมาณ 10 นาทีในการเขียนแต่ทว่ารันไทม์อาจจะช้าไปหน่อย

#!/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

คำตอบกลับมาอีกครั้ง

ฉันโพสต์คำตอบนี้ในเดือนสิงหาคมปี 2015 ตั้งแต่นั้นมาฉันได้เรียนรู้เพิ่มเติมเกี่ยวกับการเขียนสคริปต์เชลล์และเมื่อฉันเห็นสคริปต์นี้ฉันคิดว่ามันเป็นความคิดที่ดีที่จะทบทวนคำตอบนี้เพื่อเพิ่มการปรับปรุงเล็กน้อย นี่คือความคิดบางอย่าง:

  • เห็นได้ชัดว่าสคริปต์ช้าและpingรอการตอบสนองจากโฮสต์ ตามค่าเริ่มต้นpingสำหรับสอง RTT ซึ่งอาจแตกต่างกันไปขึ้นอยู่กับความแออัดของเครือข่ายของคุณและเท่าที่ฉันเข้าใจโปรโตคอล TCP จะเพิ่มเวลารอเป็นสองเท่าในแต่ละครั้ง (อย่างน้อยก็ตามนี้ ) ดังนั้นเราสามารถบังคับpingให้หมดเวลาด้วยการ-w 1ตั้งค่าสถานะ เนื่องจากเรามีที่อยู่ 256 รายการและเราถือว่า 1 วินาทีสำหรับแต่ละที่อยู่สคริปต์จะใช้เวลาประมาณ 256/60 = 4.27 นาที

  • ทำคำสั่งแล้วจับสถานะทางออกด้วย$?ไม่จำเป็นจริงๆ if ... then;...fiสามารถดำเนินการเกี่ยวกับคำสั่งโดยตรง กล่าวอีกนัยหนึ่งก็เพียงพอแล้วที่จะทำสิ่งนี้:

    if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
    then
         <some other code here>
    fi
    
  • printfคำสั่งสามารถเขียนใหม่เป็นดังนี้

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

    นี่เป็นการเปลี่ยนแปลงโวหารมากกว่า แต่ก็สอดคล้องกับวิธีการprintfทำงานและมีลักษณะเหมือนในภาษาอื่น ๆ มากมายพร้อมกับ"$NUM"ตัวแปรข้อความ การอ้างถึงที่นี่ไม่จำเป็น - เนื่องจากเรากำลังทำการติดต่อกับตัวเลขเท่านั้นเราไม่จำเป็นต้องคาดการณ์ว่าจะแยกคำได้เนื่องจากมีช่องว่างในตัวแปร

  • การปรับปรุงประสิทธิภาพที่ดีขึ้นมากสามารถทำได้ถ้าเราวางไข่กระบวนการพื้นหลังหลาย ๆ การแก้ไขสคริปต์ด้านล่างทำสิ่งนั้นอย่างแน่นอน ฉันใส่pingและ printfลงในฟังก์ชั่นpingf(ใช่ชื่อซ้ำซากฉันรู้) ขณะนี้มียังเป็นหนึ่งเดียวฟังก์ชั่นที่ไม่วนลูปและเรียกmainpingf

#!/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

มันใช้งานได้ดีขนาดไหน? ไม่เลวจริง ๆ ใช้เวลาไม่กี่วินาที

$ 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

สิ่งที่ต้องจำไว้

  • Windows (เริ่มตั้งแต่ Windows 7 ฉันคิดว่า) ได้เริ่มบล็อกการตอบสนองต่อคำขอ ICMP echo มีคำถามสองสามข้อเกี่ยวกับคำถามนั้นบน Ask Ubuntu และไซต์อื่น ๆ ของการเรียงลำดับ "สวัสดีคอมพิวเตอร์ Linux ของฉันสามารถ pinged ได้ แต่ไม่ใช่ Windows ที่มีปัญหาอะไร" เพียงแค่ตระหนักถึงความจริงที่ว่าสำหรับ Windows รุ่นใหม่กว่าคุณจำเป็นต้องเปิดใช้งานการตอบสนองต่อ ICMP echo

2
ฉันชอบวิธีแก้ปัญหาแบบนี้
Szenis

15

Netdiscover สามารถเป็นคำตอบของคุณ

วิธีติดตั้งผ่านเทอร์มินัล:

sudo apt-get install netdiscover

ตัวอย่างการใช้งาน:

sudo netdiscover -r 192.168.1.0/24 -i wlan0

IP ที่มี MAC Addreses จะแสดงบนเครื่องของคุณ ดูภาพหน้าจอ

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่าจะช่วยคุณ

การอ้างอิง


ดูเหมือนว่ารถมากพยายามครั้งแรกและ *** buffer overflow detected ***: netdiscover terminated
Pablo A

เครื่องมือนี้ไม่พบสิ่งต่าง ๆ ในเครือข่ายของฉัน
แอนโธนี

4

fpingเป็นเครื่องมือที่ยอดเยี่ยมในการสแกนโฮสต์หลายแห่งบนเครือข่ายผ่าน ICMP หากไม่ได้ติดตั้งคุณสามารถติดตั้งได้โดย:

sudo apt-get install fping

fping ส่งแพ็กเก็ต ICMP ECHO_REQUEST และทำเครื่องหมายโฮสต์เป็น Up หากได้รับ ECHO_RESPONSE จากโฮสต์

ตัวอย่างเช่นหากต้องการสแกนโฮสต์ของเครือข่ายย่อย192.168.1.0/24คุณสามารถทำได้:

fping -g 192.168.1.0/24

สำหรับโฮสต์จำนวนหนึ่งเช่นจาก192.168.1.15ถึง192.168.1.140:

fping -g 192.168.1.15 192.168.1.140

fping สามารถกำหนดค่าได้สูงเช่นจำนวนแพ็คเก็ตที่จะส่งเวลาในการรอการตอบสนองรูปแบบเอาต์พุต ฯลฯ

ตรวจสอบman fpingเพื่อรับแนวคิดเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.