このタイトル. ネットワークな人なら「あぁ,DNS のことね」とわかるが, 普通は意味不明.
先月メールサーバを立てたが,先に DNSサーバを動かさないといろいろ面倒. この数ヶ月,とくにメール鯖を立てた先月からものすごーく面倒なことになっていた.
DNS っちゅうのは「
ドメイン・ネーム・システム」の略.
「
www.google.co.jp」とブラウザに打つと「
216.239.53.99 につないでね」と教えてくれて,実際は 216.239.53.99 にアクセスするシステム.
つまりドメイン名「
www.google.co.jp 」をIP「216.239.53.99」に解決してくれるシステムで,「名前解決!」
このサーバは「
www.google.co.jp ←→ 216.239.53.99」の対応表を持っているからできる.
いままで,uja.jp の名前解決には,自宅外にある
Mini DNSなどの無料サーバ借りて使っていた.
これで,uja.jp がどのサーバに対応表を載せているかがわかる. ([Name Server] ってのがそれ.)
外のサーバは当然自宅LAN の中の名前は解決してくれないから, 自宅と自宅外ではいろいろ変えなければならないことがあって,今まで面倒だった.
1.WEB ページの面倒
外のサーバは「uja.jpは219.117.205.53だよー」と答えるが, LAN内部はルータでアドレス変換をしてしまうので, 自宅でつなぐとそれではルータにつながってしまう. 外のサーバはLAN 内部まで名前解決してくれない.
したがって,自宅で自分のサイトを見るには
(1) 「192.168.0.123(ほんとは違うよ)」などのプライベートアドレスを直接打つ.
(2) 外部のプロクシサーバを経由する.
(3) アナログモデムなど違う経路で接続(これは電話代など余計に金がかかるのでありえん) 2.メールアカウント設定の面倒
職場でメールチェックするときの POP/SMTP サーバ指定は「uja.jp」で,自宅からはやはり「192.168.0.123」にしないとだめ. 実際は1つの uja.jp アドレスに対してメールソフトで2つのアカウントを作り, 外では uja.jp の方をチェックし,自宅では 192.168.0.123 の方をチェックするというとてつもなく面倒なことになっていた.
これらを一気に解決するには自宅LAN内に名前を解決する DNS 鯖を立てるしかない. っちゅうことで,今日,午後からとりかかり完成. (午前中は部活だった.せっかく晴れたので朝からツーリングにでも行きたかったのだが)
忘れてしまわないように.メモをする.
BIND のインストールフリーのネームサーバ BIND をインストール. CDROM をマウントして,
# rpm -ihv bind-9* 設定ファイルのインストール # rpm -ihv caching-nameserver-* /etc/named.conf の変更最終行以下に次のもの追加した.
仮にサーバマシン uhauha.uja.jp のプライベート IP は 192.168.0.123 として進める.
zone "uja.jp" IN {
type master;
file "uja.jp.db";
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.in-addr.arpa.db";
allow-update { none; };
};
zone "53.205.117.219.in-addr.arpa" IN {
type master;
file "53.205.117.219.in-addr.arpa.db";
allow-update { none; };
};
/etc/named.conf に出てくる3つのファイルを以下のように作成しなければならない.
/var/named/53.205.117.219.in-addr.arpa.db の作成仮に ISP のスレーブDNSサーバを slave.purobaida.ne.jp とする.ちなみに slave は奴隷のこと.自宅の設定は mastar(主人).この用語,なんとかならんのかね.
$TTL 86400
53.205.117.219.in-addr.arpa. IN SOA uhauha.uja.jp. root.uja.jp. (
2004061201 ;Serial
3600 ;Refresh
3600 ;Retry
604800 ;Expire
86400 ; Minimum TTL
)
IN NS uhauha.uja.jp.
IN NS slave.purobaida.ne.jp.
53 IN PTR uhauha.uja.jp.
$TTL 86400
@ IN SOA uhauha.uja.jp. root.uja.jp. (
2003061201 ;Serial
3600 ;Refresh
3600 ;Retry
604800 ;Expire
86400 ; Minimum TTL
)
IN NS uhauha.uja.jp.
IN NS slave.purobaida.ne.jp.
123 IN PTR uhauha.uja.jp.
/var/named/uja.jp.db の作成
$TTL 86400
uja.jp. IN SOA uhauha.uja.jp. root.uja.jp.(
2004061201 ;Serial
3600 ;Refresh
3600 ;Retry
604800 ;Expire
86400 ; Minimum TTL
)
IN NS uhauha.uja.jp.
IN NS slave.purobaida.ne.jp.
IN MX 10 uhauha
uhauha IN A 192.168.0.123
IN MX 10 uhauha
www IN CNAME uhauha
named の起動DNS (BIND) を起動する.
# /etc/rc.d/init.d/named start Linux 起動時に自動的に起動するように,次を実行しておかないと,再起動時に名前が見えなくなる.
# chkconfig named on また,設定ファイルなどを変更したらリスタート
# /etc/rc.d/init.d/named reload /etc/resolv.conf の変更(123.45.67.89 は slave.purobaida.ne.jp の IP とする.)
namesaver 127.0.0.1
namesaver 123.45.67.89
ルータの設定変更DNS の参照先を 192.168.0.123 (自宅 DNS サーバ)に変更する.
あと,DNS を外からアクセスできるようにするにはルータに穴を開けなければならないけど,外からの参照は今までどおり無料 DNS で十分だし,穴はセキュリティホールになりかねないから,やらない. 具体的には53番(TCP/UDP) ポートへのアクセスを 192.168.0.123 にアドレス変換するように設定変更を変更する.
外から参照するにはドメイン登録も変更しなければならない. これはドメイン登録業者に変更を依頼して,
JPRS(レジストリ)のデータベース,つまり「IPドメインサーチ」で表示される[Name Server] のところが自宅アドレスに更新されれば,uja.jp の参照が自宅になる.(今回はセキュリティの関係でやっていない)
動作確認コマンドラインから,windows XP などなら
>ipconfig /renew などとして,IP を新しくして(変わらないことが多いが,とにかくいったん開放して接続しなおして)から nslookup を起動
>nslookup コマンドラインから正引き,逆引きが正しいかを確認.
> www.uja.jp
Server: uhauha.uja.jp
Address: 192.168.0.123
Name: uhauha.uja.jp
Address: 192.168.0.123
Aliases: www.uja.jp となれば正引きは正しい. つまり,www.uja.jp のアドレスは 192.168.0.123 だよと教えてくれた.
> 192.168.0.123
Server: uhauha.uja.jp
Address: 192.168.0.123
Name: uhauha.uja.jp
Address: 192.168.0.123 となれば逆引きは正しい. つまり,192.168.0.123 の名前はは uhauha.uja.jp だよと教えてくれた.
ついでに,外も参照できてキャッシングサーバになっているか確認.
> www.google.co.jp
Server: uhauha.uja.jp
Address: 192.168.0.123
Non-authoritative answer:
Name: www.google.akadns.net
Address: 216.239.53.99
Aliases: www.google.co.jp, www.google.com
これで,外のサーバ(google)のアドレスを答えてくれたので, キャッシングも効いている. 「Non-authoritative answer」とはキャッシュ内からアドレスを入手したことを意味している.
確認できたら exit で終了.
> exit
快適
これで自宅からも外からも一貫して「uja.jp」でサイトもメールもアクセスできるようになった・・・ってそれって普通のことじゃん. なんだ,3時間もつぶして,やったのは「普通に使えるようにした」だけ. やれやれ.