2011年8月22日月曜日

hostsによる名前解決

ダイナミックDNSを利用して、自宅のサーバの名前解決を行っている場合、外部からのアクセスをNAT+IPマスカレードを利用して実現していることが多いことでしょう。NAT+IPマスカレードは、自宅サーバのサブネットのWAN側のIPアドレスに対する外部からのアクセスを処理しています。

しかし、NAT+IPマスカレードの特性上、同じサブネットでは名前解決で問題が起こることがあります。どんな問題かというと、
①同じサブネットにあるクライアント機で、稼働しているサーバ(hoge.com)にアクセスしようとする
②外部のDNSサーバから 「“hoge.com”のIPアドレスは、”200.100.100.10”だよ」と名前解決情報がクライアント側に渡される
③そのIPアドレスで再度アクセスを試みる

ここで問題が起こります。教えられた”200.100.100.10” はそのサブネットのWAN側のIPアドレスなので、アクセスできません。同じサブネット内のサーバにアクセスするには、プライベートIPアドレスの”192.168.11.10”でアクセスしなければなりません。

つまり、WANに設置されたDNSサーバを利用すると、同じサブネット内のパソコンからはアクセスすることができないのです。

この問題における解決策はいくつかあります。
・WAN空間のプロキシサーバを利用する
・LAN内では常にプライベートIPアドレスを利用する
・hostsファイルを利用する
・LAN専用のDNSサーバを構築する

今回は、hostsファイルを利用した名前解決を紹介します。


hostsファイルを利用する
hostsファイルは、FQDNとIPアドレスとの対照を記述したテキストファイルです。通常、hostsファイルは、外部のDNSサーバよりも先に参照されます。

サーバ情報
ホスト名:hoge.com
IPアドレス:192.168.11.10

■MacOS(クライアント)から、サーバ(hoge.com)への名前解決
1. MacOSのターミナルを起動
2. 下のコマンドをたたいて、記述
$ vi /etc/hosts
192.168.11.10   hoge.com                            


■Windows XP(クライアント)から、サーバ(hoge.com)への名前解決
1. C:¥windows¥system32¥drivers¥etc¥hosts を開く
2. 下記を追加
192.168.11.10   hoge.com                            

WS000007-2011-08-22-02-17.JPG


これでhostsの設定は終わりです。

注意すべきことは、hostsファイルを設定したPCをサブネットマスクの外へ持ち出すときは、設定を無効にしておくことです。外部からhoge.comにアクセスしても、名前解決としてプライベートアドレスが渡されるので期待通りのアクセスができなくなります。


参考)
自宅内DNSサーバーの構築
http://www.obenri.com/_dnsserver/index.html

0 件のコメント:

コメントを投稿