1. 程式人生 > 其它 >Linux之15——nc命令詳解

Linux之15——nc命令詳解

Linux nc命令用於設定路由器。

執行本指令可設定路由器的相關引數。

nc命令的作用

  • 實現任意TCP/UDP埠的偵聽,nc可以作為server以TCP或UDP方式偵聽指定埠
  • 埠的掃描,nc可以作為client發起TCP或UDP連線
  • 機器之間傳輸檔案
  • 機器之間網路測速

nc命令的安裝

[root@chenshifengdeLinuxServer ~] yum -y install nmap-ncat

語法

nc [-hlnruz][-g<閘道器...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出檔案>][-p<通訊埠>][-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通訊埠...]

引數說明

  • -g<閘道器> 設定路由器躍程通訊閘道器,最多可設定8個。
  • -G<指向器數目> 設定來源路由指向器,其數值為4的倍數。
  • -h 線上幫助。
  • -i<延遲秒數> 設定時間間隔,以便傳送資訊及掃描通訊埠。
  • -l 使用監聽模式,管控傳入的資料。通常 這樣代表著為一個 服務等待客戶端來連結指定的埠。
  • -n 直接使用IP地址,而不通過域名伺服器。
  • -o<輸出檔案> 指定檔名稱,把往來傳輸的資料以16進位制字碼傾倒成該檔案儲存。
  • -p<通訊埠> 設定本地主機使用的通訊埠。有可能會關閉
  • -k<通訊埠>強制 nc 待命連結.當客戶端從服務端斷開連線後,過一段時間服務端也會停止監聽。 但通過選項 -k 我們可以強制伺服器保持連線並繼續監聽埠。
  • -r 亂數指定本地與遠端主機的通訊埠。
  • -s<來源位址> 設定本地主機送出資料包的IP地址。
  • -u 使用UDP傳輸協議。
  • -v 顯示指令執行過程。
  • -w<超時秒數> 設定等待連線的時間。
  • -z 使用0輸入/輸出模式,只在掃描通訊埠時使用。

例項

TCP埠掃描

# nc -v -z -w2 192.168.0.3 1-100 
192.168.0.3: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.0.3] 80 (http) open
(UNKNOWN) [192.168.0.3] 23 (telnet) open
(UNKNOWN) [
192.168.0.3] 22 (ssh) open

掃描192.168.0.3 的埠 範圍是 1-100

掃描UDP埠

# nc -u -z -w2 192.168.0.1 1-1000 //掃描192.168.0.3 的埠 範圍是 1-1000
掃描指定埠
# nc -nvv 192.168.0.1 80 //掃描 80埠
(UNKNOWN) [192.168.0.1] 80 (?) open
y  //使用者輸入

常用示例

[root@chenshifengdeLinuxServer ~] nc -l 9999                        # 開啟一個本地9999的TCP協議埠,由客戶端主動發起連線,一旦連線必須由服務端發起關閉
[root@chenshifengdeLinuxServer ~] nc -vw 2 192.168.21.248 11111     # 通過nc去訪問192.168.21.248主機的11111埠,確認是否存活;可不加引數
[root@chenshifengdeLinuxServer ~] nc -ul 9999                       # 開啟一個本地9999的UDP協議埠,客戶端不需要由服務端主動發起關閉
[root@chenshifengdeLinuxServer ~] nc 192.168.21.248 9999 < test     # 通過192.168.21.248的9999TCP埠傳送資料檔案
[root@chenshifengdeLinuxServer ~] nc -l 9999 > zabbix.file          # 開啟一個本地9999的TCP埠,用來接收檔案內容

測試網速

A機器操作如下:
[root@chenshifengdeLinuxServer ~] yum install -y dstat      # A機器安裝dstat命令
[root@chenshifengdeLinuxServer ~] nc -l 9999 > /dev/null

B機器開啟資料傳輸

nc 10.0.1.161 9999 </dev/zero

A機器進行網路監控

[root@chenshifengdeLinuxServer ~] dstat

例1:代理(瀏覽器輸入120.0.0.1,返回百度首頁)

mkfifo /tmp/fifo

nc -lk 8080 < /tmp/fifo | sed -l -e 's/^Host.*/Host:www.baidu.com/' | tee -a /tmp/req.log | nc www.baidu.com 80 | tee -a /tmp/res > /tmp/fifo