DNSサーバー · 1 min read · Oct 02, 2025

CentOS 7に軽量で高速なDNSサーバーMaraDNSをインストールする方法

MaraDNSは小さく、無料で軽量なドメインネームサーバーです。これはキャッシング、再帰的、または権威あるネームサーバーとして機能するオープンソースのDNSサーバーの代替です。設定が非常に簡単で、LinuxおよびWindowsプラットフォームで利用可能です。ここからダウンロードできます。DNS、再帰的DNS、権威あるDNSについては、こちらで詳しく読むことができます。

以下はMaraDNSのいくつかの興味深い特徴です:

  • インストールが簡単
  • 低メモリ使用量(約5MBのRAMを使用)
  • 権威あるネームサーバーおよび再帰的ネームサーバーとして機能できます。
  • 見逃せないのは、MaraDNSのウェブサイトのドキュメントが非常に理解しやすいことです。

それでは、CentOS 7でMaraDNSを始めましょう。以下の手順がMaraDNSのインストールと設定について案内します:

MaraDNSのインストール

現在、CentOS 7用のMaraDNSのRPMは利用できないため、ソースからインストールおよびコンパイルします。

gccをインストールします:

sudo yum install gcc

最新のソースアーカイブをここからダウンロードします。次のように行えます:

wget http://maradns.samiam.org/download/2.0/2.0.11/maradns-2.0.11.tar.bz2

アーカイブの内容を抽出します:

tar -xjf maradns-2.0.11.tar.bz2

抽出したMaraDNSディレクトリに移動し、プログラムをコンパイルしてインストールします:

cd maradns-2.0.11
sudo make
sudo make install

MaraDNSがインストールされました。MaraDNSサービスは/etc/init.d/maradnsにインストールされています。サービスを開始するには、次のようにします:

sudo /etc/init.d/maradns start

再帰的デーモンを開始するには、次のように実行します:

sudo /etc/init.d/maradns.deadwood start

デフォルトでは、権威あるネームサーバーはポート127.0.0.1でリッスンし、再帰的なものはポート127.0.0.2でリッスンします。

MaraDNSを起動時に開始するように設定しましょう:

chkconfig maradns on

再帰的DNSサーバーのinitスクリプトは、起動時に実行できるようにchkconfigと互換性を持たせる必要があります。/etc/init.d/maradns.deadwoodファイルの先頭に以下の内容を追加します:

# chkconfig: - 55 45  
# description: MaraDNSは安全なドメインネームサーバー(DNS)です  
# probe: true

起動時に実行されるように設定します:

chkconfig maradns.deadwood on

MaraDNSを権威あるネームサーバーとして設定する

権威あるDNSサーバーは、特定のドメインのURLとIPのマッピングを「知っています」。それらは、再帰的DNSサーバーがブラウザ(Chrome、Firefoxなど)などのウェブクライアントに送信する情報のソースです。MaraDNSを権威あるネームサーバーとして設定するには、次のようにします:

MaraDNSの設定ファイル(/etc/mararc)を編集します:

ipv4_bind_addresses = "127.0.0.1"
chroot_dir = "/etc/maradns"  
csv2 = {}
csv2["example.net."] = "db.example.net"

最初の行はMaraDNSにIP-127.0.0.1でリッスンするように指示します。カンマで区切ってさらにIPを追加できます。例えば- 127.0.0.1, x.x.x.x

2行目のchroot_dirは、すべてのゾーンファイルが保持されるディレクトリを指定します。

3行目はcsv2ハッシュをcsv2 = {}コマンドで初期化します。

4行目は、ドメイン名example.netのゾーンファイルdb.example.netを指定します。

以下は、ドメイン名example.netのゾーンファイルdb.example.netで、自己説明的です:

example.net.      +14400    soa    ns1.example.net. [email protected]. 2012010117 14400 3600 604800 14400 ~ 
example.net.      +14400    ns     ns1.example.net. ~ 
example.net.      +14400    ns     ns2.example.net. ~ 
ns1.example.net.  +14400    a      127.0.0.1 ~ 
ns2.example.net.  +14400    a      127.0.0.1 ~ 
example.net.      +14400    a      127.0.0.1 ~ 
www.example.net.  +14400    a      127.0.0.1 ~ 
example.net.      +14400    mx     10 mail.example.net. ~
mail.example.net. +14400    a      127.0.0.1 ~

あなたは権威あるネームサーバーと他のレコードを指定する前に、権威あるネームサーバーの最初の行(SOA行)から始めます。Aレコードは、ドメイン名、TTL(生存時間)、レコードタイプ、およびレコードの値で構成されます。

注意すべき2つのことは、すべてのドメイン名はピリオドで終わる必要があり、すべてのレコードはチルダ文字(~)で終わる必要があることです。詳細については、ゾーンファイルの形式に関するドキュメントを確認してください。

より簡単にするために、example.netを127.0.0.1にポイントするだけにしましょう。これがその方法です:

example.net.    127.0.0.1 ~

サービスを再起動します:

sudo /etc/init.d/maradns restart

MaraDNSを再帰的ネームサーバーとして設定する

ウェブブラウザがDNSクエリを送信するとき—ブラウザがすでにキャッシュにマッピングを持っていない場合—それは再帰的DNSサーバーに送信されます。これはDNSフォワーディングとも呼ばれます。デフォルトではポート127.0.0.2でリッスンし、カンマで区切ってさらにIPを追加できます。例えば- 127.0.0.2, x.x.x.x。MaraDNSを再帰的ネームサーバーとして設定するには、/etc/dwood3rcファイルに以下の行を追加します:

upstream_servers = {}  
upstream_servers["."] = "8.8.8.8, 8.8.4.4" # Google DNSサーバーにリクエストを転送

サービスを再起動します:

sudo /etc/init.d/maradns.deadwood restart

MaraDNSサーバーの設定が完了しました! :)

ヒント - 外部DNSクエリに応答するMaraDNSサーバーを希望する場合、次のことを行う必要があります:

マシンのパブリックIPを両方の設定ファイル(/etc/mararcおよび/etc/dwood3rc)に追加し、次のように修正します:

/etc/mararc:

ipv4_bind_addresses = "127.0.0.1, x.x.x.x" # x.x.x.xをマシンのパブリックアドレスに置き換えます。

/etc/dwood3rc:

bind_address="127.0.0.2, x.x.x.x" # x.x.x.xをマシンのパブリックアドレスに置き換えます。

recursive_acl = “0.0.0.0/0” # どこからでも接続を許可するため。

これらのサンプルファイルをここから取得できます。サービスを再起動するのを忘れないでください。

以上です!

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。