wheezy向けの旧ページはこちら

5.DNSキャッシュサーバーの立て方(BIND) - RaspberryPiで各種サーバー作り! - ある阪大生の物置小屋

2016年10月〜2018年3月の期間中に、DNSSECのルートゾーン鍵の更新がなされます。(KSKロールオーバー
これに伴い、「/etc/bind/bind.keys」の更新が必要です。「/etc/bind/bind.keys」をこちらの内容で上書きするなどして対応してください。

DNSはドメイン名とIPアドレスを結びつけるためのプロトコルです。
これは非常に重要なプロトコルで、現在のインターネットを成り立たせているものの一つと言っても過言ではありません。
家庭でDNSキャッシュサーバーを立てる利点としては、

等の利点があります。
ここでは、代表的なDNSサーバー「BIND」を利用して、DNSキャッシュサーバを立てる方法について説明します。

5.1.「BIND」のインストール

「BIND」をインストールするには、以下のコマンドでインストールできます。

sudo apt-get install bind9

5.2.「BIND」の設定

  1. BINDの設定ファイル「/etc/bind/named.conf.options」を以下のように編集する。
    (変更)
    dnssec-validation auto;
    ↓
    dnssec-validation yes;
    
    listen-on-v6 { any; };
    ↓
    listen-on-v6 { localhost; localnets; };
    
    (追加)
    dnssec-enable yes;
    cleaning-interval 15;
    max-cache-size 30M;
    version "None";
    max-ncache-ttl 30;
    max-cache-ttl 3600;
    allow-transfer { none; };
    allow-query { localhost; localnets; };
    allow-recursion { localhost; localnets; };
    listen-on { localhost; localnets; };
    
  2. BINDの設定ファイル「/etc/bind/named.conf」を以下のように編集する。
    (追加)
    include "/etc/bind/bind.keys";
    
  3. 以下のコマンドで、iptablesの設定を書き換え、DNSの通信ができるようにする。
    sudo iptables -A INPUT -j ACCEPT -s (DNSを利用するネットワークアドレス)/(サブネットマスク) --protocol udp --destination-port 53
    sudo iptables -A INPUT -j ACCEPT -s (DNSを利用するネットワークアドレス)/(サブネットマスク) --protocol tcp --destination-port 53
    sudo iptables -A OUTPUT -j ACCEPT -m owner --uid-owner (bindユーザのユーザーID) --protocol udp --destination-port 53
    sudo iptables -A OUTPUT -j ACCEPT -m owner --uid-owner (bindユーザのユーザーID) --protocol udp --source-port 53 -m state --state RELATED,ESTABLISHED
    sudo iptables -A OUTPUT -j ACCEPT -m owner --uid-owner (bindユーザのユーザーID) --protocol tcp --destination-port 53
    sudo iptables -A OUTPUT -j ACCEPT -m owner --uid-owner (bindユーザのユーザーID) --protocol tcp --source-port 53 -m state --state RELATED,ESTABLISHED
    
    bindユーザのユーザーIDは以下のコマンドで調べられる。
    id -u bind
    
    2.5.の通り、iptablesの設定の変更後は以下のコマンドで設定を記録しておくこと。
    sudo iptables-save | sudo tee /etc/iptables/rules.v4
    
  4. 以下のコマンドで、BINDに設定を読み直しさせます。
    sudo systemctl reload bind9
    
  5. 「/etc/dhcpcd.conf」を以下のように編集して、Raspbian自体がBINDを利用するようにする。
    interface eth0
    static domain_name_servers=127.0.0.1
    
  6. dhcpcdを再起動する
    sudo systemctl restart dhcpcd
    
  7. 外部からDNSで名前解決してみる。
    それぞれのOSの設定法については、「DNS 設定」で調べてください。(^^;)

製品紹介(Amazonアフィリエイト)



2017/9/10 DNSの設定記述先をdhcpcd.confに変更