■家庭内クライアントからドメイン名やグローバルIPアドレスでアクセスできない。
[原 因]
現象としては、家庭内クライアント機からドメイン名(http://example.zive.net/~oyaji)やグローバルIPアドレス(http://202.123.222.231/~oyaji)を指定してアクセスすると「サーバが見つかりません(ページを表示できません)」となり表示できなかったり、ルータのログイン画面が表示されるというもの。
これは、使用しているADSLルータやブロードバンドルータの仕様によるもので、極一部のルータ(Corega BAR SW-4P
HG等)を除きこのようになって当然であり不具合ではない。
[参考] なぜこの方法ではだめなのか?そもそもADSLルータ(家庭用のブロードバンドルータを含む。業務用の多ポートルータならいろいろ設定で対応可能。)は、WAN側とLAN側を明確に意識しており、これらのポート間でNAT(IPマスカレード)やフィルタリング機能が働くようになっている。また、ルータの一般的な仕様として、流入してきたポートへパケットを戻すということはない。(ルーティングの関係でリダイレクトすることはある。)
[対 策]
基本的には、サーバに付与したプライベートアドレスでアクセスすれば問題ないが、どうしてもドメイン名(ホスト名)でアクセスしたければ、対策としては下記の3つの方法がある。
- 方法1:
外部のプロキシサーバを利用する方法
プロバイダがプロキシサーバを提供しているなら、それをブラウザに設定すればよい。これにより、一旦インターネットに出てから自宅サーバにアクセスしてくるので、外部から見ているのと等価になる。プロバイダが提供していない場合は、anonymousのサーバを探して利用することになるが、当然であるが設置者が意図せず使えるようになっているサーバは使用すべきではない。
なお、コンテンツによっては家庭内からしかアクセスできないようにしていたりすると、うっかりするとアクセスできないので、確認が終わったら戻すことを薦める。また、プロキシ経由でのアクセスは総じて遅いので、常用するようなものではないと思われる。
本来は、自宅サーバの最初の立ち上げ確認のために用意したものであるが、インターネット側からのアクセスの正常性は、おやじのWWWサーバテストを利用すれば可能である。(一部制限あり)
- 方法2:
hostsファイルを使用する方法
hostsファイルは、分散型DNSとでも言えるものである。各パソコンのhostsファイルにアドレスとホスト名の対応を書いておくことにより、各パソコンで名前解決が必要になると、DNS検索に先立ちまずhostsファイルを見て名前解決ができないか試み、見つかれば、そのアドレスを使ってアクセスする。面倒であるが、全てのパソコンのhostsファイルに家庭内のホスト名とアドレスを書いておけば、内向きDNSを建てたのと同等のことが可能になる。
hostsファイルはOSによって場所が異なるが、Linuxでは/etc/hostsに、Windows
9x系ではC:\Windows\hosts、Windows
NT系ではC:\WINNT\system32\drivers\etc\hostsにあるはずである。
hostsファイルには、デフォルトではlocalhostに関する記述があるので、続けて必要なホストについて下記のように記述すればよい。ホスト名は英数字のみでアドレスとホスト名の間は半角空白とすること。
127.0.0.1 localhost
192.168.1.100 example.zive.net
- 方法3:
内向きDNSを建てる方法
内向きDNSとは、企業内や家庭内のプライベートアドレス空間だけで動かすDNSのことである。家庭内でDNS(Linux版、Windows版)を動かせば、名前解決ができるようになるので、ドメイン名やホスト名でアクセスが可能となる。
なお、方法2/3は、ネットワーク的にはプライベートアドレスでアクセスしているのと同等であり、これで問題がないからといって、インターネット側から正常にアクセスできていることにはならないので、誤解しないように。また、グローバルアドレスでのアクセスは、方法2/3ではどうしようもない。
Top Pageへ 戻る