কোনও নেটওয়ার্কে অব্যবহৃত আইপি অ্যাড্রেস কীভাবে সন্ধান করবেন?


25

আমি কেবল একটি নেটওয়ার্কে অব্যবহৃত আইপি ঠিকানা খুঁজে পেতে চাই। আমি মনে করি এটি এনএমএপ দিয়ে সম্ভব is কেউ কি আমাকে প্লিজ বলতে পারেন?

বিঃদ্রঃ:

আমার কেবল ফ্রি আইপি তালিকা দরকার need


কোন অতিরিক্ত প্রয়োজনীয়তা আছে?
সের্গেই

আর কোনও অতিরিক্ত প্রয়োজনীয়তা নেই। এখন পর্যন্ত আমি অনেক আইপি ঠিকানার দ্বন্দ্ব পেয়েছি, আমি কেবল একটি নেটওয়ার্কে ফ্রি আইপি ঠিকানাটি খুঁজে বের করতে এবং এটি নির্ধারণ করতে চাই।
karthick87

উত্তর:


26

একটি দ্রুত স্ক্যানার হ'ল আরপ-স্ক্যান যা কোনও নেটওয়ার্কে অন্য মেশিনগুলিকে "দেখতে" ব্যবহার করতে এআরপি ব্যবহার করে। এটি ম্যাক ঠিকানাও দেয় এবং নেটওয়ার্ক অ্যাডাপ্টারের নির্মাতাকে নির্ধারণ করার চেষ্টা করে।

উদাহরণ ব্যবহার (প্রতিস্থাপন 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কোনও নেটওয়ার্কে অন্য মেশিনের সাথে কোনও মেশিনের সাথে ইন্টারেক্ট করার জন্য এটি আবশ্যক যেহেতু এটি ব্লক করা যাবে না। কোনও আইপি অব্যবহৃত হয়েছে তা নিশ্চিত হওয়ার জন্য আপনি নিজের রাউটারটি (স্ট্যাটিক / ডায়নামিক ঠিকানাগুলির জন্য) এবং ডিএইচসিপি সার্ভারকে (গতিশীল ঠিকানাগুলির জন্য) আরও ভালভাবে দেখতে চান।


আমি এটি পছন্দ করতে চেয়েছিলাম কিন্তু এটি পরীক্ষা করার পরে এটি দু'টি হোস্ট মিস করেছে?!?! :(
বকবক বোকা

@ বম্বলিংফুল: আপনি কি নিশ্চিত যে অন্যান্য হোস্ট একই সাবনেটে আছে? উদাহরণস্বরূপ 192.168.1.x এবং 192.168.2.x না?
লেকেনস্টেইন

হ্যাঁ, সমস্ত হোস্ট একই সাবনেটে আছে। আমি আরও এক ডজন বার এটি চালিয়েছি এবং সমস্ত হোস্ট দেখিয়েছে তার 2/3। মজার বিষয় হল (?), এটি সর্বদা একই হোস্ট যা প্রদর্শিত হয় না (যদি থাকে) ... এটি একটি ওয়াইফাই নেটওয়ার্কে রয়েছে তবে সংকেতটি শক্ত। এছাড়াও, উপরে উল্লিখিত এনএম্যাপ পদ্ধতিটি ধারাবাহিকভাবে কোনও হোস্টকে মিস করে না।
বোকা বোকা

আমরা কয়টি হোস্টের কথা বলছি? -iপ্যারামিটার ব্যবহার করে প্যাকেটগুলি প্রেরণের মধ্যে বিলম্ব বাড়ানোর চেষ্টা করুন , যেমন -i 55 এমএসের জন্য।
Lekensteyn

2/5। দেরি বাড়িয়ে দিয়েছিল কৌতুক। ধন্যবাদ!
বোকা বোকা

15

sudo nmap -sP -PR 192.168.0.* (বা আপনার নেটওয়ার্ক যাই হোক না কেন) কৌশলটি করবে।

এটি ইনস্টল করতে sudo apt-get install nmap

সূত্র: সার্ভারফল্ট ডটকম

কেবল এটি পরীক্ষা করা হয়েছে, অস্পষ্ট হোস্ট সহ মন্ত্রকের মতো কাজ করে, -PRবিকল্পটি ব্যবহার করতে সক্ষম হতে আপনাকে sudo যুক্ত করতে হবে ।


1
আমি এটি পরীক্ষা করে দেখেছি যে আপনাকে চালানোর দরকার একটি রুট হিসাবে (যেমন ব্যবহার করা sudo)। তদতিরিক্ত, এটি সম্ভবত ফায়ারওয়াল দ্বারা অবরুদ্ধ করা হয়েছে কারণ এটি হোস্টের পোর্টগুলিও স্ক্যান করে যা অনুসন্ধানকে ধীর করে দেয়।
লেকেনস্টেইন

মূল পোস্টটি পড়ুন, তৃতীয় মন্তব্যটি কীভাবে (অপ্রয়োজনীয়) পোর্ট স্ক্যান ব্যবহার করবেন না তা ব্যাখ্যা করে;)
ব্রুনো পেরেইরা

আপনার উত্তরে আপনার এটি অন্তর্ভুক্ত করা উচিত, প্রত্যেকে উত্সগুলি অনুসরণ করতে চায় না। কমান্ডটি আসলে কী করে তা বর্ণনা করাও সহায়ক হবে।
লেকেনস্টেইন

সম্পন্ন;) সত্যিই দুর্দান্ত কাজ করে।
ব্রুনো পেরেইরা

অভিজাতকরণের জন্য আরপ-স্ক্যান পরীক্ষা, (বা কখনও ব্যবহার করা হয়নি)!
ব্রুনো পেরেইরা

4

আমি fping দরকারী মনে করি; অন্যান্য জিনিসের মধ্যে এটির ঠিকানা এবং তালিকার একটি সীমাবদ্ধতা থাকবে যা 'জীবিত' এবং যা 'অ্যাক্সেসযোগ্য'। fping ডিফল্ট হিসাবে ইনস্টল করা হয় না।

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
ভুলে যাবেন না যে এটি ধরে নিয়েছে হোস্টগুলি কোনও আইসিএমপি ইকো অনুরোধের (ওরফে পিংস) সাড়া দেয়। প্রতিটি হোস্ট এটি করে না, বিশেষত কিছু এমএস উইন্ডোজ মেশিনগুলি তা করে না। এছাড়াও ফায়ারওয়ালগুলি সাধারণত অনলাইনে থাকে এবং আপনার নেটওয়ার্কে একটি ম্যাক ঠিকানা থাকলেও এটি এটিকে অক্ষম করে। এটি একটি দ্রুত সমাধান, তবে প্রতিটি পরিস্থিতিতে নির্ভর করা উচিত নয়।
ইয়েদিন

তুমি ঠিক বলছো; এনএমএপি জড়িত একটি সমাধান, বা আইসিএমপি ব্যতীত অন্য প্রোটোকল ব্যবহার করতে পারে এমন পিংয়ের বিকল্প, আরও নির্ভরযোগ্য হবে।
বিজিভোগান

3

আমি বিশ্বাস করি এটি সেরা সমাধান নয় তবে আপনি যা চান তা তা করে। এই স্ক্রিপ্টটি নেটওয়ার্কের pingউপরে চলে 192.168.0.0/24এবং এআরপি ক্যাশে না থাকলে নিষ্ক্রিয় আইপিগুলির তালিকা ফিরিয়ে দেয়।

পূর্ববর্তী সমাধানগুলির তুলনায় সুবিধা:

  • উভয় পদ্ধতি ব্যবহার করে: পিং এবং এআরপি চেক
  • rootব্যবহারকারী হিসাবে চালানোর দরকার নেই
  • আমার কোর i3-2100 এ প্রায় 1.5 মিনিট চলে

আপনার নেটওয়ার্কটি স্ক্যান করতে এটি <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

এআরপি-ক্যাশে সমস্ত সমস্যা স্থির করে।


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সূক্ষ্মভাবে কাজ করতে পারে
ইউজার 3607303
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.