नेटवर्क पर अप्रयुक्त आईपी पता कैसे खोजें?


25

मैं सिर्फ एक नेटवर्क पर अप्रयुक्त आईपी पते का पता लगाना चाहता हूं। मुझे लगता है कि यह नैम्प के साथ संभव है। किसी भी तरह से मुझे pls कह सकते हैं?

ध्यान दें:

मुझे केवल निशुल्क आईपी सूची की आवश्यकता है।


क्या कोई अतिरिक्त आवश्यकताएं हैं?
सर्गेई

कोई और अतिरिक्त आवश्यकताएं नहीं। अब तक मुझे कई आईपी पते के संघर्ष का पता चला है, मैं सिर्फ एक नेटवर्क पर मुफ्त आईपी पते का पता लगाना चाहता हूं और इसे असाइन करना चाहता हूं।
karthick87

जवाबों:


26

एक तेज़ स्कैनर arp-scan है जो एक नेटवर्क पर अन्य मशीनों को "देखने" के लिए ARP का उपयोग करता है । यह मैक पते को भी लौटाता है और नेटवर्क एडेप्टर के निर्माता को निर्धारित करने की कोशिश करता है।

उदाहरण उपयोग (की जगह wlan0द्वारा eth0यदि आवश्यक हो):

$ sudo arp-scan -I wlan0 192.168.1.0/24
Interface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.10    00:90:f5:33:e2:f2       CLEVO CO.
192.168.1.254   00:14:7f:72:cd:05       Thomson Telecom Belgium

2 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.6: 256 hosts scanned in 1.406 seconds (182.08 hosts/sec).  2 responded

ध्यान दें कि यह उपयोगिता केवल उन मशीनों की रिपोर्ट करती है जो चालू हैं। pingअवरुद्ध किया जा सकता है, लेकिन arp-scanतब तक इसे अवरुद्ध नहीं किया जा सकता है जब किसी मशीन को नेटवर्क पर अन्य मशीनों के साथ बातचीत करने के लिए आवश्यक हो। यह सुनिश्चित करने के लिए कि एक आईपी अप्रयुक्त है, आप अपने राउटर (स्टेटिक / डायनेमिक एड्रेस के लिए) और डीएचसीपी सर्वर (डायनेमिक एड्रेस के लिए) को बेहतर तरीके से देखेंगे।


मैं इसे पसंद करना चाहता था, लेकिन जब मैंने इसका परीक्षण किया तो यह एक युगल होस्ट से चूक गया? :(
मूर्ख बुत

@bumblingfool: क्या आप सुनिश्चित हैं कि अन्य होस्ट एक ही सबनेट पर हैं? जैसे 192.168.1.x और 192.168.2.x नहीं?
लेकेन्स्टाइन

हां, सभी मेजबान एक ही सबनेट पर हैं। मैंने इसे एक दर्जन से अधिक बार चलाया और 2/3 बार सभी मेजबानों ने दिखाया। दिलचस्प है (?), यह हमेशा वही मेजबान होता है जो (यदि कोई हो) नहीं दिखाता है ... यह एक वाईफाई नेटवर्क पर है, लेकिन संकेत ठोस है। इसके अलावा, उपर्युक्त nmap विधि लगातार किसी भी मेजबान को याद नहीं करती है।
बेवकूफ

हम कितने मेजबानों की बात कर रहे हैं? 5 एमएस के लिए -i, पैरामीटर का उपयोग करके पैकेट भेजने के बीच देरी को बढ़ाने की कोशिश करें -i 5
लेकेनस्टाइन

2/5। देरी बढ़ने पर चाल चली। धन्यवाद!
बेवकूफ

15

sudo nmap -sP -PR 192.168.0.* (या जो भी आपका नेटवर्क है) ट्रिक करेगा।

इसे स्थापित करने के लिए उपयोग करें sudo apt-get install nmap

स्रोत: serverfault.com

बस इस का परीक्षण किया, अस्पष्ट मेजबानों सहित एक आकर्षण की तरह काम करता है, आपको -PRविकल्प का उपयोग करने में सक्षम होने के लिए सूडो को जोड़ने की आवश्यकता है ।


1
मैंने अभी-अभी इसका परीक्षण किया है कि आपको चलाने की आवश्यकता है जैसे रूट (अर्थात उपयोग करके sudo)। इसके अलावा, यह संभवतः फ़ायरवॉल द्वारा अवरुद्ध है क्योंकि यह होस्ट के बंदरगाहों को भी स्कैन करता है जो खोज को धीमा कर देता है।
लेकेन्स्टाइन 16

मूल पोस्ट plz पढ़ें, तीसरी टिप्पणी बताती है कि कैसे (अनावश्यक) पोर्ट स्कैन का उपयोग नहीं किया जा सकता?)
ब्रूनो परेरा

आपको अपने उत्तर में इसे शामिल करना चाहिए, फिर भी सभी लोग स्रोतों का पालन नहीं करना चाहते हैं। इसके अलावा यह बताना उपयोगी होगा कि कमांड वास्तव में क्या करता है।
लेकेनस्टाइन

किया;) वास्तव में अच्छा काम करता है।
ब्रूनो परेरा

हेपेंट परीक्षण (या कभी इस्तेमाल किया गया) arp-scan, suxion के लिए thx!
ब्रूनो परेरा

4

मुझे फ़ेसिंग उपयोगी लगती है; अन्य बातों के अलावा, यह उन पतों और सूची की एक श्रेणी देगा, जो 'जीवित' हैं और जो 'अप्राप्य' हैं। डिफ़ॉल्ट रूप से फ़ैपिंग इंस्टॉल नहीं की गई है।

sudo apt-get install fping

सरल दृष्टिकोण यह है कि इसे केवल कई पतों पर चलाया जाए।

fping -g 192.168.0.2 192.168.0.254 2>/dev/null

अप्रयुक्त आईपी की सूची बनाने के लिए थोड़ा और विस्तृत रूप से।

fping -g 192.168.0.2 192.168.0.254 2>/dev/null | grep 'is unreachable' | cut -d ' ' -f 1 | sort -t '.' -k 4 -n

1
यह मत भूलो कि यह मानता है कि मेजबान एक ICMP इको अनुरोध (उर्फ पिंग) का जवाब देते हैं। हर मेजबान ऐसा नहीं करता है, खासकर कुछ एमएस विंडोज मशीनें नहीं। इसके अलावा फ़ायरवॉल आमतौर पर इसे निष्क्रिय कर देते हैं, भले ही वे ऑनलाइन हों और आपके नेटवर्क में मैक एड्रेस हो। यह एक तेज़ समाधान है, लेकिन हर स्थिति में इस पर भरोसा नहीं किया जाना चाहिए।
ईडन

आप सही हे; एक समाधान जिसमें नैमप शामिल है, या पिंग का कोई विकल्प जो ICMP के अलावा अन्य प्रोटोकॉल का उपयोग कर सकता है, अधिक विश्वसनीय होगा।
bgvaughan

3

मेरा मानना ​​है कि यह सबसे अच्छा समाधान नहीं है लेकिन यह वही करता है जो आप चाहते हैं। यह स्क्रिप्ट नेटवर्क pingपर चलती 192.168.0.0/24है और ARP कैश में नहीं होने पर निष्क्रिय IP की सूची देता है।

पिछले समाधानों पर लाभ:

  • दोनों विधियों का उपयोग करता है: पिंग और एआरपी चेक
  • rootउपयोगकर्ता के रूप में चलाने की कोई आवश्यकता नहीं है
  • मेरे कोर i3-2100 पर लगभग 1.5min चलाता है

अपने नेटवर्क को स्कैन करने के लिए इसे <first IP> <last IP>मापदंडों के साथ चलाएं ।

#!/usr/bin/env python
from threading import Thread
import subprocess
from Queue import Queue

verbose = False

num_threads = 8
queue = Queue()
inactive_ips = [0 for i in range(256)]

lines = open("/proc/net/arp", "r").readlines()
arp_cache = [l.split()[0] for l in lines[1:] if l.split()[2] == "0x2"]

def ip_str_to_int(ip):
    ip = ip.rstrip().split('.')
    ipn = 0
    while ip:
        ipn = (ipn << 8) + int(ip.pop(0))
    return ipn

def ip_int_to_str(ip):
    ips = ''
    for i in range(4):
        ip, n = divmod(ip, 256)
        ips = str(n) + '.' + ips
    return ips[:-1] ## take out extra point


#wraps system ping command
def pinger(i, q):
    while True:
        ip_num = q.get()
        ip = ip_int_to_str(ip_num)
        if ip not in arp_cache:
            ret = subprocess.call("ping -c 1 %s" % ip,
                  shell=True,
                  stdout=open('/dev/null', 'w'),
                  stderr=subprocess.STDOUT)
            if ret != 0:
                  inactive_ips[ip_num % 256] = ip
        q.task_done()


if __name__ == '__main__':
    from optparse import OptionParser
    usage = "usage: %prog [options] [first IP] [last IP]"
    parser = OptionParser(usage=usage)
    parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="make lots of noise")
    parser.add_option("-q", action="store_false", dest="verbose", help="print only IP adresses")
    (options, args) = parser.parse_args()
    verbose = options.verbose

    first = ip_str_to_int(args[0] if len(args) > 0 else "192.168.0.1")
    last = ip_str_to_int(args[1] if len(args) > 1 else "192.168.0.254")

    if verbose:
        print "Scanning inactive network addresses from %s to %s" % (
            ip_int_to_str(first),
            ip_int_to_str(last))

    for i in range(num_threads):
        worker = Thread(target=pinger, args=(i, queue))
        worker.setDaemon(True)
        worker.start()

    for ip in range(first, last + 1):
        queue.put(ip)

    queue.join()
    for ip in inactive_ips:
        if ip:
            print ip

डाउनवोट के बाद अपडेट करें

मैंने इसे लिखा क्योंकि nmap -PR 192.168.0.*मेरे लिए काम नहीं किया:

Starting Nmap 5.21 ( http://nmap.org ) at 2011-10-06 15:34 EEST
Nmap done: 256 IP addresses (0 hosts up) scanned in 0.03 seconds

अपडेट २

एआरपी-कैश के साथ सभी मुद्दों को तय किया।


2
क्या होगा अगर एक मशीन पिंग का जवाब नहीं देती है? क्या इसका मतलब है कि आईपी उपयोग में नहीं है?
ब्रूनो परेरा

@ brunopereira81 मैं होस्ट से संचालित आईपी से मुक्त आईपी को अलग करने का कोई तरीका नहीं जानता।
सर्गेई

संचालित नहीं है, सामान्य पिंग का जवाब नहीं देने के लिए कंप्यूटर के फ़ायरवॉल को कॉन्फ़िगर किया जा सकता है। इस तरह आपको कोई उत्तर नहीं मिलता है, लेकिन इसका मतलब यह नहीं है कि कंप्यूटर बंद है या इसमें सेवाएं नहीं चल रही हैं, बस सामान्य पिंग्स को अनदेखा कर रहा है। (मैं इस सवाल के सापेक्ष परिदृश्य को नहीं जानता लेकिन) कल्पना कीजिए कि वह एक फ़ायरवॉल / गेटवे को पिंग करता है जो उसके पिंग को अनदेखा करता है क्योंकि इसका कॉन्फ़िगर जवाब देने के लिए नहीं है, वह मानता है कि आईपी मुफ्त है इसलिए वह इसका उपयोग करता है, इसके पीछे फ़ायरवॉल / गेटवे हो सकता है कंप्यूटर के एक्स नंबर जो आईपी संघर्ष के कारण बस नीचे चले गए!
ब्रूनो परेरा

@ brunopereira81 मुझे पता है कि यह आदर्श नहीं है। यही कारण है कि मैं इसे "त्वरित और गंदा" :)
सर्गेई

अच्छा जवाब, मुझे समझ नहीं आ रहा है कि इस तरह के जवाब से कैसे मदद मिलती है।
निखिल

1

यह इसे सही तरीके से करना चाहिए:

#!/bin/bash

#setting language variables for subshell making sure we grep for the right word
LC_ALL=C
LANG=C

# retrieve IP from user input
read -p "Input your network (example: 192.168.0): " my_net

for i in $(seq 1 254);
do 
  ip="$my_net.$i"
  check="$(ping -c1 "$ip")"
  if [ "$(grep "Unreachable" <<<"$check")" != "" ]
  then
    echo "$ip is unreachable"
  fi
done

0

मुझे लगता है कि यह सरल है

# my_net define my Net_ID
my_net=192.168.1.
for i in `seq 1 254`;
do 
  ip="$my_net$i"
  ping -c2  $ip | grep "is unreachable" | cut -d" " -f1 &
done

आप अपने कोड पर एक नज़र रखना चाह सकते हैं। मेरे सबनेट में यह मुझे उन सभी आईपी को दिखाता है, जो ले लिए गए हैं।
वीडियोनौथ

नहीं, मैं इसका परीक्षण करता हूं और मेरे लिए ठीक काम करता है, वास्तव में आप उन आईपी पते को सेट नहीं कर सकते हैं जिंदा हैं क्योंकि मैं जीआरपी जोड़ता हूं "is unreachable" या यदि आप इसे बदलते हैं तो grep -v timeशायद यह आपके लिए ठीक काम करे
user3607303
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.