내 작품에는 많은 컴퓨터가 있으며 농담을하고 싶습니다. 네트워크를 통해 컴퓨터를 닫을 수는 있지만 IP 주소를 찾는 것은 어렵습니다.
192.168.1.aa에서 192.168.1.zz까지 모든 온라인 IP 주소를 쉽게 찾을 수있는 방법은 무엇입니까?
내 작품에는 많은 컴퓨터가 있으며 농담을하고 싶습니다. 네트워크를 통해 컴퓨터를 닫을 수는 있지만 IP 주소를 찾는 것은 어렵습니다.
192.168.1.aa에서 192.168.1.zz까지 모든 온라인 IP 주소를 쉽게 찾을 수있는 방법은 무엇입니까?
답변:
일반적으로 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
자세한 내용은 다음 페이지를 참조하십시오.
배우기에 매우 유용한 도구입니다.
네트워크의 모든 컴퓨터가 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 패킷을 로컬 네트워크로 전송하고 수신 된 응답을 표시하므로 방화벽이있는 호스트도 표시합니다 (IP 패킷을 기반으로 트래픽을 차단).
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 개의 장치가 연결되어 있음을 알고 있습니다). 왜 이런거야?
nmap
.
arp-scan
좋다!
독자에 대한 참고 사항 : 독창적 인 답변은 얼마 전에 그리고 쉘 스크립팅 만 배우는 시점에 게시되었습니다. 훨씬 빠르게 수행되는 새롭고 개선 된 스크립트에 대해서는 아래 재검토 버전을 참조하십시오.
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"
변수를 사용하여 다른 많은 언어에서 어떻게 작동하고 보이는지와 일치 합니다. 여기에 인용 할 필요는 없습니다. 숫자 만 다루기 때문에 변수에 공백이있어 단어 분리를 예상 할 필요가 없습니다.
여러 백그라운드 프로세스를 생성하면 훨씬 더 나은 성능 향상을 얻을 수 있습니다. 아래 스크립트 편집은 정확히 수행합니다. 나는 ping
and 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
Netdiscover가 답이 될 수 있습니다.
터미널을 통해 설치하려면
sudo apt-get install netdiscover
사용법 예 :
sudo netdiscover -r 192.168.1.0/24 -i wlan0
MAC 주소가있는 IP가 터미널에 표시됩니다. 스크린 샷보기
희망이 당신을 도와
*** buffer overflow detected ***: netdiscover terminated
.
fping
ICMP를 통해 네트워크의 여러 호스트를 스캔하는 훌륭한 도구입니다. 설치되지 않은 경우 다음을 통해 설치할 수 있습니다.
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.15
to 192.168.1.140
:)
fping -g 192.168.1.15 192.168.1.140
fping
전송 될 패킷 수, 응답 대기 시간, 출력 형식 등을 고도로 구성 할 수 있습니다.
man fping
더 많은 아이디어를 얻으려면 확인하십시오 .
angry ip scanner