문제

서버에서 클라이언트의 mac address 를 알아낼 수 있을까


결론

같은 네트웍망에 물려있다면 가능하지만, 서로 다른 네트웍망에 속해 있다면 불가


배경지식

  • ARP란? Address Resolution Protocol
    • IP 주소에 대응되는 이더넷카드의 하드웨어 주소(MAC주소)를 알아내는 프로토콜
  • MAC adress란? Media Access Control address
    • 앞 3자리는 네트웍카드 제조회사 고유 코드, 뒤 3자리는 네트웍카드 고유 번호
  • ARP 테이블 조회 명령
    $ arp -a
    ? (169.254.143.159) at b8:44:d9:56:6f:92 on en0 [ethernet]
    ? (169.254.197.202) at ac:e0:10:60:71:d on en0 [ethernet]
    ? (169.254.214.31) at e4:70:b8:ee:4e:d1 on en0 [ethernet]
    


노드에서 mac-address 조회 방법

node-arp 를 설치하고 아래와 같이 처리

var arp = require('node-arp');
 
arp.getMAC('192.168.0.1', function(err, mac) {
    if (!err) {
        console.log(mac);
    }
});

(단, 로컬의 arp table 을 조회하기 때문에 동일한 네트웍이 아닐 경우에는 활용 불가)


Ref.

https://m.blog.naver.com/sbd38/50191972929