ipset/nft "허용 목록"이 포함된 dnsmasq 종속 포털

ipset/nft "허용 목록"이 포함된 dnsmasq 종속 포털

저는 일종의 종속 포털을 만들기 위해 dnsmasq를 사용하고 있습니다.

아이디어는 다음과 같습니다. dnsmasq기본적으로 모든 DNS 요청을 로컬 IP( address=/#/123.123.123.123) 에 다시 작성하고 nginx"액세스 제한 페이지"를 표시하도록 여기에 이미 설정되어 있습니다.

하지만 일종의 제외 목록을 추가하고 싶습니다.

ipset create captive-allowed hash:ip
ipset add captive-allowed 222.222.222.222

여기에는 다시 작성해서는 안되는 클라이언트의 IP 주소가 포함되며 실제 IP를 전달하기 /#/위해 dnsmasq를 프록시로 사용합니다 .1.1.1.1/1.0.0.1

내가 이해했듯이 dnsmasq의 ipset 설정은 각 도메인에서만 작동합니다. 그래서 나는해야합니다 :

ipset=/google.com/captive-allowed/go.ogle.real.ip
ipset=/amazon.com/captive-allowed/ama.zon.real.ip
... billion records more ...

내 가정이 맞나요? 아니면 제가 뭔가를 놓치고 있는 걸까요?

답변1

dnsmasq를 통해 그런 작업을 전혀 수행하지 마세요. DNS를 포함시키면 불필요한 복잡성만 추가됩니다(캐싱, DNSSEC 실패, 우발적으로 우회하기 쉬움 등). 대신 iptables/nft만 사용하여 IP 수준에서 모든 HTTP 패킷을 리디렉션하세요( -j DNAT또는 를 통해 DNAT 사용 -j REDIRECT). 예를 들어:

-A FORWARD_CAPTIVE -m set --match-set AllowedClientsMAC src -j ACCEPT
-A FORWARD_CAPTIVE -j REJECT
<...>
-A PREROUTING_CAPTIVE -m set --match-set AllowedClientsMAC src -j ACCEPT
-A PREROUTING_CAPTIVE -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.1.53
-A PREROUTING_CAPTIVE -p tcp -m udp --dport 53 -j DNAT --to-destination 192.168.1.53
-A PREROUTING_CAPTIVE -p tcp -m tcp --dport 80 -j REDIRECT
-A PREROUTING_CAPTIVE -p tcp -m tcp --dport 443 -j REDIRECT

관련 정보