2014年10月9日木曜日

OpenWrtでホストリストベースの接続拒否 (広告のブロッキング)

先日、DD−WRTで同じことをやりました。

やってる内容は単純で、以下の通りです。
  1. 広告などをホスティングしているサーバのホスト名を調査
  2. 調査したホスト名を家庭内DNSに0.0.0.0を参照するよう登録し、ブロック
まず、ブロックするホストリストのファイルを登録します。Network→DHCP and DNSから、Server Settingsの所の、Resolve and Hosts Filesを選びます。ここの、Additional Hosts filesに、"/etc/hosts0"などと書き込みます。


書き込んだらSave & Applyです。後は、/etc/hosts0ファイルにブロックしたホストを書き込みます。まずsshでログインして、/etc/hosts0ファイルを作成し、1行毎に、"0.0.0.0 ブロックしたいホスト名"をずらずらと記入します。ソートする必要は、多分ありません。


0.0.0.0 ad2.nend.net
0.0.0.0 ad.applipromotion.com
0.0.0.0 ad.i2idata.com
0.0.0.0 adm.shinobi.jp
0.0.0.0 adsp.i2idata.com
0.0.0.0 api.unthem.com
0.0.0.0 blogroll.livedoor.net
0.0.0.0 c1.nend.net
0.0.0.0 cache.ssend.microad.jp
0.0.0.0 cas.criteo.com
0.0.0.0 cdn.applipromotion.com
0.0.0.0 cdni.amoad.com
0.0.0.0 connect.facebook.net
0.0.0.0 j.amoad.com
0.0.0.0 js.ad-stir.com
0.0.0.0 js.kau.li
0.0.0.0 js1.nend.net
0.0.0.0 m.amoad.com
0.0.0.0 pubads.g.doubleclick.net
0.0.0.0 rc4.i2i.jp
0.0.0.0 sh.adingo.jp
0.0.0.0 spad.i-mobile.co.jp
0.0.0.0 spcdnpc.i-mobile.co.jp
0.0.0.0 spdeliver.i-mobile.co.jp
0.0.0.0 y.one.impact-ad.jp
最後に以下を実行したら作業は完了です。
# killall -HUP dnsmasq
ちゃんとブロックされているかどうか、確かめます。
# nslookup adm.shinobi.jp
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

Name:      adm.shinobi.jp
Address 1: 0.0.0.0 ad2.nend.net
ブロックされてますね。

後は、/etc/sysupgrade.confファイルに、"/etc/hosts0"を追加しておくと、バージョンアップ時に何かで間違って上書きされることがなくなります。


以下、設定内容の説明など
  • IPアドレスを127.0.0.1でなく、0.0.0.0としているのは、localhostでwebを立ち上げている時に混乱しないようにするためだそうです
  • IPv6でブロックしたい場合は、0.0.0.0の代わりに、"::"と書きます。1行でいうと、 ":: ブロックしたいホスト名"となります。ただやったことはないので、それでいけるはず!というレベルです
上記では、僕の気付いたホストだけ制限しています。上記をやっても、まだ広告が出て邪魔だなあなんていう場合は、新たに自分でブロックするホストを追加する必要があるでしょう。その際は、ブロックする広告サイトの見つけ方を参考にやってみて下さい。

また、面倒だったら、OpenWrtのNetwork→DHCP and DNS→General Settings→Log queriesをチェックしてセーブすると、syslogにqueriesの内容がダンプされますので、そこでadとか付いてるホスト名を登録しまくるのもいいかもしれません。登録を終えたら、Log queriesのチェックを外すのをお忘れなく。

0 件のコメント:

コメントを投稿