今回は、クライアントパソコンからWebブラウザーでWebサーバーにアクセスできないトラブルを紹介する。Webサーバーを社内ネットワークに設置したケースとして取り上げるが、実際にはクラウドサービスやレンタルサーバーを利用したWebサーバーでも起こり得るトラブルである。パケット・キャプチャー・ツールのWiresharkを使って原因を探り、解決の糸口を見つけていこう。

サーバーにアクセスするとForbiddenと表示される

 最初のトラブルは、社内ネットワークに接続したWebサーバー(seminar.tripodworks.co.jp)にクライアントパソコンから「http://seminar.tripodworks.co.jp」というURLでアクセスするとエラーが発生するというものだ(図1)。このとき、画面上には「Forbidden」(禁止という意味)と表示される。この原因を探ってみよう。

図1●WebサーバーにアクセスするとForbiddenが表示される
図1●WebサーバーにアクセスするとForbiddenが表示される
社内ネットワークのイントラ用Webサーバーにブラウザーでアクセスしようとしたら、Forbiddenエラーが発生し、アクセスできなかった。
[画像のクリックで拡大表示]

 まずWebブラウザー上に表示された文字を確認する。Forbiddenの後ろには、「You don’t have permission to access / on this server.」(サーバーの「/」にアクセスする権限がない)となっている。「/」は、URL(http://seminar.tripodworks.co.jp/)の最後の「/」を指し示している。ただしこれだけでは原因がわからない。その次にある「Apache/2.0.52(CentOS)」から始まる行は、Webサーバーを稼働させているソフトウエアを示している。OSはLinuxディストリビューションの一つである「CentOS」で、サーバーアプリケーションが「Apache HTTP Server」とわかる。なおエラーが発生したときの表示は、クライアントで利用しているWebブラウザーの種類やバージョン、サーバーのOSやアプリケーションによって異なる。

パケットキャプチャーを利用する

 では、Wiresharkを使って原因を調査する。

図2●Wiresharkを起動してキャプチャーを開始する
図2●Wiresharkを起動してキャプチャーを開始する
キャプチャーを始める前に、不要な通信ソフトを閉じておくと結果が見やすい。画面はバージョン1.4.0のもの。
[画像のクリックで拡大表示]

 Wiresharkを起動して、メイン画面の上部にあるツールバーのボタンのうち、1番左の「List the available capture interface」ボタンをクリックする(図2の(1))。すると別ウインドウが開き、キャプチャーの対象となるNICの一覧が表示される。そこからキャプチャーを実行するNIC名の右側にある「Start」ボタンをクリックする(同(2))。

 別ウインドウが閉じられ、メイン画面では指定したNICを流れるパケットの情報が古い順に上から下に流れる。停止する場合は、左から4番目の「Stop the running live capture」ボタンをクリックする(同(3))。今回は、キャプチャーを開始してからWebブラウザーで目的のWebサーバーにアクセスして、Forbiddenエラーが発生したらキャプチャーを止める。

HTTPの通信に絞って詳細情報を見る

 メイン画面には、キャプチャーを開始してから止めるまでの結果が表示される。このなかには、Webサーバーとの通信に加え、ほかの通信内容も混ざっている。そこで、結果を見やすくするためにフィルター機能を使う。キャプチャー結果をWebサーバーとWebブラウザーとの通信だけに絞るのだ。

 フィルター機能は、表示内容を特定の通信プロトコルの通信だけに限定するものである。WebサーバーとWebブラウザーは、プロトコルのHTTPを使って通信する(詳細は別掲記事を参照)。そこでHTTPに絞る。

図3●フィルター機能で表示する結果をHTTPプロトコルの通信だけに絞る
図3●フィルター機能で表示する結果をHTTPプロトコルの通信だけに絞る
Webブラウザーで発生したエラーの内容を細かく見るために通信プロトコルをHTTPだけに限定する。フィルター機能を使うとき、「Filter」欄に小文字で「http」と入力する。画面はバージョン1.4.0のもの。
[画像のクリックで拡大表示]
図4●HTTPのやりとりの詳細な内容を確認する
図4●HTTPのやりとりの詳細な内容を確認する
画面はバージョン1.4.0のもの。
[画像のクリックで拡大表示]

 画面上部の「Filter」欄に小文字で「http」と入力する(図3の(1))。Wiresharkでは、メイン画面で「HTTP」とプロトコル名は大文字で表示されるが、フィルター機能では小文字で指定する。入力して「Apply」をクリックする(同(2))と、表示がHTTPの通信だけに限定される(図4)。

 このときの1行目(左端にあるNo.欄が「6」)はWebブラウザーからWebサーバーへのデータの要求パケット、2行目(左端にあるNo.欄が「8」)はWebサーバーからWebブラウザーへの応答パケットである。応答パケットの詳細を見るために、2行目をダブルクリックする。

 別ウインドウが開き、詳細情報が表示される(図4の右下)。詳細情報では、パケットに記述されている情報の種類ごとに項目がまとめられている。そこで、HTTPの詳細情報を見るために、「Hypertext Transfer Protocol」をダブルクリックする

 詳細では、Webサーバーからの応答パケットにステータスコードとして「403」が指定されていることがわかる。ステータスコードとは、HTTPのやりとりのなかで要求に対する処理が成功したか失敗したか、失敗ならその理由などを示すための3桁の数字のことである。ここでは403だったので、「指定したデータにアクセスできない」ことを示している。なお、エラーが発生したとき、Webブラウザーが「You don’t have permission to access / on this server.」と表示したのは、ステータスコードからWebブラウザーが解釈して表示したと考えられる。