指図 nc Linuxシステムでは、ncはネットワークを簡単かつ柔軟に管理できる多機能ツールとして知られています。開いているポートの確認、2つのデバイス間の接続テスト、さらにはネットワーク経由でのファイルの高速転送など、ncは複雑なツールを必要とせずに、分かりやすいソリューションを提供します。ncの特徴は、そのシンプルさと、ネットワーク管理者と接続の問題を診断したいユーザーの両方にとって興味深い高度なタスクを実行できることです。以下では、ncの最も顕著な実用的な用途と、さまざまなネットワーク状況への対応を容易にする方法について解説します。
netcatツールはネットワーク管理者の間で非常に人気があります。しかし、Linuxユーザーの日常業務でも様々な用途に活用できます。調査を進める中で、ncコマンドの優れた使用例をいくつか見つけました。
6. ネットワーク接続を作成する
まず、ncコマンドの最もシンプルかつ最も重要な機能、つまり2つのデバイス間で直接TCPまたはUDP接続を確立することから始めましょう。これは、より高度な用途の基盤となるものです。
2つのLinuxシステムがあると仮定しましょう。説明のために、UbuntuマシンとLinux Mintマシンを使用します。Ubuntuはサーバーまたはリスナーとして機能し、Linux Mintはクライアントまたはコネクターとして機能します。
まず、リスナーをオンにします。
nc -l -p 12345
-l オプションはリスニングモードです。-p オプションはポートを指定します。ここではポート12345を使用していますが、既に使用されていない限り、他のポートも使用できます。このコマンドを実行すると、デバイスは接続を待機する状態になります。
次に、接続デバイスから次の操作を実行します。
nc IPアドレス ポート番号
IPアドレスをサーバーのIPアドレスに置き換えてください。ポート番号はリスナーで使用したポート番号になります。私の場合は以下のとおりです。
192.168.100.4 12345
これにより、2つのデバイス間にTCP接続が作成されます。さらに、これはサーバー側のみが送信できる片方向の接続ではなく、双方が送受信できます。
UDP接続を確立したい場合は、-uオプションを使用します。リスニングデバイスで以下を実行します。
nc -u -l -p 12345
クライアント マシンで次のコマンドを実行します。
nc -u 192.168.100.4 12345
UDP接続はTCP接続よりも信頼性が低いですが、速度が重要でデータ損失が許容される場合に適しています。
5. ポートスキャン
NCは単一のポートへの接続に加えて、ポートグループ全体をスキャンして開いているポートを特定できます。これは、トラブルシューティングやサービスのインベントリ作成に役立ちます。そのため、NCはネットワークの「スイスアーミーナイフ」と呼ばれることもあります。
クライアントからサーバー上で開いているTCPポートを確認したいとします。先ほどと同様に、サーバー上にリスナーを作成します。
nc -l -p 12345
次にクライアントから以下を実行します:
nc -z -v 192.168.100.4 20-130
-z フラグは、netcat に Zero-I/O モードを使用するように指示します。これは、netcat がデータを送信せず、待機中のデーモンのみをチェックすることを意味します。-v フラグは詳細モードを有効にし、結果をより適切に表示します。また、監視対象のポート範囲を 20 から 130 まで指定します。
警告
ご自身が所有しているシステム、または明示的にスキャンを許可されているシステムのみをスキャンしてください。許可されていないスキャンは違法、または敵対行為とみなされる場合があります。
デモでは、ポート 80 を除くほぼすべてのポートが閉じられているため、接続を拒否しました。同様に、UDP ポートをスキャンすることもできます。
4.ファイル転送
Netcatは、FTP、SCP、共有フォルダを介さずに、TCPまたはUDP経由で直接ファイルを送信できます。そのため、特に他の方法が利用できない場合に高速転送に最適です。Linux MintからUbuntuマシンにファイルを送信してみましょう。
test.txt というファイルがあり、これを「NC ファイル転送テストファイル」と呼んでいます。まず、ファイルを転送したいデバイスにリスナーを作成します。リスナーを作成したら、接続出力を以下のようにファイルにリダイレクトします。
nc -l -p 12345 > 受信.txt
次に、送信者のマシンで、次のようにファイルの内容を nc 接続にリダイレクトします。
192.168.100.4 12345
転送が成功したことを確認するには、lsコマンドでファイルの存在を確認し、catコマンドでその内容を読み取ります。このプロセスを逆にして、ファイルを逆方向に送信することも可能です。上記で示したコマンドを使って、役割を逆転させるだけです。
3. Webサーバーを作成する
NetcatはシンプルなHTTPサーバーとして動作し、ポートをリッスンして接続してきたすべてのユーザーに生のHTMLファイルを送信します。もちろん、ApacheやNginxの代替にはなりませんが、簡単なデモ、デバッグ、HTTPリクエストの調査などには最適です。
まず、サーバーマシンに静的HTMLファイル(page.html)を作成します。私の場合はUbuntuです。
echo -e "HTTP/1.1 200 OK\r\nコンテンツタイプ: text/html\r\n\r\n Netcatからこんにちは>ページ.html
このファイルには、HTTP ステータス ライン、Content-Type ヘッダー、およびいくつかの単純な HTML テキストが含まれています。\r\n シーケンスは、HTTP でヘッダーと本文を区別するために不可欠です。
次に、同じマシン上で netcat Web サーバーを実行します。
真の場合; nc -l -p 8080 を実行します
ここではwhileループを使用して、リクエストごとにサーバーを稼働させています。ポート8080をリッスンし、レスポンスとしてHTMLファイルを送信します。クライアントマシン(私の場合はLinux Mint)でWebブラウザを開き、IPアドレスとポート番号を指定して静的HTMLページにアクセスします。
http://192.168.100.4:8080
curl コマンドを使用して HTML ページを取得することもできます。
カール http://192.168.100.4:8080
2. シンプルなチャットアプリを作成する
Netcatは2つの端末を接続できるため、片方の端末で入力した内容がもう片方の端末にも瞬時に表示されます。簡単なUIトリックで、インスタントチャットツールとして活用できます。外部チャットアプリケーションは必要ありません。
これを実行するには、最初のセクションで説明したようにネットワーク接続を作成する必要があります。デバイスの1つにリスナーを作成します。
nc -l -p 12345
次に別のデバイスから接続します。
192.168.100.4 12345
接続が確立されると、片方のデバイスで何かを入力すると、もう片方のデバイスに表示されます。その後、2つ目のデバイスで何かを入力すると、1つ目のデバイスに表示されます。
ターミナルで入力するだけで、あるコンピュータから別のコンピュータにメッセージを送信できるようになりました。送信者の名前もメッセージに追加できないか、何か工夫してみました。そうすれば、誰がメッセージを送信したかを追跡しやすくなります。
echoとwhileを使って送信者名を追加することで実現できます。設定方法は以下の通りです。サーバーマシンで以下を実行してください。
msg を読み取りながら、 echo "Ubuntu: $msg" を実行します。完了 | nc -l -p 12345
これはモスルのマシン上にあります:
msg を読み取り中に、"LM: $msg" をエコーし、完了 | nc 192.168.100.4 12345
上記のコマンドは入力を待ち、プレフィックスを付けて送信します。受信側では、プレフィックスは送信されたかのように表示されます。ユーザーが2人以上いる場合でも、この方法でメッセージを追跡できます。
1. ネットワークのトラブルシューティング
最後に、ncコマンドを使用して、一般的なネットワークの問題を解決できます。ネットワーク障害が発生した場合、問題が接続の問題、サービスの問題、ファイアウォールの問題のいずれであるかを確認するのに役立ちます。ポートのテスト、サービスのシミュレーション、初期応答の検証も可能です。
アプリケーションが応答しない場合は、nc コマンドを使用してそのポートに接続できるかどうかを確認できます。
nc -zv 192.168.100.4 22
クラッシュしたり、「接続が拒否されました」というメッセージが表示されたりする場合、ポートは閉じられているかフィルタリングされています。
サービスと手動で通信し、期待どおりに応答するかどうかを確認できます。例えば、ローカルHTTPサービスの応答を確認します。
192.168.100.4 8080
サービスが成功すると、HTTPレスポンスヘッダーと、場合によってはHTMLコードが送信されます。これは、ブラウザなしでは正常に動作しないWebアプリケーションのデバッグに最適です。
アプリケーションがポートに接続できるものの、正しいデータを送信していないと思われる場合は、サービスになりすましてアプリケーションの送信内容をキャプチャすることができます。これは、カスタムクライアント/サーバープロトコルのデバッグに役立ちます。netcatを使用すると、これらの小さなテストを迅速に実行し、ネットワークのどこで問題が発生しているか、そしてどのように修正すればよいかを特定できます。
netcat でできることはたくさんあります。興味があれば、マニュアルページをご覧ください。 ncの公式ユーザー。 他にも多くの Linux ネットワーク コマンドがあるので、試してみることをお勧めします。
ncコマンドは、単なるLinuxツールではありません。ネットワークを診断し、デバイス間の接続の整合性を確保するためのインテリジェントなツールです。その使いやすさと多様な機能により、実用的で信頼性の高いネットワークスキャンツールをお探しの方に最適です。ぜひお試しください。日常的な接続の問題に対処する際に、時間と労力を大幅に節約できることを実感していただけるでしょう。













