外部のDNSサーバーは、ELDOMAIN のDNSサーバーを使用させていただいています。
これまで、内部(ルーターで隔てられたLAN上)では、DNSサーバーは使用しておらず、hosts ファイルに、IP アドレスとホスト名を記述して代替としてきました。
これだと、ノートPCをLANに繋いで使用しているときは、サーバ機のIPアドレスを192.168.1.21に指定しますが、持ち出して外部ネットワークに繋いでいるときは、hosts ファイルの記述をコメントアウトして修正・保存する必要が生じます。また、クライアントPCが増えたり、バーチャル環境にクライアントOSを導入する度に、hosts ファイルを作成しなければならず、いらぬ手間がかかり面倒です。
そこで、遅ればせながら、クライアントPCがLANに接続した場合はLAN内のDNSサーバーを参照し、名前解決をするようにDNSサーバーを導入することにしました。
DNSサーバーには、BINDを使用します。BINDは、Berkeley Internet Name Domain の略で、カリフォルニア大学バークレー校で開発 され、現在は、ISC(Internet Systems Consortium)よって開発が進められています。世界で使われているDNS( Domain Name System)サーバーのほとんどが、これを元に作られたもの。
DNSサーバー BIND9 とそのユーティリティをインストール
ドメイン兼サーバー定義ファイル「named.conf」を編集
内部向けの設定を、view “internal” { };内に記述しました。
//
// 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; };
// 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; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "internal" {
match-clients { localhost; localnets; };
recursion yes;
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
zone "a21-hp.com" IN {
type master;
file "a21-hp.com.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "a21-hp.com.rev";
allow-update { none; };
};
};
ドメイン正引きファイル・・・上記 named.conf で指定したファイル「a21-hp.com.zone」を作成します。
$ORIGIN a21-hp.com.
$TTL 86400
@ IN SOA dns.a21-hp.com. root.a21-hp.com. (
2013082219 ; serial
3600 ; refresh (1 hour)
900 ; retry (15 minites)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
IN NS dns.a21-hp.com.
IN NS a21-hp.com.
IN MX 10 mail.a21-hp.com.
IN A 192.168.1.21
dns IN A 192.168.1.21
www IN A 192.168.1.21
mail IN A 192.168.1.21
hpc IN A 192.168.1.7
tv-pc IN A 192.168.1.5
ドメイン逆引きファイル・・・上記 named.conf で指定したファイル「a21-hp.com.rev」を作成します。
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 86400
@ IN SOA dns.a21-hp.com. root.a21-hp.com. (
2013082219 ; serial
3600 ; refresh 1Hour
900 ; retry 15min
604800 ; expire 1w
86400 ; minimum 24Hour
)
IN NS dns.a21-hp.com.
IN A 192.168.1.21
21 IN PTR a21-hp.com.
7 IN PTR hpc.a21-hp.com.
5 IN PTR tv-pc.a21-hp.com.
DNSサーバーを起動する
DNSサーバーを自動起動に設定
# chkconfig –list named
「hosts」ファイルを開き編集。
最初の1行を追加し、他をコメントアウト。
127.0.0.1 localhost.localdomain localhost #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.a21-hp.com #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #192.168.1.21 a21-hp.com localhost.a21-hp.com
DNS参照設定ファイル「resolv.conf」を編集
search 21-hp.com nameserver 192.168.1.21
DNSサーバーの動作確認(サーバー上)
[root@localhost ~]# nslookup
> www.a21-hp.com
Server: 192.168.1.21
Address: 192.168.1.21#53
Name: www.a21-hp.com
Address: 192.168.1.21
> mail.a21-hp.com
Server: 192.168.1.21
Address: 192.168.1.21#53
Name: mail.a21-hp.com
Address: 192.168.1.21
> 192.168.1.21
Server: 192.168.1.21
Address: 192.168.1.21#53
21.1.168.192.in-addr.arpa name = a21-hp.com.
> set type=SOA
> a21-hp.com
Server: 192.168.1.21
Address: 192.168.1.21#53
a21-hp.com
origin = dns.a21-hp.com
mail addr = root.a21-hp.com
serial = 2013082219
refresh = 3600
retry = 900
expire = 604800
minimum = 86400
> exit
[root@localhost ~]#
クライアント側からDNSサーバーにアクセスするためには、ファイアーウォール(iptables)で、ポート番号53を開く必要があります。
当初、サーバ機で名前解決できるのに、クライアントで名前解決ができない状態で、だいぶ悩みましたが、service iptables stop したら、正常に機能したので、気がついた次第であります。
ポート番号53の開放を追加(30、31行目)
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter # まずは、受信は全て破棄に設定 :INPUT DROP [0:0] # 同様に、転送は全て破棄に設定 :FORWARD DROP [0:0] # 送信は全て通過 :OUTPUT ACCEPT [0:0] # 上記条件下で、プロトコルがICMPなら通過(pingは通す) -A INPUT -p icmp -j ACCEPT # 自ホストからのアクセスなら全て許可 -A INPUT -i lo -j ACCEPT # 内部から行ったアクセスに対する外部からの返答アクセスを許可 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 各ポートをアクセス許可 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT # FTPでのアクセスを許可 -A INPUT -p tcp -m tcp --dport 21 --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT # その他の受信は「接続を拒否されました」表示で拒否 -A INPUT -j REJECT --reject-with icmp-host-prohibited # その他の転送は「接続を拒否されました」表示で拒否 -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
DNSサーバーの動作確認(クライアント上)
クライアント側PC(Win7)で、DNSでの名前解決を確認する前に、「hosts」ファイルを開き、全行コメントアウトします。(C:\windows\system32\drivers\etc\hosts)
ファイル編集にはエディタを管理者権限で開く必要があります。
# Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost #192.168.1.21 a21-hp.com #192.168.1.21 www.a21-hp.com #192.168.1.21 mail.a21-hp.com
次に、DNSサーバーを指定します。

現在、インターネットに接続している接続(ローカル接続)をクリックし、この画面を表示したら、プロパティの中から「TCP/IPv6」はチェックを外し無効にします。
その後、「TCP/IPv4」の選択したら「プロパティ」ボタンをクリックし、次の画面を開きます。
DNSサーバーのアドレスとして、自宅サーバーのIPアドレス(192.168.1.21)を設定します。
ゲートウェイとしてルーターのアドレス(192.168.1.1)を指定しているので、指定した優先DNSで名前解決ができないドメイン名は、自動的に外部DNSサーバーから名前解決されるようです。
Win7上で、コマンドプロンプトを開き、nslookupコマンドを実行し、CentOSの場合と同様に、名前が引けることを確認します。
実際にブラウザでの表示、メールの送受信などを行い、問題ないことを確認します。
(既に、開いていたブラウザは、一旦終了し、再起動する必要があるようです。)