nc全稱是netcat,是一個功能強大的網(wǎng)絡(luò)工具,其功能是用于掃描與連接指定端口,有著網(wǎng)絡(luò)界的瑞士軍刀美稱。nc命令可用于掃描網(wǎng)絡(luò)中的主機端口,支持tcp和udp連接,對于網(wǎng)絡(luò)工程師來講,可以方便的進行網(wǎng)絡(luò)問題的排查。
1.安裝:
sudo apt update
sudo apt install netcat #ubuntu系統(tǒng)
sudo yum install nc #centos系統(tǒng)
2.命令語法及參數(shù):
語 法:nc [-hlnruz][-g<網(wǎng)關(guān)...>][-G<指向器數(shù)目>][-i<延遲秒數(shù)>][-o<輸出文件>][-p<通信端口>][-s<來源位址>][-v...][-w<超時秒數(shù)>][主機名稱][通信端口...]
參 數(shù):
-g<網(wǎng)關(guān)> 設(shè)置路由器躍程通信網(wǎng)關(guān),最多可設(shè)置8個。
-G<指向器數(shù)目> 設(shè)置來源路由指向器,其數(shù)值為4的倍數(shù)。
-h 在線幫助。
-i<延遲秒數(shù)> 設(shè)置時間間隔,以便傳送信息及掃描通信端口。
-l 使用監(jiān)聽模式
-n 直接使用IP地址,而不通過域名服務(wù)器。、
-o<輸出文件> 指定文件名稱,把往來傳輸?shù)臄?shù)據(jù)以16進制字碼傾倒成該文件保存。
-p<通信端口> 設(shè)置本地主機使用的通信端口。
-r 亂數(shù)指定本地與遠端主機的通信端口。
-s<來源位址> 設(shè)置本地主機送出數(shù)據(jù)包的IP地址。
-u 使用UDP傳輸協(xié)議。
-v 詳細輸出--用兩個-v可得到更詳細的內(nèi)容
-w<超時秒數(shù)> 設(shè)置等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通信端口時使用。
3.傳輸文件(單文件)
必須先接收方啟動監(jiān)聽:nc -l port > file #用法 nc -l 21 > 1.txt #文件名隨意
發(fā)送端連接接收方并發(fā)送:nc 接收端B主機ip port < file #命令用 nc 192.168.6.217 34 < 1.txt
4.傳輸文件夾
接收方:nc -l 21 | tar xfvz -
發(fā)送方:tar cfz - * | nc 192.168.6.216 21 #管道前面表示把當(dāng)前目錄的所有文件打包為 - ,然后使用nc發(fā)送給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工具可以用作端口掃描,來測試服務(wù)器的某個/某些端口是否開啟,例如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)
服務(wù)端A啟動udp端口 nc -u -l 8473
客戶端B監(jiān)聽此端口 nc -u B主機ip 8473