このさいと(きのさいと http://www.masatom.in/pukiwiki/FrontPage/ ) は自宅の自前サーバでホスティングしています。で、このサーバへのアクセスですが、あたりまえですがインターネット側のいわゆる「外側のLAN」からも、自宅内のいわゆる「内側のLAN」からも、同じサーバ名 www.masatom.in でアクセスしたいわけです。
ただルータの設定上、上記のように同じサーバ名でアクセスできない場合があります。たとえばwww.masatom.inにはグローバルIPが振られてます。で、内側のLANからそのサーバ名にアクセスすると、
となりますが、外と内をつなぐルータがそのアクセスをはじくケースがあります。ようするにルータのセキュリティで「内側のセグメントのIPアドレスは、外からアクセスしてきても入れてあげない」ってことをやってるわけですね。IP偽装の防止だと思います。
外と内をつなぐルータがそのアクセスを許可したとしても、内側のネットワークからサーバにアクセスする際、いちいち外側からぐるって回るのもおかしいし、そもそもセキュリティ的にも好ましくありません。
まあ、というわけで内側のPCからは、内側のIPアドレスでアクセスできるよう www.masatom.in をPCのhostsで内側のIPに名前解決させてたのですが、逆にそうすると、PCを外に持って行ったときにいちいちhostsを直さなくちゃだめで、それもメンドクサイです。うーんと思ってたのですが「じゃあ内側用のDNSたてて、内側のIPアドレスに名前解決させればいいじゃん。内側のネットワークはDHCPなんで、内側のDHCPでDNSをそのサーバにしちゃえばいいし」という結論になりました。こうしておけば、
ということで、手間なしで理想の環境が構築できそうです。
前置きが長くなりましたが、そんなことがあって、以下、自宅の内側用のDNSを構築したときの記録です。
さて手順の前に今回のネットワーク環境についてです。
目的は内側のネットワークからアクセスの時は、www2.masatom.in を 192.168.1.3に名前解決し、ついでに外からのアクセスの時は 222.228.xxx.yyy に名前解決するDNSサーバを構築する、ということですね*1。
さてさていろいろ書こうと思ったのですが、参考にさせていただいた はじめての自宅サーバ構築 Fedora/CentOS - DNSサーバの構築(bind) というサイトに、ものすごーく丁寧に説明が書いてあるので、うちでは備忘録程度にとどめておこうと思います。
まずは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 をインストール
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";
};
named.caching-nameserver.conf から参照されているファイルnamed.masatom.in.lan,named.masatom.in.wan は以下の通りです。
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; };
};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.
[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]#
[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が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]#
この記事は
現在のアクセス:7398