Netcat(nc)コマンドは、ネットワーク接続の分析、開いているポートのスキャン、データの転送などを行うための強力なツールです。TCPまたはUDPプロトコルを使用してネットワーク接続の読み取りと書き込みを行うためのネットワークユーティリティです。
netcatのインストール方法
これはクロスプラットフォームツールであり、Linux、macOS、Windows、およびBSDで使用できます。 apt install
を使用してUbuntu18.04マシンにnetcatをインストールします またはソースコードからコンパイルします。
aptを使用したインストールは非常に簡単で、ターミナルに次のコマンドを入力するだけです。
sudo apt install netcat
CentOS8の場合
ncatは、nmapパッケージとともにRHEL 8 /CentOS8にインストールできます。以下のようにdnfコマンドを使用します
sudo dnf install nmap
ソースコードからnetcatをインストールする方法
ソースコードからnetcatをコンパイルするのは、apt install
を介してインストールするほど簡単ではありません。 、ただし、以下の手順に従うと、簡単にインストールできます。
次のコマンドを使用して、netcatWebサイトからソースコードをダウンロードします
wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
新しくダウンロードしたアーカイブを抽出します。これを行うには、次のコマンドを実行できます:
tar -xzvf netcat-0.7.1.tar.gz
cd
パッケージのソースコードを含むディレクトリに移動し、./configure
と入力します システムのパッケージを構成します。
cd netcat-0.7.1
./configure
./configureコマンドの実行時に「$PATHに受け入れ可能なCコンパイラが見つかりません」というエラーメッセージが表示される場合は、gccコンパイラがインストールされていることを確認してください。インストールするには、次のコマンドを入力します。
apt-get install build-essential
configure
を実行しています しばらく時間がかかります。
構成が正常に完了したら、実行:
sudo make
および
sudo make install
make clean
と入力すると、ソースコードディレクトリからプログラムバイナリとオブジェクトファイルを削除できます。 。 configure
するファイルも削除します 作成し、make distclean
を実行します コマンド。
Netcatの例
いくつかのnetcatコマンドの調査を開始する前に、ncを使用して既知のポート(0-1023)にバインドしている場合は、root権限が必要であることを知っておくことが重要です。それ以外の場合は、通常のユーザーとしてncを実行できます。
1)リモートホストの特定のTCPポートが開いているかどうかをテストします
nc -vn 192.168.40.146 2424
リモートサーバーの2424ポートが閉じている場合に出力
nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused
リモートサーバーのポートが開いている場合に出力します(例:22ポート)
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
2)リモートホストに対してTCPポートスキャンを実行します
以下のコマンドは、リモートホストの20から25までのポートをチェックし、結果を出力します。
nc -vnz -w 1 192.168.40.146 20-25
出力は次のようになります
nc: connect to 192.168.40.146 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 21 (tcp) failed: Connection refused
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
nc: connect to 192.168.40.146 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 25 (tcp) failed: Connection refused
3)リモートホストに対してUDPポートスキャンを実行します
nc -vnzu 192.168.40.146 1-65535
出力には、UDP接続を許可するポートのみが表示されます。
Connection to 192.168.40.146 2424 port [udp/*] succeeded!
Connection to 192.168.40.146 12354 port [udp/*] succeeded!
4)テストUDPパケットをリモートホストに送信します
echo -n "udp test" | nc -u -w1 192.168.40.146 2424
上記のコマンドは、1秒のタイムアウトでテストUDPパケットをポート2424のリモートホストに送信します
5)あるホストから別のホストにファイル(test.txtなど)をコピーします
レシーバーホスト(私の場合は192.168.40.146)で次を実行します:
nc -lp 2424 > test.txt
送信側ホスト(192.168.40.144)で、次のコマンドを実行します。
nc 192.168.40.146 2424 < test.txt
これにより、test.txtファイルが2424ポートを介して送信者ホストから受信者ホストにコピーされます。受信者ホストの2424ポートでの着信接続を許可してください。
6)ディレクトリ全体(そのコンテンツを含む)をあるホストから別のホストに転送します
レシーバーホストで実行:
nc -l 2424 | tar xvf -
送信側ホストで、次のコマンドを実行します。
tar cvf - /path/to/dir | nc 192.168.40.146 2424
7)リモートホスト上にハードドライブ(例:/ dev / sdc)の圧縮バックアップを作成します
リモートホストで実行:
nc -lp 2424 | sudo dd of=/path/to/image.img.gz
ローカルホストで次のコマンドを実行します:
dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424
8)リモートホストに保存されている圧縮ディスクイメージからハードドライブ(例:/ dev / sdc)を復元します
ローカルホストで実行:
nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc
リモートホストで次のコマンドを実行します:
cat /path/to/image.img.gz | nc 192.168.40.144 2424
9)2人のホスト間で安全でないオンラインチャットを実行する
1つのホスト(例:192.168.40.144)で、次のコマンドを実行します:
nc -lp 2424
別のホスト(例:192.168.40.146)で次のコマンドを実行します:
nc 192.168.40.144 2424
これらのコマンドを実行すると、両方の端末で入力されたものが両方のホストマシンに表示されます。
10)静的なWebページでWebサーバーを実行します
ローカルホスト(例:192.168.40.144)で以下のコマンドを実行して、ポート80でtest.htmlを提供するWebサーバーを起動します。80は既知のポート(1-1023)の範囲内にあるため、sudo権限で実行する必要があることに注意してください。
while true; do sudo nc -lp 80 < test.html; done
次に、http://192.168.40.144/test.html
を開きます。 別のホストからアクセスします。
11)IPv6アドレスを使用してTCPポートでリッスンします
次のコマンドを使用して、TCPポートでリッスンするときにncがIPv6アドレスを使用できるようにすることができます。
nc -6 -l 2424
以下のコマンドで動作するかどうかを確認してください
sudo netstat -nap | grep 2424
出力は次のようになります
tcp6 0 0 :::2424 :::* LISTEN 15665/nc
12)クライアントがビデオプレーヤー(mplayerなど)を使用してストリーミングされたビデオを視聴できるように、サーバーからビデオファイルをストリーミングします
ビデオサーバー(192.168.40.144)の場合:
cat sample_video.avi | nc -l 2424
クライアントホスト(192.168.40.146)の場合:
nc 192.168.40.144 2424 | mplayer -vo x11 -cache 3000-
関連項目:
- LinuxNetcatコマンドをポートスキャナーとして使用する方法
- Linuxでnetcatを使用して簡単なチャットを作成する方法
ご覧のとおり、netcatはTCP / IPネットワーキングに最適なツールであり、ネットワーキング関連のトラブルシューティングと実験を行う場合、システム管理者の最もお気に入りのツールの1つです。そのため、多くのLinuxディストリビューションがpreinstallednetcatで提供されています。