CentOS6でLANネットワークで使用する内向けのDNSサーバーを構築する
LANネットワーク内で使用する内向けDNSサーバーを構築する。
やりたい事
LAN内ネットワークで「web01.vmware」を「10.0.10.40」
に名前解決できるようにする。
外部ネットワークには公開しない。
手順
既にbindがインストールされている前提で進めます。
bindインストール手順は下記記事より
toriaezu-engineer.hatenablog.com
正引き(ドメイン名→IPアドレス)のゾーン設定
named.confファイル編集
vi /var/named.conf
view機能を使用してゾーンの設定をします。
view機能を使用する事でインターネット側からの問い合わせと、LAN内からの問い合わせ、それぞれに名前解決ができます。
WAN側とLAN側とで異なるドメイン名を返すといった事もできる。
今回は内向け(LAN内)のDNSサーバーなので、viewにinternalを指定しています。
外向きDNSサーバーとしても使用する場合はexternalを指定しますが、今回は使用しません。
view "internal" { match-clients { 192.168.10.0/24; 10.0.10.0/24; }; recursion yes; zone "." { type hint; file "named.ca"; }; zone "web01.vmware"{ type master; file "web01.vmware.zone"; }; #include "/etc/named.rfc1912.zones"; #include "/etc/named.root.key"; };
match-clientsには当該view機能を使用許可するクライアントを指定、ここではLANネットワークのIPを指定。
recursionは再帰的な問い合わせという機能となるが、外部向けDNSの場合はDOS攻撃対策の為にも使用しないよう「no」に設定する。
今回はキャッシュDNSサーバーとして使用するのでyes。
今回設定するドメインに合わせて、「web01.vmware」というゾーンを作成します。
fileで作成するゾーンファイルを指定。
デフォルトで定義されている下記ですが
include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
named.rfc1912.zones
はローカルホストなどの定義されてるファイル。
デフォルトでは/etc直下にあります。
コメントアウトしてもよさそうですが、使用する場合はこのファイルでインクルードしてるファイル
named.localhost
named.loopback
等は、下記にあったのでコピーします。
※バージョンによりパスは異なります
/usr/share/doc/bind-9.8.2/sample/var/named/named.localhost /usr/share/doc/bind-9.8.2/sample/var/named/named.empty /usr/share/doc/bind-9.8.2/sample/var/named/named.loopback
※named.conでは相対パスを指定した場合、/var/named/から参照されます。
コピー
[root@lb ~]# cp -p /usr/share/doc/bind-9.8.2/sample/var/named/named.localhost /var/named/chroot/var/named/ [root@lb ~]# cp -p /usr/share/doc/bind-9.8.2/sample/var/named/named.loopback /var/named/chroot/var/named/ [root@lb ~]# cp -p /usr/share/doc/bind-9.8.2/sample/var/named/named.empty /var/named/chroot/var/named/
ルートゾーンのファイルを作成
dig @a.root-servers.net . ns > /var/named/chroot/var/named/named.ca
このファイルはルートサーバに関する情報、ルートサーバ情報は全世界共通であり、ここではa.root-servers.netから取得する。
vi /var/named/chroot/var/named/web01.vmware.zone
$TTL 86400 @ IN SOA web01.vmware. root.web01.vmware. ( 2016012701 ; Serial 3600 ; Refresh 900 ; Retry 3600000 ; Expire 3600 ) ; Minimum IN NS web01.vmware. IN MX 10 mail.web01.vmware. @ IN A 10.0.10.40 www IN A 10.0.10.40 ftp IN A 10.0.10.40 mail IN A 10.0.10.40
簡単に説明すると、
SOAレコードの、SOAの後には「ドメイン名.」と「このドメインの管理者メールアドレス.」が続く。
Serialの行は識別ID、他のゾーンと被ってはいけない、上記では年月日+01を設定している。
NSレコードの行で、このドメインのネームサーバーを指定。
Aのレコードの行で、ホスト名からIPアドレスへの変換。
上記例だとwww以降の行はサブドメイン的な扱い。
逆引き(IPアドレス→ドメイン名)のゾーン設定
named.confファイル編集
vi /var/named.conf
先程設定したviewのinternalに逆引きのゾーンを追加します。
view "internal" { match-clients { 192.168.10.0/24; 10.0.10.0/24; }; recursion yes; zone "." { type hint; file "named.ca"; }; zone "web01.vmware"{ type master; file "web01.vmware.zone"; }; zone "10.0.10.in-addr.arpa"{ type master; file "10.0.10.in-addr.zone"; allow-transfer { none; }; }; #include "/etc/named.rfc1912.zones"; #include "/etc/named.root.key"; };
「10.0.10.in-addr.arpa」という逆引きのゾーンを作成していますが、「.in-addr.arpa」の部分は固定みたいです。
「10.0.10.in-addr.zone」とかの名前に設定したら上手く逆引きできませんでした・・
allow-transferではゾーン転送要求を許可するスレーブサーバのIPアドレスを指定しますが、今回はスレーブ構成は作成しませんのでnoneを指定します。
fileで対応するゾーンファイルを指定します。
vi /var/named/chroot/var/named/10.0.10.in-addr.zone
$TTL 86400 @ IN SOA web01.vmware. root.web01.vmware.( 2016012701 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS web01.vmware. 40 IN PTR web01.vmware.
簡単に説明すると、
NSレコードの行で、このドメインのネームサーバーを指定。
PTRレコードで、IPアドレスからホスト名に変更。
サーバーIPアドレス最下位部(上記例だと10.0.10.40となる)とドメイン名を指定
ゾーンファイルの各レコードについては下記参考サイトが分かりやすかった。
BINDの設定 - ゾーンファイルの記述方法
設定ファイルチェックと動作確認
named.conf構文チェック
何も表示されなければOK
[root@lb ~]# named-checkconf /etc/named.conf
ゾーンファイルの確認
ゾーン名ごとに確認
OKが出ればOK
[root@lb ~]# named-checkzone web01.vmware /var/named/chroot/var/named/web01.vmware.zone zone web01.vmware/IN: loaded serial 1000058531 OK
bind再起動
/etc/rc.d/init.d/named restart
起動時、以下のようなエラーが出た場合は
localhost.localdomainのゾーンで読み込んでるファイル「named.localhost」が無いですよって意味。
zone localhost.localdomain/IN: loading from master file named.localhost failed: file not found
今回設定したDNSサーバーをネームサーバーに指定
vi /etc/resolv.conf
nameserver 192.168.10.30 nameserver 192.168.10.1
1行目が、今回構築したDNSサーバー
(eth0が192.168.10.30、eth1が10.0.10.30)
192.168.10.1はデフォルトゲートウェイ(ルーター)
注意点として、インターフェイスファイル(ifcfg-eth0)でDNSサーバーを指定している場合はそちらが優先される。
インターフェイスファイルに記述する場合は以下のようになる。
/etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=192.168.10.30 DNS2=192.168.10.1
名前解決できた
[root@lb Desktop]# nslookup web01.vmware Server: 192.168.10.30 Address: 192.168.10.30#53 Name: web01.vmware Address: 10.0.10.40
逆引きもOK
[root@lb ~]# nslookup 10.0.10.40 Server: 192.168.10.30 Address: 192.168.10.30#53 40.10.0.10.in-addr.arpa name = web01.vmware.