// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

#contents

**はじめに [#c9bcc3ae]
このさいと(きのさいと 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サーバを構築する、ということですね((外から云々は実際の運用では使わないけど。ネット上のDNSで十分なので))。

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

**DNSサーバのインストール [#l59b2027]
まずは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 の設定 [#m13b1a8a]
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 の設定 [#o4d96de2]
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; };
 };


**内向きの正引き設定 [#v76e5c5e]
 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


**内向きの逆引き設定 [#h2b313c0]
 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.


**外向きの正引き設定 [#a5e7885d]
 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.


**外向きの逆引き設定 [#t07a4fd7]
 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)の設定 [#n7aaf194]
 [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の再起動 [#d9fe003b]
 [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でうごいてんな(´д`;)。まあヨシとしましょう。

**疎通 [#m69be3c9]
 [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 のインストール [#ha8546e4]
最後に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集 [#z0e48c1d]
***一部のサーバを外部を指定する [#ye1e7399]
自前でサーバを運用してて、一部のサーバ名のアクセスだけは外のサーバを指定したいなんて時があります。たとえばWEBサーバは自前で用意しているけど、メールサーバはGoogle AppsのGmailを使いたい、とかですね。

そんな場合は
そんな場合は 内向きの正引き設定 (/var/named/masatom.in.lan) に
 m IN      CNAME           ghs.l.google.com.  <-m.masatom.inはこれにするって設定
などのレコードを追加すればOKです。



**関連リンク [#j09dac9f]
-[[はじめての自宅サーバ構築 Fedora/CentOS - DNSサーバの構築(bind)>http://kajuhome.com/bind.shtml]]
-[[@IT:VIEWによるスプリットDNS>http://www.atmarkit.co.jp/flinux/rensai/bind913/bind913c.html]]




----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS