「設定 - Bind(SUSE)」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
編集の要約なし
75行目: 75行目:
<br>
<br>
==== 内部向け正引きゾーンデータベースの作成 (ドメイン名からIPアドレス) ====
==== 内部向け正引きゾーンデータベースの作成 (ドメイン名からIPアドレス) ====
この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにする必要がある。<br>
<br>
内部向けDNSサーバの正引きゾーンデータベースを作成する。<br>
内部向けDNSサーバの正引きゾーンデータベースを作成する。<br>
以下の例に記述しているXXやYY等のIPアドレスを、該当するクライアントPCのIPアドレスに変更すること。<br>
以下の例に記述しているXXやYY等のIPアドレスを、該当するクライアントPCのIPアドレスに変更すること。<br>
98行目: 100行目:
<br>
<br>
==== 内部向け逆引きゾーンデータベースの作成 (IPアドレスからドメイン名) ====
==== 内部向け逆引きゾーンデータベースの作成 (IPアドレスからドメイン名) ====
この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにする必要がある。<br>
<br>
内部向けDNSサーバの逆引きゾーンデータベースを作成する。<br>
内部向けDNSサーバの逆引きゾーンデータベースを作成する。<br>
以下の例に記述しているXXやYY等のIPアドレスを、該当するクライアントPCのIPアドレスに変更すること。<br>
以下の例に記述しているXXやYY等のIPアドレスを、該当するクライアントPCのIPアドレスに変更すること。<br>
134行目: 138行目:
<br>
<br>
==== 内部向けDNSサーバの停止 ====
==== 内部向けDNSサーバの停止 ====
内部向けDNSサーバを起動する。<br>
内部向けDNSサーバを停止する。<br>
併せて、ファイアーウォールのポートも閉じる。<br>
併せて、ファイアーウォールのポートも閉じる。<br>
  sudo systemctl stop named.service
  sudo systemctl stop named.service
145行目: 149行目:
==== ルートゾーンの更新と自動更新設定 ====
==== ルートゾーンの更新と自動更新設定 ====
ルートゾーンは、世界に13台しかないトップレベルドメインを管理するDNSサーバのIPアドレスを管理しているファイルである。<br>
ルートゾーンは、世界に13台しかないトップレベルドメインを管理するDNSサーバのIPアドレスを管理しているファイルである。<br>
ルートゾーン(named.ca)を更新する。<br>
<br>
  dig . ns @198.41.0.4 +bufsize=1024 > /var/named/chroot/var/named/named.ca
まず、ルートゾーン(named.ca)を更新する。<br>
  dig . ns @198.41.0.4 +bufsize=1024 > /var/lib/named/chroot/var/named/named.ca
<br>
<br>
また、各月で、ルートゾーンが最新かどうか確認し、更新されていればルートゾーンの更新およびBINDの再起動を自動的に行うようにするため、<br>
また、各月で、ルートゾーンが最新かどうか確認し、更新されていればルートゾーンの更新およびBINDの再起動を自動的に行うようにするため、<br>
202行目: 207行目:
  sudo mv named.root_update /etc/cron.monthly/
  sudo mv named.root_update /etc/cron.monthly/
<br>
<br>
 
==== 外部向け正引きゾーンデータベースの作成 (ドメイン名からIPアドレス) ====
== 外部向け正引きゾーンデータベースの作成(ドメイン名からIPアドレス)<br>(固定IPアドレスの場合のみ) ==
この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにする必要がある。<br>
外部向け正引きゾーンデータベースを作成する。<br>
<br>
  sudo vi /var/named/centos.com.db.wan
外部向けDNSサーバの正引きゾーンデータベースを作成する。<br>
  sudo vi /var/lib/named/suse.com.db.wan
<br>
<br>
  $TTL    86400
  $TTL    86400
  @      IN      SOA    ns1.centos.com.  root.centos.com.(
  @      IN      SOA    ns1.suse.com.  root.suse.com.(
                                       2020010101 ; Serial
                                       2020010101 ; Serial
                                       7200      ; Refresh
                                       7200      ; Refresh
214行目: 220行目:
                                       2419200    ; Expire
                                       2419200    ; Expire
                                       86400 )    ; Minimum
                                       86400 )    ; Minimum
         IN      NS    ns1.centos.com. ; ネームサーバ名
         IN      NS    ns1.suse.com.   ; ネームサーバ名
         IN      MX 10 centos.com.     ; MXホスト名(メールサーバを構築する場合のみ)
         IN      MX 10 suse.com.       ; MXホスト名(メールサーバを構築する場合のみ)
  ns1    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(ns1.centos.com用)
  ns1    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(ns1.suse.com用)
  @      IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(centos.com用)
  @      IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(suse.com用)
  www    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(www.centos.com用)
  www    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(www.suse.com用)
  ftp    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(ftp.centos.com用)
  ftp    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(ftp.suse.com用)
  mail    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(mail.centos.com用)
  mail    IN      A    XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(mail.suse.com用)
  centos.com. IN TXT "v=spf1 ip4:XXX.XXX.XXX.XXX ~all"  ;サーバのグローバルIPアドレスを指定(メールサーバを構築する場合のみ)
  suse.com. IN TXT "v=spf1 ip4:XXX.XXX.XXX.XXX ~all"  ;サーバのグローバルIPアドレスを指定(メールサーバを構築する場合のみ)
<br><br>
<br>
 
==== 外部向け逆引きゾーンデータベースの作成(IPアドレスからドメイン名) ====
== 外部向け逆引きゾーンデータベースの作成(IPアドレスからドメイン名)<br>(固定IPアドレスでプロバイダから逆引き権限を委譲されている場合のみ) ==
<u>この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにして、プロバイダから逆引き権限を委譲されている必要がある。</u><br>
<br>
外部向け逆引きゾーンデータベースを作成する。<br>
外部向け逆引きゾーンデータベースを作成する。<br>
  sudo vi /var/named/SUBxxx.xxx.xxx.xxx.in-addr.arpa.db.wan
  sudo vi /var/lib/named/xxx.xxx.xxx.xxx.in-addr.arpa.db.wan
<br>
<br>
  $TTL    86400
  $TTL    86400
  @      IN      SOA    ns1.centos.com.  root.centos.com.(
  @      IN      SOA    ns1.suse.com.  root.suse.com.(
                                       2020010101 ; Serial
                                       2020010101 ; Serial
                                       7200      ; Refresh
                                       7200      ; Refresh
235行目: 242行目:
                                       2419200    ; Expire
                                       2419200    ; Expire
                                       86400 )    ; Minimum
                                       86400 )    ; Minimum
         IN NS    ns1.centos.com.
         IN NS    ns1.suse.com.
  xxx    IN PTR  centos.com. ;サーバIPアドレス最下位部(xxx.xxx.xxx.xxx)とドメイン名を指定
  xxx    IN PTR  suse.com.     ; サーバIPアドレス最下位部(xxx.xxx.xxx.xxx)とドメイン名を指定
<br>
<br>
<span style="color:#C00000">
<u>※注意</u><br>
'''※注意'''<br>
<u>ゾーン情報の変更時は、Serial行を年月日と通番2桁(yyyymmddxx)のようにして、必ず、変更前よりも大きな値に変更すること。</u><br>
'''ゾーン情報の変更時は、Serial行を年月日と通番2桁(yyyymmddxx)のようにして、必ず、変更前よりも大きな値に変更すること。'''<br>
<u>例えば、変更前のSerialが2020010101なら、変更後のSerialは2020010102にする。</u><br>
'''例えば、変更前のSerialが2020010101なら、変更後のSerialは2020010102にする。'''<br>
<u>これにより、後述するセカンダリ側へのゾーン情報の変更が正しく行われるようになる。</u><br>
'''これにより、後述するセカンダリ側へのゾーン情報の変更が正しく行われるようになる。'''<br>
<br>
</span>
==== 外部向けDNSサーバの起動 ====
<br><br>
外部向けDNSサーバを起動する。<br>
 
併せて、ファイアーウォールのポート開放も行う。<br>
== BINDの起動 ==
  sudo systemctl start named-chroot
  sudo systemctl start named-chroot
  sudo systemctl enable named-chroot
   
<br><br>
 
== ファイヤーウォールのポート開放 ==
CentOSのファイヤーウォールのポートを開放する。(TCP53番ポートとUDP53番ポート)<br>
  sudo firewall-cmd --add-service=dns --parmanent
  sudo firewall-cmd --add-service=dns --parmanent
  sudo firewall-cmd --reload
  sudo firewall-cmd --reload
<br><br>
== ルータのポート開放 ==
ルータ側の設定で、TCP53番ポートとUDP53番ポートへのアクセスをDNSサーバ(CentOS)に転送するように設定する。<br>
<br>
<br>
<span style="color:#C00000">
==== 外部向けDNSサーバの停止 ====
'''※注意'''<br>
外部向けDNSサーバを停止する。<br>
'''ルータのポート開放の設定は、各ルータのマニュアルを参照すること。'''<br>
併せて、ファイアーウォールのポートも閉じる。<br>
</span>
sudo systemctl stop named-chroot
sudo firewall-cmd --parmanent --remove-service=dns
sudo firewall-cmd --reload
<br>
==== ルータのポート開放 ====
ルータ側の設定で、TCP53番ポートおよびUDP53番ポートへのアクセスを外部向けDNSサーバに転送するように設定する。<br>
<br>
<u>※注意</u><br>
<u>ルータのポート開放の設定は、各ルータのマニュアルを参照すること。</u><br>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:SUSE]]
[[カテゴリ:SUSE]]

2022年4月11日 (月) 11:39時点における版

概要

DNSサーバ(BIND)は、suse.comというドメイン名からIPアドレスを返したり、IPアドレスからドメイン名を返すサーバである。

内部向けDNSサーバは、LANにあるサーバまたはクライアントPCにアクセスする時、IPアドレスではなくsuse.com等のドメイン名を入力してアクセスできるようにするDNSサーバである。
外部向けDNSサーバは、WANにあるサーバまたはクライアントPCにアクセスする時、自ドメイン名からIPアドレスへの変換(名前解決)を行なうようにするDNSサーバである。

例えば、外部向けDNSサーバの設定により、自宅サーバが稼動中にも係わらず、
ダイナミックDNSサービス側が保守やトラブル等でサービスが停止したことにより、ドメイン名でサーバにアクセスできなくなるということがなくなる。

※注意
固定IPアドレスの場合は独自ドメイン取得済であること。
外部向けDNSサーバは固定IPアドレス環境の場合のみ。


BINDのインストール

DNSサーバを構築するため、BINDをインストールする。

# 内部向けDNSサーバを構築する場合
sudo zypper install bind bind-utils

# 外部向けDNSサーバを構築する場合
sudo zypper install bind bind-utils bind-chrootenv



BINDの設定 : 内部向けDNSの場合

内部向けDNSサーバ全体の設定

BINDの設定ファイルを編集する。

sudo vi /etc/named.conf


options {
    ...略

    # 内部向けDNSサーバの管理外の問合せ先
    #forwarders { 192.0.2.1; 192.0.2.2; };
    forwarders { 192.168.1.1; };

    ...略

    # 全てListenする場合 (未設定でもよい)
    #listen-on port 53 { 127.0.0.1; };
    listen-on port 53 { any; };

    # IPv6を使用しない場合
    #listen-on-v6 { any; };
    listen-on-v6 { none; };

    ...略

    # 問い合わせを許可する範囲を指定
    # 以下の例では、LAN(192.168.1.*)からのみ問い合わせを許可している
    #allow-query { 127.0.0.1; };
    allow-query { 127.0.0.1; 192.168.1.0/24; };

    ...略
};

...略

# コメントアウトする
#include "/etc/named.conf.include";

...略

# 内部向けDNSサーバのゾーンの設定 (追加)
# 192.168.1.* の正引き
zone "suse.com" {
    type master;
    file "suse.db";
};

# 192.168.1.* の逆引き
zone "1.168.192.in-addr.arpa" {
    type master;
    file "1.168.192.in-addr.arpa.db";
};


内部向け正引きゾーンデータベースの作成 (ドメイン名からIPアドレス)

この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにする必要がある。

内部向けDNSサーバの正引きゾーンデータベースを作成する。
以下の例に記述しているXXやYY等のIPアドレスを、該当するクライアントPCのIPアドレスに変更すること。

sudo vi /var/lib/named/suse.db


# /var/lib/named/suse.dbファイル

$TTL 86400

@      IN SOA ns.suse.com.    root.suse.com. (
                                     2022041001 ; Serial  例. 作成年月日 + 01(連番)を記述する
                                     28800      ; Refresh
                                     14400      ; Retry
                                     3600000    ; Expire
                                     86400      ; Minimum TTL
)

@      IN NS ns.suse.com. ;
ns     IN A 192.168.1.XX  ; 内部向けDNSサーバのIPアドレス
pc1    IN A 192.168.1.YY  ; クライアントPC 1
pc2    IN A 192.168.1.ZZ  ; クライアントPC 2
pc3    IN A 192.168.1.AA  ; クライアントPC 3


内部向け逆引きゾーンデータベースの作成 (IPアドレスからドメイン名)

この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにする必要がある。

内部向けDNSサーバの逆引きゾーンデータベースを作成する。
以下の例に記述しているXXやYY等のIPアドレスを、該当するクライアントPCのIPアドレスに変更すること。

sudo vi /var/lib/named/1.168.192.in-addr.arpa.db


# /var/lib/named/1.168.192.in-addr.arpa.dbファイル

$TTL 86400    ;

@   IN SOA ns.suse.com.    root.suse.com. (
                       2022041001 ; Serial   例. 作成年月日 + 01(連番)を記述する
                       3H         ; Refresh
                       1H         ; Retry
                       1W         ; Expire
                       1D )       ; Minimum

    IN NS  ns.suse.com.  ;
    IN PTR suse.com.     ;
    IN A 255.255.255.0   ;

XX     IN PTR ns.suse.com.   ; 内部向けDNSサーバのIPアドレス
YY     IN PTR pc1.suse.com.  ; クライアントPC 1
ZZ     IN PTR pc2.suse.com.  ; クライアントPC 2
AA     IN PTR pc3.suse.com.  ; クライアントPC 3


設定ファイルが正常に記述されているかどうかを確認する。

sudo named-checkconf


内部向けDNSサーバの起動

内部向けDNSサーバを起動する。
併せて、ファイアーウォールのポート開放も行う。

sudo systemctl start named.service

sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload


内部向けDNSサーバの停止

内部向けDNSサーバを停止する。
併せて、ファイアーウォールのポートも閉じる。

sudo systemctl stop named.service

sudo firewall-cmd --permanent --remove-service=dns
sudo firewall-cmd --reload



外部向けDNSサーバの設定

ルートゾーンの更新と自動更新設定

ルートゾーンは、世界に13台しかないトップレベルドメインを管理するDNSサーバのIPアドレスを管理しているファイルである。

まず、ルートゾーン(named.ca)を更新する。

dig . ns @198.41.0.4 +bufsize=1024 > /var/lib/named/chroot/var/named/named.ca


また、各月で、ルートゾーンが最新かどうか確認し、更新されていればルートゾーンの更新およびBINDの再起動を自動的に行うようにするため、
ルートゾーンの自動更新スクリプトを作成する。
※ルートゾーンが更新されていた場合のみ、新旧ルートゾーン情報及び、新旧ルートゾーンの差分情報をroot宛にメールする。

sudo vi named.root_update


 #!/bin/bash
 
 new=`mktemp`
 errors=`mktemp`
 
 dig . ns @198.41.0.4 +bufsize=1024 > $new 2> $errors
 
 if [ $? -eq 0 ]; then
    sort_new=`mktemp`
    sort_old=`mktemp`
    diff_out=`mktemp`
    sort $new > $sort_new
    sort /var/named/chroot/var/named/named.ca > $sort_old
    diff --ignore-matching-lines=^\; $sort_new $sort_old > $diff_out
    if [ $? -ne 0 ]; then
       (
        echo '-------------------- old named.root --------------------'
        cat /var/named/chroot/var/named/named.ca
        echo
        echo '-------------------- new named.root --------------------'
        cat $new
        echo '---------------------- difference ----------------------'
        cat $diff_out
       ) | mail -s 'named.root updated' root
       cp -f $new /var/named/chroot/var/named/named.ca
       chown named. /var/named/chroot/var/named/named.ca
       chmod 644 /var/named/chroot/var/named/named.ca
       which systemctl > /dev/null 2>&1
       if [ $? -eq 0 ]; then
          systemctl restart named-chroot > /dev/null
       else
          /etc/rc.d/init.d/named restart > /dev/null
       fi
    fi
    rm -f $sort_new $sort_old $diff_out
 else
    cat $errors | mail -s 'named.root update check error' root
 fi
 
 rm -f $new $errors


ルートゾーンの更新スクリプトに実行権限を付加する。

sudo chmod 700 named.root_update


ルートゾーンの更新スクリプトを毎月自動実行されるディレクトリに移動する。

sudo mv named.root_update /etc/cron.monthly/


外部向け正引きゾーンデータベースの作成 (ドメイン名からIPアドレス)

この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにする必要がある。

外部向けDNSサーバの正引きゾーンデータベースを作成する。

sudo vi /var/lib/named/suse.com.db.wan


$TTL    86400
@       IN      SOA     ns1.suse.com.  root.suse.com.(
                                     2020010101 ; Serial
                                     7200       ; Refresh
                                     7200       ; Retry
                                     2419200    ; Expire
                                     86400 )    ; Minimum
        IN      NS    ns1.suse.com.    ; ネームサーバ名
        IN      MX 10 suse.com.        ; MXホスト名(メールサーバを構築する場合のみ)
ns1     IN      A     XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(ns1.suse.com用)
@       IN      A     XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(suse.com用)
www     IN      A     XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(www.suse.com用)
ftp     IN      A     XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(ftp.suse.com用)
mail    IN      A     XXX.XXX.XXX.XXX  ; サーバのグローバルIPアドレスを指定(mail.suse.com用)
suse.com. IN TXT "v=spf1 ip4:XXX.XXX.XXX.XXX ~all"  ;サーバのグローバルIPアドレスを指定(メールサーバを構築する場合のみ)


外部向け逆引きゾーンデータベースの作成(IPアドレスからドメイン名)

この設定を有効にするには、外部向けDNSサーバを静的IPアドレスにして、プロバイダから逆引き権限を委譲されている必要がある。

外部向け逆引きゾーンデータベースを作成する。

sudo vi /var/lib/named/xxx.xxx.xxx.xxx.in-addr.arpa.db.wan


$TTL    86400
@       IN      SOA     ns1.suse.com.  root.suse.com.(
                                     2020010101 ; Serial
                                     7200       ; Refresh
                                     7200       ; Retry
                                     2419200    ; Expire
                                     86400 )    ; Minimum
       IN NS    ns1.suse.com.
xxx    IN PTR   suse.com.      ; サーバIPアドレス最下位部(xxx.xxx.xxx.xxx)とドメイン名を指定


※注意
ゾーン情報の変更時は、Serial行を年月日と通番2桁(yyyymmddxx)のようにして、必ず、変更前よりも大きな値に変更すること。
例えば、変更前のSerialが2020010101なら、変更後のSerialは2020010102にする。
これにより、後述するセカンダリ側へのゾーン情報の変更が正しく行われるようになる。

外部向けDNSサーバの起動

外部向けDNSサーバを起動する。
併せて、ファイアーウォールのポート開放も行う。

sudo systemctl start named-chroot

sudo firewall-cmd --add-service=dns --parmanent
sudo firewall-cmd --reload


外部向けDNSサーバの停止

外部向けDNSサーバを停止する。
併せて、ファイアーウォールのポートも閉じる。

sudo systemctl stop named-chroot

sudo firewall-cmd --parmanent --remove-service=dns
sudo firewall-cmd --reload


ルータのポート開放

ルータ側の設定で、TCP53番ポートおよびUDP53番ポートへのアクセスを外部向けDNSサーバに転送するように設定する。

※注意
ルータのポート開放の設定は、各ルータのマニュアルを参照すること。