DD-WRTでPixelservを使って広告を削除する方法
ブラウザで広告をブロックする方法はたくさんありますが、ルータで広告をブロックすることができたらどうなりますか?ネットワーク上のすべての機器の広告をブロックするためにDD-WRTファームウェアと意図的な「DNSポイズニング」を使用する方法は次のとおりです。.
概要
更新:コメンターから提供されたフィードバックを反映するようにガイドが更新され、新しいピクセルサーバー実行可能ファイルと変更ログを含むアンチ広告パックが更新されました.
今、みんなが頭に入れている最初の質問は、「なぜ広告ブロックを使わないのか」ということです。
多くの人にとって、特に理由はありません。特に、chromeを実行しているすべてのコンピュータに、使用している拡張機能を複製する新しい機能があります。.
その答えは、ネットワーク上のすべてのユーザーに広告ブロックについて教える必要がないというオーバーヘッドの削減(お母さん、シス、おばあちゃん、そして秘書など)とそれに煩わされないという利便性の間のどこかにあります。設定したすべてのコンピュータ。それはあなたがあなたの個人的な環境を設定しようとしていないあなたのネットワーク上のいくつかのコンピュータがあると仮定しています(例えば「コアサーバー」またはVM).
注意:ホームルーターで以下の方法を使用していますが、ad-blockが優れた追加機能であることがわかりました。両方の方法を組み合わせて使用することをお勧めします。あなたが広告ブロックを使用したDD-WRTルーターを持っていない場合も、それらは十分です。実際、私はこのプログラムがとても好きで、私はその開発者に寄付しました、そしてそれを開発を続けるために、私はみんながそうすることを奨励します.
どのように動作しますか?
基本的にこれは、未承認のリストにあるドメインの特定のIPを返すように故意に私たちのDNSを汚染することによって機能します。この未承認のリストには、広告コンテンツの配信を独占的に担当しているサイトのドメイン名が含まれているため、それらを見逃すことはあまりありません。.
URLリクエストに対する回答として、透明な1ピクセルイメージを提供するために、ルータ上にセカンダリHTTPサーバをセットアップします。 DNSの「間違った」解決策と関連して、これはネットワーククライアントが私たちの内部ピクセルサーバーからコンテンツを要求し、それに応じて空白の画像を取得する原因となります。.
未承認リストを作成するには、動的にダウンロードされた2つのリストと合わせて1つの個人用リストを作成します。動的リストはMVPSホストファイルとYoyoドメインリストで、一緒になって非常に広範な広告サイトのリストを保持しています。これらのリストを活用することで、まだリストに含まれていないサイトの差分を個人のリストに追加する責任があります。.
また、何らかの理由でブロックされたくないドメインには「ホワイトリスト」を設定します。.
前提条件と前提
- 忍耐若い、これは長い読みです.
- この手順は、DD-WRT(v24pre-sp2 10/12/10 mini)で作成およびテストされています。 r15437そのようなものとして、あなたはすでにそれを使うためにあなたのルーターにこのバージョン以降をインストールしておくべきです。もっと詳しい情報はDD-WRTサイトにあります.
- 説明を簡単にするために、ルータは「工場出荷時のデフォルト」に復元されているか、使用されている設定が「出荷時の状態」のプリセットから変更されていないと仮定します。.
- クライアントコンピュータはルーターをDNSサーバーとして使用しています(これがデフォルトです)。.
- JFFSのためのスペース(疑わしいときは、 ミニ DD-WRTのバージョン).
- あなたのネットワークは*すでに設定されており、そのクラスCネットワークの最後のIP(x.y.z)としてクラスC(255.255.255.0のサブネットを持つもの)であると仮定されています。.254)は、ピクセルサーバープログラムに割り当てられます.
- winSCPをインストールする意欲.
*スクリプトは、最初の実行から次の更新サイクル(3日)までブロックリストを調整することはできません。.
クレジット
更新:彼の手を尽くさずにCコードの素晴らしい部分を作ってくれた“ mstombs”、Atheros互換バージョンと引用をコンパイルしてくれた“ Oki”、そしてQA-ingを手伝ってくれた“ Nate”に感謝します。.
私の最後にはこの手順を完成させるための多くの作業がありましたが、それに対するインスピレーションはDD-WRTフォーラムで奮い立たされました。 WRTが(単純な) "、Perlなしのpixelserv、jff / cifs / usbフリーなし"、 "Flexion.Org Wiki on DNSmasq"などを再訪しました。.
割れることができます
SCPアクセスに対してSSHを有効にする
SSHを有効にすることで、SCPプロトコルを使用してルーターに接続することができます。これを有効にすると、winSCPプログラムを使用してルータのフォルダ構造を視覚的にナビゲートできます(後で説明します)。.
これを行うには、webGUIを使用して、「サービス」タブに進みます。 「Secure shell」セクションを見つけて、SSHd設定の「Enable」ラジオボタンをクリックします。.
それが終わったら、WebGUIは以下のように見えるはずです。そして、あなたは「保存」をクリックすることができます(しない まだ応募する).
JFFSを有効にする
そうなるようにこの設定をするためには 安定した, 再現性があり、*「良いインターネット市民」であるため、JFFSを使用してできるだけ多くの構成を保存します。 JFFSを有効にせずにこれを実行する方法は他にもありますが、スペースの制限から考えても構いませんが、ここでは説明しません。.
*他の方法では、スクリプトが実行されるたびにルーターにピクセルサーバー実行可能ファイルと動的リストがダウンロードされます。これはリストと実行可能ファイルを保持するサーバーに負担をかけ、これは誰かにお金がかかるので、この方法は可能ならばそれを避けようとします。.
JFFSとは何かがまだわからない場合は、DD-WRTのJFFSに関するwikiのエントリから引用したこの説明を読んでください。
ジャーナリングフラッシュファイルシステム(JFFS)を使用すると、DD-WRT対応ルータ上に書き込み可能なLinuxファイルシステムを作成できます。 Ipkgやデータなどのユーザープログラムを、それ以外の方法でアクセスできないフラッシュメモリに保存するために使用されます。これにより、カスタム設定ファイルを保存したり、ルーターに保存されたカスタムWebページをホストしたり、JFFSなしでは実行できないその他の多くのことが可能になります。.
ルーターでJFFSを有効にするには、[管理]タブに移動して[JFFS]セクションを見つけます。下の図は、[管理]タブ内のこのセクションの場所を示しています。.
「JFFS2サポート」セクションで、「JFFS2」および(表示されている場合は)「クリーンJFFS2」設定の「有効にする」ラジオボタンをクリックします。選択したら、[保存]をクリックします.
設定が保存されたら、それでも[管理]タブにある[ルーターの再起動]ボタンを使用してルーターを再起動します。これにより設定が適用され、JFFSの「パーティション」に必要な「フォーマット」が実行されます。.
WebGUIが再起動から「管理」タブに戻ったら、さらに30分待ってページを更新します。.
成功すれば、JFFSマウントには図のように空きスペースがあることがわかります。.
ピクセルサーバーの設定
dd-wrt zipアーカイブ用のアンチ広告パックをダウンロードして解凍します。このファイルには、ピクセルサーバーの実行可能ファイル(「ホットリンク」を避けるためだけのものです)、広告ブロックスクリプト(あなたの書いたもの)、 「Mithridates Vii Eupator」と私が作成したドメインリスト.
ファイルをルーターのJFFSマウントに取り込む時が来ました。これを行うには、winSCPをインストールし(それは "next - > next - > finish"タイプのセットアップです)、それを開きます。.
メインウィンドウで、このような情報を記入して下さい:
ホスト名:あなたのルーターのIP(デフォルトは192.168.1.1)
ポート番号:22のままに
ユーザー名: ルート (webGUIのユーザー名を変更した場合でも、SSHユーザーは常に* root *になります。)
秘密鍵ファイル:空白のままにします(これは、キーペアベースの認証を作成した場合にのみ必要です)。
ファイルプロトコル:SCP
winSCPは反対側に本格的なLinuxを期待しているのでDD-WRTの開発者たちはすべての優れた仕事にもかかわらず提供することができなかったので、我々は以下に示すように "Lookup user group"も無効にする必要があります。 (主にスペースが足りないため)。これをチェックしたままにしておくと、編集したファイルを接続して保存するときに怖いメッセージが表示されます。.
[詳細設定]を選択し、[ユーザーグループの検索]のチェックを外します。.
オプションですが、後で使用するために設定を保存することを選択できます。あなたが推奨する設定を保存することを選択した場合、それはまたあなたがパスワードを保存することをお勧めします(私たちはSSHの存在そのものを非難しているという「セキュリティ妄想」亡命からのあからさまな叫び).
メインウィンドウは図のようになります。ルーターに接続するには、エントリをダブルクリックするだけです。.
あなたがルーターに接続するのは今回が初めてなので、あなたが向こう側の指紋を信頼しても構わないかどうかwinSCPは尋ねます。 「はい」をクリックして続けます。.
DD-WRTの開発者はあなたがインストールしたファームウェアについての情報を含むバナーウェルカムメッセージを実装しました。赤くなったら、「このバナーを二度と表示しない」チェックボックスと「続ける」をクリックします。.
接続したら、最上位のフォルダ(AKAルート“ /”)に移動してから“ / jffs”に戻ります。これはルーターのファイルシステム上で唯一の永久書き込み可能な場所です(“ / tmp”は再起動後も存続しません)。そして残りは読み取り専用です).
F7キーを押すか空白の場所を右クリックして、[新規作成]の上にカーソルを移動し、[ディレクトリ]をクリックして新しいフォルダーを作成します。.
新しいディレクトリに「dns」という名前を付けます。 jffsディレクトリ内のものを将来の使用に備えて整理しておくためにこのディレクトリを作成しています。DNSサービスの機能の仕方をほとんど変更しているからです。.
anti-ads-pack-for-dd-wrt zipアーカイブから「pixelserv」および「disable-adds.sh」ファイルを選択し(「insert」キーを使用)、「F5」を押してから「Copy」を押してコピーします。 」.
注:ルーターがAtherosベースの場合(DD-WRT wikiで確認できます)、Okiから提供され、パックに含まれているpixelserv_AR71xxを使用し、続行する前に「pixelserv」に名前を変更する必要があります。.
ファイルがルーターに配置されたら、それらを選択して実行可能にする必要があります(ここでも「挿入」を使用します)右クリックして「プロパティ」.
プロパティウィンドウで、[所有者]行の[X]をクリックします。それはファイルに実行許可を与えるでしょう.
ルーター設定
ステージが設定されたので、起動時に広告ブロックスクリプトを実行するようにルータに指示できます。.
これを行うには、WebGUIで[管理]タブに移動し、次に[コマンド]タブに移動します。.
[Commands]テキストボックスに、図のようにスクリプトの場所を「/jffs/dns/disable_adds.sh」と入力し、[Save Startup]をクリックします。.
成功すれば、上の図のようにスクリプトがルーターの起動の一部になっているはずです。.
個人用ブロックドメインリストを設定する(オプション)
このリストを使用すると、2つの動的リストが何かをキャッチしない場合は、未承認リストにドメインを追加できます。.
これを行うには、2つのオプションがあり、それらは連携して動作するので、あなたにとってより便利なものに従って両方を使用することができます。.
注意: の 構文は重要です, 実際には、DNSMasqデーモン(DNS名からIPへの変換を担当するプロセス)が直接使用する構成ディレクティブを作成しています。そのため、ここで誤った構文を使用するとサービスがクラッシュし、ルータがドメイン名のIPアドレスを解決できなくなります(警告されています)。.
ブロックする問題のあるドメイン名を見つけるためには、私たちの「Webサイトのヘッダーから秘密のメッセージを探す」ガイドを入門書として使用することをお勧めします。広告ドメインの名前を検索する手順は実際には同じですが、この場合はメッセージではなくアドレスを検索しているだけです。.
最初 確かにもっとアクセスしやすい方法は、リストをwegGUIの「DNSMasq」設定ボックスに入れることです。これは、このリストに追加するためには、変更を加えるために「内部に」行かなくてもwebGUIにアクセスするだけでよいためです。.
[サービス]タブに移動し、[DNSMasq]セクションを見つけます。[Additional DNSMasq Options]テキストボックスがあります。.
このテキストボックスに、次の図に示すように、ブロックするドメインのリストを構文「address = /ドメイン名からブロック名/ pixel-server-ip」で入力します。
この例では、「192.168.1.254」は、LANの「ネットワークアドレス」に基づいてピクセルサーバ用に生成されたIPです。あなたのネットワークアドレスが192.168.1.x以外のものであれば、それに応じてピクセルサーバのアドレスを調整する必要があります。.
終了したら、ページ下部の[保存]をクリックします(まだ適用しないでください).
二番目 オプションは、ブロックしたいドメインのリストを、私自身と「Mithridates Vii Eupator」が組み立てた「personal-ads-list.conf」ファイルに合成することです。このファイルは先にダウンロードしたzipアーカイブの一部であり、両方の方法にとって素晴らしいスタートです。.
必要に応じてそれを使用するために、ピクセルサーバーのIPを調整するためにあなたの好きなテキストエディタを使用してください(上記と同じ制約がここにあてはまります)。他のファイルと同じように、それを「/ jffs / dns」ディレクトリにコピーするだけです。それがそこにあると、あなたはそれを編集してドメインを追加するためにwinSCPを使うことができます.
ホワイトリストの設定
これは動的な「hosts」リストおよび「domains」リストから除外されるドメインのリストです。.
一部のドメインをブロックするだけでそれらを使用しているサイトが誤動作するため、これが必要です。最も注目に値する例は“ google-analytics.com”です。.
ドメインをブロックしても、それを使用するサイトが、ページを離れるなどのイベントで動作するJavaScriptをブラウザにダウンロードさせるという事実は変わりません。つまり、そのようなサイトでは、ブラウザはGoogleドメインに連絡して「自宅に電話をかけよう」とし、返信を理解できず、次のページに進むにはスクリプトがタイムアウトするまで待つ必要があります。それはほとんど快適なサーフィン体験ではないため、「google-analytics」と「googleadservices」を含むドメインは*ハードコードされてフィルタリングを免除されています。.
このリストは、スクリプトが初めて実行されたときに、 "/ jffs / dns"ディレクトリの下に、上記のドメインとともに作成されます。.
ホワイトリストを使用するには、winSCPと**でファイルを開きます。つける 空白行を残さないように注意しながら、除外するドメインをリストに追加します(空白行を残すと、すべてのリストからすべてのドメインが削除されます)。.
*スクリプトは最初の実行でその中のドメインでホワイトリストを作成しますが、それは将来の実行のために彼らのプレゼントを主張しません。そのため、上記の問題が発生してもGoogleをブロックする必要があると思われる場合は、ホワイトリストからドメインを削除できます。.
**リストの最初に必要な新しいドメインを入力する必要があります。これは、bashが新しい行をどのように解釈するかに関するバグが原因です。.
実行
これはそれです、それはスクリプトを呼び出し、ルータを単に再起動することによって結果を見るためにやっと時間です.
webGUIからこれを行うには、[Administration]タブの下の[Management]に戻り、ページの一番下にある[Reboot router]をクリックして、ルータが再起動するのを待ちます。.
スクリプトが初めてその役割を実行するのに数分かかることがあります。.
WRT54Gxタイプのルータでは、スクリプトがルータの前面にあるオレンジ色のLEDを点滅させるため、スクリプトの実行が完了したことがわかります(他のルータにも同様の「tell tail」記号があります)。.
更新:この部分は、ハードウェアにとらわれない機能であることが判明した後、*削除されました。.
Web上に要素が存在しないことを確認しようとしているので、その影響を確認するには、単にいくつかのサイトにアクセスすることをお勧めします。.
ただし、手順が成功したことを確認するには、トラブルシューティングのセクションの最初のデバッグ手順を参照してください。.
*それは実際にはコメントアウトされているので、それがあなたのセットアップで問題を引き起こさないであろうならあなたはそれを元に戻すことができます.
楽しい!
トラブルシューティング
問題に遭遇した場合、何が悪かったのかをチェックするためにできることがいくつかあります。.
- 広告ドメインがpixelserv IPに解決されることをテストする.
これを行うには、「問題のある」ドメインに対してnslookupコマンドを発行します。たとえば、「ad-emea.dubleclick.com」は個人リストからブロックされているホストの一部です。コマンドプロンプトで「nslookup ad-emea.dubleclick.com」を発行すると、結果は次のようになります。
ブロックされていない通常の回答は次のようになります。 - やり直す.
ルーターの設定が広告ブロックの設定と衝突しないようにするには、ルーターを「工場出荷時の設定」に戻してからやり直してください。成功したら、それらが再び衝突しないことを期待して、カスタムの変更を追加します。. - クライアントがルーターをDNSとして使用していることを確認してください。.
特に、通常のルーターからコンピューターへのセットアップよりも複雑なVPNやネットワークを使用している場合は、クライアントコンピューターが単にルーターをDNSとして使用していない可能性があります。上記のコマンドで、クライアントが使用しているDNSサーバーは何ですか?IPがルーターと同じでない場合は、問題があります。. - パーソナルマシンのDNSキャッシュを消去する.
それ以外の場合は、テストしているサイトへの広告がまだ表示されている可能性があるためです。DNSに問い合わせることなく、広告コンテンツを自分で取得する方法をコンピュータが既に知っているからです。 Windowsでは、これは“ ipconfig / flushdns”になります。. - ブラウザを閉じる.
ブラウザはキャッシュされた情報を保持していることがあるので、上記のようにDNSキャッシュをクリアしても意味がありません。. - 疑わしいときに再起動.
キャッシュが持続することがあり、それらを取り除くための最善の方法は再起動することです。ルータから始めて、問題が解決しない場合はクライアントコンピュータ. - syslogを使う.
ルータのsyslogデーモンをアクティブにしてから、メッセージを調べて、スクリプトで問題が発生したかどうかを確認することができます。また、スクリプトはデバッグを容易にするためにいくつかのコマンドエイリアスを追加します。.
これを行うには、「サービス」タブに移動し、下の図のようにsyslogデーモンを有効にします。
注:「Remote Server」は、他のマシン上に待機Syslogサーバがある場合に使用されます(のように)。 キウイ)持っていない場合は、空白のままにしてください.
有効にされれば、デバッグメッセージを見ることによってデバッグメッセージを見ることができます / var / logs / messages 端末内のファイル.
*起動時のすべてのメッセージを見るには、 "more / var / log / messages"を使うことができます。.
*ログ内のスクリプトからのメッセージだけを見るには、“ clog”エイリアスを使用します。.
*メッセージが入ってくるのをリアルタイムで確認するには、「tail -f / var / log / messages」またはその別名「tlog」を使用します。. - スクリプトを理解する.
このYouTubeビデオをこのガイドとスクリプトの古いバージョン用に作成したにもかかわらず、新しいバージョンと改善されたバージョンの動作方法に適用可能な多くの真実と説明が残っています。.