VPN DNS 필터: 이름을 차단해도 광고는 차단되지 않는다
dnsmasq 규칙은 이름에 NXDOMAIN으로 응답할 뿐 페이지를 읽지 않습니다. 광고 제거를 약속하기 전에 클라이언트 측 차단기가 하는 일과 비교해 보십시오.
dnsmasq 한 줄은 이름에 NXDOMAIN으로 응답할 수 있고, 그것이 전부입니다. 이 규칙은 HTML을 읽지도, 요청 경로를 살피지도, 애플리케이션이 이미 연 연결로 무엇을 하는지 보지도 않습니다. 따라서 브라우저 확장과 비교하는 것은 서로 다른 두 작업을 비교하는 일입니다. 하나는 이름이 해석되는지를 정하고, 다른 하나는 그다음에 무슨 일이 일어나는지를 정합니다.
이름 필터가 실제로 제어하는 것
마지막 슬래시 뒤에 아무것도 두지 않은 address=/metrics.example/ 옵션은 확인자가 그 이름과 하위 도메인에 NXDOMAIN을 돌려주게 만듭니다. 주소를 비워 두는 것이 중요한 부분입니다: 관련 없는 대체 서버로 클라이언트를 보내거나 루프백 주소를 실제 목적지처럼 보이게 하는 일을 피합니다. dnsmasq 설명서는 이 형태를 리디렉션이 아니라 부정 응답으로 설명합니다.
규칙이 할 수 있는 모든 것은 그 하나의 결정에서 나옵니다. 이 확인자에 묻는 클라이언트는 부정 응답을 받고, 다른 확인자에 묻는 클라이언트는 그 확인자가 말하는 것을 받습니다. 필터는 애플리케이션이 썼을 경로, 쿼리 문자열, 계정을 전혀 알지 못합니다.
이 세밀함이 중요한 이유는 하나의 호스트 이름이 흔히 여러 목적을 겸하기 때문입니다. 로그인 엔드포인트, 이미지, 추적이 같은 도메인을 공유할 수 있고, 이름 전체를 없애는 규칙은 작업 흐름까지 없앨 수 있습니다. 이름 수준 정책은 그 맞바꿈을 받아들이거나 더 좁은 이름을 골라야 합니다.
클라이언트 측 차단기가 다른 점
브라우저 확장은 요청이 나가기 전에 보므로 URL 경로를 맞추고, 특정 요청을 취소하고, 결과를 표시했을 요소를 숨길 수 있습니다. example.com/article을 허용하면서 example.com/ads/를 거부할 수 있는데, 어떤 DNS 응답도 이를 표현하지 못합니다. 이 경로 수준의 시야가 바로 확인자에게는 없는 능력입니다. 한 도구를 위해 만든 필터 목록이 다른 도구에서 좀처럼 같게 동작하지 않는 이유도 여기에 있습니다.
대가는 범위입니다. 그 보호는 브라우저 하나, 프로필 하나, 기기 하나 안에 살고, 사용자가 다른 애플리케이션으로 옮기면 사라집니다. 게이트웨이에 설정한 DNS 필터는 게이트웨이 확인자를 쓰는 모든 기기를 덮으며, 확장을 설치할 수 없는 기기도 포함합니다.
두 방식 모두 그 자체로는 완전하지 않습니다. DNS 필터는 페이지가 이미 보낸 식별자를 지울 수 없고, 브라우저 확장은 그것을 전혀 불러오지 않는 애플리케이션을 보호할 수 없습니다.
확인자 경로가 이 중 무엇이 적용되는지를 정한다
VPN이 DNS 서버를 알리면서도 모든 쿼리를 받지는 못할 수 있습니다. 암호화 DNS를 설정한 브라우저, 자체 확인자를 가진 애플리케이션, 게이트웨이를 지나지 않는 네트워크 경로의 기기는 모두 다른 곳을 봅니다. 모바일 플랫폼은 터널이 제안하는 것을 조용히 덮어쓰는 사설 DNS 설정을 점점 더 제공합니다.
그러니 정책이 아니라 경로를 시험하십시오. 의도한 확인자에 게이트웨이에서 직접 질의하고, 다음으로 클라이언트에서 질의해 비교한 뒤, 차단되어야 할 이름이 사용자가 실행하는 애플리케이션에서 실제로 실패하는지 관찰하십시오.
캐시된 응답과 열린 소켓이 이를 시끄럽게 만듭니다. 리소스를 이미 불러온 페이지는 규칙이 바뀐 뒤에도 계속 동작하므로, 오래된 탭을 새로 고치는 것보다 새 연결이 더 나은 시험입니다.
결과를 주장하기 전에 양방향을 시험하라
의도적으로 차단한 문서용 이름, 허용된 공개 이름, 서비스가 필요로 하는 사설 이름을 사용하십시오:
$ dig +short metrics.example @10.40.0.53
$ dig +short example.com @10.40.0.53
$ dig +short intranet.corp.internal @10.40.0.53
차단된 이름에 빈 응답, 공개 이름에 정상 주소, 내부 이름에 사설 주소가 함께 나오면 필터링과 상위 해석, 로컬 레코드가 모두 동작한다는 뜻입니다. 셋 다 실패하면 필터가 아니라 상위나 리스너 문제를 보고 있는 것입니다.
내부에 공개하는 모든 글에서 주장을 좁게 유지하십시오. 이것은 확인자에서의 도메인 필터링이며, 콘텐츠 검사도, 경로 필터링도, 아무도 추적되지 않는다는 약속도 아닙니다. 모든 조회를 기록하는 필터에는 그 자체의 프라이버시 비용이 따르므로, 정책 소유자와 예외 경로, 쿼리 보존 기간을 규칙과 함께 적으십시오.