web-dev-qa-db-ja.com

リモートホスト/ポートが開いているかどうかを確認します-GNU NetcatまたはNMapは使用できません-RHEL 7

作業中、インフラストラクチャチームは、RHEL7がベースOSとしてインストールされた新しいVMを展開しています。この特定のイメージはNetcatのnmap-ncatバージョンに付属しており、NMapはインストールされていません。マシンに何もインストールすることはできません。

以前は、GNU Netcatに-zオプションが含まれているNetcatを使用して、リモートのホスト/ポートをスキャンし、開いているかどうかを確認していました。次のようなものです。

nc -z -v -w 3 remote.Host.name 1234

ncatをインストールできないシステムで-zオプションのない新しいnmapを使用して同じチェックを行うにはどうすればよいですか?

17

Bashでは、特別なファイルにリダイレクトすることで、TCPおよび/またはUDPポートに接続できます。

/dev/tcp/Host/port Hostが有効なホスト名またはインターネットアドレスで、portが整数のポート番号またはサービス名である場合、Bashは対応するTCPソケットを開こうとします。

/dev/udp/Host/port Hostが有効なホスト名またはインターネットアドレスであり、portが整数のポート番号またはサービス名である場合、Bashは対応するUDPソケットを開こうとします。

ファイルのオープンまたは作成に失敗すると、リダイレクトが失敗します。

したがって、www.example.comのポート80に接続できるかどうかをテストするには、以下が機能するはずです。

echo -n > /dev/tcp/www.example.com/80

ポートがブロックされている場合は、「接続拒否」メッセージまたはタイムアウトが発生します。

16
HBruijn

Ncatは-zをまだサポートしていませんが、シェルリダイレクトで同じ動作を得ることができます。

$ ncat google.com 80 </dev/null >/dev/null && echo "yes"
yes
$ ncat google.com 81 </dev/null >/dev/null && echo "yes"
Ncat: Connection timed out.
$ ncat scanme.nmap.org 1234 </dev/null >/dev/null && echo "yes"
Ncat: Connection refused.

接続タイムアウトは-wオプションで調整できます。

編集: Ncat 7.25BETA2 は、GNU netcatと同じように機能する-zオプションを導入しましたが、単一のポートでのみ機能します。ポート範囲をスキャンする必要がある場合は、Nmapを使用する必要があります。

9
bonsaiviking

Netcat、telnet、nmapは必要ありません。 Bashはよりシンプルで、移植性があり、より効率的です。

チェックを開く

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" 

オープン/クローズドチェック

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" || echo "Closed"

ポート範囲チェック

for i in $(seq 80 88); do (>/dev/tcp/example.com/80/$i) &>/dev/null && echo $i Open|| echo $i Closed; done
2
AGS