例項演示,帶你瞭解終端神器ncat

語言: CN / TW / HK

終端神器ncat例項演示

之前在伺服器上拷貝檔案時,要麼使用scp, 要麼就是上傳到ftp伺服器,然後再需要使用的伺服器上重新下載,雖然這兩種方式也沒啥毛病,但是缺陷也比較明顯

scp: 要求授權驗證 ftp: 需要一個第三方的儲存系統,用完之後如果不刪除的話這個檔案就一直在那

接下來介紹下使用ncat(即nc)來實現檔案拷貝

nc知識點

1. 基本說明 & 安裝

ncat/nc 是一個類似於cat的網路命令,常用語網路讀、寫、重定向;它提供的功能非常強大,本文介紹一下將介紹一下基本使用姿勢與應用場景

首先判斷系統是否有安裝

ubuntu 預設有這個命令 centos 需要自己安裝

# 判斷是否有安裝 ncat命令

which ncat

# which nc 也可以判斷是否安裝有這個命令

若沒有安裝,執行下面的命令

sudo yum install nc -y

# yum install nmap-ncat -y

2. 監聽埠連結

監聽本機某個埠,相當於起了一個網路服務

# nc -l 埠號

nc -l 9999

注意

上面預設監聽的是tcp埠 如需指定udp,可以通過  nc -l -u 9999

3. 連線遠端伺服器

# nc ip 埠號

nc 127.0.0.1 9999



# 如果需要連結的是udp埠,可以加一個 -u

連上之後,就可以傳送資訊(回車之後服務端會接收到客戶端的傳輸資料)

3. nc檔案拷貝

基於上面的case,可以利用nc來實現檔案拷貝

目標伺服器,啟動一個埠監聽

nc -l 9999 > save.txt

檔案所屬伺服器,用於上傳檔案

nc 127.0.0.1 9999 < data.txt

說明

上面這個也可以走udp埠進行檔案傳輸,加上 -u 即可 流程也可以反過來,在檔案所屬伺服器上監聽埠,目標伺服器用於下載檔案 (上面的方式適用於檔案所屬伺服器限制了訪問埠的場景;下面這種這種適用於目標伺服器ip不確定的case)

# 檔案所屬伺服器

nc -l 9999 < data.txt



# 下載檔案的伺服器

nc 127.0.0.1 9999 > save.txt

4. nc作為代理

使用nc作為一個簡單的轉發

ncat -l 8080 | ncat 192.168.0.2 80

上面這個命令實現單向的轉發,將連結到本機8080的連線轉發到 192.168.0.2:80

如果希望實現雙向管道,可以如下

mkfifo 2way

ncat -l 8080 0<2way | ncat 192.168.0.2 80 1>2way

除了上面的代理方式,也可以利用nc來實現埠轉發,藉助 -c 命令

ncat -u -l  80 -c  'ncat -u -l 8080'

5. 小結

nc常用於伺服器之間的網路資料傳輸,其基本引數如下 (通過 nc -h 獲取)

-4 使用IPV4

-6 使用IPV6

-c, --sh-exec <command> 接收到的命令通過command(例如/bin/bash)執行

-e, --exec <command> 和-c差不多

--lua-exec <filename> 接收到的資料通過指令碼filename執行

-m, --max-conns <n> 最大併發連線數(單獨開啟不生效,需配合--keep-open/--broker使用)

-d, --delay <time> 讀寫收發間隔時間

-o, --output <filename> 將會話資料轉儲到檔案

-i, --idle-timeout <time> 讀寫超時時間

-p, --source-port port 指定連線使用的源埠號(client端使用)

-s, --source addr 客戶端指定連線伺服器使用的ip(client端使用)

-l, --listen 繫結和監聽接入連線(server端使用)

-k, --keep-open 在監聽模式中接受多個連線(配合-m使用)

-n, --nodns 不使用DNS解析主機名

-t, --telnet 響應telnet連線

-u, --udp 使用udp協議,預設tcp

-v, --verbose 顯示詳細資訊

-w, --wait <time> 連線超時時間

--allow 允許指定主機連線

--allowfile 允許指定檔案內的主機連線

--deny 拒絕指定主機連線

--denyfile 拒絕指定檔案內的主機連線

--broker 啟用代理模式

--proxy <addr[:port]> 指定代理主機ipport

--proxy-type <type> 指定代理型別("http" or "socks4")

--proxy-auth <auth> 代理身份驗證

常用的命令 -l 用於監聽一個埠號,  -v 用於顯示連線詳情,  -u 表示監聽udp埠

本文給出了兩個簡單的例項

檔案傳輸 請求轉發

一灰灰的聯絡方式

盡信書則不如無書,以上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激

個人站點:https://blog.hhui.top 微博地址:  小灰灰Blog [1] QQ:一灰灰/3302797840 微信公眾號: 一灰灰blog

QrCode

References

[1] 小灰灰Blog:  https://weibo.com/p/1005052169825577/home