ブラウザで広告をブロックする方法はたくさんありますが、ルーターで広告をブロックできるとしたらどうでしょうか。使用方法は次のとおりです DD-WRT ネットワーク上のすべてのデバイスの広告をブロックするためのファームウェアと意図的な「DNSポイズニング」。
概要概要
更新 :コメント投稿者から提供されたフィードバックを反映するようにガイドが更新され、 アンチ広告パック 新しいピクセルサーバー実行可能ファイルと変更ログを使用します。
今、みんなの頭に浮かぶ最初の質問は、「なぜただ使うのではないのか」です。 広告ブロック ?”
多くの人にとって、特に理由はありません。特に、Chromeを実行しているすべてのコンピューターに使用する拡張機能を複製するChromeの新しい機能があります。
答えは、ネットワーク上のすべてのユーザーに次のことを教える必要がないというオーバーヘッドの削減の間のどこかにあります。 広告ブロック (お母さん、おばあちゃん、おばあちゃん、オフィスの秘書と話しています)そして、セットアップするすべてのコンピューターでそれを気にしないという便利さ。これは、個人環境を構成しないコンピューター(「コアサーバー」やVMなど)がネットワーク上にあることを前提としています。
注意 :ホームルーターで以下の方法を使用しているのに、 広告ブロック 優れた追加機能であるため、両方の方法を組み合わせて使用することをお勧めします。 DD-WRTルーターを使用していない場合も 広告ブロック それらで十分です。実際、私はこのプログラムがとても好きで、その開発者に寄付しました。開発を続けるために、すべての人にそうすることをお勧めします。
それはどのように機能しますか?
基本的に、これはDNSを意図的にポイズニングして、未承認リスト内のドメインの特定のIPを返すことで機能します。この未承認のリストには、広告コンテンツの配信のみを担当するサイトのドメイン名が含まれているため、見逃すことはありません。
URLリクエストへの回答として、透明な1ピクセルの画像を提供するようにルーターにセカンダリHTTPサーバーをセットアップします。 DNSの「間違った」解決と組み合わせて、これにより、ネットワーククライアントは内部ピクセルサーバーからコンテンツを要求し、それに応じて空白の画像を取得します。
未承認のリストを生成するために、動的にダウンロードされた2つのリストと組み合わせて1つの個人リストを作成します。動的リストは MVPS ホストファイルと ヨーヨードメインリスト 、一緒に彼らは広告サイトの非常に広範なリストを保持しています。これらのリストを活用することにより、私たちの個人的なリストに、まだそれらの1つに含まれていないサイトのデルタを追加する責任が残ります。
また、何らかの理由でブロックされたくないドメインの「ホワイトリスト」を設定します。
前提条件と前提条件
- 若い方の忍耐、これは長い間読んでいます。
- この手順は、DD-WRT(v24pre-sp2 10/12/10 mini)で作成およびテストされました。 R. 15437 )、そのため、それを使用するには、このバージョン以降がルーターにインストールされている必要があります。詳細については、 DD-WRTサイト 。
- 説明を簡単にするために、ルーターが「工場出荷時のデフォルト」に復元されているか、使用されている設定が「すぐに使用できる」プリセットから変更されていないことを前提としています。
- クライアントコンピューターはルーターをDNSサーバーとして使用しています(これがデフォルトです)。
- JFFS用のスペース(疑わしい場合は、 ミニ DD-WRTのバージョン)。
- ネットワークは*すでに設定されており、そのクラスCネットワーク(x.y.z.)の最後のIPとしてクラスC(サブネットが255.255.255.0のネットワーク)であると想定されています。 254 )はピクセルサーバープログラムに割り当てられます。
- インストールする意欲 winSCP 。
*スクリプトは、最初の実行後、次の更新サイクル(3日)までブロックリストを調整できません。
クレジット
更新 :Cコードのすばらしい部分を提供してくれた「mstombs」に感謝します。これはすべて不可能です。「Oki」はAtheros互換バージョンと引用をコンパイルしてくれました;-)そして「Nate」はQAを手伝ってくれました。 。
私の側ではこの手順を完成させるために多くの作業がありましたが、そのインスピレーションはDD-WRTフォーラムの人々によって発火され、このガイドの基礎のいくつかは「 DD-WRTによる広告ブロックの再検討(単純) ”、 “ Perlなし、jffs / cifs / usbフリーなしのpixelserv 「と」 DNSmasqのFlexion.OrgWiki 「他の人と同様に。
ひびが入りましょう
SCPアクセスのためにSSHを有効にする
SSHを有効にすることで、SCPプロトコルを使用してルーターに接続できるようになります。これを有効にすると、winSCPプログラムを使用して、ルーターのフォルダー構造を視覚的にナビゲートできます(後で説明します)。
これを行うには、webGUIを使用して、[サービス]タブに移動します。 「セキュアシェル」セクションを見つけて、SSHd設定の「有効」ラジオボタンをクリックします。
それが完了すると、webGUIは次のようになり、[保存]をクリックできます( しないでください まだ適用してください)。
JFFSを有効にする
この設定を次のようにするために 安定 、再現可能で、*「優れたインターネット市民」であるため、JFFSを使用して可能な限り多くの構成を格納します。スペースの制限のためにできない場合は、JFFSを有効にせずにこれを行う方法は他にもありますが、ここでは説明しません。
*他の方法では、スクリプトが実行されるたびに、ルーターがピクセルサーバーの実行可能ファイルと動的リストをダウンロードします。これはリストと実行可能ファイルを保持するサーバーに負担をかけ、誰かにお金がかかるため、この方法は可能であればそれを回避しようとします。
JFFSとは何かをまだ知らない場合は、この説明を DD-WRTwikiエントリについて JFFSは問題を解決する必要があります。
ジャーナリングフラッシュファイルシステム(JFFS)を使用すると、DD-WRT対応ルーター上に書き込み可能なLinuxファイルシステムを配置できます。 Ipkgやデータなどのユーザープログラムを、他の方法ではアクセスできないフラッシュメモリに保存するために使用されます。これにより、カスタム構成ファイルを保存したり、ルーターに保存されたカスタムWebページをホストしたり、JFFSなしでは不可能な他の多くのものをホストしたりできます。
ルーターでJFFSを有効にするには、「管理」タブに移動し、「JFFS」セクションを見つけます。下の図は、「管理」タブ内のこのセクションの場所を示しています。
[JFFS2サポート]セクションで、[JFFS2]および(表示されている場合は)[CleanJFFS2]設定の[Enable]ラジオボタンをクリックします。選択したら、「保存」をクリックします。
設定が保存されたら、「管理」タブで、「ルーターの再起動」ボタンを使用してルーターを再起動します。これにより、設定が適用され、JFFS「パーティション」の必要な「フォーマット」が実行されます。
webGUIが再起動から[管理]タブに戻ったら、さらに30分待ってから、ページを更新します。
成功すると、図のようにJFFSマウントに空き領域があることがわかります。
ピクセルサーバーのセットアップ
ダウンロードして抽出します dd-wrtzipアーカイブ用のアンチ広告パック これには、ピクセルサーバーの実行可能ファイル(クレジットは取得せず、「ホットリンク」を回避するだけです)、広告ブロックスクリプト(本当にあなたが作成したもの)、および「MithridatesViiEupator」と私が作成したパーソナルドメインリストが含まれています。
ファイルをルーターのJFFSマウントに入れる時が来ました。これを行うには、インストールします winSCP (これは「次へ–>次へ–>終了」タイプのセットアップです)そしてそれを開きます。
メインウィンドウで、次のような情報を入力します。
ホスト名:ルーターのIP(デフォルトは192.168.1.1)
ポート番号:22のまま変更なし
ユーザー名: ルート (webGUIのユーザー名を変更した場合でも、 SSHユーザーは常に* root *になります )
秘密鍵ファイル:空白のままにします(これは、まだ行っていない鍵ペアベースの認証を作成する場合にのみ必要です)
ファイルプロトコル:SCP
また、以下に示すように「ユーザーグループの検索」を無効にする必要があります(これを指摘してくれたmstombsに感謝します)。winSCPは、DD-WRTの開発者が優れた作業をすべて行ったにもかかわらず、提供できなかった本格的なLinuxを期待しているためです。 (主に、十分なスペースがないためです)。これをチェックしたままにすると、 怖いメッセージ 編集したファイルを接続して保存するとき。
Advanceを選択し、「Lookupusergroups」のチェックを外します。
オプションですが、後で使用するために今すぐ設定を保存することを選択できます。推奨される設定を保存することを選択した場合は、パスワードを保存することもお勧めします(SSHの存在そのものを冒涜している「セキュリティパラノイド」亡命からの完全な叫びにもかかわらず)。
次に、メインウィンドウが図のようになり、ルーターに接続するために必要なのは、エントリをダブルクリックすることだけです。
ルーターに接続するのはこれが初めてなので、winSCPは、反対側の指紋を信頼するかどうかを尋ねます。 「はい」をクリックして続行します。
DD-WRTの開発者は、インストールしたファームウェアに関する情報を含むバナーウェルカムメッセージを実装しました。赤になったら、[このバナーを二度と表示しない]チェックボックスと[続行]をクリックします。
接続したら、最上位のフォルダー(別名ルート「/」)に移動し、「/ jffs」に戻ります。これは、ルーターのファイルシステム上で永続的に書き込み可能な唯一の場所です(「/ tmp」は再起動後も存続しません)。残りは読み取り専用です)。
F7キーを押すか、空白の場所を右クリックして、[新規]にカーソルを合わせ、[ディレクトリ]をクリックして、新しいフォルダを作成します。
新しいディレクトリに「dns」という名前を付けます。このディレクトリを作成するのは、将来の使用のためにjffsディレクトリ内のものを整理しておくためであり、DNSサービスの動作方法をほとんど変更しているためです。
「pixelserv」ファイルと「disable-adds.sh」ファイルをanti-ads-pack-for-dd-wrtzipアーカイブから選択し(「挿入」キーを使用)、「F5」を押してから「コピー」を押してコピーします。 」。
注:ルーターがAtherosベースの場合(これは DD-WRT wiki )続行する前に、沖電気が提供し、パックに含まれているpixelserv_AR71xxを使用し、名前を「pixelserv」に変更する必要があります。
ファイルがルーターに配置されたら、ファイルを選択して(ここでも「挿入」を使用)、右クリックして「プロパティ」を選択して実行可能にする必要があります。
プロパティウィンドウで、「所有者」行の「X」をクリックします。これにより、ファイルに実行権限が付与されます。
ルーター設定
ステージが設定されたので、起動時に広告ブロックスクリプトを実行するようにルーターに指示できます。
これを行うには、webGUIで[管理]タブに移動し、次に[コマンド]タブに移動します。
「コマンド」テキストボックスに、図のようにスクリプトの場所を「/jffs/dns/disable_adds.sh」と入力し、「スタートアップの保存」をクリックします。
成功すると、上の図のように、スクリプトがルーターの起動の一部になっていることがわかります。
個人用ブロックドメインリストの設定(オプション)
このリストを使用すると、2つの動的リストで何かが検出されない場合に、未承認のリストにドメインを追加できます。
これを行うには、2つのオプションがあり、それらは連携して機能するため、より便利な方法に応じて両方を使用できます。
注意 : ザ・ 構文は重要です 、DNSMasqデーモン(DNS名からIPへの変換を担当するプロセス)が直接使用する構成ディレクティブを実際に作成しているため。そのため、ここでの構文が正しくないと、サービスがクラッシュし、ルーターがドメイン名のIPアドレスを解決できなくなります(警告されています)。
ブロックする問題のあるドメイン名を見つけるために、私たちの「 Webサイトのヘッダーで秘密のメッセージを見つける 」入門書としてのガイド。広告ドメインの名前を見つける手順は実質的に同じですが、この場合はメッセージではなくアドレスを探しているだけです。
最初 確かにもっとアクセスしやすい方法は、リストをwegGUIの「DNSMasq」構成ボックスに入れることです。これは、このリストに追加するために、変更を加えるために「内部」に移動する必要がなく、単にwebGUIにアクセスできるためです。
[サービス]タブに移動し、[DNSMasq]セクションを見つけて、[追加のDNSMasqオプション]テキストボックスを見つけます。
このテキストボックスに、次の図に示すように、「address = / domain-name-to-block / pixel-server-ip」という構文でブロックするドメインのリストを入力します。
この例では、「192.168.1.254」は、LANの「ネットワークアドレス」に基づいてピクセルサーバー用に生成されたIPです。ネットワークアドレスが192.168.1.x以外の場合は、それに応じてピクセルサーバーのアドレスを調整する必要があります。
終了したら、ページの下部にある[保存]をクリックします(まだ適用しないでください)。
二番目 オプションは、ブロックしたいドメインのリストを、私と「MithridatesViiEupator」が集めた「personal-ads-list.conf」ファイルに合成することです。このファイルは、以前にダウンロードしたzipアーカイブの一部であり、両方の方法の優れた出発点です。
これを使用するには、必要に応じて、お気に入りのテキストエディタを使用して、ピクセルサーバーのIPを調整します(上記と同じ制約がここに適用されます)。次に、他のファイルと同じように、それを「/ jffs / dns」ディレクトリにコピーするだけです。そこに入ると、winSCPを使用して編集し、ドメインを追加できます。
ホワイトリストの設定
これは、動的な「ホスト」リストと「ドメイン」リストから除外されるドメインのリストです。
一部のドメインをブロックするだけで、それらを使用しているサイトが誤動作するため、これが必要です。最も注目すべき例は「google-analytics.com」です。
ドメインをブロックしても、それを使用するサイトが、ページを離れるなどのイベントで実行されるJavaScriptをブラウザにダウンロードさせるという事実は変わりません。これは、そのようなサイトの場合、ブラウザがGoogleドメインに接続して「自宅に電話」しようとし、返信を理解できず、スクリプトがタイムアウトして次のページに進むまで待つ必要があることを意味します。これは、快適なサーフィンエクスペリエンスとは言えません。そのため、「google-analytics」と「googleadservices」を含むドメインは、*ハードコードでフィルタリングが免除されます。
このリストは、スクリプトが初めて実行されるときに、上記のドメインを使用して「/ jffs / dns」ディレクトリの下に作成されます。
ホワイトリストを使用するには、winSCPと**でファイルを開きます パーペンド 空白行を残さないように注意しながら、除外するドメインをリストに追加します(空白行を残すと、すべてのリストからすべてのドメインが削除されます)。
*スクリプトは最初の実行時にドメインを含むホワイトリストを作成しますが、将来の実行のためにドメインを要求することはありません。したがって、前述の問題にもかかわらずgoogleをブロックする必要があると思われる場合は、ホワイトリストからドメインを削除できます。
**リストの最初に必要な新しいドメインを入力する必要があります。これは、bashが新しい行を解釈する方法にバグがあるためです…申し訳ありませんが、まだ回避策がありません。
実行
これで、ついにスクリプトを呼び出して、ルーターを再起動するだけで結果を確認できます。
webGUIからこれを行うには、[管理]タブで[管理]に戻り、ページの下部にある[ルーターの再起動]をクリックして、ルーターが復旧するのを待ちます。
スクリプトが初めてその役割を実行するのに数分かかる場合があります。
WRT54Gxタイプのルーターでは、スクリプトの実行がいつ終了したかがわかります。 ルータの前面にあるCiscoオレンジ色のLEDを点滅させます (他のルーターにも同様の「テールテール」記号が必要です)。
更新:この部分は、ハードウェアに依存しない機能であることが判明した後、*削除されました。
Webに要素がないことを確認しようとしているので、いくつかのサイトにアクセスして影響を確認することをお勧めします。
ただし、手順が成功したことを確認したい場合は、トラブルシューティングセクションの最初のデバッグ手順から始めるのが最適です。
*実際にはコメントアウトされているため、セットアップで問題が発生しないことが確実な場合は復元できます。
楽しい!
トラブルシューティング
問題が発生した場合、何が悪かったのかを確認するためにできることがいくつかあります。
-
アドバタイズメントドメインがpixelservIPに解決されることをテストします。
これを行うには、「問題のある」ドメインに対してnslookupコマンドを発行します。たとえば、「ad-emea.dubleclick.com」は、個人リストからブロックされたホストの一部です。コマンドプロンプトで「nslookupad-emea.dubleclick.com」を発行すると、結果は次のようになります。
通常のブロックされていない回答は次のようになります。
-
やり直す。
ルーターの設定で広告ブロックの構成と衝突していないことを確認するには、ルーターを「工場出荷時のデフォルト」に復元して、再試行してください。成功したら、二度と衝突しないことを期待して、カスタム変更を追加します。 -
クライアントがルーターをDNSとして使用していることを確認してください。
特に、通常のルーターからコンピューターへのセットアップよりも複雑なVPNまたはネットワークを使用している場合、クライアントコンピューターがルーターをDNSとして使用していない可能性があります。上記のコマンドで、クライアントが使用しているDNSサーバーを確認するのは非常に簡単です。IPがルーターと同じでない場合は、問題が見つかりました。 -
パーソナルマシンのDNSキャッシュをクリアします。
これは、それ以外の場合でも、テスト対象のサイトに広告が表示される可能性があるためです。これは、DNSを参照せずに、コンピューターが広告コンテンツを独自に取得する方法をすでに知っているためです。 Windowsでは、これは「ipconfig / flushdns」になります。 -
ブラウザを閉じます。
ブラウザが情報をキャッシュして保持している場合があるため、上記のようにDNSキャッシュをクリアしても効果がありません。 -
疑わしい場合は再起動してください。
キャッシュが存続する場合があり、キャッシュを取り除く最善の方法は再起動することです。ルーターから始めて、問題が解決しない場合は、クライアントコンピューター。 -
Syslogを使用する
。
ルーターのsyslogデーモンをアクティブにしてから、メッセージを調べて、スクリプトで問題が発生していないかどうかを確認できます。また、スクリプトはデバッグを容易にするためにいくつかのコマンドエイリアスを追加します。
これを行うには、「サービス」タブに移動し、次の図のようにsyslogデーモンを有効にします。
注:「リモートサーバー」は、別のマシンにリスニングsyslogサーバーがある場合に使用されます( キウイ )お持ちでない場合は、空白のままにしてください。
有効にすると、デバッグメッセージを確認できます。 / var /ログ/メッセージ のファイル ターミナル 。
*起動時のすべてのメッセージを表示するには、「more / var / log / messages」を使用できます。
*ログ内のスクリプトからのメッセージのみを表示するには、「clog」エイリアスを使用します。
*メッセージが届いたときにリアルタイムで表示するには、「tail -f / var / log / messages」またはそのエイリアス「tlog」を使用します。 -
スクリプトを理解します。
作ったのに このYouTubeビデオ このガイドとスクリプトの古いバージョンの場合でも、新しいバージョンと改善されたバージョンの動作に適用できる多くの真実と説明が含まれています。