ncコマンドでネットワーク接続をテストする方法|ポート確認やファイル転送の実践例も


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > ncコマンドでネットワーク接続をテストする方法|ポート確認やファイル転送の実践例も
「サーバーの特定のポートに接続できるか確認したいが、telnetが入っていない」
「ファイアウォールの設定変更後に、本当にポートが通るのか手軽にテストしたい」
ネットワーク接続の確認やデバッグには、nc(netcat)コマンドが最適です。

この記事では、nc コマンドの基本的な使い方から、ポートの疎通確認、ポートスキャン、ファイル転送、簡易サーバーの立ち上げ、そしてトラブルシューティングでの活用まで解説します。
RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTS で動作確認済みです。

この記事のポイント

・nc -zv ホスト ポート で接続テストができる
・-w でタイムアウト秒数を指定し応答なしを回避できる
・nc -l で簡易サーバーを立ててファイル転送もできる
・telnetの代替としてファイアウォール検証に最適


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

ncコマンド(netcat)とは?

nc(netcat)は、TCP/UDPのネットワーク接続を自在に操作できるコマンドラインツールです。「ネットワークのスイスアーミーナイフ」とも呼ばれ、接続テスト、ポートスキャン、データ転送、簡易サーバーなど幅広い用途に使えます。

telnet コマンドと似た使い方ができますが、nc はスクリプトへの組み込みが容易で、UDP通信にも対応している点が優れています。最近のサーバー環境では telnet がインストールされていないケースが増えているため、nc を使いこなせるとトラブル対応の幅が広がります。

なお、ディストリビューションによって ncat(Nmap付属版)と netcat(GNU版/OpenBSD版)が異なります。RHEL 9 / Rocky Linux 9 では nmap-ncat パッケージに含まれる ncatnc コマンドとして使えます。

ncのインストール

多くのディストリビューションではデフォルトでインストールされていますが、最小構成のサーバーでは入っていない場合があります。

# ncがインストール済みか確認する $ which nc /usr/bin/nc # バージョンを確認する(RHEL / Rocky Linuxの場合) $ nc --version Ncat: Version 7.92 ( https://nmap.org/ncat ) # インストールされていない場合(RHEL / Rocky Linux) $ sudo dnf install nmap-ncat # インストールされていない場合(Ubuntu / Debian) $ sudo apt install netcat-openbsd

基本的な使い方(ポートの疎通確認)

1. 特定のポートへの接続テスト(-zv オプション)

実務で最もよく使うのが、リモートサーバーの特定ポートに接続できるかどうかの確認です。-z はスキャン専用モード(データを送らない)、-v は詳細表示です。

# Webサーバー(ポート80)への接続を確認する $ nc -zv 192.168.1.10 80 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connected to 192.168.1.10:80. Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds. # SSH(ポート22)への接続を確認する $ nc -zv web-server.example.com 22 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connected to 203.0.113.xx:22. Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.

「Connected」と表示されればポートが開いており、接続に成功しています。接続できない場合は次のように表示されます。

# 閉じているポートへの接続テスト $ nc -zv 192.168.1.10 8080 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connection refused. # ファイアウォールでドロップされている場合(応答なし) $ nc -zv 192.168.1.10 3306 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connection timed out.

「Connection refused」はポートが閉じている(サービスが起動していない)状態、「Connection timed out」はファイアウォール等でパケットが破棄(DROP)されている状態です。この違いを見分けられるのが nc の強みです。

2. タイムアウトを指定する(-w オプション)

ファイアウォールでDROPされている場合、デフォルトではタイムアウトまで長時間待たされます。-w で秒数を指定すると、指定した時間で打ち切れます。

# 3秒でタイムアウトさせる $ nc -zv -w 3 192.168.1.10 3306 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connection timed out. # 複数ポートを順番に確認するスクリプト例 $ for port in 22 80 443 3306 8080; do nc -zv -w 2 192.168.1.10 $port 2>&1 done Ncat: Connected to 192.168.1.10:22. Ncat: Connected to 192.168.1.10:80. Ncat: Connected to 192.168.1.10:443. Ncat: Connection timed out. Ncat: Connection refused.

この例では、ポート22・80・443は開いており、3306はファイアウォールでDROP、8080はサービス未起動であることがわかります。

3. ポート範囲をスキャンする

ncat(RHEL標準)ではポート範囲を直接指定できませんが、シェルのブレース展開やseqコマンドで対応できます。

# ポート8000~8010をスキャンする $ for port in $(seq 8000 8010); do nc -zv -w 1 192.168.1.10 $port 2>&1 | grep -i connected done Ncat: Connected to 192.168.1.10:8000. Ncat: Connected to 192.168.1.10:8005.

grep -i connected で接続成功したポートだけを抽出しています。本格的なポートスキャンが必要な場合は nmap コマンドの利用を検討してください。

UDPポートの確認

TCPだけでなくUDPポートの疎通確認も可能です。DNSサーバー(53番ポート)やNTPサーバー(123番ポート)の確認で使います。

# DNS(UDP 53番ポート)の疎通を確認する $ nc -zuv -w 3 192.168.1.1 53 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connected to 192.168.1.1:53. Ncat: UDP packet sent successfully # NTP(UDP 123番ポート)の疎通を確認する $ nc -zuv -w 3 ntp.example.com 123 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connected to 203.0.113.xx:123. Ncat: UDP packet sent successfully

-u オプションがUDPモードの指定です。ただし、UDPはコネクションレスなプロトコルのため、「Connected」と表示されても実際にサービスが応答しているとは限りません。UDPの疎通確認は参考程度に考え、実際のサービス応答は各プロトコル固有のツール(dig でDNS確認など)で検証してください。

応用:簡易サーバーとファイル転送

1. 簡易的なTCPサーバーを立てる(-l オプション)

nc -l で指定したポートでリッスン(待ち受け)できます。ファイアウォールの疎通テストや、アプリケーション起動前のポート確認に便利です。

# ---- サーバー側(受信側):ポート9999でリッスンする ---- $ nc -l 9999 # ---- クライアント側(送信側):接続してメッセージを送る ---- $ nc 192.168.1.10 9999 Hello from client

クライアント側で入力したテキストが、サーバー側のターミナルにそのまま表示されます。Ctrl+Cで終了します。

2. ncでファイルを転送する

nc とリダイレクトを組み合わせれば、scpやftpを使わずにファイルを転送できます。一時的なファイル受け渡しに重宝します。

# ---- 受信側:ポート9999で待ち受けてファイルに保存する ---- $ nc -l 9999 > /tmp/received_file.tar.gz # ---- 送信側:ファイルを送信する ---- $ nc 192.168.1.10 9999 < /var/log/backup.tar.gz # 転送完了後、受信側でファイルを確認する $ ls -lh /tmp/received_file.tar.gz -rw-r--r--. 1 user user 24M Apr 12 10:30 /tmp/received_file.tar.gz # MD5チェックサムで整合性を確認する $ md5sum /tmp/received_file.tar.gz a3f2b8c9d1e4f6789012345678abcdef /tmp/received_file.tar.gz

※【注意】nc によるファイル転送は暗号化されません。機密性の高いファイルは scprsync(SSH経由)を使ってください。

3. ディレクトリを丸ごと転送する

tar コマンドとパイプで組み合わせれば、ディレクトリごと転送できます。

# ---- 受信側:tarで展開しながら受信する ---- $ nc -l 9999 | tar xzf - -C /tmp/restore/ # ---- 送信側:tarで圧縮しながら送信する ---- $ tar czf - /var/log/httpd/ | nc 192.168.1.10 9999

scp等が使えない緊急時のファイル移動手段として覚えておくと役立ちます。

実務Tips:HTTPレスポンスの手動確認

nc でWebサーバーに直接HTTPリクエストを送り、レスポンスヘッダーを確認できます。curl -I と同様の確認ができますが、nc はHTTPプロトコルの生のやり取りが見える点が異なります。

# WebサーバーにHTTP GETリクエストを送る $ echo -e "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n" | nc www.example.com 80 HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Content-Length: 1256 Connection: close Server: Apache/2.4.62 ...

リバースプロキシ経由でレスポンスヘッダーが変わっていないか、Hostヘッダーによるバーチャルホストの振り分けが正しいかを確認する場面で使います。

トラブルシュート:ncコマンドで困った時の対処法

「Ncat: Connection refused.」が出る場合

接続先のポートでサービスが動いていません。以下を確認してください。

・対象サーバーでサービスが起動しているか:systemctl status サービス名
・サービスが正しいポートをリッスンしているか:ss -tlnp | grep ポート番号

# サーバー側でApacheが起動しているか確認する $ systemctl status httpd * httpd.service - The Apache HTTP Server Active: inactive (dead) since Sat 2026-04-12 09:00:00 JST # ポート80をリッスンしているプロセスがあるか確認する $ ss -tlnp | grep :80 (出力なし = リッスンしていない)

「Ncat: Connection timed out.」が出る場合

パケットがファイアウォールでDROPされている可能性が高いです。

・送信元サーバーの出口フィルタを確認する
・受信先サーバーのfirewalldを確認する:firewall-cmd --list-all
・クラウド環境ではセキュリティグループ(AWS)やNSG(Azure)の設定も確認する

# 受信先サーバーでfirewalldの許可ポートを確認する $ sudo firewall-cmd --list-all public (active) target: default services: ssh dhcpv6-client ports: ... # 一時的にポート8080を開放して確認する $ sudo firewall-cmd --add-port=8080/tcp success # 改めて接続テストする $ nc -zv -w 3 192.168.1.10 8080 Ncat: Connected to 192.168.1.10:8080.

「Ncat: No route to host.」が出る場合

ネットワーク経路が確立されていません。以下を確認してください。

・対象サーバーにpingが通るか:ping -c 3 対象IP
・ルーティングテーブルに経路があるか:ip route get 対象IP
・受信側でICMP REJECTルールが設定されていないか

ncコマンドが見つからない場合

# RHEL / Rocky Linuxの場合 $ sudo dnf install nmap-ncat # パッケージ名を確認する $ rpm -qf /usr/bin/nc nmap-ncat-7.92-3.el9.aarch64 # Ubuntu / Debianの場合 $ sudo apt install netcat-openbsd

telnetとncの使い分け

telnetnc はどちらもポートの接続テストに使えますが、以下の違いがあります。

比較項目 telnet nc(netcat)
TCP接続テスト 可能 可能
UDP接続テスト 不可 可能(-u オプション)
ファイル転送 不可 可能(リダイレクト利用)
サーバーモード なし あり(-l オプション)
スクリプト組み込み 困難 容易
デフォルトインストール 最近は非搭載が多い nmap-ncatとして搭載
特別な理由がなければ、ポートの疎通確認には nc を使うのが現在の標準的な手法です。

本記事のまとめ

やりたいこと コマンド
TCPポートの接続テスト nc -zv ホスト ポート
タイムアウト付きで接続テスト nc -zv -w 秒数 ホスト ポート
UDPポートの接続テスト nc -zuv -w 秒数 ホスト ポート
ポートをリッスンする nc -l ポート
ファイルを受信する nc -l ポート > ファイル名
ファイルを送信する nc ホスト ポート < ファイル名
HTTPレスポンスを確認する echo -e "GET / HTTP/1.1\r\n..." | nc ホスト 80
nc コマンドはネットワークのトラブルシューティングに欠かせないツールです。ファイアウォールの設定確認、サービスの死活確認、一時的なファイル転送など、覚えておくと様々な場面で役立ちます。

ncの基礎となるネットワーク接続の仕組みについて詳しく知りたい方は、LinuxのDNS設定方法も参考にしてください。
また、ncで開いているポートを確認した後の詳細な調査には、Linuxのポート開放を確認するコマンドが役立ちます。

ネットワーク障害の切り分け、自信を持ってできますか?

ncコマンドでポートの疎通を確認できるようになっても、本番環境で「このサーバーになぜ繋がらないのか」を即座に切り分けるには、Linuxのネットワーク設定やサービス管理を体系的に理解しておく必要があります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。