Raspberry Pi를 AP로 사용하여 Nftables를 통해 ARP 요청을 필터링하는 방법(hostapd 사용)

Raspberry Pi를 AP로 사용하여 Nftables를 통해 ARP 요청을 필터링하는 방법(hostapd 사용)

내 네트워크에 있는 특정 IP 주소의 ARP 요청을 필터링하려고 합니다. 나는 이전에 시도했습니다:

table arp filter {
        chain input {
                type filter hook input priority 0; policy drop;
                arp saddr ip 192.168.2.1 counter accept #ISP-Router
                arp saddr ip 192.168.1.100 counter accept #Laptop
                arp operation reply counter accept}}

라우터나 노트북에서 오지 않는 모든 ARP 요청을 삭제해야 합니다. 하지만 내 스마트폰에서 보낸 요청은 여전히 ​​내 노트북에서 수신됩니다. (My Pi는 라우팅 액세스 포인트 역할을 하며 이더넷을 통해 ISP 라우터에 연결되고 AP 기능을 위해 인터페이스 wlan을 사용합니다.)

그런 다음 (적어도 이론상으로는) 먼저 해결되어야 하기 때문에 수신 후크와 함께 netdev 테이블을 사용해 보았습니다.

table netdev wlan {
        chain wlanFilter {
                type filter hook ingress device wlan0 priority 0;
                meta protocol arp counter drop # ARP-requests were still getting from smartphone to laptop, but ARP-Cache on Pi was incomplete afterwards  
                meta pkttype {broadcast, multicast} counter drop # didn´t filter ARP Broadcast}}

나는 또한 Hostapd 기능을 사용해 보았습니다 ap_isolate=1. 같은 결과.

제가 사용하는 Raspberry Pi 운영체제의 커널 버전은 5.10.17-v7+, Hostapd 버전은 2.8-devel, nft 버전은 0.9.6, dnsmasq 버전은 2.80입니다. ip_forward활성화되어 있고 NAT도 활성화되어 있습니다. 나는 브리지를 사용하지 않았지만 철저하게 하기 위해 비슷한 규칙으로 테이블 브리지를 시도했지만 성공하지 못했습니다. 그런 다음 라우팅 대신 액세스 포인트를 연결하도록 전체 설정을 변경했습니다. 모든 규칙 세트를 다시 시도했습니다. 그것도 소용없어요.

Nftables와 같은 패킷 필터가 시행되기 전에 Hostapd가 패킷을 로컬 네트워크로 전달하는 것이 가능합니까? 아니면 내 규칙에 문제가 있는 걸까요? 아니면 완전히 다른 것인가요?

답변1

의견의 일부 사람들이 제안했듯이 핵심은 ap_isolate의 옵션 입니다 hostapd.conf. 이전에는 Raspberry Pi 3 B+에 내장된 네트워크 카드인 BCM43455 칩에 대한 드라이버 지원이 부족하여 작동하지 않았습니다. 일부 Wi-Fi 어댑터에 사용되는 RT5370 칩과 함께 작동합니다. 그래서 저는 설정에서 이들 중 하나를 사용합니다.

또한 일부 구성을 변경해야 합니다.

첫째: predictable interface namesraspi-config에서 활성화하고 이름을 MAC 주소에 바인딩합니다. 이것이 없으면 재부팅 후 wlan0(내부 카드)과 wlan1(외부 카드)의 이름이 바뀌는 경우가 있습니다.

sudo rfkill listsudo rfkill block <number of interface of built-in card>둘째: 네트워크 카드 간의 충돌을 방지하려면 사용 -> 내장 카드 비활성화를 사용하세요 .

그런 다음 사용자 AB의 답변을 따랐습니다.https://superuser.com/questions/1661060/hostapd-how-to-block-only-netbios-broadcasts-to-clients-in-same-wlan-by-applyin머리핀을 활성화하세요.

이제 브리지 제품군을 사용하여 로컬 트래픽을 필터링하는 규칙을 만들 수 있습니다. 예를 들어:

table bridge br0 {
        chain forward {
                type filter hook forward priority 0; policy drop;
        }
}

모든 클라이언트를 격리하는 데 사용할 수 있습니다. 특정 통신을 허용하기 위해 추가 규칙을 사용할 수 있습니다.

table bridge br0 {
        chain forward {
                type filter hook forward priority 0; policy drop;
                ether type arp accept
        }
}

관련 정보