外部から自宅サーバへのアクセステストにおけるチェックポイント
作成日: 2003.6.8
●外部からのアクセス以前に以下を確認しておくこと。
- サーバ機自身で http://127.0.0.1/ にアクセスができる。
- LANを構築しているならクライアント機からプライベートIPアドレス(http://192.168.xx.xx/)でアクセスができる。
●原因を絞り込むために以下の条件下でテストすること。
- ホスト名ではなく必ずグローバルIPアドレスでアクセスする(ホスト名でアクセスできないときは他の要因も考えられる)。
- バーチャルホストの設定をしているなら外してテストする(ホスト名でアクセスするのでなければバーチャルホストでも問題はないかもしれないが、できるだけ単純なケースでテストするのがよい)。
- AN HTTPDのオプション設定は無闇に変更しない(LAN内でアクセスできていれば、外部からアクセスできないのは AN HTTPD以外に原因があるということである)。
●チェックポイント
- 自分のグローバルIPアドレスが正しいかどうかをよく確認する
ルータを使用していない環境では、コマンドプロンプトから "ipconfig /all" (Win9xでは winipcfg)を実行すると確認できる。
ルータを使用しているときは、ルータにアクセスしてシステム情報などを表示させればどこかに必ず表示されているはず。外部のホームページから確認するなら「確認くん」「診断くん」などにアクセスする。ただし環境によっては「確認くん」「診断くん」で表示されたIPアドレスが自分のグローバルIPアドレスではなくプロクシサーバのIPアドレスの場合が稀にあるようである。そのときは、http://hpcgi1.nifty.com/yito/hostip.cgi で調べてみるとよい。
(注)IPアドレスが以下の範囲のものはグローバルIPアドレスではないことは常識として知っておくように。
192.168.0.0 - 192.168.255.255(プライベートIPアドレス Class C)
172,16.0.0 - 172.31.255.255(プライベートIPアドレス Class B)
10.0.0.0 - 10.255.255.255(プライベートIPアドレス Class A)
169.254.0.0 - 169.254.255.255(APIPA)
Win2000/XPでは コマンドプロンプトから "nslookup 123.45.67.89" のように実行して Name に自分の回線アドレスが表示されればまず間違いはない。例えばフレッツADSLでプロバイダが Nifty なら以下のような表示になる。
Name: ntxxxx000000.xxxx.nt.adsl.ppp.infoweb.ne.jp
プロバイダによって全く違うので勘を働かせること。もし proxy の文字列が含まれているならそれは自分のIPアドレスではありえない。
- プロバイダによってはもともとサーバ公開できないところもある
グローバルIPアドレスを取得できないプロバイダはどうやってもサーバ公開は無理である。
グローバルIPアドレスを取得できる場合でも一部の CATV接続など外部からのアクセスを禁止しているプロバイダもある。
プロバイダによっては80番ポートだけを閉じている場合もあるようである。その場合は 80番以外のポートを使えば公開可能かもしれない(例えばポート番号が8000のときは、http://IPアドレス:8000/ のようにアクセスすることになる)。
よく分からないときにはサーバ公開可能かどうかをプロバイダに直接問い合わせるのが確実である。
- ルータにはサーバ公開に必要な設定個所が必ずある
ルータの「静的 IPマスカレード」を設定し、ポート80番へのアクセスをサーバパソコンにフォワードするように設定しないといけない。ルータの取扱説明書に必ず書いてあるのでよく読むこと。「静的 IPマスカレード」という用語は以下のようにルータメーカーや機種によって様々な呼び方がされているので、ルータの取説のどこを見ればよいかはこの表を参考にすれば分かるかと思います。
| メーカー | 設定名称 |
| アップルコンピュータ | ポートマッピング |
| クリエイティブメディア | ポートフォワーディング |
| リンクシス・ジャパン | Port Forwarding |
| 住友電工ネットワークス | NAT アドレス変換 |
| センチュリーシステムズ | NAT |
| コレガ | バーチャルサーバ DMZ機能/バーチャルサーバ |
| プラネックス | 静的マスカレードテーブル ローカルサーバ |
| NEC | ポートマッピング |
| メルコ | アドレス転換テーブル |
| ELECOM | ポートフォワーディング |
| YAMAHA | 静的IPマスカレード |
| NTT-ME | 静的マスカレード バーチャルサーバ |
| IODATA | バーチャルサーバ |
| アライドテレシス | ? |
| オムロン | ? |
| 京セラ | 仮想サーバ |
| 富士通 | スタティックIPマスカレード |
| アイコム | 静的IPマスカレード |
| アクトンテクノロジィ | バーチャルサーバ |
| マイクロ総研 | IPマスカレードテーブル |
(出展: http://www.iptalk.net/otasuke/settei-1.htm
このページには機種別の設定例なども記載されているので必見である。)
ルータのファームウェアが古いとバグがあったり、機能そのものがないこともあるかもしれない。最新版にバージョンアップするのがよい。
藁にもすがりたい状況になったときには、ルータの電源を一度切って入れ直すのもありかも。
- ファイアウォールにも要注意
Norton Internet Security、ZoneAlarmなどファイアウォールソフトをインストールしているときは、設定によってはHTTPアクセスがブロックされることがある。設定レベルを下げる、ポート80を開く、AN HTTPDを遮断から許可にするなど設定変更をするか、よく分からないときはテスト中はファイアウォールの動作を停止/無効にするのがよい。
WindowsXPでは OS自体にファイアウォール機能があるので Webサーバ(HTTP) へのアクセスを通す設定になっているかどうかの確認が必要である。
パーソナルファイアウォールで HTTPポートへのアクセスを許可する設定方法 も参考に。
この他に意外な盲点として、プロバイダがサービスしているファイアウォールに気が付かないことがあります。例えば OCN パーソナルファイアウォールサービスを利用していると 1024 以下のポートが閉じられてしまい、Webサーバ/FTPサーバ/メールサーバどれにもにアクセスできなくなります。このようなプロバイダ固有のオプションサービスに申し込んでいれば、絶対に忘れないでください。他人にはなかなか分からないことです。
●動作確認方法
- サーバ動作確認サイトを利用する
- インターネット上のプロクシ経由でアクセスする
- 知人にグローバルアドレスを知らせてアクセスしてもらう。自分でアクセスする場合はダイヤルアップや携帯などの別回線を使う
詳細は鷹の巣さんの 手順D.WWWサーバ動作の確認 を参照してください。
多少面倒ですが、筆者のページの一番下のフォームでもチェックできますし、その上のフォームで調べて テスト結果の見方でも確認可能です。
(注) サーバ機自身から(LAN内の他機からでも同じ)グローバルIPアドレスでアクセスしても意味はありません。ルータを使っているときにはアクセスできない(普通はルータの設定ページにアクセスするためのパスワード入力画面が表示される)ので、アクセスできないからといって悩まないように。環境によってはアクセスできることもありますが、単にローカルにアクセスできているだけなので外部からアクセスできるという保証はない。
●グローバルIPアドレスではアクセスできたがホスト名でアクセスできないとき
この場合もバーチャルホストの設定は外してテストするのがよい。
ダイナミックDNSでホスト名を取得し、DiCEでIPアドレスを登録したのであれば、登録されたIPアドレスが間違いなくこの上で試したものと一致するかを確認する。
登録されているIPアドレスをダイナミックDNSのサイトで確認してもよいし、上記の nslookup コマンドを使い、例えば ZIVE なら "nslookup xxx.zive.net" を実行しても確認できる。
DiCEの自動設定は場合によっては(ルータを使用しないときなどに)正しくグローバルIPアドレスを取得しないこともあるので手動で設定して試すのが確実である。
ダイナミックDNSサーバがトラブル中のときもある。その間はホスト名でのアクセスはできないし、nslookupコマンドでも IPアドレスは表示されない。
上記の(注)と同じように、サーバ機(LAN内のクライアント機も)からホスト名でアクセスしてもアクセスできないのが普通であり、たとえできたとしてもそれは外部からの接続確認ができたことにはならない。
ローカルな動作確認は普通はプライベートIPアドレスでアクセスすればいいのですが、どうしても自機からホスト名でアクセスしたい場合があります。CGIなどの設定にホスト名を書いた場合やバーチャルホストで複数のホストを設定している場合などがそうです。その場合には hosts ファイル(WindowsXPでは C:\Windows\system32\drivers\etc\hosts)を例えば以下のように設定すれば可能になります。この例ではサーバ機のプライベートIPアドレスを 192.168.0.2、ZIVEで2つのホスト名(host1, host2)を取得した場合を仮定している。
192.168.0.2 host1.zive.net host2.zive.net
作成:いと,mailto:gfh05223@nifty.com