BINDによるDNS キャッシュサーバーの構築
はじめに
こんにちは!今回は、Linuc202の試験に向けて理解を深めるために、DNS キャッシュサーバーを AWS EC2 上で構築しました。実際に環境を構築しながら学習することで、試験対策と実務でのスキルアップを目指のが今回の目的です。
前提知識
DNS とは
インターネット上でWebサイトにアクセスする際、通常ドメイン名(例:google.co.jp)を使いますが、実際に通信を行うためにはIPアドレスが必要です。DNS(Domain Name System)は、このドメイン名とIPアドレスを関連付けるシステムです。簡単に言えば、DNSはドメイン名とIPアドレスを紐付ける電話帳のようなものです。
例えば、google.co.jpというドメイン名は、実際には172.217.175.46というIPアドレスに対応しています。ブラウザに172.217.175.46を入力すると、Googleの検索画面が表示されます。このように、DNSのおかげで、私たちは覚えやすいドメイン名を使ってWebサイトにアクセスすることができます。
BIND とは
BIND(Berkeley Internet Name Domain)は、最も広く使用されているDNSサーバーソフトウェアです。BINDは、DNSリクエストを受け取り、対応するIPアドレスを返す役割を果たします。キャッシュサーバーとしても、権威サーバーとしても使用できる高機能なソフトウェアであり、DNSの管理や運用において重要な役割を担っています。多くの企業や組織で採用されており、その信頼性と機能の豊富さから広く利用されています。
DNS キャッシュサーバーとは
DNS キャッシュサーバーは、DNS クエリの結果を一時的に保存しておき、次回同じクエリがあった際に高速に応答できるようにするサーバーです。これにより、インターネットの閲覧が速くなります。キャッシュサーバーを使うと、同じドメイン名に対するリクエストが繰り返し行われる場合でも、外部の DNS サーバーに問い合わせる必要がなくなります。
手順
1. BIND パッケージのインストール
まず、BIND および bind-utils パッケージをインストールします。
sudo yum install bind bind-utils
2. 設定ファイルの編集
BIND の設定ファイル /etc/named.conf を編集します。
sudo vi /etc/named.conf
設定ファイルの内容を以下のように編集します。
options {
listen-on port 53 { any; }; # BINDがすべてのネットワークインターフェースでポート53のリクエストを受け付けます。
directory "/var/named"; # BINDの作業ディレクトリです。
dump-file "/var/named/data/cache_dump.db"; # キャッシュのダンプファイルです。
statistics-file "/var/named/data/named_stats.txt"; # 統計情報のファイルです。
memstatistics-file "/var/named/data/named_mem_stats.txt"; # メモリ統計情報のファイルです。
recursing-file "/var/named/data/named.recursing"; # 再帰クエリのファイルです。
secroots-file "/var/named/data/named.secroots"; # セキュリティルートファイルです。
allow-query { xx.xx.xx.xx; }; # クライアントPCのIPアドレスからのクエリを許可します。
allow-recursion { xx.xx.xx.xx; }; # クライアントPCのIPアドレスからの再帰クエリを許可します。
※クエリ、及び再帰問い合わせはクライアントPCからのみに設定
forwarders { 8.8.8.8; 8.8.4.4; }; # GoogleのDNSサーバーをフォワーダーとして設定します。
recursion yes; # 再帰クエリを許可します。
dnssec-enable yes; # DNSSECを有効にします。
dnssec-validation yes; # DNSSECの検証を有効にします。
bindkeys-file "/etc/named.root.key"; # DNSSEC用のキーのファイルです。
managed-keys-directory "/var/named/dynamic"; # 動的なキーのディレクトリです。
pid-file "/run/named/named.pid"; # プロセスIDファイルです。
session-keyfile "/run/named/session.key"; # セッションキーのファイルです。
};
logging {
channel default_debug {
file "data/named.run"; # デバッグ情報のファイルです。
severity dynamic; # ログの詳細レベルを動的に変更します。
};
};
zone "." IN {
type hint; # ヒントゾーン(ルートサーバーの情報)です。
file "named.ca"; # ルートサーバーの情報を含むファイルです。
};
include "/etc/named.rfc1912.zones"; # 標準的なゾーンファイルのインクルードです。
include "/etc/named.root.key"; # ルートキーのインクルードです。
3. BIND サービスの起動と有効化
BIND サービスを起動して有効化します。
sudo systemctl start named
sudo systemctl enable named
4. セキュリティグループの設定確認
AWS マネジメントコンソールで該当の EC2 インスタンスのセキュリティグループを確認し、ポート 53 へのアクセスが許可されていることを確認します。
5. クライアントPCからのDNSクエリのテスト
クライアントPCからDNSクエリを実行して、設定が正しく機能していることを確認します。
dig @キャッシュDNSのIP google.com
まとめ
AWS EC2上でBINDを使ったDNSキャッシュサーバーの設定手順を説明しました。次のステップとして、マスターDNS、スレーブDNSの設定、DNSSEC、TSIGなども実際に構築して学習を進めていきます。これにより、より高度なDNS管理のスキルを身につけ、Linuc 202試験の合格を目指したいと思います。
Discussion