Top / Network / DNS

はじめに

このさいと(きのさいと http://www.masatom.in/pukiwiki/FrontPage/ ) は自宅の自前サーバでホスティングしています。で、このサーバへのアクセスですが、あたりまえですがインターネット側のいわゆる「外側のLAN」からも、自宅内のいわゆる「内側のLAN」からも、同じサーバ名 www.masatom.in でアクセスしたいわけです。

ただルータの設定上、上記のように同じサーバ名でアクセスできない場合があります。たとえばwww.masatom.inにはグローバルIPが振られてます。で、内側のLANからそのサーバ名にアクセスすると、

  • ソース: 192.168.x.x
  • 宛先: www.masatom.in のグローバルIP

となりますが、外と内をつなぐルータがそのアクセスをはじくケースがあります。ようするにルータのセキュリティで「内側のセグメントのIPアドレスは、外からアクセスしてきても入れてあげない」ってことをやってるわけですね。IP偽装の防止だと思います。

外と内をつなぐルータがそのアクセスを許可したとしても、内側のネットワークからサーバにアクセスする際、いちいち外側からぐるって回るのもおかしいし、そもそもセキュリティ的にも好ましくありません。

まあ、というわけで内側のPCからは、内側のIPアドレスでアクセスできるよう www.masatom.in をPCのhostsで内側のIPに名前解決させてたのですが、逆にそうすると、PCを外に持って行ったときにいちいちhostsを直さなくちゃだめで、それもメンドクサイです。うーんと思ってたのですが「じゃあ内側用のDNSたてて、内側のIPアドレスに名前解決させればいいじゃん。内側のネットワークはDHCPなんで、内側のDHCPでDNSをそのサーバにしちゃえばいいし」という結論になりました。こうしておけば、

  • 内側のネットワークにいるときにはDHCPが内側用のDNSを設定してくれて、そのDNSが内側のIPに名前解決してくれる
  • 外側のネットワークにいるときは、インターネット上のDNSがグローバルIPに名前解決してくれる

ということで、手間なしで理想の環境が構築できそうです。

前置きが長くなりましたが、そんなことがあって、以下、自宅の内側用のDNSを構築したときの記録です。

さて手順の前に今回のネットワーク環境についてです。

サーバ
CentOS 5.2
ホスト名
www
FQDN
www2.masatom.in
ローカルIP
192.168.1.3
グローバルIP
222.228.xxx.yyy
DNSサーバのローカルIP
192.168.1.3 <-wwwと同じにした

目的は内側のネットワークからアクセスの時は、www2.masatom.in を 192.168.1.3に名前解決し、ついでに外からのアクセスの時は 222.228.xxx.yyy に名前解決するDNSサーバを構築する、ということですね*1

さてさていろいろ書こうと思ったのですが、参考にさせていただいた はじめての自宅サーバ構築 Fedora/CentOS - DNSサーバの構築(bind) というサイトに、ものすごーく丁寧に説明が書いてあるので、うちでは備忘録程度にとどめておこうと思います。

DNSサーバのインストール

まずはDNSサーバをインストールします。プロダクトとしてはネームサーバの役割をするbindと、キャッシュネームサーバの役割をするcaching-nameserver をインストールします。また、bindをroot以外のユーザ(named)で稼働させるためのbind-chrootをインストールします。が今回使っているCentOS5.2では、すでにbindとbind-chrootはインストールされていました。

ただ、ここではまずbindをrootで稼働させて、bind-chrootをインストールしてnamed で稼働させるようにしたいので、bind-chrootはいったんアンインストールします。ようするに手順は以下の通り。

yum -y remove bind-chroot   <- bind-chrootをアンインストール
yum -y install caching-nameserver <- caching-nameserver をインストール

/etc/named.caching-nameserver.conf の設定

bindとcaching-nameserver をインストールした場合、設定ファイルは

/etc/named.caching-nameserver.conf

です。これを以下のように編集します。

//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver 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.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on 
// caching-nameserver package upgrade.
//
options {
	//listen-on port 53 { 127.0.0.1; };
	//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";

	// Those options should be used carefully because they disable port
	// randomization
	// query-source    port 53;	
	// query-source-v6 port 53;

	//allow-query     { localhost; };
	allow-query     { any; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";

view localhost_resolver {
	match-clients 	   { localhost; };
	match-destinations { localhost; };
	recursion yes;
	include "/etc/named.rfc1912.zones";
	include "/etc/named.masatom.in.lan";
};


view internal {
    match-clients      { localnets; };
    match-destinations { localnets; };
    recursion yes;
    include "/etc/named.masatom.in.lan";
};

view external {
    match-clients      { any; };
    match-destinations { any; };
    recursion no;
    include "/etc/named.masatom.in.wan";
};

/etc/named.masatom.in.lan, /etc/named.masatom.in.wan の設定

named.caching-nameserver.conf から参照されているファイルnamed.masatom.in.lan,named.masatom.in.wan は以下の通りです。

  • named.masatom.in.lan
    zone "masatom.in" IN {
            type master;
            file "masatom.in.lan";  //カレントは/var/named/のようだ
            allow-update { none; };
    };
    zone "1.168.192.in-addr.arpa" IN { <-ローカルIPの逆?
            type master;
            file "1.168.192.in-addr.arpa.db"; //カレントは/var/named/のようだ
            allow-update { none; };
    };
  • named.masatom.in.wan
    zone "masatom.in" IN {
            type master;
            file "masatom.in.wan"; //カレントは/var/named/のようだ
            allow-update { none; };
    };
    zone "xxx.228.222.in-addr.arpa" IN {  <-グローバルIPの逆?
            type master;
            file "xxx.228.222.in-addr.arpa.db"; //カレントは/var/named/のようだ
            allow-update { none; };
    };

内向きの正引き設定

view /var/named/masatom.in.lan
$TTL    86400
@       IN      SOA     masatom.in. root.masatom.in.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              masatom.in.
        IN      A               192.168.1.3
www2    IN      A               192.168.1.3
www     IN      A               192.168.1.3

内向きの逆引き設定

view  /var/named/1.168.192.in-addr.arpa.db
$TTL    86400
@       IN      SOA     masatom.in. root.masatom.in.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              masatom.in.
3       IN      PTR             masatom.in.

外向きの正引き設定

view  /var/named/masatom.in.wan
$TTL    86400
@       IN      SOA     masatom.in. root.masatom.in.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
        IN      NS              masatom.in.
        IN      MX      10      mail.masatom.in.
        IN      A               222.228.xxx.yyy
wwww  IN      CNAME            masatom.in.
wwww2 IN      CNAME            masatom.in.

外向きの逆引き設定

view  /var/named/xxx.228.222.in-addr.arpa.db
$TTL    86400
@       IN      SOA     masatom.in. root.masatom.in.(
                        2007031400      ; serial
                        3600            ; refresh (1 hour)
                        900             ; retry (15 minutes)
                        604800          ; expire (1 week)
                        86400           ; negative (1 day)
)
         IN      NS           masatom.in.
yyy      IN      PTR          masatom.in.

ルートDNS情報(named.ca)の設定

[root@www named]# pwd
/var/named
[root@www named]#  wget ftp://ftp.nic.ad.jp/internet/rs.internic.net/domain/named.root
23:54:53 (1.10 MB/s) - `named.root' を保存しました [2878]
[root@www named]# mv named.root named.ca
[root@www named]#

結局それぞれの設定は以下の通りになりました。

[root@www etc]# pwd
/etc
[root@www etc]# ls -lrt name*
-rw-r----- 1 root named  955  7月 12 09:27 named.rfc1912.zones
-rw-r----- 1 root named 1601 10月  7 10:51 named.caching-nameserver.conf
-rw-r--r-- 1 root root   240 10月  7 10:54 named.masatom.in.lan
-rw-r--r-- 1 root root   258 10月  7 10:55 named.masatom.in.wan
[root@www etc]#
[root@www etc]# cd /var/named/
[root@www named]# ls -lrt
合計 68
drwxr-x--- 5 root  named 4096 10月  7 10:50 chroot
-rw-r--r-- 1 root  root   545 10月  7 10:55 masatom.in.lan
-rw-r--r-- 1 root  root   455 10月  7 10:56 1.168.192.in-addr.arpa.db
-rw-r--r-- 1 root  root   548 10月  7 10:57 masatom.in.wan
-rw-r--r-- 1 root  root   450 10月  7 10:58 xxx.228.222.in-addr.arpa.db
-rw-r--r-- 1 root  root  2878 10月  7 10:58 named.ca
[root@www named]#

bindの再起動

[root@www named]# /etc/init.d/named restart
named を停止中:                                            [  OK  ]
named を起動中:                                            [  OK  ]
[root@www named]# ps -ef| grep named
named     7151     1  0 11:03 ?        00:00:00 /usr/sbin/named -u 
     named -c /etc/named.caching-nameserver.conf
root      7161  6574  0 11:03 pts/2    00:00:00 grep named
[root@www named]#

あれーnamedでうごいてんな(´д`;)。まあヨシとしましょう。

疎通

[root@www named]# nslookup www2.masatom.in  localhost
Server:         localhost
Address:        127.0.0.1#53

Name:   www2.masatom.in
Address: 192.168.1.3

[root@www named]#

OKです。

bind-chroot のインストール

最後にbind-chrootをインストールします。インストールするとbindがnamedユーザで稼働するようになり、設定ファイルの場所は /etc/,や/var/から /var/named/chroot/etc,var などにシンボリックリンクされます。

[root@www etc]# yum -y install bind-chroot
[root@www etc]# pwd
/etc
[root@www etc]#  ls -lrt name*
lrwxrwxrwx 1 root named  named.rfc1912.zones 
     -> /var/named/chroot//etc/named.rfc1912.zones
lrwxrwxrwx 1 root named  named.masatom.in.wan 
     -> /var/named/chroot//etc/named.masatom.in.wan
lrwxrwxrwx 1 root named  named.masatom.in.lan 
     -> /var/named/chroot//etc/named.masatom.in.lan
lrwxrwxrwx 1 root named  named.caching-nameserver.conf 
     -> /var/named/chroot//etc/named.caching-nameserver.conf
[root@www etc]#
[root@www named]# pwd
/var/named
[root@www named]# ls -lrt
合計 24
lrwxrwxrwx 1 root  named  named.ca 
   -> /var/named/chroot//var/named/named.ca
lrwxrwxrwx 1 root  named  masatom.in.wan 
   -> /var/named/chroot//var/named/masatom.in.wan
lrwxrwxrwx 1 root  named  masatom.in.lan 
   -> /var/named/chroot//var/named/masatom.in.lan
lrwxrwxrwx 1 root  named  xxx.228.222.in-addr.arpa.db 
   -> /var/named/chroot//var/named/1.228.222.in-addr.arpa.db
lrwxrwxrwx 1 root  named  1.168.192.in-addr.arpa.db 
   -> /var/named/chroot//var/named/1.168.192.in-addr.arpa.db
drwxr-x--- 6 root  named 4096 10月  7 11:06 chroot
[root@www named]#

最後にもう一度再起動します。

[root@www etc]# /etc/init.d/named restart
named を停止中:                                            [  OK  ]
named を起動中:                                            [  OK  ]
[root@www etc]#
[root@www etc]# ps -ef| grep named
named     7316     1  0 10:19 ?        00:00:00 /usr/sbin/named 
 -u named -c /etc/named.caching-name server.conf -t /var/named/chroot
[root@www etc]#

TIPS集

一部のサーバを外部を指定する

自前でサーバを運用してて、一部のサーバ名のアクセスだけは外のサーバを指定したいなんて時があります。たとえばWEBサーバは自前で用意しているけど、メールサーバはGoogle AppsのGmailを使いたい、とかですね。

そんな場合は 内向きの正引き設定 (/var/named/masatom.in.lan) に

m IN      CNAME           ghs.l.google.com.  <-m.masatom.inはこれにするって設定

などのレコードを追加すればOKです。

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Network / DNS

現在のアクセス:7184


*1 外から云々は実際の運用では使わないけど。ネット上のDNSで十分なので

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-10-04 (日) 09:53:49 (5544d)