【必読】ncコマンドとは?基本的な書き方から実例まで紹介

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年5月)

✔このような方へ向けて書かれた記事となります

「ncコマンドって何ができるの?」

「ncコマンドの使い方を詳しく教えてほしい」

「ncコマンドの実例が見てみたい」

✔当記事を通じてお伝えすること

  • ncコマンドとは?
  • ncコマンドの基本的な書き方・使い方
  • ncコマンドの実践における使用例

当記事では、ncコマンドの基本はもちろん、その応用した使い方やオプションの実例までご紹介します。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

ncコマンドについての基礎知識5選

ncコマンドの基礎知識について、必要なものから見ていきます。

具体的に使い始める前に、必ず目を通しておきましょう

  • ncコマンドとは?
  • ncコマンドの重要性
  • ncコマンドの用途
  • シンプルな構文
  • よく使われるオプション

ncコマンドとは?

ncコマンド(Netcatコマンド)は、UNIX系のOSで使われるネットワークツールです。

TCPやUDP通信を簡単におこなうことができ、以下のような多岐にわたる機能を持っています。

  • ポートスキャン
  • ファイル転送
  • 簡易チャットアプリケーションの作成

コマンドライン上で動作し、シンプルで柔軟な操作が可能です。

ncコマンドの重要性

ncコマンドが重要である理由は以下の通りです。

  • デバッグ: プログラムのネットワーク通信状況を確認できる
  • トラブルシューティング: ネットワークの問題を特定し、解決策を見つける
  • テスト: 新しいシステムやアプリケーションのネットワーク機能をテストする
  • セキュリティ: ネットワークの脆弱性をチェックし、適切な対策を施せる
  • 学習: プログラミングやネットワーク技術を学ぶ際に、基本的なTCP/UDP通信を理解できる

ncコマンドの用途

ncコマンドは、以下のような用途で使用できます。

  • ポートスキャン: 開いているポートやリスニング状態を調べます。
  • クライアント/サーバ間の通信確認: クライアントとサーバ間の通信をテストし、問題の特定や解決
  • ファイル転送: セキュアでないファイル転送
  • 簡易チャットアプリケーションの作成: 2台のコンピュータ間で簡単なチャットアプリケーションを構築
  • システム管理作業: ネットワークの状態確認やデータ送受信をおこなえる

ncコマンドの基本構文

ncコマンドの基本構文は次の通りです。

nc [オプション] [ホスト名またはIPアドレス] [ポート番号]

例えば、`example.com`というホスト名のサーバーの80番ポートに接続する場合、以下のようにコマンドを入力します。

nc example.com 80

よく使われるオプション

以下はよく使われるオプションとその説明です。

  • -l: リスニングモード(サーバモード)で起動し、他のクライアントからの接続を待ち受ける
  • -p: ローカルポートを指定し、特定のポート番号で接続を待ち受ける
  • -u: UDP通信を使用する(デフォルトではTCP通信)
  • -v: 詳細モードで実行し、接続の詳細情報を表示できる
  • -w: タイムアウト値を指定し、接続がタイムアウトするまでの秒数を指定

これ以外のオプションも次章でご紹介しています。

ncコマンドのオプション一覧

ncコマンドのオプション一覧をご覧ください。

上記以外にも使用できるものが見つかります。

オプション名説明実例
-4IPv4 アドレスのみを使用するnc -4 example.com 80
-6IPv6 アドレスのみを使用するnc -6 example.com 80
-CCRLF(キャリッジリターン・ラインフィード)を送信するnc -C example.com 80
-Dデバッグ出力を有効にするnc -D example.com 80
-d非表示モードで実行するnc -d example.com 80
-eコマンドを実行し、標準入力と標準出力をリダイレクトするnc -l -p 12345 -e /bin/bash
-gソースルーティングホップを指定するnc -g 192.168.1.1 example.com 80
-Gソースルーティングポインタを指定するnc -G 4 example.com 80
-hヘルプを表示するnc -h
-i入力間のインターバル秒を指定するnc -i 1 example.com 80
-k複数の接続を同時に受け入れる(サーバモード時)nc -l -p 12345 -k
-lサーバーモードで待ち受けを開始するnc -l -p 12345
-nDNS解決を無効にする(IPアドレスのみを使用)nc -n 192.168.1.100 80
-oヘックスダンプファイルを出力するnc -o output.txt example.com 80
-pローカルポート番号を指定するnc -p 12345 example.com 80
-q指定秒後に終了する(-1 は接続終了後にすぐに終了)nc -q 10 example.com 80
-rランダムなポートを選択するnc -r example.com 80
-sローカルIPアドレスを指定するnc -s 192.168.1.100 example.com 80
-TIP Type-Of-Service を設定するnc -T 16 example.com 80
-tTelnetオプションの相互交渉を有効にするnc -t

ncコマンドのインストール方法

もしncコマンドが使えないようであれば、自身のPCにインストールしましょう。

OSによって異なるので、自分のPCに合わせたやり方でおこなってください。

  • Linuxの場合
  • macOSの場合
  • Windowsの場合

Linuxの場合

多くのLinuxディストリビューションでは、デフォルトでncコマンドがインストールされています。もしインストールされていない場合、以下のコマンドでインストールできます。

Ubuntu/Debian系

sudo apt update
sudo apt install netcat

CentOS/Red Hat系

sudo yum update
sudo yum install nc

macOSの場合

macOSでもデフォルトでncコマンドがインストールされています。

もしncコマンドが見つからない場合、Homebrewを使ってインストールしましょう。

Homebrewがインストールされていない方へ、以下のコマンドでインストールできます。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

次に、以下のコマンドでncコマンドをインストールします。

brew install netcat

Windowsの場合

Windowsでは、ncコマンドはデフォルトでインストールされていません。

以下のサイトからダウンロードし、実行パスに追加してください。

Ncat - Netcat for the 21st Century
Ncat is a free, open-source Netcat replacement for Linux, Windows, OS X and more. TLS/SSL encryption, proxy support, IPv...

ncコマンドの実践的な使い方

ncコマンドを使った実践例をご覧ください。

実際の使用例を見れば、あなたのやりたいことのイメージもつきやすいです。

  • ポートの状態を確認する
  • クライアントとして接続する
  • サーバとして待ち受ける
  • ファイルの転送

ポートの状態を確認する

ncコマンドを使用して、特定のホストのポートが開いているかどうかを確認できます。

例えば以下のコマンドは、`example.com`というホスト名のサーバーの80番ポートが開いているかを確認するものです。

nc -v -z example.com 80

クライアントとして接続する

ncコマンドを使って、TCPやUDPのクライアントとして他のホストに接続できます。

例えば、ローカルネットワーク内の192.168.1.100というIPアドレスを持つサーバーの12345番ポートにTCPで接続する場合、以下のようにコマンドを入力します。

nc 192.168.1.100 12345

サーバとして待ち受ける

ncコマンドを使って、TCPやUDPのサーバとして待ち受けることも可能。

例えば12345番ポートでTCPの接続を待ち受ける場合、以下のようにコマンドを入力します。

nc -l -p 12345

ファイルの転送

ncコマンドを使って、ファイルを転送できます。

例えば、送信側のコンピュータで12345番ポートを開いて、`file.txt`というファイルを転送する場合、以下のようにコマンドを入力します。

nc -l -p 12345 < file.txt

受信側のコンピュータでは、送信側のIPアドレス(例: 192.168.1.100)とポート番号を指定して、ファイルを受信します。

nc 192.168.1.100 12345 > received_file.txt

ncコマンドの応用例

ncコマンドの応用例をご覧ください。

ここまでの内容を理解できたなら、応用した使い方でも問題ないでしょう。

  • チャットアプリケーションの作成
  • システム管理での使用例

チャットアプリケーションの作成

ncコマンドを使って、簡単なチャットアプリケーションを作成できます。

1.サーバ側で12345番ポートで待ち受けます。

nc -l -p 12345

2.クライアント側でサーバのIPアドレス(例: 192.168.1.100)とポート番号を指定して接続します。

nc 192.168.1.100 12345

これで、サーバ側とクライアント側でテキストを入力し合うことでチャットが可能になります。

システム管理での使用例

ncコマンドはシステム管理で使えます。

例えば、リモートサーバー上でコマンドを実行し、結果をローカルマシンへ転送する方法です。

やり方はこちら。

リモートサーバーで以下のコマンドを実行し、12345番ポートで待ち受けます。

nc -l -p 12345 -e /bin/bash

次に、ローカルマシンでリモートサーバーのIPアドレス(例: 192.168.1.100)とポート番号を指定して接続します。

nc 192.168.1.100 12345

これで、ローカルマシンからリモートサーバー上でコマンドを実行し、結果を受け取ることができます。

よくあるトラブルシューティング

ncコマンドを使用する際のトラブルシューティング例をご紹介します。

  • 接続ができない場合
  • 通信が遅い場合
  • ファイル転送に失敗する場合

接続ができない場合

接続ができない場合、以下の点を確認してください。

  • ホスト名やIPアドレス、ポート番号が正しいかどうか
  • ファイアウォールの設定で通信がブロックされていないか
  • サーバ側で適切に待ち受けが行われているか

通信が遅い場合

通信が遅い場合、以下の点を確認してください。

  • ネットワークの混雑状況
  • 通信経路上のネットワーク機器のパフォーマンス
  • 使用しているポート番号が適切かどうか

ファイル転送に失敗する場合

ファイル転送に失敗する場合、以下の点を確認してください。

  • 転送するファイルのパスが正しいかどうか
  • 転送先のディレクトリに書き込み権限があるかどうか
  • 通信が途中で切れていないかどうか

セキュリティに関する注意点

ncコマンドを扱うのであればセキュリティリスクについても認識しておきましょう。

セイキュリティ対策はネットワーク周りのコマンドでは必須です。

  • ncコマンドのリスク
  • セキュリティ対策

ncコマンドのリスク

ncコマンドは便利ですが、悪意あるユーザーによって悪用される可能性があります。

例えば、不正アクセスやデータの盗難などが考えられます。

そのため、ncコマンドを使用する際はセキュリティを十分に考慮してください。

セキュリティ対策

ncコマンドを安全に使用するために、以下のセキュリティ対策を実施してください。

  • ファイアウォールを設定して、不要なポートを開放しない
  • ファイル転送では、暗号化された通信チャンネル(例:SSH)を使用する
  • パスワード認証や公開鍵認証など、適切な認証方法を導入してアクセス制限をおこなう
  • ログを定期的に監視し、不審なアクセスや活動をすぐに検出できるようにする
  • システムやアプリケーションのセキュリティパッチを常に最新に保つ

まとめと今後の学習

当記事では、ncコマンドについて以下をお伝えしてきました。

  • ncコマンドの概要
  • インストール方法
  • 基本構文
  • 実践的な使い方
  • 応用例
  • トラブルシューティング
  • セキュリティに関する注意点

ncコマンドは非常に強力で汎用性が高いため、ネットワーク管理やデバッグ作業に使えます。

今後の学習として、ncコマンドを実際に使ってみることで、さらに理解を深めることができるでしょう。

ncコマンド以外にも、さまざまなネットワーク管理やデバッグツールが存在します。

これらのツールを学ぶことで、ネットワーク管理のスキルをさらに向上させることができるでしょう。

タイトルとURLをコピーしました