什麼是nc
nc是netcat的簡寫,有着網絡界的瑞士×××美譽。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網絡工具
nc的作用
(1)實作任意TCP/UDP端口的偵聽,nc可以作為server以TCP或UDP方式偵聽指定端口
(2)端口的掃描,nc可以作為client發起TCP或UDP連接配接
(3)機器之間傳輸檔案
(4)機器之間網絡測速
nc的控制參數不少,常用的幾個參數如下所列:
1) -l
用于指定nc将處于偵聽模式。指定該參數,則意味着nc被當作server,偵聽并接受連接配接,而非向其它位址發起連接配接。
2) -p <port>
暫未用到(老版本的nc可能需要在端口号前加-p參數,下面測試環境是centos6.6,nc版本是nc-1.84,未用到-p參數)
3) -s
指定發送資料的源IP位址,适用于多網卡機
4) -u
指定nc使用UDP協定,預設為TCP
5) -v
輸出互動或出錯資訊,新手調試時尤為有用
6)-w
逾時秒數,後面跟數字
7)-z
表示zero,表示掃描時不發送任何資料
前期準備
準備兩台機器,用于測試nc指令的用法
主機A:ip位址 10.0.1.161
主機B:ip位址 10.0.1.162
兩台機器先安裝nc和nmap的包
yum install nc -y
yum install nmap -y
如果提示如下-bash: nc: command not found 表示沒安裝nc的包
nc用法1,網絡連通性測試和端口掃描
nc可以作為server端啟動一個tcp的監聽(注意,此處重點是起tcp,下面還會講udp)
先關閉A的防火牆,或者放行下面端口,然後測試B機器是否可以通路A機器啟動的端口
在A機器上啟動一個端口監聽,比如 9999端口(注意:下面的-l 是小寫的L,不是數字1)
預設情況下下面監聽的是一個tcp的端口
nc -l 9999
用戶端測試,測試方法1
在B機器上telnet A機器此端口,如下顯示表示B機器可以通路A機器此端口
用戶端測試,測試方法2
nc可以可以掃描連續端口,這個作用非常重要。常常可以用來掃描伺服器端口,然後給伺服器安全加強
在A機器上監聽2個端口,一個9999,一個9998,使用&符号丢入背景
在用戶端B機器上掃描連續的兩個端口,如下
nc用法2,使用nc傳輸檔案和目錄
方法1,傳輸檔案示範(先啟動接收指令)
使用nc傳輸檔案還是比較友善的,因為不用scp和rsync那種輸入密碼的操作了
把A機器上的一個rpm檔案發送到B機器上
需注意操作次序,receiver先偵聽端口,sender向receiver所在機器的該端口發送資料。
步驟1,先在B機器上啟動一個接收檔案的監聽,格式如下
意思是把賴在9995端口接收到的資料都寫到file檔案裡(這裡檔案名随意取)
nc -l port >file
nc -l 9995 >zabbix.rpm
步驟2,在A機器上往B機器的9995端口發送資料,把下面rpm包發送過去
nc 10.0.1.162 9995 < zabbix-release-2.4-1.el6.noarch.rpm
B機器接收完畢,它會自動退出監聽,檔案大小和A機器一樣,md5值也一樣
方法2,傳輸檔案示範(先啟動發送指令)
步驟1,先在B機器上,啟動發送檔案指令
下面指令表示通過本地的×××端口發送test.mv檔案
nc -l ××× <test.mv