저는 20개의 Raspberry Pi(클라이언트)와 1개의 서버로 구성된 네트워크를 보유하고 있습니다. 클라이언트 요청의 MAC을 확인하고 싶은데 가능한가요?
또한 고객이 알지 못하는(그리고 눈에 띄지 않는) 것일 수도 있습니까?
참고: 제 목적은 고객이 가짜/모조품인지 확인하는 것입니다. NB2: VPN 옵션이 실행 중입니다. 하지만 여전히 MAC을 확인하고 싶습니다.
답변1
귀하의 서버는 Linux 호스트입니까?
클라이언트 화이트리스트가 있는 경우 iptables
특정 입력 포트에서만 해당 클라이언트의 요청을 수락할 수 있습니다. dmesg에서 불량 클라이언트의 요청을 기록할 수도 있습니다.
다음 스크립트는 MACCHECK
승인된 3개의 MAC에서 패킷을 수락하고 로깅을 통해 다른 패킷을 삭제하는 체인을 정의합니다. 그런 다음 INPUT
체인의 모든 tcp/80 또는 tcp/443 패킷을 MACCHECK
.
iptables -N MACCHECK
iptables -A MACCHECK -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
iptables -A MACCHECK -m mac --mac-source yy:yy:yy:yy:yy:yy -j ACCEPT
iptables -A MACCHECK -m mac --mac-source zz:zz:zz:zz:zz:zz -j ACCEPT
iptables -A MACCHECK -m limit --limit 3/hour -j LOG --log-prefix "Bad host: "
iptables -A MACCHECK -j DROP
iptables -A INPUT -p tcp -m tcp --dport 80 -j MACCHECK # Checking all HTTP requests
iptables -A INPUT -p tcp -m tcp --dport 443 -j MACCHECK # Checking all HTTPS requests
모든 클라이언트는 서버와 동일한 네트워크에 있어야 합니다.
답변2
만약 있다면직접Raspberry Pi와 클라이언트 간의 연결, 즉 라우팅 없음그리고둘 다 같은부분, 이것은 가능하다. 예를 들어 ARP 확인을 사용하면 됩니다 arp <client_ip_address>
.
답변3
클라이언트의 MAC는 클라이언트가 동일한 네트워크 세그먼트에 있는 경우에만 확인할 수 있습니다(예: 사이에 라우터가 없음(스위치도 괜찮음)). Traceroute를 사용하면 이를 확인할 수 있습니다. traceroute 192.0.2.1
장치 중 하나의 주소가 192.0.2.1인 서버에서 실행 중인 경우 대상인 단일 홉만 보고해야 합니다.나샤의그리고야에가시의대답은 이를 수행하는 방법을 설명합니다.
그러나 가능하더라도 MAC은 쉽게 위조될 수 있으므로 MAC 확인은 실제로 보안을 제공하지 않습니다. 대부분의 이더넷 장치는 소프트웨어에서 MAC를 설정할 수 있습니다.
하드웨어 장치를 식별하는 데에는 기본적으로 암호화라는 한 가지 방법이 있습니다. 저장하다개인 키개인 키를 소유하고 있음을 증명하기 위해 인증 작업을 수행하게 합니다.
분명히 웹 애플리케이션을 사용하고 있으므로 이를 위한 도구가 있습니다.TLS 클라이언트 인증서. HTTPS 프로토콜을 사용하고 클라이언트가 개인 키를 사용하여 웹 서버에 인증하도록 합니다.
그러나 이 VPN을 어떻게 사용하느냐에 따라 유사한 기능을 제공할 수도 있고 제공하지 않을 수도 있습니다.