MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. サーバー技術
  4. DNSサーバー構築と設定。初心者でもできた6つの手順(CentOS)

DNSサーバー構築と設定。初心者でもできた6つの手順(CentOS)

2019 10/31
サーバー技術
2014年3月5日2019年10月31日

ネットワークをやっていくうえでこのDNSサーバーは必須ではないでしょうか。

今回はDNSサーバをCentOS(ver.6)構築した際の構築手順をメモっておきます。

目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

DNSがわからなければとりあえず設定してみよう

DNSサーバーは名前解決(ドメイン名→IPアドレス、IPアドレス→ドメイン名を返す)ができるサーバー。
また、DNSサーバーは以下の2通りのパターンがある。

内部向けDNSサーバー ⇒ 内部からサーバーにアクセスする際、ドメイン名でアクセスできるようにする。
外部向けDNSサーバー ⇒ 外部からサーバーにアクセスする際、自ドメイン名でアクセスできるようにする。

BINDインストール

# yum -y install bind bind-chroot
→BIND、bind-chrootをインストール

・・・

Complete!
#

※chrootについて

chrootはルート・ディレクトリ(/)を変更するコマンド。DNSにおいてBINDでchroot機能を指定した際、指定した
サブディレクトリがデーモン起動後にルート・ディレクトリ(/)として扱われる。

例えば

#
# /etc/named/named.conf
#

というディレクトリがあるとする。このため回避できないセキュリティ・ホールがあったとすると多大な被害を受ける。しかし、chroot機能を使用することにより

/var/named/chroot/etc/named/named.conf

回避できないセキュリティー・ホールがあったとしても、それによる被害はchrootしたディレクトリ外には及ばなく、最少の被害に収まる。
これにより、OS全体を乗っ取られる危険性も減り、誤って、重要なファイルを読まれてしまうことも回避できる。

BIND起動

# find / -name rndc-confgen
/usr/sbin/rndc-confgen
find: File system loop detected; `/var/named/chroot/var/named' is part of the same file system loop as `/var/named'.

# /etc/rc.d/init.d/named start 又は service named start
Generating /etc/rndc.key:
#
#

※上記の表示がされ、BINDが起動しない。
回避するにはrndc-confgenコマンドで/etc/mdc.keyファイルを作成する。

# 通常時

#
# rndc-confgen -a -r /dev/urandom
#

# chroot環境の時

rndc-confgen -a -r /dev/urandom -t /var/named/chroot

↑今回はchrootを動かすのでこちらの設定

# rndc-confgen -a -r /dev/urandom -t /var/named/chroot
wrote key file "/etc/rndc.key"
#

↑成功したみたい

# service named start
named を起動中: [ OK ]
#
# ps -ef | grep named
named 8512 1 0 16:33 ? 00:00:00 /usr/sbin/named -u named -t /var/named/chroot
root 8521 8108 0 16:34 pts/0 00:00:00 grep named
#

正引き、逆引き作成後にrndc reload

※rndc.confをchroot配下に作成

[
# rndc-confgen > /var/named/chroot/etc/rndc.conf
#

※rndc.conf内の以下の設定をnamed.confへ貼り付け

#vi /var/named/chroot/etc/named.conf

# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
      algorithm hmac-md5;
      secret "xA34ZS5cHOqY/gvKy6IeqQ==";
};

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf

↓最後の行に貼り付け

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

rndc.confを再起動

#
# date; rndc -c /var/named/chroot/etc/rndc.conf reload
#

動作確認

medium_4646150837
photo credit: fsse8info via photopin cc

googleを自DNSで正引き検索してみる。
以下の設定はzoneファイルを設定せず、”goolge.co.jp”を自DNSのみに聞くように“+norec”コマンドで確認した。

正引き確認

# dig @localhost google.co.jp +norec

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @localhost google.co.jp +norec
; (3 servers found)
;; global options: +cmd
;; Got answer:
;; >>HEADER<;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 13

;; QUESTION SECTION:
;google.co.jp.                  IN      A

;; AUTHORITY SECTION:
jp.                     172419  IN      NS      e.dns.jp.
jp.                     172419  IN      NS      b.dns.jp.
jp.                     172419  IN      NS      f.dns.jp.
jp.                     172419  IN      NS      a.dns.jp.
jp.                     172419  IN      NS      d.dns.jp.
jp.                     172419  IN      NS      c.dns.jp.
jp.                     172419  IN      NS      g.dns.jp.

;; ADDITIONAL SECTION:
a.dns.jp.               172419  IN      A       203.119.1.1
a.dns.jp.               172419  IN      AAAA    2001:dc4::1
b.dns.jp.               172419  IN      A       202.12.30.131
b.dns.jp.               172419  IN      AAAA    2001:dc2::1
c.dns.jp.               172419  IN      A       156.154.100.5
c.dns.jp.               172419  IN      AAAA    2001:502:ad09::5
d.dns.jp.               172419  IN      A       210.138.175.244
d.dns.jp.               172419  IN      AAAA    2001:240::53
e.dns.jp.               172419  IN      A       192.50.43.53
e.dns.jp.               172419  IN      AAAA    2001:200:c000::35
f.dns.jp.               172419  IN      A       150.100.6.8
f.dns.jp.               172419  IN      AAAA    2001:2f8:0:100::153
g.dns.jp.               172419  IN      A       203.119.40.1

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Fri Nov 15 16:51:41 2013
;; MSG SIZE  rcvd: 426

このように、自DNSには”google.co.jp”の正引き設定をしてない為、“ANSER: 0”を返している事がわかる。

resolv.confはgoogleのDNS(8.8.8.8)を向いているので+norecを抜いたコマンドで、自DNSがわからない場合はGoogleDNSへ聞くようにする。

# dig @localhost google.co.jp

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @localhost google.co.jp
; (3 servers found)
;; global options: +cmd
;; Got answer:
;; >>HEADER<;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;google.co.jp.                  IN      A

;; ANSWER SECTION:
google.co.jp.           300     IN      A       74.125.235.152
google.co.jp.           300     IN      A       74.125.235.151
google.co.jp.           300     IN      A       74.125.235.159

;; AUTHORITY SECTION:
google.co.jp.           86398   IN      NS      ns4.google.com.
google.co.jp.           86398   IN      NS      ns1.google.com.
google.co.jp.           86398   IN      NS      ns3.google.com.
google.co.jp.           86398   IN      NS      ns2.google.com.

;; ADDITIONAL SECTION:
ns4.google.com.         172799  IN      A       216.239.38.10
ns2.google.com.         172799  IN      A       216.239.34.10
ns3.google.com.         172799  IN      A       216.239.36.10
ns1.google.com.         172799  IN      A       216.239.32.10

;; Query time: 3726 msec
;; SERVER: ::1#53(::1)
;; WHEN: Fri Nov 15 16:52:12 2013
;; MSG SIZE  rcvd: 224

ANSWERが返ってきたことを確認

逆引き確認

[root@TEST chroot]# dig -x 74.125.235.152

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -x 74.125.235.152
;; global options: +cmd
;; Got answer:
;; >>HEADER<;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;152.235.125.74.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
152.235.125.74.in-addr.arpa. 21600 IN   PTR     nrt19s11-in-f24.1e100.net.

;; Query time: 60 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Nov 15 17:23:18 2013
;; MSG SIZE  rcvd: 84

#
# dig -x 216.239.38.10

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -x 216.239.38.10
;; global options: +cmd
;; Got answer:
;; >>HEADER<;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;10.38.239.216.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
10.38.239.216.in-addr.arpa. 21357 IN    PTR     ns4.google.com.

;; Query time: 57 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Nov 15 17:23:53 2013
;; MSG SIZE  rcvd: 72

利用するDNSサーバの変更

# vi /etc/resolv.conf

# Generated by NetworkManager
#nameserver 8.8.8.8
nameserver 192.168.10.94 ←自DNSを利用し、名前解決するように変更
#
# vi named.conf
options {
listen-on port 53 { 127.0.0.1; 192.168.10.94; }; ←自サーバのアドレスを追加する
listen-on-v6 port 53 { ::1; };
directory "/var/named";
pid-file "/var/run/named/named.pid";
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";
allow-query { localhost; 192.168.10.94; }; ←自サーバのアドレスを追加する
recursion yes;

便利なaliasでコマンド短縮

下記は、rndc reloadを「alias」で”rndcr”という短縮コマンドに変更した。

#
# alias rndcr='rndc -c /var/named/chroot/etc/rndc.conf reload'
#

その他、階層を楽に移動できるようにコマンド短縮

#
# alias cdv='cd /var/named/chroot/var/named'
# alias cde='cd /var/named/chroot/etc'
#

まとめ

DNSは奥が深いです。そんでもって初心者のじぶんにとっては結構覚えることが大変です。
やっぱり、サーバーとネットワークって畑が違えば何とやらです。。。

今回は簡単なインストール手順と設定を紹介しましたので、次回はもう少し細かい設定をメモしていきます。

あわせて読みたい
サーバーエンジニアへの構築手順書 サーバエンジニアにおすすめの構築手順をまとめたページです。 サーバ初心者の方。じぶんも初心者なので、そっから目線で構築した設計手順書となっています。 ご興味の...
エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

サーバー技術
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (2件)

  • 千葉 より:
    2020年4月16日 7:53 PM

    こんにちわ。1度目の入力では成功するんですがrebootやshutdown -h nowのあとdigコマンドを使うとエラーになってしまいます。systemctl start named.serviceなどがエラーで入力できません.私的には設定が原因になってると思うのですがうまくいくように教えてください。bind ,bind-chrootをアンインストールして再度設定すればうまくいくのですが。

    返信
    • げんき☆ひろき より:
      2020年4月17日 4:51 PM

      初めまして。
      設定内容はちょっと確認しないとわかりませんが、zoneの設定などでセミコロン「;」を付け忘れると、named-chrootサービスを再起動するタイミングなどでエラーが発生します。

      zoneの設定を一度ご確認された方がよいかと思います。
      よろしくお願いします。

      返信

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次