2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

広告ブロックサーバーを作ろう

Posted at

はじめに

今どき,広告ブロックのソフトウェアはいろいろありますが,あえて自分で作ります。DNSレベルでのブロックなので,ブラウザに限らずいろいろなアプリでの広告ブロックが可能です。

前準備

まず,24時間起動できるデバイスを用意します。ラズパイがおすすめです。ラズパイ3でも十分です。
次にIPv4アドレスを固定するのですが,最近ではルーターでの固定が推奨されているので,ルーターが対応している場合は好きなIPv4アドレスで固定してください。

unboundのインストール

DNSキャッシュサーバであるunboundをつかうのでインストールします

sudo apt update && sudo apt install unbound

unboundの設定

unboundの設定ファイルは/etc/unbound/にあります。
topファイルであるunbound.confはいじらずに,unbound.conf.d/に設定ファイルを作ります。
まずは通常の設定項目ファイルを作ります。

dns.conf
server:
    verbosity: 0
    port: 53
    interface: IPアドレス(v4) # 固定したIPv4アドレス
    interface: 127.0.0.1
    interface: ::1
    interface: IPアドレス(v6) # IPv6アドレス

    # 応答するIPアドレスを入力してください
    # 以下はすべて許可する場合
    access-control: ::0/0 allow 
    access-control: 0.0.0.0/0 allow

    #ローカルでドメインを運用したいしたい場合は設定してください
    #local-data: "exmaple.com. 60 IN A 192.168.1.1"
forward-zone:
    name: "."
    forward-addr: 8.8.8.8 #ISPのDNSやルーターのDNSでも大丈夫です。

次に広告ブロックリストを作ります。いろいろなブロックリストがありますが今回は
(https://servercan.net/blog/2023/07/unbound%E3%81%A7%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%9Fdns%E3%82%B5%E3%83%BC%E3%83%90%E3%81%A7%E8%87%AA%E5%AE%85lan%E4%B8%B8%E3%81%94%E3%81%A8%E5%BA%83%E5%91%8A%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF/)
を参考に広告ブロックリストを作りました。
以下を実行します

touch adblock.conf
echo "server:" > adblock.conf
curl -s https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | \
    grep ^0.0.0.0 - | \
    sed 's/ #.*$//;
    s/^0.0.0.0 \(.*\)/local-zone: "\1" refuse/' | \
    sudo tee -a adblock.conf > /dev/null

いろいろあるので調べてみてください

sudo unbound-checkconf

を実行し,エラーがないことを確認してください

起動

53番ポートを開放し,起動します。
ufw

sudo ufw allow 53

firewalld

firewall-cmd ----permanent --add-port=53/udp --zone=public
firewall-cmd --reload

でポート開放

sudo systemctl enable unbound
sudo systemctl start unbound

で起動します。エラーが起きる場合,最初から入っているリゾルバが動いてるかもしれないので、止めてください。

クライアントの設定

スマホやPCのDNSサーバーを作ったDNSサーバのIPアドレスに設定してください。
IPv4アドレスだけ指定しても動くこともありますが、IPv6での名前解決を試みることが多いのでIPv6のアドレスも指定してください。
Androidの場合IPv4のDNSサーバーしか指定できず,DHCP-v6などでIPv6のDNSサーバが配られているとそれを変えることはできないので,配布をするのをやめるか自宅内VPNなどをして無理やりIPv6で名前解決できないようにしてください。

おわりに

某ニュースサイトや某ゲーム攻略サイトなどで広告が消えてれば完璧です。
インターネットに接続していないと開けないアプリでも広告をブロックできます。
ただし,YouTubeの動画挿入型や,旧Twitterの広告はブロックできないのでプレミアムなどに入りましょう。
ルーターでこの作ったDNSサーバーをIPアドレスを配布すれば,クライアントの設定なく,広告ブロックできます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?