關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux 、 Python 、 網路通訊、網路安全 等學習資料!
前言
大家好,這裏是 浩道Linux ,主要給大家分享 L inux 、 P ython 、 網路通訊、網路安全等 相關的IT知識平台。
今天浩道跟大家分享一個非常實用且強大的Linux命令,即nc,它被廣泛用於網路相關的排查工作,本文將透過大量例子進行詳細的分析其命令用法。大家感興趣可以收藏,以防需要用到時無從下手!同時告訴你,這個命令也很受測試妹子歡迎,她們也是常用的,所以掌握好這個命令,你可以在他們面前炫耀一把技術水平!
一、nc命令介紹
nc是netcat的簡寫,是一個功能強大的網路工具,其功能是用於掃描與連線指定埠,有著網路界的瑞士軍刀美稱。它能夠基於命令列在網路上讀取和寫入數據,連線與掃描指定埠號,支持TCP和UDP協定,為廣大工程師提供無限潛在功能。不管是運維工程師還是網路工程師,熟悉使用這個命令都可以讓很多工作事半功倍,尤其是在排查各類網路故障方面。
netcat即是網路貓的意思,在linux系統中nc命令實際執行命令是ncat。nc命令的主要作用如下:
1、實作任意TCP/UDP埠的偵聽,nc可以作為server以TCP或UDP方式偵聽指定埠;
2、埠的掃描,nc可以作為client發起TCP或UDP連線;
3、伺服器之間進行檔傳輸;
4、伺服器之間進行網路測速;
二、nc命令用法
1、nc命令安裝
centos7系統下 安裝命令如下:
yum install -y nc
安裝成功後,檢視nc版本號如下:
[root@master ~]# nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )
2、nc命令常見語法格式
nc [參數] 網域名稱/IP地址 [埠]
3、nc命令常見參數
-h:線上幫助;
-v:顯示命令執行過程;
-u:指定使用的傳輸協定為UDP,預設為TCP;
-z:使用zero輸入/輸出模式,只在掃描通訊埠時使用;
-l:使用監聽模式,處於監聽模式時,表示nc作為伺服端,監聽並接受連線,管控傳入的資料;
-w:用來設定超時秒數,後面直接跟數位;
4、環境準備
以下 案 例透過兩台伺服器進行實驗測試:
伺服器1 的IP:192.168.20.231
伺服器2 的IP:192.168.20.232
以上兩台伺服器
防火墻皆為關閉狀態下進行測試;
三、nc命令經典實用案例
1 、測試伺服器主機的TCP或UDP埠是否正常
這種測試場景在運維工作中很常見,當各個服務部署完後,發現無法正常存取服務,此時就要先確保網路是否正常了,除了鏈路需要測試,伺服端口也要測試,因為有時候防火墻策略沒有做好,導致伺服端口不通。TCP埠測試方法比較多,UDP測試方法就比較少了,以下針對TCP埠和UDP埠測試都是基於nc命令測試的。
(1)測試 伺服器1 和 伺服器2 之間的某個TCP埠是否正常,透過nc啟動TCP監聽埠方式;
1)利用nc作為server端啟動一個TCP監聽埠,如在 伺服器2 上啟動監聽埠為 8888 。命令如下:
nc -l 8888
此時 伺服器2 處於TCP監聽模式下,如下圖所示:
2)此時在
伺服器1
上透過nc作為客戶端進行測試,看看其埠是否正常,命令如下:
nc-vz 192.168.20.232 8888
出現如下圖結果,若出現類似 1 bytes sent, 0 bytes received in xxx seconds 等訊息,則是TCP埠通的;若埠為通的,則命令返回碼為0。
其它如下圖結果,若出現 Connection refused .則說明TCP埠不通,如果埠不通,此時命令返回碼為1。
(2)測試 伺服器1 和 伺服器2 之間的 某個UDP埠 是否正常, 透過nc啟動UDP監聽埠方式;
1)利用nc作為server端啟動一個UDP監聽埠,如在 伺服器2 上啟動監聽埠為 9999 (註意此埠為伺服器2非占用的埠)。命令如下:
nc -lu 9999
此時伺服器2處於UDP監聽模式下,如下圖所示:
2)此時在
伺服器1
上透過nc作為客戶端進行測試,看看其網路環通度,命令如下:
nc-vuz 192.168.20.232 9999
出現如下圖結果, 若出現類似 1 bytes sent, 0 bytes received in xxx seconds 等訊息,則是UDP 埠通的; 若 端 口為通的, 則命令返回碼為0。
其它如下圖 結果 , 若出現 Connection refused .則說 明UDP 埠不通,如果埠不通,此時命令返回碼為1 。
2、透過nc命令在兩台伺服器之間進行檔或目錄傳輸
(1)將 伺服器1 上的 haodao_send.txt 檔傳輸到 伺服器2 上,並且命名為 haodao_rece.txt ;
1)
伺服器1
上的
haodao_send.txt
檔內容如下圖:
2)
伺服器2
上啟動接收監聽埠服務;
nc-l 9898 > haodao_rece.txt
意思是把9898埠上接收到的數據都寫在haodao_rece.txt檔中。(這裏的檔名可以自己定義)
3)
伺服器1
上往
伺服器2
的9898埠發送數據,把haodao_send.txt檔發送過去;
nc 192.168.20.232 9898 < haodao_send.txt
4)待
伺服器2
接收完畢後,會自動斷開監聽連線,此時可以檢視接收到的檔與發送端一樣,如下圖所示:
(2)將 伺服器1 上的 haodao_test 目錄(目錄中包含多個檔)傳輸到 伺服器2 上,完成拷貝;
1) 伺服器1 上 /root/haodao_test 目錄結構如下圖所示:
2) 伺服器2 上啟動接收監聽埠服務;
nc -l 9898 | tar -xzvf -
3) 伺服器1 上往 伺服器2 的9898埠打包發送數據,把haodao_test目錄及目錄下檔打包發送過去;
tar czvf - haodao_test |nc 192.168.20.2329898
4)待 伺服器2 接收完畢後,會自動斷開監聽連線,此時可以檢視接收到的檔與發送端一樣,如下圖所示:
3 、 透過nc命令測試兩台伺服器之間的網速
這個測速原理就是利用檔傳輸原理來進行,即把 伺服器1 的 /dev/zero 發送給 伺服器2 的 /dev/null ,這就相當於把伺服器1的無限個0,傳輸給到伺服器2上的空裝置。然後透過dstat命令來監測網速。
1)兩台伺服器上安裝dstat命令,用於
監測網速;
yum install -y dstat
2) 伺服器2 上啟動接收監聽埠服務,監聽9696埠,把來自這個埠的數據都輸出到/dev/null;
nc -l 9696 > /dev/null
3) 伺服器1 上往 伺服器2 的9696埠發送數據,把無限個0發送給伺服器2的9696埠;
nc192.168.20.2329696 < /dev/zero
4)
伺服器1
上重開一個ssh視窗,
執行
dstat
命令
檢視網速,看到結果如下圖所示:
可以看到,伺服器1上接收數據為140K左右,發送110M左右;
5) 伺服器2 上 重開 一個ssh視窗, 執行 dstat 命令 檢視網速 ,看到結果如下圖所示:
可以看到,伺服器2上接收數據為105M左右,發送140K左右;
四、總結
nc命令功能比較多,大家感興趣也可以去挖掘它那些功能看看,本文羅列一些大家平時在運維或者測試工作中常用的功能。簡單實用型有助於我們愛上一款測試工具。
更多精彩
關註公眾號 「 浩道Linux 」
浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 、 網路安全 、 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。
喜歡的話,記得 點「贊」 和 「在看」 哦