サイトアイコン ITC Media

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

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

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

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

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

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

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

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

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

筆者プロフィール

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

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

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

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

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

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

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

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

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

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

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

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

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

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

ncコマンドとは?

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

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

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

ncコマンドの重要性

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

ncコマンドの用途

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

ncコマンドの基本構文

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

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

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

nc example.com 80

よく使われるオプション

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

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

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の場合

多くの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コマンドを使用する際のトラブルシューティング例をご紹介します。

接続ができない場合

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

通信が遅い場合

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

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

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

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

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

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

ncコマンドのリスク

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

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

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

セキュリティ対策

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

まとめと今後の学習

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

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

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

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

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

モバイルバージョンを終了