다른 컴퓨터가 로컬 네트워크에 연결된 것을 찾는 방법


27

내가 속한 LAN에서 사용 가능한 모든 컴퓨터 목록을 어떻게 볼 수 있습니까?

답변:


28

문제의 LAN에 대해 얼마나 알고 있습니까? 케이블에 꽂혀 있거나 Wi-Fi에 연결된 것을 모르는 것으로 가정합니다.

  1. DHCP로 IP 주소를 요청하십시오. 하나 사세요? 그런 다음 게이트웨이 IP, DHCP 서버 IP, 서브넷 마스크 및 DNS 서버 등 몇 가지 사항을 이미 알고 있습니다.
  2. 하나를 얻지 못하면 DHCP 서버가 없거나 네트워크가 MAC 필터링됩니다.
  3. 어느 쪽이든 wireshark로 패킷 캡처를 시작하십시오 . 무선으로 연결되어 있거나 허브에 연결되어 있으면 쉽습니다. 스위치에 연결된 경우 MAC 플러딩 을 시도 하여 "허브 모드"로 다시 전환 할 수 있지만 스마트 스위치는 포트를 비활성화합니다. 당신이 어쨌든 그것을 시도하고 싶다면 ettercap당신 을 위해 이것을 할 수 있습니다. (또는 macchanger 및 쉘 스크립트 :))
  4. 패킷을 보면 IP 주소를 찾을 수 있지만 가장 중요한 것은 네트워크 매개 변수를 추측 할 수 있다는 것입니다. MAC 필터링이 의심되는 경우 MAC 주소를 떠난 후 관찰 된 주소 중 하나로 변경합니다 (한동안 아무것도 보내지 않음).
  5. 네트워크 구성 (넷 마스크, 게이트웨이 등)에 대해 잘 알고 있으면 nmap을 사용하여 스캔하십시오. Nmap은 -sP일부 호스트가 Ping에 응답하지 않는 경우 보다 훨씬 더 많은 작업을 수행 할 수 있습니다 ( documentation 확인 ). 네트워크 설정과 경로가 올바른 경우에만 nmap이 작동하는 것이 중요합니다.
  6. nmap의 유휴 스캔으로 더 많은 호스트를 찾을 수 있습니다 .

일부 (대부분의?) 시스템 관리자는 위의 방법 중 일부를 좋아하지 않으므로 허용되는지 확인하십시오 (예 : 네트워크). 또한 방화벽에 따라 이러한 방법 중 일부 (DHCP를 사용하여 IP를 얻는 경우도)를 방지 할 수 있으므로 규칙을 먼저 확인하십시오.

Nmap

다음은 nmap으로 기본 호스트 검색 을 수행하는 방법 입니다. 내가 말했듯이 이것을 시도 할 때 네트워크 구성이 정확해야합니다. / 24 서브넷에 192.168.0.50이라고 가정합니다. 귀하의 MAC 주소는 연결할 수있는 것입니다. 내가하고있는 일을보기 위해 wireshark를 실행하고 싶습니다.

먼저 지정된 IP 주소에 대해 DNS의 PTR 레코드 만 확인하려고하는 목록 검색을 시도하고 싶습니다. 호스트에 아무것도 보내지 않으므로 실제로 연결되어 있거나 켜져 있다고 보장 할 수는 없지만 좋은 기회가 있습니다. 이 모드에는 분명히 대화 할 DNS 서버가 필요합니다.

nmap -vvv -sn -sL 192.168.1.0/16

이것은 아무것도 찾지 못하거나 모든 단일 IP가 가동되었음을 알려줍니다.

그런 다음 보통 ARP 스캔을 진행합니다. ARP 요청을 보냅니다 ( "Who has <target IP>? Tell <your IP>"wireshark에서 볼 수 있음 ). ARP를 필터링하거나 위조하는 사람이 없기 때문에 이것은 매우 안정적입니다. 가장 큰 단점은 서브넷에서만 작동한다는 것입니다.

nmap -vvv -sn -PR 192.168.1.0/24

라우터 나 방화벽 뒤에서 무언가를 스캔하려면 SYN 및 ACK 스캔을 사용하십시오. SYN은 TCP 연결을 시작하고 응답으로 RST 또는 SYNACK을 얻습니다. 호스트가 작동 중입니다. 방화벽이있는 경우 ICMP 통신이 금지되거나 이와 유사한 것이 발생할 수 있습니다. 방화벽이 패킷을 필터링하면 대부분 아무것도 얻지 못합니다. 일부 방화벽 유형은 TCP SYN 패킷 만 필터링하고 다른 모든 TCP 패킷을 통과시킵니다. 이것이 ACK 스캔이 유용한 이유입니다. 호스트가 작동하면 RST가 응답합니다. 어떤 방화벽이 있는지 모르므로 두 가지를 모두 시도하십시오.

nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24

물론 -PE -PP -PM과 함께 ICMP 기반 스캔을 사용할 수 있습니다.

다른 흥미로운 방법은 존재하지 않는 프로토콜 번호를 가진 -PO입니다. 방화벽에서는 종종 TCP 및 UDP 만 고려되며 알 수없는 프로토콜을 시도 할 때 어떤 일이 발생하는지 테스트하지 않습니다. 호스트가 작동 중이면 ICMP 프로토콜에 도달 할 수 없습니다.

nmap -vvv -sn -PO160 10.1.2.0/24

또한 nmap에게 호스트 검색 (-Pn)을 건너 뛰고 모든 호스트에서 포트 스캔을 수행하도록 지시 할 수 있습니다. 속도는 매우 느리지 만 어떤 이유로 호스트 검색에서 놓친 다른 호스트를 찾을 수 있습니다.


이것은 훌륭한 답변처럼 보이며 이제 각 작업에 대해 실행할 명령을 포함시켜 나에게 숟가락 먹이를 요구해야합니다. Nmap을 사용하여 내 질문에 대답하는 방법에 특히 관심이 있습니다 (문서를 읽지 마십시오)
tshepang

5
@ Tshepang : 몇 가지 nmap 예제를 추가했지만 문서를 읽는 것이 좋습니다. Nmap은 가장 큰 네트워크 도구 중 하나이며 문서는 잘 작성되어 실제로 가치가 있습니다.
stribika

9

ip neighIpRoute2와 함께 제공 되는 명령이 마음에 듭니다.

ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE

그러나 나는 그것이 가능한 arp노드 에서만 작동한다고 생각합니다 .


정확히 무엇을합니까? 나에게, 그것은 단지 몇 가지 항목을 나열합니다.
tshepang

방금 브로드 캐스트 IP에 arp를 보내고 응답하는 내용을 나열한다고 생각합니다. 솔직히 나는 그것이 어떻게 작동 하는지 모른다 .
xenoterracide

1
man ip이웃 또는 이웃이하는 일을 보여줍니다.
slm

9

nmap을 설치 하고 실행하십시오 nmap -sP <mynetwork>.


나는 얻는다 Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds.
tshepang 2019

1
@Tshepang-나는 그것을 nmap -sP 192.168.0.*했고 그것은 형식의 출력 목록을 반환했습니다 :Nmap scan report for justin-desktop2 (192.168.0.61) Host is up (0.00056s latency).
Justin Ethier

@ justin 버전 5.00을 사용 하고 있으며 이제 네트워크에 여러 컴퓨터가 형식으로 표시 Host 192.168.2.23 is up (0.0088s latency).됩니다.
tshepang

3
<mynetwork>를 무엇으로 바꾸어야합니까?
tshepang

@tshepang 호스트 부분이 0이고 CIDR 마스크가있는 네트워크 번호. 192.169.1.0/24
Keith

0

두 가지 답변 모두 : n nmap 필요 없음 / 아니오 sudo 필수 .

답변 1

$ arp

답변 2

xenoterracides를 기반으로 다음 ip neighhosts같이 대답하십시오 .

#!/usr/bin/env python

"""List all hosts with their IP adress of the current network."""

import os

out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
    ip = line.split(' ')[0]
    h = os.popen('host {}'.format(ip)).read()
    hostname = h.split(' ')[-1]
    print("{:>3}: {} ({})".format(i, hostname.strip(), ip))

통해 다운로드

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.