1.bindの導入手順
【 実習上の注意点】
この実習で「〇〇〇」の表記は各自のサーバ機IPアドレスの第4オクテッドとします。
この実習は仮想サーバhost〇〇○.dom○〇○.ict.jp(192.168.1.〇〇〇)でrootユーザで行います。
①VMで新しいCentOS7の仮想マシンを作成してください。
ネットワークの設定は以下の通りです。
自機のIPアドレス:192.168.1.○○○
サブネットマスク:24
デフォルトゲートウエイ:192.168.1.1
DNS:192.168.1.50
ホスト名:host〇〇○.dom○〇○.ict.jp ※○○○は確認すること
www.google.comへpingが通ることを確認してください。
②実習の前にFirewalldとSELinuxが停止していることの確認をしておいてください。
# systemctl status firewalld → inactive になっている
# getenforce → Disabledになっている
●bindの導入手順
OSバージョンの確認
# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
(最新)
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
1.bindインストール
# yum -y install bind bind-utils
2.環境設定
【実習環境】
・各自のDNSのホスト名は host〇〇〇 とする
・クライアントを導入するときのホスト名は cl〇〇〇 とする
・ドメイン名は dom〇〇〇.ict.jp とする
【設定手順】
(1)設定ファイルをを編集する ファイルの場所は /etc/named.conf
(2)ゾーンファイルを作成する 保存場所は /var/named
(3)ゾーンファイルのパーミッションを設定する アクセス権は 644
以下の設定例をもとに cat を vi に読み替えて赤字部分の内容を修正すること
ipアドレス等々、自身の環境に合わせて適切に読み替えること
(1)設定ファイルを編集する ファイルの場所は /etc/named.conf
[root@host〇〇 ~]# cat /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 { any; }; //監視するTCPポート番号
// 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";
allow-query { any; }; //このサーバに問い合わせできるホスト名、anyは誰でもOK
/*
- 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 no; //yes → no 時刻検証は無視する ここ忘れないように
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
// 逆引き時に問い合わせた他のDNSサーバがエラーだった場合(設定不良)のログは記 録しない
// エラー時の例)下記のログが大量に出力されてしまう対処
// error (unexpected RCODE SERVFAIL) resolving
// error (network unreachable) resolving
category lame-servers { null; };
};
//zone "." IN {
// type hint;
// file "named.ca"; インターネットのネームサーバ
//}; 自分で作るので必要ない
zone "dom〇〇〇.ict.jp" { //このサーバで管理する正引きゾーンファイル
type master;
file "dom〇〇〇.ict.jp.zone";
};
zone "〇〇〇.1.168.192.in-addr.arpa" { //このサーバで管理する逆引きゾーンファイル
type master;
file "〇〇〇.1.168.192.in-addr.arpa.zone";
};
include "/etc/named.rfc1912.zones"; //規定で定められた最小限のDNSサーバの設定ファイル
//include "/etc/named.root.key";
(2)ゾーンファイルを作成する 保存場所は /var/named
作成するゾーンファイル
〇〇〇.1.168.192.in-addr.arpa.zone ← 自身の環境にあわせて変更
dom〇〇〇.ict.jp.zone ← 自身の環にあわせて変更
・ZONEファイルを作成する
[root@host〇〇〇 named]# cat /var/named/dom〇〇〇.ict.jp.zone
$TTL 3H
@ IN SOA host〇〇〇.dom〇〇〇.ict.jp. root.dom〇〇〇.ict.jp. ( //ドメイン管理者のメールアドレスなどを記述
20141119 ; serial //区切りは@ではなく.最後も.で終わります
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS host〇〇〇.dom〇〇〇.ict.jp. //ネームサーバを記述
IN MX 10 mail.dom〇〇〇.ict.jp. //ドメインのメールサーバを記述
host〇〇〇 IN A 192.168.1.〇〇〇 //正引き用のアドレスを記述
mail IN A 192.168.1.〇〇〇
www IN A 192.168.1.〇〇〇
[root@host〇〇〇 named]#
[root@host〇〇〇 named]# cat /var/named/〇〇〇.1.168.192.in-addr.arpa.zone
$TTL 1D
@ IN SOA host〇〇〇.dom〇〇〇.ict.jp. root.dom〇〇〇.ict.jp. (
20141119 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS host〇〇〇.dom〇〇〇.ict.jp.
IN PTR host〇〇〇.dom〇〇〇.ict.jp. //逆引き用のアドレスを記述
IN PTR mail.dom〇〇〇.ict.jp.
IN PTR www.dom〇〇〇.ict.jp.
[root@host〇〇〇 named]#
・アクセス権を確認(設定)する
[root@host〇〇〇 named]# chmod 644 〇〇〇.1.168.192.in-addr.arpa.zone
[root@host〇〇〇 named]# chmod 644 dom〇〇〇.ict.jp.zone
・設定ファイルの文法チェックを行う
(illeagalやerrorな状態がないことを確認する)※以下は〇〇〇 =95の状況です
[root@host95 named]# named-checkconf -z
zone dom95.kanatech.ac.jp/IN: loaded serial 20141119
zone 100.95.168.192.in-addr.arpa/IN: loaded serial 20141119
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
・ネットーワーク関連ファイルの確認と変更を行う
(以下の環境設定ファイルの個々のパラメータは自身の環境に読み替えること)
[root@host95 named]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@cs7cl95 named]#
[root@host95 named]# cat /etc/sysconfig/network-scripts/ifcfg-enoXXXXXXXX
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="enp0s3"
UUID="d483512a-0c84-4300-942a-bf9ffdacf027"
ONBOOT="yes"
HWADDR="08:00:27:27:27:4C"
IPADDR0="192.168.1.〇〇〇"
PREFIX0="24"
GATEWAY0="192.168.1.1"
DNS1="192.168.1.〇〇〇 " ← 自身のDNSに変更します
networkを再起動するとこの設定がresolv.confに自動的に反映されます
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
[root@host95 named]#
[root@host95 named]# cat /etc/sysconfig/network
NETWORKING=yes
GATEWAY=192.168.1.1
[root@host95 named]# cat /etc/hostname
host〇〇〇 .dom〇〇〇.ict.jp
[root@host95 named]# cat /etc/resolv.conf
# Generated by NetworkManager
search dom〇〇〇.ict.jp
nameserver 192.168.1.〇〇〇 ← networkを再起動すると自動的に反映されます
[root@host95 named]#
※(CentOS6系構成の場合) 自機のIPアドレス等はここで確認・変更します。
cat /etc/sysconfig/network-scripts/ifcfg-eth0
※(CentOS7系構成の場合) hostnameはここで確認・設定します。
[root@host95~]# cat /etc/sysconfig/network
HOSTNAME=host〇〇〇 .dom〇〇〇 .ict.jp
NETWORKING=yes
GATEWAY=192.168.1.1
[root@sv95 ~]#
・ネットーワークを再起動する
# service network restart
(もしネットワークアクセスができなくなったらrebootでシステム全体を再起動してください)
3.DNS起動と確認
・エラーログを監視状態にする(別の端末を立ち上げて実行)
[root@host95 ~]# tail -f /var/log/messages
※ログを監視すること
・namedを起動する
[root@host95 named]# systemctl start named.service
[root@host95 named]# systemctl status named.service
・電源投入時に起動するよう設定する
[root@host95 named]# systemctl enable named.service
・DNSの動作確認を行う(一つでもエラーになったら設定を見直してください)
正引き
[root@host95 named]# nslookup host〇〇〇 .dom〇〇〇 .ict.jp
Server: 192.168.1.〇〇〇
Address: 192.168.1.〇〇〇 #53
Name: host〇〇〇 .dom〇〇〇 .ict.jp
Address: 192.168.1.〇〇〇
逆引き
[root@host95 named]# nslookup 192.168.1.〇〇〇
Server: 192.168.1.〇〇〇
Address: 192.168.1.〇〇〇 #53
〇〇〇 .1.168.192.in-addr.arpa name = mail.dom〇〇〇 .ict.jp.
〇〇〇 .1.168.192.in-addr.arpa name = www.dom〇〇〇 .ict.jp.
〇〇〇 .1.168.192.in-addr.arpa name = host〇〇〇 .dom〇〇〇〇 .ict.jp.
ホスト名だけによる正引き
[root@host95 named]# nslookup host〇〇〇
Server: 192.168.1.〇〇〇
Address: 192.168.1.〇〇〇#53
Name: host〇〇〇 .dom〇〇〇 .ict.jp
Address: 192.168.1.〇〇〇
localhostの正引き
[root@host95 named]# nslookup localhost
Server: 192.168.1.〇〇〇
Address: 192.168.1.〇〇〇#53
Name: localhost
Address: 127.0.0.1
こんな感じでエラーが出たら設定を見直してください
# nslookup host74.dom74.ict.jp
Server: 192.168.95.100
Address: 192.168.95.100#53
** server can't find sv74.dom74.ac.jp: NXDOMAIN
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
※うまくいかないときは以下を見直しましょう
・DNSの設定を確認(/etc/named.conf)
・ゾーンファイルを確認(/var/named)
・ネットワークアダプタのDNS設定を確認(/etc/sysconfig/network-scripts/ifcfg-enpxxxxxxx)
・リゾルバ参照を確認(/etc/resolv.conf)
・ネットワークサービスの再起動(service network restart)
・DNSサービスの再起動(service named restart)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【重要】
最後にインターネットへ出ていくためのDNSの設定を追加します。
ネットワーク設定でセカンダリDNS=192.168.1.50を設定して、pingがgoogleへ届くことを確認してください。
セカンダリDNSを設定する方法は以下の2つがあります。
・ifcfg-enpxxxxxxxにDNS2を設定する方法(networkの再起動が必要ですが永続的)
・resolv.confにnameserverを設定する方法(即反映しますがnetwork再起動で元に戻る)
どちらか一つで大丈夫です。
4.クライアントのDNS設定による動作試験
課題:新たにMacを導入し ます。
(ネットワークの設定を適切に行ってください)
・IPアドレスは192.168.1.〇〇〇+1にします。
・DNS設定は dom〇〇〇.ict.jp を管理するDNS(192.168.1.〇〇〇)にします。
確認:(1)ブラウザを起動して正常にインターネットに接続されることを確認します。
(2) mail.dom〇〇〇 .ict.jp へpingを打ってレスポンスが返ることを確認します。
(3) www.dom〇〇〇 .ict.jp へpingを打ってレスポンスが返ることを確認します。
(4) host〇〇〇 .dom〇〇〇 .ict.jp へpingを打ってレスポンスが返ることを確認します。
(5)完成している他のドメインのホストへpingを打ってレスポンスが返ることを確認します。
ping host××× .dom××× .ict.jp