Windowsサーバーでポートが開いているかどうかを確認するにはどうすればよいですか?[閉まっている]


478

サーバーの代替ポートの下にサイトをインストールしようとしていますが、ポートがファイアウォールによって閉じられている可能性があります。特定のポートでpingを実行して、開いているかどうかを確認する方法はありますか?


回答:


732

使用しようとしているのが(UDPではなく)TCPポートであると想定します。

  1. サーバー自体で、を使用netstat -anして、どのポートが待機しているかを確認します。

  2. 外部からtelnet host port(またはtelnet host:portUnixシステムで)を使用して、接続が拒否されたか、受け入れられたか、タイムアウトしたかを確認します。

後者のテストでは、一般的に次のようになります。

  • 接続が拒否されたことは、そのポートで何も実行されていないことを意味します
  • 受け入れ済みとは、そのポートで何かが実行されていることを意味します
  • タイムアウトは、ファイアウォールがアクセスをブロックしていることを意味します

Windows 7またはWindows Vistaでは、デフォルトのオプション「telnet」は、内部または外部のコマンド、操作可能なプログラム、またはバッチファイルとして認識されません。これを解決するには、それを有効にするだけです。*スタート**→ コントロールパネルプログラムWindowsの機能をオンまたはオフにします。リストを下にスクロールしてTelnetクライアントを選択し、をクリックしますOK


312
Win7またはVistaのデフォルトのオプションである「telnet」は、内部または外部のコマンド、操作可能なプログラム、またはバッチファイルとして認識されません。これを解決するには、有効にするだけです。[スタート]、[コントロールパネル]、[プログラム]の順にクリックし、[Windowsの機能の有効化または無効化]をクリックします。リストを下にスクロールして[Telnetクライアント]を選択し、[OK]をクリックします
volody

12
@PankajKohliは代わりにPuTTy telnetクライアントを使用します。インストールする必要はありません。
Colin Pickard、2014年

52
何をCould not open connection to the host, on port *x*: Connect failed示していますか?
ケニーエビット2014

2
@Alnitakこれはすでに私の質問に答えていると思うので、確認したかっただけです。私が行うときtelnet api-3t.sandbox.paypal.com 443私が手Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedにファイアウォールがそれをブロックしているので、このですか?
ポパイ2015年

2
telnet.exeを開いてから、o host portvs openコマンドライン(cmd.exe)と入力してから、telnet host port
Pawel Cioch

185

Windowsでは使用できます

netstat -na | find "your_port"

結果を絞り込むため。あなたはまたのためにフィルタリングすることができLISTENINGESTABLISHEDTCPおよびなど。ただし、大文字と小文字は区別されます。


4
このようなfindを使用することはできません。ファイルを検索するため、grepを使用する必要があります
Moataz Elmasry 2013

38
@MoatazElmasry、これはLinuxにも当てはまりますが、これはWindowsサーバー上にあり、findが正しいコマンドです。GrepはWindowsでは使用できません。ここで説明したコマンドをそのまま実行したところ、完全に機能しました。
ベンワイアット2014年

4
そのコマンドを使用したとき、すなわちnetstat -an | 「19345」を検索すると、結果が得られませんでした。どういう意味ですか?
nanosoft 2015

14
find私にとってWindows 10では機能しませんでしたが、netstat -na | findstr "8080"機能しました
2016年

6
何も起こらない、findやfindstrを
使わ

84

サーバー自体からではなく外部からチェックしていて、Telnet(Windowsの最新バージョンには付属していないため)やその他のソフトウェアをインストールする手間をかけたくない場合は、ネイティブPowerShellがあります。

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(残念ながら、これはPowerShell 4.0以降でのみ機能します。PowerShellのバージョンを確認するには、と入力し$PSVersionTableます。)

追記:最近、ツイッタースフィアには、PowerShell Coreからの「Test-Connection」またはショートカット「tnc」に言及することでこの回答を改善できることを示唆する主張がいくつかあります。https://twitter.com/david_obrien/status/1214082339203993600を参照して、この回答を編集して改善してください。


(PSVersion <4.0の場合、あなたは運が悪いです。この表を確認してください:

ここに画像の説明を入力してください

Windows Management Framework 4.0をインストールすることでPowerShellのバージョンをアップグレードすることはできますが、私にとってはうまくいきませんでした。Test-NetConnectionコマンドレットはまだ利用できません)。


3
これが最良の答えです。他の人のサーバーにtelnetをインストールするのは必ずしも簡単ではありません。
TrojanName 2019

間違いなく最良の答えでなければなりません。
QtRoS

1
これはtelnetよりも信頼性の高いオプションです。私の場合、ポートが使用可能であると報告されている間、telnetは何も報告せずにハングします。
axk

42

Windowsマシンでは、MicrosoftのPortQryを使用し、次のコマンドを使用して、アプリケーションが特定のポートですでにリッスンしているかどうかを確認できます。

portqry -n 11.22.33.44 -p tcp -e 80

4
ファイアウォールで保護されたポートは通常、「FILTERED」と表示されます。
dlanod

あなたにもUDPポートを確認するには、このツールを使用することができます:portqry -n 11.22.33.44 -p udp -e 19132
アントニー

41

私はそれが好きでした:

netstat -an | find "8080" 

Telnetから

telnet 192.168.100.132 8080

そして、そのマシンのファイアウォールがオフになっていることを確認してください。


そのコマンドを使用したとき、すなわちnetstat -an | 「19345」を検索すると、結果が得られませんでした。どういう意味ですか?–
nanosoft 2015

2
これは、このポートが空いていることを意味します
Sarvar Nishonboev 2015

実行netstat -an | find "8080"するとエラーが表示されますno such file named "8080"
Pragyaditya Das

24

telnet利用できない場合は、PuTTYをダウンロードしてください。これは、はるかに優れたTelnet、SSHなどのクライアントであり、特にサーバーを管理している場合は、このクライアントだけでなく、多くの状況で役立ちます。


はい。ただし、AmForthを使用してForthコードを貼り付けることはできません(編集オーバーフローと組み合わせてPuTTYを使用する場合を除く)。
Peter Mortensen


12

Windowsサーバーで使用されているリスニングポートをすべて表示するには、これを使用します。

netstat -an |find /i "listening"

開いている、リスニング、確立されているすべてのポートを表示します。

netstat -a




1

これが私のために働いたものです:

  • コマンドプロンプトを開く
  • タイプ telnet
  • Microsoft Telnet> open <ホスト名またはIPアドレス> <space> <port>

ポートが開いているかどうかを確認します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.