![](https://habrastorage.org/files/2ef/d81/35c/2efd8135ceb441f6a3d8cc0d08861199.jpg)
この記事は、同志との小さな議論の論理的な結論です。 「 非常に迷惑な広告からホームインターネットをクリーンアップする(OpenWRTの広告ブロッカー ) 」というトピックの下で展開されたvvzvladで、著者はOpenWRTでwget 、 sed 、 cronを使用して広告ホストファイルを正常にマージし、 dnsmasqを解析して dnsサーバーに送信します。
「広告」ドメインを要求するときにクライアントを転送すると、たとえば、広告コテントの代わりにループバック( 127.0.0.1-127.255.255.255 )になります。クライアントは有益な「無」を受け取ります( もちろん、ローカルホストでリッスンするローカルWebサーバーがない場合) ) フィルタリングメカニズムは非常に古く、欠陥がないわけではありません。 たとえば、ホストマスク(* .ad-domain.tld)や、要求されたリソースでバナーがホストされている「カット」広告を指定することはできません。 しかし、どのプロトコルにも縛られておらず、操作は非常に簡単です。 さらに、たとえばDNSサーバーとして使用される家庭やオフィスのルーターで使用すると、ハードウェアのIPが最初にDNSサーバーとして登録されているすべてのガジェットで広告が正常に切断されます。
しかし、カスタムファームウェアを備えたルーターの代わりに... MikroTik ( RouterOS )を使用すると、その機能にはいくつかの制限が課せられますか? このカットでは、ホストファイルを適切な形式に正常に「 変換 」する方法、このビジネスを自動化する方法、このプロセスを自動化するためにhabra-humansにボーナスサービスを作成する方法( 小規模、完全無料、オープンソース )を学習します。
MikroTikをカスタマイズする
ハードウェア自体をセットアップしても、問題が生じることはほとんどありません。 DHCPの最初のDNSサーバーとしてルーターのIPを指定します-「IP」→「DHCPサーバー」→「ネットワーク」→%default config%。 MikroTik自体のIPを最初に処方する場合は、[OK]をクリックします。
![](https://habrastorage.org/files/fd9/55d/3d7/fd955d3d7716475ea087718901041939.png)
DNSサーバーはそのまま使用でき、そのストック設定を変更することさえできません。
![](https://habrastorage.org/files/7e4/702/d34/7e4702d34fa44d1899eb7d6e1be04a63.png)
関心のある唯一のボタンは「静的」(「静的ルート」)で、「広告」ドメインを登録して、そのようなリクエストのリダイレクト先を示す必要があります。
ホストファイルの変換
ホストファイルの形式は次のとおりです。
# Any comments 127.0.0.1 localhost 127.0.0.1 domain-a.tld 127.0.0.1 domain-b.tld
静的DNSルートを使用したMikroTikのスクリプト形式:
# Any comments /ip dns static add address=127.0.0.1 name=localhost add address=127.0.0.1 name=domain-a.tld add address=127.0.0.1 name=domain-b.tld
最初のリストを取得して2番目のリストに変換するには、シェル(デスクトップ( bash )など)で簡単なコマンドを実行します。
- リストをダウンロードして、.
./hosts_list.2
、../hosts_list.2
などの名前で慎重にスタックします。
$ src=('http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext' 'https://adaway.org/hosts.txt'); i=0; for file in ${src[*]}; do i=$((i+1)); wget --no-check-certificate -O "./hosts_list.$i" "$file"; done;
- '
127.0.0.1
'で始まるすべてを食べ、コメントを削除し、ドメイン名のみを残し、重複を削除し、空の行を削除し、各ドメインをインポートコマンドとして配置します。
$ in="./hosts_list.*" && out="./adblock_dns.rsc" && host='127.0.0.1'; echo "/ip dns static" > $out && grep '127.0.0.1 ' $in | grep -v '^#' | cut -d' ' -f 2 | sort -u | grep . | sed "s/^/add address=$host name=/" >> $out && rm -f $in; wc -l $out;
はい、レギュラーシーズンを使用し、一般的にすべてをやり直す必要がありますが、最も重要なことは、あなたに私の考えを伝えたことです。それはあなた次第です
出力で、
adblock_dns.rsc
ファイルを取得します。このファイルは、内容が正しいことをさらに確認するのに不必要ではありません。
MikroTikへのインポート
受信したファイルをインポートするために、ftpを介してルーターにしがみつき、
adblock_dns.rsc
、次にsshにしがみつくか、実行するターミナルを開きます。
- バックアップコピーを作成します( 結果のバックアップをコンピューターに保存することをお勧めします )。
/system backup save
- テーブルに重要なルートがない場合、利用可能なすべてのレコードをバングできます。
/ip dns static remove [/ip dns static find]
- ダウンロードしたファイルをインポートします。
/import adblock_dns.rsc
- 私たちは自分の後にクリーンアップします。
/file remove adblock_dns.rsc
これで、( オプションで )MikroTikを再起動し、DHCPを介してDNSサーバーアドレスを受信する正確さを確認し、以前に広告であふれたリソースを開くことができます-著しく小さくなるはずです。
〜5500レコードをインポートする場合、GUIで静的ルートテーブルを開こうとすると、Mikrotik hAP lite(650MHz @ RAM 32 Mb)がほぼ少し立ち上がることが経験的に証明されています。 再起動が役立ちます
自動化
最も単純な自動化オプションの1つは、 bash上のスクリプトです 。これは、たとえばftpによってパブリックドメインにあるクラウンの
adblock_dns.rsc
状態に維持します。 その基礎はすでに上で説明されています、それはあなたの裁量でそれを発行することだけに残っています( あなたは別の車が必要です )。
別のオプションは、同じOpenWRTがインストールされているまさにまたは隣接するMikroTikでMetaRouterを使用することです ( 別のマシンの必要性を取り除きます。このオプションは、まともなMikroTikがない場合は詳しく説明しません )。
2番目のスクリプト( MikroTik上の )はそれをピックアップ(
adblock_dns.rsc
)し、バックアップを作成し、ファイルが正常にダウンロードされ、バックアップが正常に保存された場合、利用可能なすべてのルートを
adblock_dns.rsc
後にインポートします( アテンション ):
:local hostScriptUrl "ftp://user:login@ftp_host:21/adblock_dns.rsc"; :local scriptName "adblock_dns.rsc"; :local backupFileName "before_stopad"; :local logPrefix "[StopAD]"; do { /tool fetch mode=ftp url=$hostScriptUrl dst-path=("./".$scriptName); :if ([:len [/file find name=$scriptName]] > 0) do={ /system backup save name=$backupFileName; :delay 1s; :if ([:len [/file find name=($backupFileName.".backup")]] > 0) do={ /ip dns static remove [/ip dns static find]; /import file-name=$scriptName; /file remove $scriptName; :log info "$logPrefix AD block script imported, backup file (\"$backupFileName.backup\") created"; } else={ :log warning "$logPrefix Backup file not created, importing AD block script stopped"; } } else={ :log warning "$logPrefix Backup file not downloaded, script stopped"; } } on-error={ :log warning "$logPrefix AD block script download FAILED"; };
ハブラリュドフのボーナス
しかし、自宅/オフィス/ガレージにMikroTikがあり、メタファイルやホストをftpファイルで上げることなく、広告をカットするか、ホストの更新を自動化したい場合はどうすればよいでしょうか?
そうです、あなたはそれを手に入れる誰かが必要です。 そして、ボーナスとして-このようなことはすでに提起されています。
意味は次のとおりです。目的のページに移動し、設定を指定し、指定した設定のスクリプトが利用できるURLを取得するだけです。 完成したスクリプトのソースコードも提供されます。 現在実装されている機能:
- パブリックホストファイルのリストから選択します( Android向けAdAwayに感謝 )。
- ソースを示したいですか? 問題ありません! ( たとえば、同じgist.github.comにある3つのパブリックホストファイルと2つの独自のホストファイルを指定して、病棟ルーターの静的ルートを管理するかなり便利な手段を取得できます );
- 構成可能なアドレス( IP v4 )リダイレクト。
- 最終スクリプトのエントリ数の制限( limit )の表示( 「誤って」鉄片を「誤って」入れないため )。
- ルートの表示(ルートは生成されたスクリプトに最初に追加されるだけです);
- 例外を指定する機能-必要なドメインが「ブロック」されることはありません。
- MikroTik用の既製スクリプトの非常に便利な生成。
パーサーは、PHP( php5-curlが必要 )、 MITライセンスで書かれており、ソースはmikrotik-hosts-parserで入手できます。 サービスの存続期間-推測することはできませんが、長い間期待しています。 habraeffectに耐性のあるサイトは、同志によって親切に提供されました drakmail 、彼とcgood.ruチームに感謝します。
リンク: MikroTik DNS Stop AD
注意! 以前に上記のリンクからスクリプトを使用していて、それが突然機能しなくなった場合-それを更新する理由を知っています。 まず最初に、そこですべてを試して、その更新版を入手してください。その後、すべてが正常に機能するはずです。 ご不便をおかけして申し訳ありません!
Diclamer:1. cgood.ruチームはサービスに関連していません。 2.誰かがルーターでコードを実行できるようにするのは良くありません。 したがって、教育目的でのみ使用することをお勧めします。 あなたがすべてが好きなら、フォーク、あなた自身のための気分を作り、あなたの健康を使用してください。 作業の中断、Habra効果、またはエラーのエラーについて、誰も責任を負いません。 3.可能な限り長い間、すべてが正常に機能するようにあらゆる努力をしますが、責任の程度を理解する必要があります。
テキストにサービスまたはタイプミスのエラーが見つかった場合は、PMで報告してください。 事前に感謝します!
更新!
スクリプトソースは完全に書き直されました。 現在、これはLumenの本格的なアプリケーションであり、すべてのソースがリポジトリにあります。
「Stopad.generate.club」は、残念ながら永遠に横たわっています。 しかし、すべてがそれほど悪いわけではありません! 2つのミラー(cgood.ruチームの1つ、非常に強力なミラー)、2番目のミラー-私の控えめなVDS-keで。 私のものが真実であるという事実は、控えめな以上のものです;注意して使用してください。
参考文献 :
新しいアドレス(cgood.ruチームから): stopad.cgood.ru
予約サイト: stopad.kplus.pro