2004年6月12日土曜日

名前解決!

このタイトル. ネットワークな人なら「あぁ,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時間もつぶして,やったのは「普通に使えるようにした」だけ. やれやれ.

0 件のコメント:

コメントを投稿

スパム対策のため,コメントは,承認するまで表示されません。
「コメントの記入者:」は「匿名」ではなく,「名前/URL」を選んで,なにかニックネームを入れてください.URL は空欄で構いません.