ラズパイでDNSサーバを立ち上げてみた話
経緯
2024年末あたりに、昔の同僚と飲んで帰る途中でラズパイの話になりました。
これまでラズパイを買ったことがなく、そろそろ試しに何かやってみるかな、と思い購入してみました。
この度選んだのは Raspberry Pi 4 Model B のスターターキットです。
DNSサーバを立ち上げて広告ブロックしてみる
調べてみると、ラズパイでDNSサーバを立ち上げて、そこで特定のドメインを0.0.0.0に向き先を変えることで広告ブロックができるということがわかりました。
広告ブロックを使用している各端末でやるより一元管理できた方が便利かな、と考えラズパイの練習がてら導入してみることにしました。
注意事項
この記事は広告ブロックを推奨するものではありません。
広告ブロックを導入するのは自己責任となります。
やること
- OSのインストール
- Wi-Fiのセットアップ
- aptアップデート
- Localeの設定
- ルータの設定で固定IPを割り当て
- ssh接続を行えるようにする
- Pi-holeのセットアップ
OSのインストール
SDカードにOSをインストールする
↑ ここからツールをインストールしてOSをSDカードに入れることができる。
ssh接続できるようにユーザー名の設定とキーの発行を行う。
Raspberry-Piを起動する
モニタ接続
モニタのHDMIから本体のusb-aに繋げる。
Wi-Fiのセットアップ
OSインストール時に設定してもうまくつながらなかったので、きちんと繋がってるか確認する。
aptアップデート
ターミナルを開いて、下記のコマンドでアップデートする。
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo reboot
Localeの設定
Raspi menu > Preferences > Raspberry Pi Configuration > Localisation > Set Locale
GB (United Kingdom) から US (United States) に変更する。
Character Set を ISO から UTF-8 に変更する。
Raspberry-Pi に固定IPを割り当てる
(1) Raspberry-Pi のMACアドレスを調べる。
# MACアドレスとIPアドレスをルータへ割り当てる
# 下記のコマンドで一番下の link/ether の後に続く値がMACアドレス
$ ip a # link/ether d8:3a:dd:c3:0c:b5
(2) ルータの設定
- ルータの設定画面にアクセスする。
- [詳細設定]をクリック。
- [LAN]-[DHCPリース]を選択。
- MACアドレスが一致している機器の「手動割当に変更」ボタンをクリック。
- 192.168.11.50 に設定。
- Raspberry-Pi側でWi-Fiに接続しなおす。
Raspberry-Pi にssh接続できるようにする
Raspberry-Pi側でターミナルを開く。
$ sudo raspi-config
> 3 Interface Options
を選択
> I1 SSH
Yes
別端末側で接続してみる
$ ssh fumiaki.ogura@192.168.11.50
Pi-holeのセットアップ
調べてみたところDNSサーバはPi-holeを利用するのがオーソドックスな方法のようだったので、こちらを利用します。
Admin画面が用意されて、広告ブロックで便利な機能やインターフェイスが提供されています。
下記のコマンドでインストールできます。
# 全部 Yes か Continue で進める。
$ curl -sSL https://install.pi-hole.net | sudo bash
広告の許可/ブロックを行うフィルターのリストは、手動で管理する以外にも自動登録を行ってくれるツールもあります。
今回は pihole5-list-tool を導入しました。
他にも有志の方々がListをtxtファイルで提供していただいていたりします。
# インストール
$ sudo pip3 install pihole5-list-tool --upgrade
# 実行
$ sudo pihole5-list-tool
再度ルータの設定
最後にルータのDNSサーバアドレスをラズパイのIPアドレスにします。
使用してみて
- pros
- 機器ごとに個別設定せずとも広告を非表示にできて良い。
- Admin画面は機能が豊富で、White/Black Listの登録も簡単。
- ブロックを停止したい時は管理画面でワンクリックで止められて便利。
- cons
- White/Black Listへの登録は簡単だけど、登録したいドメインを調べるのが難しい。
- Admin画面で Query Log が見れるので、そこから辿っていくしかない。
- DNSサーバでのブロックなので、youtubeの広告などには対応できない。
- 意図的に広告を開きたい場合に不便。
- インスタの広告の先のページを見れない、漫画アプリで広告が再生できない等。
- White Listに入れようにも解除する必要があるドメインがわかりづらかったりします。
- 家庭内のネットワークに影響を与えるので、家族にメリデメをちゃんと説明して、同意が取れていないと非難される。
- 嫁さんが広告見たい派&リンク先へ飛びたい派だった。
- 嫁さんの会社の社内システムにVPNを通してじゃないと繋がらなくなった。
- ネットワークの不調があるとラズパイが疑われた。
- White/Black Listへの登録は簡単だけど、登録したいドメインを調べるのが難しい。
Discussion