네트워크에서 사용 된 모든 IP 주소를 찾는 방법


94

내 작품에는 많은 컴퓨터가 있으며 농담을하고 싶습니다. 네트워크를 통해 컴퓨터를 닫을 수는 있지만 IP 주소를 찾는 것은 어렵습니다.

192.168.1.aa에서 192.168.1.zz까지 모든 온라인 IP 주소를 쉽게 찾을 수있는 방법은 무엇입니까?


4
시도angry ip scanner
Web-E


2
진심으로? 동료의 도움을 원하십니까?
Dan H

답변:


141

일반적으로 nmap네트워크를 빠르게 스캔하는 데 매우 유용합니다.

nmap을 설치하려면 터미널에 다음 명령을 입력하십시오.

sudo apt-get install nmap

응용 프로그램이 설치되면 다음 명령을 입력하십시오.

nmap -sn 192.168.1.0/24

192.168.1.0과 192.168.1.255 사이의 네트워크에서 ping 요청에 응답 한 호스트가 표시됩니다.


이전 버전의 Nmap의 경우 다음을 사용하십시오 -sP.

nmap -sP 192.168.1.0/24

자세한 내용은 다음 페이지를 참조하십시오.

NMAP 설치 안내서

NMAP 참조 가이드

배우기에 매우 유용한 도구입니다.


2
모든 호스트가 핑에 응답하는 것은 아닙니다. ARP는 최소한 IPv4에서가는 길입니다.
Marcin Kaminski

3
나를 위해 충분히 이잖아 그리고 인터넷에서 작동

1
내 컴퓨터입니까, 아니면이 명령을 실행하는 데 시간이 오래 걸립니까?
JohnMerlino

4
nmap 스캔 속도를 높이려면 -T4 (speed) 및 -n (numeric only) 플래그를 추가해야합니다.
Sergiy Kolodyazhnyy

3
nmap 명령에는 sudo 가 필요합니다 . 그렇지 않으면 결과가 0으로 반환됩니다.
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-scanARP 패킷을 로컬 네트워크로 전송하고 수신 된 응답을 표시하므로 방화벽이있는 호스트도 표시합니다 (IP 패킷을 기반으로 트래픽을 차단).


3
이 명령은 위의 명령보다 확실히 좋습니다. nmap을 실행하는 데 오랜 시간이 걸렸지 만 지정된 네트워크의 노드에 즉시 응답했습니다.
JohnMerlino

3
제 경우에는 종종 arp-scan무선 네트워크와 관련된 모든 장치를 찾지 못합니다. 이제 예를 들어 sudo arp-scan 192.168.2.0/242 개의 결과 (.1 및 .1)가 nmap -sn 192.168.2.0/24표시되고 4 개의 결과 (.1, .2, .3 및 .4)가 표시됩니다. 따라서 nmap더 정확 해 보입니다 (네트워크에 4 개의 장치가 연결되어 있음을 알고 있습니다). 왜 이런거야?
tigerjack89

2
어쩌면 나는 다른 질문에 대한 주석에서 답을 찾았을 것입니다. "일부 장치가 켜져 있지 않으면 표시되지 않을 수 있습니다. 화면이 켜져 있지 않으면 nexus 4가 표시되지 않습니다." 그러나 동일한 장치가 항상 핑에 응답한다는 점이 흥미 롭습니다 nmap.
tigerjack89

arp-scan좋다!
forzagreen 2016 년

17

독자에 대한 참고 사항 : 독창적 인 답변은 얼마 전에 그리고 쉘 스크립팅 만 배우는 시점에 게시되었습니다. 훨씬 빠르게 수행되는 새롭고 개선 된 스크립트에 대해서는 아래 재검토 버전을 참조하십시오.

원래 답변

nmap내 # 1 선택이 될 것입니다. 그렇지 않으면 어떻게해야합니까? DIY 방법은 네트워크에서 가능한 모든 IP 주소를 수동으로 통과하는 핑 스크립트를 사용하는 것입니다. 우리가 가진 것은 바로 while 루프인데, 여기서 주소의 마지막 숫자를 설정하고, 주소에 대한 자동 단일 핑을 만들고, 명령이 성공했는지 여부를 확인하고 (성공한 경우 호스트는 분명히 작동합니다) 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 년 8 월에 게시했습니다. 그 이후로 쉘 스크립팅에 대해 조금 더 배웠으며, 일단이 스크립트를 본 후에는이 답변을 다시 방문하여 몇 가지 개선 사항을 추가하는 것이 좋습니다. 몇 가지 아이디어가 있습니다.

  • 스크립트는 분명히 느리고 ping호스트의 응답을 기다립니다. 기본적으로 ping네트워크, 그리고 지금까지 내가 이해 TCP 프로토콜은 대기 시간마다 두 배로 방법 정체에 따라 달라질 수있는 두 개의 RTT, 대한 (적어도에 따라 ). 따라서 플래그 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"변수를 사용하여 다른 많은 언어에서 어떻게 작동하고 보이는지와 일치 합니다. 여기에 인용 할 필요는 없습니다. 숫자 만 다루기 때문에 변수에 공백이있어 단어 분리를 예상 할 필요가 없습니다.

  • 여러 백그라운드 프로세스를 생성하면 훨씬 더 나은 성능 향상을 얻을 수 있습니다. 아래 스크립트 편집은 정확히 수행합니다. 나는 pingand printf를 함수에 넣었습니다 pingf(예, 촌스러운 이름, 알고 있습니다). 이제 main의 반복 및 호출을 수행하는 단일 함수 도 있습니다 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

그게 얼마나 잘 작동합니까? 실제로 몇 초가 걸리지 않습니다.

$ 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 에코 요청에 대한 응답을 차단하기 시작했습니다. Ask Ubuntu와 그 밖의 다른 사이트에는 "저의 Linux 컴퓨터는 핑 (ping) 할 수 있지만 Windows 컴퓨터는 할 수 없습니다. 최신 Windows 버전의 경우 ICMP 에코에 대한 응답을 활성화해야합니다.

2
나는 이런 종류의 솔루션을 좋아합니다
Szenis

15

Netdiscover가 답이 될 수 있습니다.

터미널을 통해 설치하려면

sudo apt-get install netdiscover

사용법 예 :

sudo netdiscover -r 192.168.1.0/24 -i wlan0

MAC 주소가있는 IP가 터미널에 표시됩니다. 스크린 샷보기

여기에 이미지 설명을 입력하십시오

희망이 당신을 도와

참고


매우 버그 것 같은데, 첫 번째 시도 *** buffer overflow detected ***: netdiscover terminated .
Pablo A

이 도구는 네트워크에서 몇 가지를 찾지 못했습니다.
Anthony

4

fpingICMP를 통해 네트워크의 여러 호스트를 스캔하는 훌륭한 도구입니다. 설치되지 않은 경우 다음을 통해 설치할 수 있습니다.

sudo apt-get install fping

fping ICMP ECHO_REQUEST 패킷을 전송하고 호스트에서 ECHO_RESPONSE를 가져 오는 경우 호스트를 Up으로 표시합니다.

예를 들어, 서브넷 호스트를 스캔하려면 192.168.1.0/24다음을 수행하십시오.

fping -g 192.168.1.0/24

특정 수의 호스트 (예 : 192.168.1.15to 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.