nc全稱是netcat,是一個功能強大的網絡工具,其功能是用于掃描與連接指定端口,有著網絡界的瑞士軍刀美稱。nc命令可用于掃描網絡中的主機端口,支持tcp和udp連接,對于網絡工程師來講,可以方便的進行網絡問題的排查。
1.安裝:
sudo apt update
sudo apt install netcat #ubuntu系統
sudo yum install nc #centos系統
2.命令語法及參數:
語 法:nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>][-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通信端口...]
參 數:
-g<網關> 設置路由器躍程通信網關,最多可設置8個。
-G<指向器數目> 設置來源路由指向器,其數值為4的倍數。
-h 在線幫助。
-i<延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。
-l 使用監聽模式
-n 直接使用IP地址,而不通過域名服務器。、
-o<輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。
-p<通信端口> 設置本地主機使用的通信端口。
-r 亂數指定本地與遠端主機的通信端口。
-s<來源位址> 設置本地主機送出數據包的IP地址。
-u 使用UDP傳輸協議。
-v 詳細輸出--用兩個-v可得到更詳細的內容
-w<超時秒數> 設置等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通信端口時使用。
3.傳輸文件(單文件)
必須先接收方啟動監聽:nc -l port > file #用法 nc -l 21 > 1.txt #文件名隨意
發送端連接接收方并發送:nc 接收端B主機ip port < file #命令用 nc 192.168.6.217 34 < 1.txt
4.傳輸文件夾
接收方:nc -l 21 | tar xfvz -
發送方:tar cfz - * | nc 192.168.6.216 21 #管道前面表示把當前目錄的所有文件打包為 - ,然后使用nc發送給B機器
nc forward host lookup failed: h_errno 11001: HOST_NOT_FOUND解決:
nc yourip 1008 -e c:\windows\system32\cmd.exe(windows下nc常見錯誤)
5.nc端口探測
nc -l來臨時啟動一個tcp端口9999,啟動后其他機器可用telnet等命令測試連通性
nc工具可以用作端口掃描,來測試服務器的某個/某些端口是否開啟,例如22端口、80端口。
探測舉例(u表示udp端口,不加則表示tcp) 例如:nc -vuz 192.168.5.45 8475
批量探測主機端口shell腳本
#!/bin/bash
IP="192.168.5.45"
for PORT in {1..10000}; do
(nc -w 2 -z $IP $PORT && echo "Port $PORT is open") &
done
wait
6、聊天(也可測試UDP)
服務端A啟動udp端口 nc -u -l 8473
客戶端B監聽此端口 nc -u B主機ip 8473