Linux / Unix nc (Netcat) 指令:網路檢測、Port 掃描與資料傳輸 完整教學

Linux / Unix nc (Netcat) 指令:網路檢測、Port 掃描與資料傳輸 完整教學

📅 更新日期:2026-09-22 🏷️ 分類:Linux / Unix 網路管理 系統除錯
💡 指令速查卡
指令名稱 nc (Netcat)
指令類型 CLI Networking Utility(網路工具 / 外部執行檔)
適用環境 Linux 各發行版、Unix (AIX/FreeBSD)、macOS、WSL
常用頻率 ★★★★★

在 Linux 與 Unix 作業系統環境中,nc(Netcat)被譽為網路界的「瑞士軍刀」。它能透過 TCP 或 UDP 協定在網路上讀取與寫入資料,廣泛應用於**Port 連通性測試**、**通訊埠掃描**、**簡易檔案傳輸**、**網路測試服務架設**及**通訊協定除錯**,是系統管理員與網路工程師不可或缺的利器。

一、 基本語法與常用參數

nc 指令在大部分 Linux / Unix 終端機中的標準語法結構如下:

nc [選項] [目標主機/IP] [通訊埠 Port]
參數 / 選項 說明 預設值 / 必填
-z **零輸入輸出模式(Zero-I/O)**。僅檢查通訊埠是否開啟,不傳送任何資料。 選填
-v **詳細輸出模式(Verbose)**。顯示詳細連線訊息,如成功或被拒絕。 選填
-n 直接使用 IP 地址,**不進行 DNS 域名解析**,可大幅加速掃描。 選填
-l **監聽模式(Listen)**。將 nc 充當 Server 端,監聽傳入的連線請求。 選填
-p [Port] 指定本地端監聽或發起的 Port 號碼。 配合 -l 時必填
-u 使用 **UDP 協定** 取代預設的 TCP 協定進行測試。 選填
-w [秒數] 設定連線逾時(Timeout)時間(單位:秒)。 選填

二、 核心功能與應用情境

nc 主要作為跨主機間傳輸 raw data 的管道,在系統與網路維護上的常見應用情境如下:

  • **測試遠端服務連通性**:快速驗證特定主機的防火牆或 Port 是否對外開放(如 SSH:22, HTTP:80, MySQL:3306)。
  • **緊急檔案與目錄傳輸**:在未設定 SFTP / SCP 或 FTP 的伺服器間快速傳送壓縮檔或備份資料。
  • **簡易 Chat 伺服器與日誌接收**:建立暫時性的雙向文字溝通頻道或收集遠端系統除錯日誌。
  • **模擬 HTTP / API 請求**:手動發送原始 HTTP Header 以測試 Web Server 回應。

三、 實用指令範例

範例 1:檢查特定主機與 Port 是否正常連通

測試遠端 Web 伺服器 (80/443 Port) 或資料庫服務是否能建立連線:

# 測試 192.168.1.100 的 80 Port 是否開放 (逾時 3 秒)
nc -zv -w 3 192.168.1.100 80

# 測試 UDP 協定 Port (例如 DNS 53 Port)
nc -zuv 8.8.8.8 53

範例 2:掃描主機範圍內的開放 Port

快速掃描目標主機從 20 到 100 之間的連通埠(結合 -n 禁用 DNS 解析提升速度):

# 掃描 192.168.1.10 的 20 到 100 Port
nc -znv 192.168.1.10 20-100

範例 3:兩台主機間快速傳送檔案

在未設定 SSH 密鑰或 FTP 的情況下,透過標準輸入輸出重導向(Pipe / Redirection)傳輸檔案:

# 步驟 1:接收端 (Server: 192.168.1.50) 啟動監聽 9999 Port 並準備寫入檔案
nc -l 9999 > received_file.tar.gz

# 步驟 2:傳送端 (Client) 將檔案導向至接收端 IP 與 Port
nc 192.168.1.50 9999 < backup.tar.gz

範例 4:模擬 HTTP 請求與擷取 Header

手動對 Web 伺服器發送 GET 請求,用於測試伺服器回應狀態或軟體版本:

# 連線至目標網站的 80 Port 後,手動輸入 HTTP Header
printf "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n" | nc example.com 80

四、 常見陷阱與注意事項

⚠️ 注意事項 1:OpenBSD 與 GNU 版本差異
不同 Linux 發行版預設安裝的 Netcat 版本可能不同(如 netcat-openbsdnetcat-traditional)。例如,GNU 版本支援 -e 參數(執行程式或 Shell),但出於資安考量,Ubuntu / Debian 預設的 OpenBSD 版本已停用 -e 選項。
⚠️ 注意事項 2:傳送資料未加密風險
nc 的資料傳輸過程完全是**明文(Plaintext)**。請勿透過公用網路使用 nc 傳送敏感密碼、個人隱私資料或未加密的資料庫備份檔案;如有加密需求,應改用 scprsync 或搭配 openssl
💡 小技巧:監聽 1024 以下特權 Port 需要 Root 權限
若要讓 nc -l 監聽系統特權 Port(如 80, 443, 22),必須使用 sudo nc -l [Port] 執行,否則會出現 Permission denied 錯誤。

五、 相關指令推薦

  • nmap:專業級網路掃描與安全稽核工具,支援高階主機與 Port 探測。
  • curl / wget:用於與 Web 伺服器互動及下載檔案的常用 CLI 工具。
  • socat:Netcat 的進階增強版,支援 SSL/TLS 加密傳輸與雙向數據流重導向。

六、 參考資源與官方文件

如需進一步瞭解 Netcat 的高級用法與不同衍生版本手冊:

留言

相關文章 / 薪資情報

文章載入中...

你可能有興趣

精選文章 / 推薦情報

文章載入中...