내 논리는 이렇다
- 서브넷 정의 가져오기
nmap
arp 캐시를 채우기 위해 서브넷의 모든 항목을 스캔 하는 데 사용됩니다.- 이
/usr/sbin/arp
도구를 사용하여 arp 캐시를 덤프하세요. - arp 캐시를 구문 분석하여
(IP-address, MAC-address)
서브넷의 모든 항목에 대한 쌍을 얻습니다.
이것은 일반적으로 꽤 잘 작동하지만 지금은 이것이 작동하지 않는 상황에 있습니다.
내가 다음 서브넷에 있다고 가정해 보겠습니다.10.199.200.0/21
난 달린다nmap
sudo /usr/bin/nmap -sP --send-ip -n 10.199.200.0/21
검색된 모든 장치가 표시됩니다.
Starting Nmap 7.01 ( https://nmap.org ) at 2018-08-09 15:45 MDT
Nmap scan report for 10.199.200.1
Host is up (0.00066s latency).
MAC Address: FC:AA:14:XX:XX:XX(Giga-byte Technology)
Nmap scan report for 10.199.200.2
Host is up (0.00038s latency).
MAC Address: C2:EA:E4:XX:XX:XX(Unknown)
Nmap scan report for 10.199.200.4
Host is up (0.00045s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.5
Host is up (0.00041s latency).
MAC Address: 00:1A:64:XX:XX:XX(IBM)
Nmap scan report for 10.199.200.6
Host is up (0.0010s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.8
Host is up (0.00027s latency).
MAC Address: 40:F2:E9:XX:XX:XX(IBM)
Nmap scan report for 10.199.200.9
Host is up (0.00061s latency).
MAC Address: 1C:98:EC:XX:XX:XX(Unknown)
Nmap scan report for 10.199.200.10
Host is up (0.00038s latency).
MAC Address: D0:67:26:XX:XX:XX(Unknown)
Nmap scan report for 10.199.200.11
Host is up (0.00075s latency).
MAC Address: 7C:AD:74:XX:XX:XX(Cisco Systems)
Nmap scan report for 10.199.200.12
Host is up (0.00053s latency).
MAC Address: 68:72:51:XX:XX:XX(Ubiquiti Networks)
Nmap scan report for 10.199.200.13
Host is up (0.00061s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.15
Host is up (0.00098s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.16
Host is up (0.00088s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.18
Host is up (0.0017s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.19
Host is up (0.00080s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.20
Host is up (0.00076s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.22
Host is up (0.00078s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.23
Host is up (0.0011s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.24
Host is up (0.0010s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.26
Host is up (0.00058s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.27
Host is up (0.00091s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.28
Host is up (0.00074s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.29
Host is up (0.0011s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.30
Host is up (0.00089s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.31
Host is up (0.00060s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
Nmap scan report for 10.199.200.32
Host is up (0.00096s latency).
MAC Address: 00:50:56:XX:XX:XX(VMware)
그런데 바로 arp 캐시를 덤프하려고 하면
/usr/sbin/arp
이것만 얻었습니다. 이전 스캔에 표시된 항목 중 많은 항목이 누락되었습니다.
Address HWtype HWaddress Flags Mask Iface
10.199.200.179 (incomplete) enp2s0
10.199.202.172 (incomplete) enp2s0
10.199.205.70 (incomplete) enp2s0
10.199.206.73 ether f4:5c:89:XX:XX:XX C enp2s0
10.199.202.42 (incomplete) enp2s0
10.199.202.245 (incomplete) enp2s0
10.199.205.74 (incomplete) enp2s0
10.199.200.2 ether c2:ea:e4:XX:XX:XX C enp2s0
10.199.205.21 (incomplete) enp2s0
10.199.207.193 (incomplete) enp2s0
10.199.203.231 (incomplete) enp2s0
10.199.203.162 (incomplete) enp2s0
10.199.204.181 (incomplete) enp2s0
10.199.207.79 (incomplete) enp2s0
10.199.205.94 (incomplete) enp2s0
10.199.203.109 (incomplete) enp2s0
10.199.206.44 (incomplete) enp2s0
10.199.204.51 (incomplete) enp2s0
10.199.200.209 (incomplete) enp2s0
10.199.206.239 (incomplete) enp2s0
10.199.203.235 (incomplete) enp2s0
10.199.206.170 (incomplete) enp2s0
10.199.201.69 (incomplete) enp2s0
10.199.205.98 (incomplete) enp2s0
10.199.203.113 (incomplete) enp2s0
10.199.200.229 (incomplete) enp2s0
10.199.206.190 (incomplete) enp2s0
10.199.203.186 (incomplete) enp2s0
10.199.200.99 (incomplete) enp2s0
10.199.205.118 (incomplete) enp2s0
10.199.201.20 (incomplete) enp2s0
10.199.207.34 (incomplete) enp2s0
10.199.203.192 (incomplete) enp2s0
10.199.205.252 (incomplete) enp2s0
10.199.200.180 (incomplete) enp2s0
10.199.202.165 (incomplete) enp2s0
10.199.206.66 (incomplete) enp2s0
10.199.205.122 (incomplete) enp2s0
10.199.205.197 (incomplete) enp2s0
10.199.203.212 (incomplete) enp2s0
10.199.205.128 (incomplete) enp2s0
10.199.203.151 (incomplete) enp2s0
10.199.206.139 ether f4:5c:89:XX:XX:XX C enp2s0
10.199.200.184 (incomplete) enp2s0
10.199.206.86 (incomplete) enp2s0
10.199.202.116 (incomplete) enp2s0
10.199.207.127 (incomplete) enp2s0
10.199.206.17 (incomplete) enp2s0
10.199.201.44 (incomplete) enp2s0
10.199.202.120 (incomplete) enp2s0
10.199.206.37 (incomplete) enp2s0
10.199.204.52 (incomplete) enp2s0
10.199.205.221 (incomplete) enp2s0
10.199.206.224 (incomplete) enp2s0
10.199.200.149 (incomplete) enp2s0
10.199.206.163 (incomplete) enp2s0
10.199.205.91 (incomplete) enp2s0
10.199.206.41 (incomplete) enp2s0
10.199.202.207 (incomplete) enp2s0
10.199.205.225 (incomplete) enp2s0
10.199.206.244 (incomplete) enp2s0
10.199.203.179 (incomplete) enp2s0
10.199.201.66 (incomplete) enp2s0
10.199.205.111 (incomplete) enp2s0
10.199.200.39 (incomplete) enp2s0
10.199.207.27 (incomplete) enp2s0
10.199.200.226 (incomplete) enp2s0
10.199.202.211 (incomplete) enp2s0
10.199.200.173 (incomplete) enp2s0
10.199.207.161 (incomplete) enp2s0
10.199.205.176 (incomplete) enp2s0
10.199.207.108 (incomplete) enp2s0
10.199.205.115 (incomplete) enp2s0
10.199.206.6 (incomplete) enp2s0
10.199.207.47 (incomplete) enp2s0
10.199.204.208 (incomplete) enp2s0
10.199.200.246 (incomplete) enp2s0
(두 출력 모두 불완전하다는 점에 유의하세요)
기본적으로 nmap
후속 명령 덤프에서 완전히 누락된 항목에 대해 IP/MAC가 표시되거나, arp
IP는 있지만 MAC 주소가 다음과 같이 표시됩니다.(incomplete)
다음을 수행하여 arp 캐시의 항목에 대한 시간 초과를 늘려 보았습니다.
echo 'net.ipv4.neigh.default.gc_stale_time=600' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.neigh.default.base_reachable_time_ms=1200000' | sudo tee -a /etc/sysctl.conf
하지만 별 차이가 없는 것 같습니다.
여기서 무슨 일이 일어나고 있는 걸까요? arp
표시되는 콘텐츠가 표시 되지 않는 이유는 무엇입니까 nmap
? nmap
캐시가 올바르게 채워지지 않은 것일까요 ?
내가 알아차린 또 다른 점은 유틸리티를 사용하면 발견된 arp-scan
모든 항목이 표시된다는 것입니다.nmap
답변1
arp 캐시는 단지 캐시일 뿐입니다. 이는 곧 필요할 수 있는 일부 값을 보유하지만 다른 값을 위한 공간을 만들기 위해 폐기될 수 있음을 의미합니다.
/21 네트워크에는 2048개의 주소가 있으므로 다른 항목을 위한 슬롯을 확보하기 위해 그 중 일부가 캐시에서 제거됩니다. 이전에 소규모 네트워크에서 사용해 본 적이 있을 것입니다.
nmap의 출력을 스캔해야 합니다. 서로 다른 줄의 정보를 결합해야 하지만 완전해야 합니다.
편집하다
(incomplete)
각 항목은 응답이 수신될 때까지 시작됩니다 . 따라서 캐시가 가득 차면 커널은 이전의 완전한 항목이나 방금 응답을 받은 최신 항목을 삭제해야 합니다.
치수의 경우여기:
sysctl -w net.ipv4.neigh.default.gc_thresh1=<n>
:gc_thresh1은 ARP 캐시에 존재할 수 있는 최소 항목 수를 나타냅니다. 항목 수가 이 설정 미만이면 가비지 수집이 트리거되지 않습니다.
sysctl -w net.ipv4.neigh.default.gc_thresh2=<n>
:gc_thresh2는 ARP 캐시에 존재할 수 있는 소프트 최대 항목 수를 나타냅니다. 이 설정은 이 소프트 최대값에 도달한 후 약 5초 후에 ARP 가비지 수집이 트리거되므로 가장 중요합니다.
sysctl -w net.ipv4.neigh.default.gc_thresh3=<n>
:gc_thresh3은 ARP 캐시의 하드 최대 항목 수를 나타냅니다.
답변2
구체적으로 아르페지오를 추적하고 싶을 때 주로 tcpdump
스캐닝과 함께 사용합니다.nmap
tcpdump -ennl -i eth0 arp | grep is-at | tee foo
런타임에 실행됩니다 . 캡처하려는 수 nmap
에 따라 호스트 이름이나 IP별로 추가 제한이 필요할 수 있습니다 .tcpdump
답변3
귀하의 질문과 상호 작용으로 볼 때 MAC가 레이어 2에 있으므로 네트워크에 로컬이라는 것을 이해하지 못하는 것 같습니다.
네트워크 외부의 여러 원격 IP 주소를 검색하는 경우 로컬 게이트웨이/라우터의 MAC 및 IP 주소만 ARP 캐시에 나타납니다.