UDP ncコマンドのエコー結果を信頼できますか?

UDP ncコマンドのエコー結果を信頼できますか?

コンテキスト: ncコマンドを使用してUDPポートをテストしたい

何が起こったのか: ncコマンドは出力に何も返さず、入力すると0を返します。echo $?

任意のコマンド:

nc -vzu <ip> <port>
echo $?

問題は何ですか: 結果を信頼できるかどうかを知りたいです。echo $?

バージョン:

  • netcat:0.7.1-5.ph3.x86_64(vCenterから)。
  • tcpdump-uw: バージョン 4.9.1-PRE-GIT_2017_09_22

私の考え:

UDPはパケットを検証しないことを知っています。

ターゲットサーバーで試しましたが、何も受信されませんecho "something" | nc -vu <ip> <port>tcpdump -i vmk0 -en udp

UDP パケットが正常に送信されたが宛先に到達できなかったようです。

どう思いますか?

ベストアンサー1

バージョンや実装によってnc動作が異なる場合があります。nc特定のコマンドを理解し、結果が信頼できることを確認するには、特定のコマンドの特定の動作をテストする必要があります。

たとえば、私のncバージョンでは、開いているUDPポートに接続しようとすると、次のように記録されます。

$ nc -vzu <ip> <port>; echo exit status is: $?
Connection to <ip> <port> port [udp/*] succeeded!
exit status is: 0

終了ステータスを返します。0

ただし、何もリッスンしていないポートに接続しようとすると、終了ステータスのみが返されます。1

$ nc -vzu <ip> <port>; echo exit status is: $?
exit status is: 1

特定の終了ステータスncコマンドの終了ステータスを信頼できることを確認するには、閉じたUDPポートに接続してみてください。有効なUDPポート範囲は次のとおりです。4096-65535

存在するあなたの状況、報告したように接続しようとするとUDPポートを閉じる有効な範囲内で、ncコマンドは終了ステータスを返します。0(成功)これは、特定のバージョン/実装の終了ステータスを信頼できないことを意味しますnc

おすすめ記事