自宅サーバー ≫ Linux Server ≫ CentOS Stream 8 ≫ DNSサーバー ※内部向け

 
DNSサーバー概要
・ドメイン名    :papa-net.info
・サーバー名    :papa-net.server
・サーバーIPアドレス:192.168.1.***
bind bind-utils のインストール
 
 
[root@centos]# dnf -y install bind bind-utils 
 
bind ファイルの設定
 
 
[root@centos]# vi /etc/named.conf
 //
 // named.conf
 //
 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 // server as a caching only nameserver (as a localhost DNS resolver only).
 //
 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 //


 options {
    
listen-on port 53 { 127.0.0.1; };   <--- 追記(DNSサーバ(自分)のアドレス)
           
 
    listen-on port 53 { 127.0.0.1; 192.168.1.***; };
     listen-on-v6 port 53 { ::1; };
   <--- コメント化(ipv6 は使用しまい)
         ↓
     //listen-on-v6 port 53 { ::1; };
    
directory "/var/named";
     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";
     secroots-file "/var/named/data/named.secroots";
     recursing-file "/var/named/data/named.recursing";
     allow-query { localhost; };
   <--- 書き換え(ローカルのみ許可)
 
          
     allow-query {
localhost; localnets; };

     /*
      - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
      - If you are building a RECURSIVE (caching) DNS server, you need to enable
        recursion.
      - If your recursive DNS server has a public IP address, you MUST enable access
        control to limit queries to your legitimate users. Failing to do so will
        cause your server to become part of large scale DNS amplification
        attacks. Implementing BCP38 within your network would greatly
        reduce such attack surface
     */

    
recursion yes;

     dnssec-enable yes;
     dnssec-validation yes;

     managed-keys-directory "/var/named/dynamic";

     pid-file "/run/named/named.pid";
     session-keyfile "/run/named/session.key";

     /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
     include "/etc/crypto-policies/back-ends/bind.config";
 
    
allow-transfer{
         192.168.1.****;
    <--- ルーターのIPアドレス
     };

 
    
forwarders{
        
8.8.8.8;   <--- Googleの無料パブリックDNSサービス(プライマリ)
         8.8.4.4;
   <--- Googleの無料パブリックDNSサービス(セカンダリ)
    
};

 };
 
 logging {
     channel default_debug {
         file "data/named.run";
         severity dynamic;
     };

     category lame-servers { null; };
   <--- 追記(エラーログ対策)
 };

 
※内部向けVIEWの定義の追記
 view "internal" {
     match-clients { localnets; };
   <--- DNSサーバ、DNSサーバと同じネットーワークに許可
    
match-destinations { localnets; };
 
     zone "papa-net.info" {    <--- 内部向け正引き定義の追記
         type master;
         file "
/var/named/papa-net.info.zone";
         allow-query { localhost; localnets; };

         allow-update { none; };
     };

 
     zone "1.168.192.in-addr.arpa" {     <--- 内部向け逆引き定義の追記
         type master;

         file "/var/named/1.168.192.in-addr.arpa.db";
         allow-query { localhost; localnets; };
         allow-update { none; };
     };

 zone "." IN {   
<--- コメント化
 
   
 
//zone "." IN {
     type hint;   
<--- コメント化
 
          
    
//type hint;
     file "named.ca";   
<--- コメント化
 
          
    
//type hint;
 };   
<--- コメント化
 
 
 
//};
 
 include "/etc/named.rfc1912.zones";
 include "/etc/named.root.key";
 
 
};    <--- 追記(内部向けVIEWの定義の終了)
 
bind ファイルの構文チェック
 
 [root@
centos]# named-checkconf /etc/named.conf
 [root@
centos]#    <--- 何も表示されなければOK
 
構文チェックで問題があれば下記のように問題個所を指摘される
 
 [root@
centos]# named-checkconf /etc/named.conf
 
/var/named/named.conf:84: unknown option 'allow-uodate'
 
ちなみに上記の場合は allow-update が allow-uodate に書き間違えている
正引きゾーンファイル(papa-net.info.zone)を作成
サンプルファイルのコピー
 
 [root@
centos]# cp /var/named/named.localhost /var/named/papa-net.info.zone
 
コピーして出来たファイルを編集
 
 [root@
centos]# vi /var/named/papa-net.info.zone
 $TTL 1D (1)
 @
(2)    IN    SOA  @ rname.invalid. (  <--- 書き換え
                             ↓   (3)                 (4)
                           papa-net.server. root.papa-net.info.
(
                 0   ; serial
  <--- 書き換え
                             ↓   (5)
                                
2021050101 ; serial
                 1D   ; refresh
  <--- 書き換え
                             ↓   (6)
                                 3600
     ; serial
                 1H   ; retry
  <--- 書き換え
                             ↓   (7)
                                 900
      ; retry
                 1W   ; expire
  <--- 書き換え
                             ↓   (8)
                                 604800
    ; expire
                 3H )  ; minimum
  <--- 書き換え
                             ↓   (9)
                                 86400
)    ; minimum
          NS   @
    <--- 書き換え
                         ↓   (10)
             IN      
NS     papa-net.server.
             IN      
MX 10  papa-net.server.(11)<--- 追記 (メールサーバーがある場合)
            A    127.0.0.1
        <--- 書き換え
                        
 @(12)       IN       A      192.168.*.***(13)
            AAAA  ::1
  <--- 削除
 *
(14)       IN       A      192.168.*.***(15)<--- 追記
 
(1)  外部に対するキャッシュデータの有効期間(外部に公開しないので何でも良い 通常は1D(86400秒) = 1日
(2)  このレコードで記述するゾーン指定=ホスト名(通常は省略して@のみ(@=ホスト名))
(3)  ホスト名(最後に“.”(ピリオド)があることに注意!)
(4)  管理者のメールアドレス(“@”の代わりに“.”になっている事と最後に“.”(ピリオド)があることに注意!)
(5)  シリアル番号(一般的にはDNSサーバーを立ち上げた年月日+任意の二桁の数字)
     ※ゾーンファイルを書き換えた度に数字を増加させる
(6)  スレーブDNSサーバーがマスターDNSサーバーに同期更新する間隔。 (3600秒 = 1時間)
(7)  同期更新に失敗した場合に再試行する間隔。  (900秒 = 15分)
(8)  同期更新に失敗した場合にスレーブのデータを破棄するまでの期間。  (604800秒 = 1週間)
(9)  同期更新に失敗した場合のログを記憶しておく期間。 (86400秒 = 1日)
(10) ドメインに関する権限を持っているホスト名(通常は(2)と同じになる。 最後に“.”(ピリオド)があることに注意!)
(11) メールサーバーのホスト名(最後に“.”(ピリオド)があることに注意!)
(12) DNSサーバーのホスト名((2)と同じく@=ホスト名
(13) DNSサーバーのIPアドレスの最後部(192.168.1.***の***部)
(14) “*”=マルチドメインの指定(xxxx.papa-net.infoのxxxx部分)
(15) DNSサーバーのIPアドレス
正引きゾーンファイル(papa-net.info.zone)の構文チェック
 
 [root@
centos]# named-checkzone papa-net.info /var/named/papa-net.info.zone
 zone papa-net.info/IN: loaded serial **********
    <--- ******* は設定したシリアル番号
 OK

 
上記のように『OK』が出ればOK
逆引きゾーンファイル(1.168.192.in-addr.arpa.db)を作成
サンプルファイルのコピー
 
 [root@
centos]# cp /var/named/named.localhost /var/named/chroot/var/named/1.168.192.in-addr.arpa.db
 
コピーして出来たファイルを編集
 
 [root@
centos]# vi /var/named/chroot/var/named/1.168.192.in-addr.arpa.db
 $TTL 1D (1)
 @(2)    IN    SOA  @ rname.invalid. (
  <--- 書き換え
                             ↓   (3)                 (4)
                            papa-net-server. root.papa-net.info.
(
                 0   ; serial
  <--- 書き換え
                             ↓   (5)
                                
2018050101 ; serial
                 1D   ; refresh
  <--- 書き換え
                             ↓   (6)
                                 3600
     ; serial
                 1H   ; retry
  <--- 書き換え
                             ↓   (7)
                                 900
      ; retry
                 1W   ; expire
  <--- 書き換え
                             ↓   (8)
                                 604800
    ; expire
                 3H )  ; minimum
  <--- 書き換え
                             ↓   (9)
                                 86400
)    ; minimum
            NS   @
    <--- 書き換え
                           ↓   (10)
             
IN       NS     papa-net.info.
            A    127.0.0.1
  <--- 削除
            AAAA  ::1
        <--- 削除
 ***
(10)     IN       PTR    papa-net.info.(11)<--- 追記
 
(1)  外部に対するキャッシュデータの有効期間(外部に公開しないので何でも良い 通常は86400秒 = 1日だが今回は60秒=1分)
(2)  このレコードで記述するゾーン指定=ホスト名(通常は省略して@のみ(@=ホスト名))
(3)  ホスト名(最後に“.”(ピリオド)があることに注意!)
(4)  管理者のメールアドレス(“@”の代わりに“.”になっている事と最後に“.”(ピリオド)があることに注意!)
(5)  シリアル番号(一般的にはDNSサーバーを立ち上げた年月日+任意の二桁の数字)
     ※ゾーンファイルを書き換えた度に数字を増加させる
(6)  スレーブDNSサーバーがマスターDNSサーバーに同期更新する間隔。 (3600秒 = 1時間)
(7)  同期更新に失敗した場合に再試行する間隔。  (900秒 = 15分)
(8)  同期更新に失敗した場合にスレーブのデータを破棄するまでの期間。  (604800秒 = 1週間)
(9)  同期更新に失敗した場合のログを記憶しておく期間。 (86400秒 = 1日)
(10) DNSサーバーのIPアドレスの最後部(192.168.1.***の***部)
(11) DNSサーバーのホスト名(最後に“.”(ピリオド)があることに注意!)
逆引きゾーンファイル(1.168.192.in-addr.arpa.db)の構文チェック
 
 [root@
centos]# named-checkzone 1.168.192.in-addr.arpa /var/named/1.168.192.in-addr.arpa.db
 zone 1.168.192.in-addr.arpa/IN: loaded serial **********
    <--- ******* は設定したシリアル番号
 OK

 
上記のように『OK』が出ればOK
bind の自動起動設定
 
 [root@
centos]# systemctl enable named
 
自動起動設定の確認
 
 [root@
centos]# systemctl is-enabled named
 enabled             <--- enabled になっていればOK
 
bind の起動
 
 [root@
centos]# systemctl start named
 
DNSサーバー設定をIPv4のみ有効にする
 
 [root@
centos]# vi /etc/sysconfig/named   <--- 入力
 
# BIND named process options
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~
 #
 # OPTIONS="whatever"    -- These additional options will be passed to named
 #                          at startup. Don't add -t here, enable proper
 #                          -chroot.service unit file.
 #
 # NAMEDCONF=/etc/named/alternate.conf
 #                       -- Don't use -c to change configuration file.
 #                          Extend systemd named.service instead or use this
 #                          variable.
 #
 # DISABLE_ZONE_CHECKING -- By default, service file calls named-checkzone
 #                          utility for every zone to ensure all zones are
 #                          valid before named starts. If you set this option
 #                          to 'yes' then service file doesn't perform those
 #                          checks.
 
OPTIONS="-4"         <--- 以下追記
 
クライアントPC・ルーターのDNSサーバー指定の変更
Windows クライアントPCの場合はネットワーク設定で『インターネットプロトコルバージョン4(TCP/IPv4)』のプロティの中の『次のDNSサーバーのアドレスを使う』の『優先DNSサーバー』にDNSサーバーのアドレス 、を記述
お使いの機種、WindowsのバージョンによってはPCの再起動が必要な場合がある
ルーターのTCP及びUDPポート53番を開放する
ルーターではDNS設定でLAN側DNSサーバーアドレスのプライマリ(優先)DNSにDNSサーバーのアドレスを記述
動作確認
サーバー自身が名前解決出来るか
 
 [root@
centos]# nslookup papa-net.info   <--- 入力
 Server:   127.0.0.1
      <--- サーバー自身
 Address:  127.0.0.1#53
   <--- サーバー自身

 Non-authoritative answer:
 Name: papa-net.info
 Address: 59.147.187.208
 Name: papa-net.info
 Address: 182.170.81.191

 
クライアント機(Windows)が名前解決出来るか
 
 Microsoft Windows [Version 10.0.16299.371]
 (c) 2017 Microsoft Corporation. All rights reeserved.

 C:\Users\****>
nslookup   <--- 入力

 既定のサーバー:papa-net.server
  <--- DNSサーバー名表示
 Address:192.168.1.***
  <--- DNSサーバーのアドレス表示

 >
papa-net.info   <--- ドメイン名入力
 サーバー:papa-net.server
  <--- DNSサーバー名表示
 Address:192.168.1.***
  <--- DNSサーバーのアドレス表示

 名前:papa-net.info
  <--- ドメイン名表示
 Address:192.168.1.***
  <--- ドメインに対応するWebサーバーのアドレス表示

 >
192.168.1.***   <--- Webサーバーのアドレス入力
 サーバー:papa-net.server
  <--- DNSサーバー名表示
 Address:192.168.1.***
  <--- DNSサーバーのアドレス表示

 名前:papa-net.info
  <--- IPアドレスに対応するドメイン名表示
 Address:192.168.1.***
  <--- ドメインに対応するWebサーバーのアドレス表示

 C:\Users\****>

 

戻る