外部の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の場合と同様に、名前が引けることを確認します。
実際にブラウザでの表示、メールの送受信などを行い、問題ないことを確認します。
(既に、開いていたブラウザは、一旦終了し、再起動する必要があるようです。)