Raspberry PI + Arch Linux + Unbound 自分メモ

 噂の Raspberry PI(ラズパイ)を1年前に衝動買いしたものの、しばらくは使途がなく放置。
 夏頃に掘り出してきて宅内DNSサーバー(キャッシュサーバー)として使うようになりました。


 卑猥なネット広告をシャットアウトすることが第一目的だったのですが、卑猥でなくても鬱陶しいと感じた広告サイトも一緒に遮断していった結果、かなり良い感じになってきたころ、久しぶりに

# pacman -Syu

してみたんですよ。
 そしたら、「not enough free disk space」とか出てきちゃいまして、検索すると SDカード の容量に関わらず、インストール時のデフォで 2GB(1.7GB)しかパーティション確保しないという情報を見つけてしまいます。
 こちらの方 の手順に従って見よう見まねでパーティション拡大を試みたところ、ものの見事に失敗し、ブートすらしない状態に成り果ててしまいました(涙)


 あえなく最初から再構築する羽目に陥ったので、自分メモを兼ねて、構築手順をメモっておきます。


http://dl.ftrans.etr.jp/?af85d6ac65db4dceba3808574f35116977a349f3.jpg

  • 公式サイト に Arch Linux のシステムイメージがなくなっているが NOOBS LITE を使うと導入できた
  • 最新版では最初からSDカードの容量一杯にパーティション確保するぽい(手動で拡張しなくてよい)
  • IPアドレスの固定方法は、ころころ変わるみたいで、現時点の最短方法を記述してみた
  • デフォルトの管理者アカウント root/root でログイン
  • とりあえず最新パッケージに更新
# pacman -Syu
# reboot
  • 軟弱と言われようが vi の代わりを入れる
# pacman -S nano
  • sshのパスワード認証をローカルのみに限定
# nano /etc/ssh/sshd_config

 末尾に以下追加

PasswordAuthentication no

Match Address 192.168.1.*
    PasswordAuthentication  yes
# ln -sf /dev/null /etc/systemd/network/80-container-host0.network
# nano /etc/systemd/network/eth0.network
[Match]
Name=eth0

[Network]
#DHCP=both
DNS=192.168.1.1
Address=192.168.1.2/24
Gateway=192.168.1.1
# reboot
  • Unbound導入
# pacman -S unbound
# nano /etc/unbound/unbound.conf
server:
    # trust-anchor-file: trusted-key.key
    interface:      0.0.0.0
    access-control: 0.0.0.0/0 allow

    local-zone:"i-mobile.co.jp" redirect
    local-data:"i-mobile.co.jp 86400 IN A 127.0.0.1"

    local-zone:"doubleclick.net" redirect
    local-data:"doubleclick.net 86400 IN A 127.0.0.1"

    local-zone:"google-analystics.com" redirect
    local-data:"google-analystics.com 86400 IN A 127.0.0.1"

    local-zone:"microad.jp" redirect
    local-data:"microad.jp 86400 IN A 127.0.0.1"

forward-zone:
    name:           "."
    forward-addr:   192.168.1.1
# systemctl start unbound.service
# systemctl enable unbound.service
  • 正引きテスト
# drill www.yahoo.co.jp @127.0.0.1

telnet 192.168.1.1

# dhcp service server
# dhcp server rfc2131 compliant except remain-silent
# dhcp scope 1 192.168.1.10-192.168.1.99/24
# dhcp scope option 1 dns=192.168.1.2                  ←これ追加


 これで DHCPサーバー(ルーター)からアドレスをもらって動く宅内の全ての端末でフィルタリングが有効になります。


 Unbound.conf の中身を見てもらうと分かりますが、あんな風に拒絶したいサイトのドメインを列挙することでフィルタリングします。
 それ以外にも遮断したいサイトがあれば、同じように書き連ねましょう。
(Unbound.confを編集したら、Unboundサービスを再起動させる必要あり。よく分からない人はシステムごと reboot !)


 遮断したいサイトへの接続を 127.0.0.1(自マシン)にリダイレクトさせてますが、すべてのリクエストに淡々と 200 だけ返す Webサーバー(ダミーサーバー?) をお持ちであれば、そのサーバーアドレスにしておいたほうがベター。


(追記)2015/02/01
 ラズパイ や Beagle Board と言った Linux むけマシンのほか、ECS LIVA など、5V で動作するパソコンボードが増えてきました。
 そーいう省電力パソコン向けに、予算1000円ほどで高効率な UPS を作りました。


 5Vな小型パソコン向け高効率 UPS の製作 をどうぞ。


(追記)2015/02/11
 本稿は Arch Linux の場合ですが、Raspbian で同様のことやる手順を自分むけメモとして書きました。
 Raspberry PI + Raspbian + Unbound 自分メモ


 ラズパイ2B からは Arch Linux がサポート外になってしまったし、これから構築される方は Raspbian を使ったほうがいいと思います。