DNSとは「192.168.0.xxx」などといった数字だけのIPアドレスを「http://www.siruko.com」 といった覚えやすいアドレスに変換してくれるソフトです。
 自宅のWEBサーバにアクセスするとき、外部からは「http://siruko.com/kuro」でアクセスできたのに自宅LANから 「http://siruko.com/kuro」でアクセスすると LAN内のルータの画面が出てきてしまい、 アクセスできません(直接IPアドレス指定ならアクセスできますが)。今までは玄箱のWEBサーバ、 メールサーバにアクセスするにはIPアドレスを使って(どうせメールサーバは内部からしかアクセスしないし)いましたが ここは玄人っぽく玄箱にアドレスを設定していこうと思います。

 

ここでの設定では自宅LANから自宅LANの名前解決しか設定しません。外部からのアクセスは設定せず、 外部へのアクセスの際にはプロバイダから収得しているDNSサーバを設定しています。

通常DNSの設定はプロバイダから提供されているアドレスをルータに設定しているかと思います。

 

 

DNSサーバであるBIND9をインストールします。

# apt-get install bind9

 

/etc/bind/ディレクトリに以下の設定ファイルがあります

bind.keys  
db.0 ブロードキャスト用  :変更しない
db.127 ローカルホスト用  :変更しない
db.255 ブロードキャスト用  :変更しない
db.empty 変更しない
db.local ローカルホスト用  :変更しない
db.root ルートDNSサーバが登録  :変更しない
named.conf BINDの基本設定ファイル、named.conf.localをインクルードしている
named.conf.default-zones  
named.conf.local named.confからインクルードされている設定ファイル
named.conf.options 内部DNS用に外部のDNAサーバのアドレスを登録
rndc.key  
zones.rfc1918 変更しない

 

 

↓今回新規追加するファイル

db.siruko.com ホスト名からIPアドレス検索
db.192.168.0 IPアドレスからホスト名検索

 


#vi /etc/bind/named.conf.options

allow-query { 192.168.0.0/24; localhost; }; :内部用DNS設定

allow-recursion { 192.168.0.0/24; localhost; }; :内部用DNS設定

allow-transfer { none; }; forwarders { xxx.xxx.xxx.xxx; xxx.xxx.xxx.xxx; }; :プロバイダ

ら提供されているDNSサーバ2つを記述

version "unknown"; :余計な情報を公開しない

 

#vi /etc/bind/named.conf.loca

このファイルはnamed.confからインクルードされている

zone "siruko.com" { :無料ドメインから収得したドメイン名を記述
type master;
file "/etc/bind/db.siruko.com";
};

zone "0.168.192.in-addr.arpa" { :LAN内ネットワークが192.168.0.xxxの場合
type master;
file "/etc/bind/db.192.168.0";
};

 

#vi /etc/bind/db.siruko.com

ドメインアドレス名 → IPアドレスへの正引き変換

$TTL 86400

@ IN SOA siruko.com. root.siruko.com. (自分のドメイン名の後にメールアドレス (@の代わりに「.」と表記、語尾に「.」を付けるのを忘れずに)

2005052905 ; Serial

10800 ; Refresh

3600 ; Retry

604800 ; Expire

86400 ) ; Negative Cache TTL

;

IN NS alpha.siruko.com. :DNSサーバのアドレスを設定、語尾に「.」を付ける

IN MX 10 alpha.siruko.com. :メールサーバのアドレスを設定、語尾に「.」を付ける

対応させたいアドレス名とIPアドレスを表記(1つのIPアドレスに複数のドメインアドレス名を登録できます)

www IN A 192.168.0.101 :www.siruko.comにアクセスすると192.168.0.101に接続

alpha IN A 192.168.0.101 :alpha.siruko.comにアクセスすると192.168.0.101に接続

beta IN A 192.168.0.102 :beta.siruko.comにアクセスすると192.168.0.102に接続
gamma IN A 192.168.0.103 :gamma.siruko.comにアクセスすると192.168.0.103に接続

router IN A 192.168.0.1 :router.siruko.comにアクセスすると192.168.0.1に接続

 

#vi /etc/bind/db.192.168.0

IPアドレス → ドメインアドレス名への逆引き変換

$TTL 86400
@ IN SOA siruko.com. root.siruko.com. (自分のドメイン名の後にメールアドレス (@の代わりに「.」と表記、語尾に「.」を付けるのを忘れずに)
2005052905 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Negative Cache TTL
;

IN NS alpha.siruko.com. :DNSサーバのアドレスを設定、語尾に「.」を付ける

101 IN PTR alpha.siruko.dyndns.ort. :192.168.0.101にアクセスするとalpha.siruko.comに接続、語尾に「.」を付ける
102 IN PTR beta.siruko.com. :192.168.0.102にアクセスするとbeta.siruko.comに接続、語尾に「.」を付ける
103 IN PTR gamma.siruko.com. :192.168.0.103にアクセスするとgamma.siruko.comに接続、語尾に「.」を付ける
1 IN PTR router.siruko.com. :192.168.0.1にアクセスするとrouter.siruko.comに接続、語尾に「.」を付ける

 

コマンド:ファイアウォール設定

サーバのファイアウォールの53番のポートを空けておく

# iptables -A INPUT -p tcp -i eth0 -s 192.168.0.0/24 --dport 53 -j ACCEPT
# iptables -A INPUT -p udp -i eth0 -s 192.168.0.0/24 --dport 53 -j ACCEPT

 

コマンド:動作テスト

必要なプログラムをインストールします

# apt-get install dns-browse

 

内部のテスト

#dig @localhost -x 192.168.0.xxx
#dig @localhost xxx.siruko.com

 

外部へのテスト

#dig @localhost yahoo.co.jp

 

クライアント側:Windowsの設定

DNSサーバの設定が終わったらクライアントの設定をします。 Windowsですと「コントロールパネル」→「ネットワーク接続」→「使用しているネットワーク接続」→「プロパティ」 → 「インターネットプロトコル(TCP/IP)」→「次のDNSサーバのアドレスを使う」の設定で

優先DNSサーバ:今回設定したDNSサーバのIPアドレス
代替DNSサーバ:ルータのIPアドレス(玄箱のDNSサーバがダウンしたときの代替用。ルータにプロバイダから収得したDNSサーバが登録している場合のみ有効)

 

Windowsのコマンドプロンプトでnslookupを実行してチェックする

nslookup 192.168.0.1 :内部逆引きテスト

ルータのドメインアドレス名が表示されればOK

 

nslookup www.siruko.com :内部正引きテスト

玄箱のWEBサーバのIPアドレスが表示されればOK(192.168.0.xxxと表示されるはず

 

nslookup yahoo.co.jp :外部正引きテスト

YahooのIPアドレスが表示されればOK

 

 

BIND9によるDNSサーバ構築BIND9によるDNSサーバ構築
川原 龍人 伊藤 宏通 野津 新

DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集 BIND入門 (Linux magazine books (04)) Dns and Bind Concise Guide to DNS and BIND, The プロのための Linuxシステム構築・運用技術 (Software Design plus)

by G-Tools