dnsmasq を介してサーバー側の広告ブロック メカニズムを作成しようとしていますが、ローカル ネットワークに接続されたコンピューターではなく、サーバー自体でのみ結果が得られます。
まず、ルーターがデフォルトの DNS サーバーなので、すべてのデバイスを dnsmasq サーバーをプライマリ DNS として使用するように設定する必要があります。自分でホストしている Web サイトの 1 つにアクセスしてみると、動作を確認できます。ローカルでアクセスできる場合は、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 インスタンスを使用していないのではないかと思います。