プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます


相手先サーバーへのポートが開いているかを調べる(ポート開放確認)

ネットワークの考え方の中でポートっていうのがあります。
スイッチングハブのポートなら、LANケーブルを挿す口のことなので分かりやすいですが、ネットワークを流れるデータを分別するための仮想ポートとなると、なんともイメージしにくいです。
このポートをちゃんとデータが流れるようになっているのかは目で見てわからないので、問題が発生した時になかなかその原因に辿りつけないことがあります。

たとえば、開発環境から開発用サーバーにDB接続する場合、エラーで接続できないことがあります。

原因としては、
・サーバーが参照できない。→PINGで確認する。
・サーバーは参照できるが、ポートが開いていない。 ???
サーバーに接続できるかは、とりあえずPINGを実行してみたり、Windowsのネットワーク共有で参照できるかなど、確認手順はいくつか考えられるのですが、ポートが開放されているのかを確認するには、少々分かりにくいんじゃないでしょうか。

(※PINGで確認できると書きましたが、サーバーによってはPINGコマンド自体を拒否している場合があるので注意しましょう!!!)

通常はnetstatコマンドで分かるとされていますが、これがなかなか判断しにくい。
いつも迷うところです。

何かいいものがないかと調べた所、
ポートの開放確認の為のツールがマイクロスソフトより無償公開されています。
http://www.microsoft.com/en-us/download/confirmation.aspx?id=17148
PortQryというツールです。

ダウンロードして解凍した中のPortQry.exeファイルをc:\windows\system32などのパスが通っているフォルダにコピーすれば準備はOKです。

 

コマンドプロンプトで、

portqry -n [サーバー名] -r [調べたいポート番号From]:[調べたいポート番号To]
と入力して実行すれば結果が返ってきます。
ポートが開放されていない場合は、結果が戻るまでにしばらくかかります。

結果表示は例えばOracleの1521ポートを調べた場合、

>開いていないと、
TCP port 1521 (unknown service): FILTERED

>開いていれば、
TCP port 1521 (unknown service): LISTENING

のような結果になります。

実行時の注意点としては、ポート番号の指定が From < To で指定しなければならず、調べたいポートが1つだからといってFromとToに同じ番号は指定出来ません。

これでポートが開放されているかの確認が簡単に出来ます。
たいていの原因はファイアウォールですけどね。

 

このツールにはGUIも別に用意されているみたいです。コマンドではちょっと面倒という方はGUI版をどうぞ
http://itpro.nikkeibp.co.jp/free/NT/WinReadersOnly/20050209/5/

 

詳細はITPROで紹介されています。
http://itpro.nikkeibp.co.jp/free/NT/WinReadersOnly/20050209/5/

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です