이 두 명령을 사용하여 IP 주소를 찾기 위해 네트워크를 검색하고 있습니다.
arp -a nmap -sn 192.168.1.0/24
어떤 이유로 내 스마트 플러그 (및 일부 다른 Android 기기)는 arp -a
로 수행 한 스캔에만 표시됩니다. 이유를 아는 사람 있나요?
Answer
arp -a
는 캐시 된 목록을 인쇄합니다. 이 호스트와 통신하고있는 호스트 / 장치. 따라서 출력에 스마트 플러그 및 기타 장치가 표시되는 경우 Pi를 마지막으로 재부팅하거나 다시 시작한 이후로이 호스트와 통신하고 있었다는 증거입니다. 그 “네트워킹 .
요약 :
nmap 는 Pi에서 지정된 서브넷을 외부로 스캔하고 있습니다.
arp 출력은 IP : mac 주소 매핑 목록입니다. PI가 트래픽을 교환 한 호스트의
nmap 스캔은 많은 호스트를 표시 할 수있는 반면 arp 캐시는 Pi가 통화 한 호스트 만
192.168.1.21에있는 Pi의 arp 캐시는 다음과 같습니다.
arp -av gateway (192.168.1.18) at d4:ca:6d:XX:XX:5e [ether] on eth0 gateway (192.168.3.126) at d6:ca:6d:XX:XX:26 [ether] on wlan0 pi3Bplus-2 (192.168.1.22) at b8:27:eb:XX:XX:3c [ether] on eth0
arp 출력에 ip : mac 주소 (2) 호스트 유형에 대한 매핑 :
A) 호스트 ( ” 즉 pi3Bplus-2 “) 트래픽을 직접 교환 할 수있는 pi와 동일한 서브넷 내에서
B) 라우터 ( “ie 게이트웨이 “)는 트래픽을 호스트 서브넷 외부의 호스트로 라우팅하는 데 필요합니다.
192.168.1. 22 는 192.168.1입니다. 21 “의 캐시 : .21에서 .22를 핑했기 때문입니다. 따라서 항목 i n arp 캐시는 문제 해결시 호스트 간의 올바른 연결을 증명합니다. 물론 ICMP가 방화벽에서 차단되면 ping이 실패하고 호스트의 IP : mac 매핑은 arp 캐시에 존재하지 않습니다.
또한 arp 캐시는 아닙니다 영구! Pi 또는 네트워킹을 다시 시작하면 arp 캐시가 날아 가게됩니다. 테스트 할 때 실제로 수행하고 싶을 수 있습니다.
댓글
- 답변에 혼란 스러울 수있는 몇 가지 사항이 있습니다. 인용문 : " 그것 '의 증거 Pi를 마지막으로 재부팅하거나 ' 네트워킹을 다시 시작한 이후로이 호스트와 대화하고있었습니다. "-아니요, 이전에 ' ta (신규, 계속 등) 연결이 없었 으면 5 분 후에 캐시에서 IP 주소가 제거됩니다. 10 분 후에도 연결을 계속하면 새로운 arp 요청. 원격 장치가 활성화되어 있어도 5 분 동안 캐시에서 찾을 수 없습니다.
- 인용 : " 따라서 arp 캐시의 항목은 호스트 간의 올바른 연결 증명 "-아니요, 원격 장치를 종료하고 5 분 이내에 arp 캐시를 보면 해당 IP 주소를 찾을 수 있습니다. 이 모든 것이 문제 해결을 혼란스럽게 할 수 있습니다. 문제가 발생할 수 있지만 잠시 후에는 작동하지 않습니다. ' 특히 한 방향으로의 arp 요청이 실패하는 경우 ' 올바르게 작동하지 않습니다.
- @Ingo arp aging이 그렇게 작동해야 하지만 내 경험으로는 가비지 컬렉션이 제거되지 않습니다. ' 정의 된 기간에 따라 오래된 항목. 내 답변의 테스트는 동일한 서브넷 (동일 스위치에 연결됨)에서 주소가 지정된 2 개의 Pi '를 사용하여 수행되었으며 서로 몇 번 핑 & 그들의 핑을 중지합니다. 이 테스트를 반복하고
ip -statistics neighbour
를 주기적으로 실행하면 ' "로 표시된 arp 항목이 표시됩니다. stale " 20 분 이상 지난 경우에도 유지됩니다! 따라서 arp 노화가 작동하는 예상 에 대한 귀하의 요점을 알지만 반복하면 ' 항목이 5 분 이상 지속될 수 있음을 알 수 있습니다. 그러나 훌륭한 포인트 !!! - 방금 다른 경험을했습니다;) 프록시 arp로 작업하면서 arp 요청이 원격 장치에서 RasPi까지 한 방향으로 만 작동하는 상황에 대해 우연히 발견했습니다. 연결은 원격 장치가 RasPi에 5 분 동안 연결된 경우에만 작동했습니다.그 반대의 경우 (원격에서 연결 한 후 5 분 이내에) 때때로 작동하고 때때로 작동하지 않는 경우도 있습니다 '. 이 간헐적 인 오류를 찾는 것은 매우 어려웠습니다 (무차별 모드로 해결됨).
- 어쨌든-우리의 논의가 보여주는 것과 내가 믿는 것 : IP 주소에 대해 arp 캐시를 요청하는 것은 저장 솔루션이 아닙니다. arp 캐시를보기 전에 브로드 캐스트 주소를 ping합니다. 하지만 ' 네트워크 부하 때문에 제안하지 않을 가능성이 있습니다.
답변
이것은 실제로 Raspberry Pi와 관련된 질문이 아닙니다. 어쨌든 Raspberry Pi의 IP 주소를 찾는 것은 여기에서 자주 묻는 질문과 문제이므로 자세한 답변을 드리겠습니다.
nmap 는 네트워크 스캐너이며 예상대로 수행합니다. 네트워크에서 장치를 능동적으로 검색합니다.
arp 명령 (ip neighbor
를 더 잘 사용해야 함)는 스캐너가 아닙니다. 로컬 arp 캐시의 내용 만 표시합니다.
이더넷 연결을 설정하기 위해 arp 프로토콜이 사용됩니다. MAC 주소가있는 이더넷 장치에 어떤 IP 주소가 있는지 묻습니다. 발견 된 mac 주소와 ip 주소 매핑은 기본적으로 5 분 동안 로컬 arp 캐시에 저장됩니다. 이 매핑은 원격 장치가 ping
쿼리에 응답하지 않는 경우에도 설정된 모든 연결에 대해 발생합니다. 그러나 이것은 또한 “지난 5 분 전에 연결하지 않은 경우 arp 캐시에서 장치를 찾을 수 없음을 의미합니다.
명령 nmap -sn 192.168.1.0/24
포트 스캔이 비활성화 된 상태에서 간단한 핑 스캔 만 수행합니다. 핑 응답을 억제하는 장치는 찾지 못합니다. 이로 인해 arp 캐시에서 ip 주소를 찾을 수 있지만 활성 핑 스캔으로는 찾지 못할 수 있습니다. 다음을 사용할 수 있습니다.
rpi ~$ nmap -Pn 192.168.1.0/24
네트워크의 모든 255 개 IP 주소에서 처음 1000 개의 포트를 스캔합니다. 물론 이것은 매우 오래 걸릴 것입니다. 하나의 포트만 사용하여 스캔하거나 nmap의 다른 옵션을 사용하여 장치를 찾을 수 있습니다.
답변
여기에 다른 답변을 제공하기 위해이 스크립트를 작성하여 pi의 IP 주소를 찾습니다.
RASPI_MAC_ADDR
환경 변수가 설정 될 것으로 예상합니다 (MAC 주소 파이). 이것은 arp
를 사용하여 캐시 된 값을 검색하고 그렇지 않으면 nmap
를 실행하여 시도하고 발견합니다.
#!/bin/bash search_for_pi() { PI_IP_ADDR_LINE="$(arp -a | grep -m1 "$RASPI_MAC_ADDR")" } # run `arp -a` to find the pi"s mac address readonly RASPI_MAC_ADDR="${RASPI_MAC_ADDR:?Could not find RASPI_MAC_ADDR environment variable}" search_for_pi [[ -z "$PI_IP_ADDR_LINE" ]] && { # if the pi IP is not in cache, run an outward nmap scan to try and find it nmap -sP 192.168.1.0/24 >&2 search_for_pi [[ -z "$PI_IP_ADDR_LINE" ]] && { printf "Couldn"t find a device on the network with the mac address: %s\n" "${RASPI_MAC_ADDR}" >&2 exit 1 } } grep -oP "\([\d\.]+\)" <<<"$PI_IP_ADDR_LINE" | tr -d "()"
nmap
출력은 STDERR로 리디렉션되므로 다음 작업을 수행 할 수 있습니다.
alias pi="ssh pi@$(findpi-ip)"
업데이트 된 스크립트 here
.
댓글
h3>
- 문제는 다음과 같습니다. 어떤 이유로 내 Smart Plug (및 일부 다른 Android 장치)는 arp -a로 수행 한 스캔에만 표시됩니다. 이유를 아는 사람 있나요?
- 192.168.1 …. 범위 또는 10.1.10 …. 범위에 있습니까? 업데이트 된 스크립트는 여기
에서 볼 수 있습니다.