一、nc命令介紹
nc是netcat的簡(jiǎn)寫,是一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)工具,其功能是用于掃描與連接指定端口,有著網(wǎng)絡(luò)界的瑞士軍刀美稱。它能夠基于命令行在網(wǎng)絡(luò)上讀取和寫入數(shù)據(jù),連接與掃描指定端口號(hào),支持TCP和UDP協(xié)議,為廣大工程師提供無限潛在功能。不管是運(yùn)維工程師還是網(wǎng)絡(luò)工程師,熟悉使用這個(gè)命令都可以讓很多工作事半功倍,尤其是在排查各類網(wǎng)絡(luò)故障方面。
netcat即是網(wǎng)絡(luò)貓的意思,在linux系統(tǒng)中nc命令實(shí)際執(zhí)行命令是ncat。nc命令的主要作用如下:
1、實(shí)現(xiàn)任意TCP/UDP端口的偵聽,nc可以作為server以TCP或UDP方式偵聽指定端口;
2、端口的掃描,nc可以作為client發(fā)起TCP或UDP連接;
3、服務(wù)器之間進(jìn)行文件傳輸;
4、服務(wù)器之間進(jìn)行網(wǎng)絡(luò)測(cè)速;
二、nc命令用法
1、nc命令安裝
centos7系統(tǒng)下安裝命令如下:
yum install -y nc
安裝成功后,查看nc版本號(hào)如下:
[root@master ~]# nc --version Ncat: Version 7.50 ( https://nmap.org/ncat )2、nc命令常見語(yǔ)法格式
nc [參數(shù)] 域名/IP地址 [端口]3、nc命令常見參數(shù)
-h:在線幫助; -v:顯示命令執(zhí)行過程; -u:指定使用的傳輸協(xié)議為UDP,默認(rèn)為TCP; -z:使用zero輸入/輸出模式,只在掃描通信端口時(shí)使用; -l:使用監(jiān)聽模式,處于監(jiān)聽模式時(shí),表示nc作為服務(wù)端,監(jiān)聽并接受連接,管控傳入的資料; -w:用來設(shè)置超時(shí)秒數(shù),后面直接跟數(shù)字;
4、環(huán)境準(zhǔn)備
以下案例通過兩臺(tái)服務(wù)器進(jìn)行實(shí)驗(yàn)測(cè)試: 服務(wù)器1的IP:192.168.20.231 服務(wù)器2的IP:192.168.20.232
以上兩臺(tái)服務(wù)器防火墻皆為關(guān)閉狀態(tài)下進(jìn)行測(cè)試;
三、nc命令經(jīng)典實(shí)用案例
1、測(cè)試服務(wù)器主機(jī)的TCP或UDP端口是否正常
這種測(cè)試場(chǎng)景在運(yùn)維工作中很常見,當(dāng)各個(gè)服務(wù)部署完后,發(fā)現(xiàn)無法正常訪問服務(wù),此時(shí)就要先確保網(wǎng)絡(luò)是否正常了,除了鏈路需要測(cè)試,服務(wù)端口也要測(cè)試,因?yàn)橛袝r(shí)候防火墻策略沒有做好,導(dǎo)致服務(wù)端口不通。TCP端口測(cè)試方法比較多,UDP測(cè)試方法就比較少了,以下針對(duì)TCP端口和UDP端口測(cè)試都是基于nc命令測(cè)試的。
(1)測(cè)試服務(wù)器1和服務(wù)器2之間的某個(gè)TCP端口是否正常,通過nc啟動(dòng)TCP監(jiān)聽端口方式;
1)利用nc作為server端啟動(dòng)一個(gè)TCP監(jiān)聽端口,如在服務(wù)器2上啟動(dòng)監(jiān)聽端口為8888。命令如下:
nc -l 8888
此時(shí)服務(wù)器2處于TCP監(jiān)聽模式下,如下圖所示:
2)此時(shí)在服務(wù)器1上通過nc作為客戶端進(jìn)行測(cè)試,看看其端口是否正常,命令如下:
nc-vz192.168.20.2328888
出現(xiàn)如下圖結(jié)果,若出現(xiàn)類似1 bytes sent, 0 bytes received in xxx seconds等消息,則是TCP端口通的;若端口為通的,則命令返回碼為0。
其它如下圖結(jié)果,若出現(xiàn)Connection refused.則說明TCP端口不通,如果端口不通,此時(shí)命令返回碼為1。
(2)測(cè)試服務(wù)器1和服務(wù)器2之間的某個(gè)UDP端口是否正常,通過nc啟動(dòng)UDP監(jiān)聽端口方式;
1)利用nc作為server端啟動(dòng)一個(gè)UDP監(jiān)聽端口,如在服務(wù)器2上啟動(dòng)監(jiān)聽端口為9999(注意此端口為服務(wù)器2非占用的端口)。命令如下:
nc-lu9999
此時(shí)服務(wù)器2處于UDP監(jiān)聽模式下,如下圖所示:
2)此時(shí)在服務(wù)器1上通過nc作為客戶端進(jìn)行測(cè)試,看看其網(wǎng)絡(luò)連通性,命令如下:
nc -vuz 192.168.20.232 9999
出現(xiàn)如下圖結(jié)果,若出現(xiàn)類似1 bytes sent, 0 bytes received in xxx seconds等消息,則是UDP端口通的;若端口為通的,則命令返回碼為0。
其它如下圖結(jié)果,若出現(xiàn)Connection refused.則說明UDP端口不通,如果端口不通,此時(shí)命令返回碼為1。
2、通過nc命令在兩臺(tái)服務(wù)器之間進(jìn)行文件或目錄傳輸
(1)將服務(wù)器1上的haodao_send.txt文件傳輸?shù)椒?wù)器2上,并且命名為haodao_rece.txt;
1)服務(wù)器1上的haodao_send.txt文件內(nèi)容如下圖:
2)服務(wù)器2上啟動(dòng)接收監(jiān)聽端口服務(wù);
nc -l 9898 > haodao_rece.txt
意思是把9898端口上接收到的數(shù)據(jù)都寫在haodao_rece.txt文件中。(這里的文件名可以自己定義)
3)服務(wù)器1上往服務(wù)器2的9898端口發(fā)送數(shù)據(jù),把haodao_send.txt文件發(fā)送過去;
nc 192.168.20.232 9898 < haodao_send.txt
4)待服務(wù)器2接收完畢后,會(huì)自動(dòng)斷開監(jiān)聽連接,此時(shí)可以查看接收到的文件與發(fā)送端一樣,如下圖所示:
(2)將服務(wù)器1上的haodao_test目錄(目錄中包含多個(gè)文件)傳輸?shù)椒?wù)器2上,完成拷貝;
1)服務(wù)器1上/root/haodao_test目錄結(jié)構(gòu)如下圖所示:
2)服務(wù)器2上啟動(dòng)接收監(jiān)聽端口服務(wù);
nc -l 9898 | tar -xzvf -
3)服務(wù)器1上往服務(wù)器2的9898端口打包發(fā)送數(shù)據(jù),把haodao_test目錄及目錄下文件打包發(fā)送過去;
tar czvf - haodao_test |nc 192.168.20.232 9898
4)待服務(wù)器2接收完畢后,會(huì)自動(dòng)斷開監(jiān)聽連接,此時(shí)可以查看接收到的文件與發(fā)送端一樣,如下圖所示:
3、通過nc命令測(cè)試兩臺(tái)服務(wù)器之間的網(wǎng)速 這個(gè)測(cè)速原理就是利用文件傳輸原理來進(jìn)行,即把服務(wù)器1的/dev/zero發(fā)送給服務(wù)器2的/dev/null,這就相當(dāng)于把服務(wù)器1的無限個(gè)0,傳輸給到服務(wù)器2上的空設(shè)備。然后通過dstat命令來監(jiān)測(cè)網(wǎng)速。
1)兩臺(tái)服務(wù)器上安裝dstat命令,用于監(jiān)測(cè)網(wǎng)速;
yum install -y dstat
2)服務(wù)器2上啟動(dòng)接收監(jiān)聽端口服務(wù),監(jiān)聽9696端口,把來自這個(gè)端口的數(shù)據(jù)都輸出到/dev/null;
nc -l 9696 > /dev/null
3)服務(wù)器1上往服務(wù)器2的9696端口發(fā)送數(shù)據(jù),把無限個(gè)0發(fā)送給服務(wù)器2的9696端口;
nc 192.168.20.232 9696 < /dev/zero
4)服務(wù)器1上重開一個(gè)ssh窗口,執(zhí)行dstat命令查看網(wǎng)速,看到結(jié)果如下圖所示:
可以看到,服務(wù)器1上接收數(shù)據(jù)為140K左右,發(fā)送110M左右;
5)服務(wù)器2上重開一個(gè)ssh窗口,執(zhí)行dstat命令查看網(wǎng)速,看到結(jié)果如下圖所示:
可以看到,服務(wù)器2上接收數(shù)據(jù)為105M左右,發(fā)送140K左右;
四、總結(jié)
nc命令功能比較多,大家感興趣也可以去挖掘它那些功能看看,本文羅列一些大家平時(shí)在運(yùn)維或者測(cè)試工作中常用的功能。簡(jiǎn)單實(shí)用型有助于我們愛上一款測(cè)試工具。
審核編輯:劉清
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
595瀏覽量
27451 -
UDP協(xié)議
+關(guān)注
關(guān)注
0文章
69瀏覽量
12719 -
SSH
+關(guān)注
關(guān)注
0文章
189瀏覽量
16365 -
LINUX內(nèi)核
+關(guān)注
關(guān)注
1文章
316瀏覽量
21688 -
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4260
原文標(biāo)題:Linux下的nc命令太強(qiáng)大了!
文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論