jessie向けの新ページを作成しました。こちらからどうぞ

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

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-enable yes;
    dnssec-validation 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; };
    listen-on-v6 { 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 /etc/init.d/bind9 reload
    
  5. RaspbianのDNS設定ファイル「/etc/resolv.conf」を以下のように編集して、Raspbian自体がBINDを利用するようにする。
    nameserver 8.8.8.8
    ↓
    #nameserver 8.8.8.8
    nameserver 127.0.0.1
    
  6. 外部からDNSで名前解決してみる。
    それぞれのOSの設定法については、「DNS 設定」で調べてください。(^^;)

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



2014/10/8 512バイト以上のメッセージはTCPで通信するので、iptablesの開放ポートを追加