| [Network] | |||||||||||||||
ポートのリッスン状態を調査する
|
|||||||||||||||
|
|||||||||||||||
| 解説 |
TCP/IPネットワークがつながらないといったトラブルが発生した場合、まず最初に確認するのはpingコマンドによる応答があるかどうかであろう。これにより相手のサーバが生きているかどうかや、そのサーバまでの経路が有効であるかどうかなどが分かる。そしてpingテストがパスすれば、次は特定のTCPやUDPのポートに対する接続テストを行い、サーバとクライアント間で通信が正しくできているかどうかを調べる、というのが一般的なところだろうか。この接続性のテストのためにはいくつかの方法やツールがあるので、ここではそれらについてまとめておく。
telnetコマンドを使って調査する
telnetは、TCPプロトコルを使って相手のコンピュータと接続するためのコマンドである。通常はtelnetポート(TCPの23番ポート)に接続して利用するが、ポート番号を変えれば、TCPの接続確認用ツールとして利用することもできる。
telnetを使った接続確認の方法については、別稿の「TIPS―Telnetクライアントの使い方」に詳しいので参考にしてほしい。簡単にまとめておくと、例えばWebサーバとの接続テストを行うためには、次のようなコマンドを実行すればよい。telnetに続けて、接続先のサーバ名とTCPのポート番号(標準的なHTTPプロトコルなら80)を指定する。
C:\>telnet server 80 |
以上はうまく接続できた場合の例である。Webサーバ(HTTPプロトコル)との通信では、クライアント側から何かのコマンドを送信しない限り、サーバは応答を返してこない。適当にリターン・キーを何回か押してみれば、サーバ側の応答が確認できるだろう(telnetを強制終了させるには、上記のTIPSを参照のこと)。
これに対して、サーバ側から何も応答がない場合や、接続を拒否された場合は次のようになる(相手側サーバが無応答の場合は、エラーとなるまでに時間がかかる)。
C:\>telnet server 80 |
このような応答の違いを区別することにより、あるポートでサーバがリッスンしているかどうかを判断することができるだろう。さらに同時に(別のコマンド・プロンプト上で)netstatコマンドを実行してみれば、通信の状態がよりよく分かると思う(netstatコマンドの使い方については「TIPS―netstatコマンドを使いこなす」)も参照していただきたい。telnetはどのWindows OSでも用意されているコマンドなので、いつでもどこでも利用できるというのがメリットである。
netsh diagコマンドで調査する
Windows XPやWindows Server 2003では、以上のほかに、netsh diagコマンドを使うという方法もある(Windows 2000のnetshコマンドでは利用できない)。
netsh.exeは、ネットワーク関連の設定を行ったり、動作を確認したりするためのコマンドである。コマンド・プロンプト上で利用する。netshには多くのサブコマンドがあるが、そのうちの1つにdiagという診断用のサブコマンドがある。そしてその下にさらにいくつかの機能が用意されているが、ネットワークの接続性のテストのためには、netsh diag connectというコマンドを利用する。使い方は以下のとおりである。
C:\>netsh diag connect |
このnetshというコマンドはインタラクティブに使うことも可能であるが、今回は「netsh diag connect …」というふうに、すべてのパラメータを指定して利用する方法を紹介する。
■Proxyサーバのテスト
「netsh diag connect ieproxy」というコマンドを実行すると、現在のInternet ExplorerのProxyサーバ設定に基づいて、Proxyサーバとの通信テストを行う。テスト内容としては、指定されたサーバのTCPポートに対して、TCPで接続を試み、接続が確立(establish)すればOKと見なされる(実際にHTTPプロトコルのコマンドをやりとりするわけではない。接続確立後はすぐにクローズする)。
C:\>netsh diag connect ieproxy |
Proxyサーバ(192.168.0.13の8080番ポートでリッスンしている)との通信が正常に行えると、最後の行のように「サーバは次のポートで実行中と思われます [8080]」という結果が戻ってくる。Proxyサーバとの通信が失敗すると、最後の [ ] の内部は、ポート番号ではなく、[なし] となる。
■メール/ニュース・サーバとの通信
Proxyサーバとの通信テストと同様に、「netsh diag connect mail」や「netsh diag connect news」というコマンドを実行すると、Outlook Expressに設定されているメール・サーバやニュース・サーバ(いずれも最初の1つのサーバしかテストしない)に対して、TCPで接続をすることができるかどうかを調査する。なお、これらの各種サーバとの接続テストは、「TIPS―ネットワークの診断ツールを活用する」で紹介した、「ネットワークの診断ツール」が自動的に行うテスト内容と同じである。
■任意のTCPポートとの接続テスト
任意のTCPポートとの接続をテストするためには「netsh diag connect iphost サーバ ポート」と指定する。これにより、指定されたサーバの指定されたTCPポートに対して接続要求を行い、その結果を表示する。データをやりとりするわけではなく、単にTCPの接続が確立すれば、それだけで結果はOKとなる。
C:\>netsh diag connect iphost www.microsoft.com 80 |
これは、www.microsoft.comというサーバの、TCPのポート80番へ接続できるかどうかをテストしたものである。最後が [80] となっているのは、ポート80番への接続が成功したことを示している。失敗するとこの部分が [なし] となる。
portqryコマンドで調査する
以上の接続テストは、OSが標準で持っているツールを使ったが、それ以外にも便利なツールはいくつかある。例えばマイクロソフトからはportqry.exe(port query)という、より高機能なツールが提供されている(Windows 2000上でも利用可能)。
- Portqry.exe コマンド ライン ユーティリティの説明(マイクロソフト サポート技術情報)
このWebページの最後にあるリンクからツールをダウンロードして実行すると、portqry.exeというコマンドとreadme.txtというドキュメントが展開される。このツールは、いわゆるポート・スキャン・ツールの一種であり、指定された(範囲の)ポートに対して、TCPやUDPで接続テストを行う(くれぐれも不用意にインターネット上のホストに対して使わないこと。そのような行為はクラッキングと見なされることがある)。
C:\>PortQry.exe |
このツールは、先ほどのtelnetやnetsh diagコマンドと異なり、より高機能な通信テストが行える。まず第1に、TCPだけでなくUDPのテストも行うことができる。またポート番号の範囲を指定して、連続してテストを行うことができる。さらにいくつかの特定のポートについては、そのプロトコル特有のコマンドを発行するなど、単なる接続と切断だけではない高度なテストを行うことができる。具体的には、DNS(53番)、LDAP(389番)、MS-RPC(135番。RPCのポート・マッパ)、NetBIOS名前サービス(137番)などである。これらのポートをテストしようとすると、それぞれのプロトコルに応じて、より詳細なテストを行い、その結果を表示する。
まずは、あるサーバのポート80番(TCPとUDPの両方)に対して接続性テストをしてみよう。
C:\>portqry -n server -p both -e 80 |
この場合は、TCPの80番ポートとは通信ができたが(「LISTENING(リッスンしている)」と表示されている)、UDPの80番ポートとは何も通信ができなかったため、「NOT LISTENING(リッスンしていない)」という結果が表示されている。これ以外にも「FILTERED(フィルタされている)」という結果が返されることもある。「NOT LISTENING」は、サーバから何らかの拒否応答が戻ってくるのに対して、「FILTERED」の場合は、肯定応答も拒否応答も何も戻ってこないことを示している。一般的には、ファイアウォールなどで通信を完全にブロックしている場合には、このような応答が返ってくることが多い。ただしUDPを使ったサービスでは単にUDPパケットを送信するだけでは何も応答を返さないものが多い。UDPのリッスン状態の判断方法やその結果の見方については、portqryに付属のドキュメントを参照していただきたい。
では次にMS-RPCポート(ポート135番)のテストをしてみよう。
C:\>portqry -n server01 -p both -e 135 |
このように、RPCのポート・マッパを介して提供されているサービスの一覧が表示されている。同様にLDAP(389番)の場合は、LDAPプロトコルを通じてアクセスできるディレクトリ情報が表示される。
C:\>portqry -n SERVER -p both -e 389 |
このようにportqryを利用すれば、より詳細にネットワーク・サービスの稼働状況を確認することができる。詳しい使い方については、先のダウンロード・ページの説明や、portqryのドキュメントを参照してほしい。![]()
|
||||||||||||||||||||||||||||
| 「Windows TIPS」 |
TechTargetジャパン
- フォルダの名前が変更できない不具合を解消する (2012/5/25)
Windows 7のエクスプローラで画像ファイルやPDFが含まれるフォルダの名前が変更できなかったり、削除できなかったりする不具合の解消方法を解説する - 通信相手のMACアドレスを調べる近隣探索プロトコル (2012/5/24)
イーサネットで通信する場合、相手のMACアドレスが分からないとパケットを送信できない。ARPに代わるIPv6の近隣探索機能とは? - 第316話 ネット対応トイレ (2012/5/22)
毎日用をたすだけで、体温に体重、血圧、体脂肪率も計測して、尿検査、便検査も自動で実施、データはネット経由で医師に送られます - 私物のスマートフォンを業務に活用、「BYOD」って何? (2012/5/21)
私物のスマホやノートPCを組織的に業務に活用する「BYOD」が新たなトレンドとして注目されている。なぜいまBYODなのか? BYODのメリットとデメリットは?
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

