dnsmasq를 통해 서버 측 광고 차단 메커니즘을 만들려고 하는데, 로컬 네트워크에 연결된 컴퓨터가 아닌 서버 자체에서만 결과를 얻습니다.
우선, 내 라우터가 기본 DNS 서버이므로 dnsmasq 서버를 기본 DNS로 사용하도록 모든 장치를 설정해야 합니다. 자체 호스팅 웹사이트 중 하나에 액세스하려고 하면 작동하는지 확인할 수 있습니다. 해당 웹사이트에 로컬로 액세스할 수 있으면 dnsmasq DNS가 작동하는 것입니다. 이와 관련하여 모든 것이 정상입니다.
그런 다음 광고 차단 부분입니다. 내 서버와 기본 컴퓨터 모두에 다음 명령을 입력하여 차단이 작동하는지 확인합니다.
# nslookup doubleclick.net
서버에서 다음을 얻습니다.
Server: 192.168.1.51
Address: 192.168.1.51#53
Name: doubleclick.net
Address: 192.168.1.51
그래서 거기에서 작동합니다.
내 컴퓨터에는 다음이 표시됩니다.
Server: 80.67.0.2
Address: 80.67.0.2#53
Non-authoritative answer:
Name: doubleclick.net
Address: 70.32.146.212
그럼 여기서는 안 되는데...
내 설정은 다음과 같습니다.
dnsmasq의 구성 디렉토리를 설정했습니다.
conf-dir=/usr/local/etc/dnsmasq.d
사이트에서 광고 서버 목록을 가져오고 dnsmasq에서 읽을 수 있는 항목으로 컴파일하는 스크립트로 채워진 dnsmasq.adlist.conf 파일을 거기에 넣습니다.
간단히 말해서, dnsmasq에 의해 차단된 도메인은 서버 내에서 올바르게 리디렉션되지만 다른 장치에서는 리디렉션되지 않습니다. dnsmasq가 새로 추가된 도메인 목록을 브로드캐스트하지 못하는 것과 같습니다.
이 문제를 해결하는 데 도움이 되는 정보를 제공해 드릴 수 있습니다. 또한 이 광고 차단 실험 이전의 구성이 잘못되었음을 나타낼 수도 있습니다. 어쨌든 쉽게 해결되길 바라겠습니다...
내 서버는 FreeBSD 9.3에 있습니다.
답변1
요청을 캐시하는 항목이 있는데 DNS 캐시를 플러시하지 않으면 문제가 발생할 수 있습니다.
OS는 DNS 항목을 캐시하여 DNS 변경 사항이 직접 표시되지 않는 경우가 많습니다.
Windows fe의 경우 다음과 같은 방법으로 DNS 캐시를 지울 수 있습니다.
ipconfig /flushdns
답변2
한동안 nslookup을 사용하지 않았지만 그 결과 이름 확인이 192.168.1.51(귀하의 라우터라고 가정)이 아닌 80.67.0.2에 대해 수행되었다는 뜻이 아닙니까?
아마도 귀하의 컴퓨터가 이름 확인을 위해 dnsmasq 인스턴스를 사용하지 않는 것 같습니다.