Linux中的nc測試端口是否開放


nc測試端口是否開放

Linux中有一個級強大的網絡工具netcat,在默認情況下面都是沒有安裝的,現在介紹一下安裝過程 
其實安裝很簡單

一、安裝使用

1、只需輸入命令yum安裝:

[root@SZB-L0032015 ~]# yum install -y nc
[root@SZB-L0032015 ~]# yum install -y nc
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Determining fastest mirrors
CentOS.6.base.x86_64                                                                                                                                                                                                  | 4.1 kB     00:00     
CentOS.6.extras.x86_64                                                                                                                                                                                                | 2.9 kB     00:00     
CentOS.6.extras.x86_64/primary_db                                                                                                                                                                                     |  92 kB     00:00     
CentOS.6.updates.x86_64                                                                                                                                                                                               | 2.9 kB     00:00     
CentOS.6.updates.x86_64/primary_db                                                                                                                                                                                    |  28 kB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package nc.x86_64 0:1.84-24.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================
 Package                                          Arch                                                 Version                                                      Repository                                                          Size
=============================================================================================================================================================================================================================================
Installing:
 nc                                               x86_64                                               1.84-24.el6                                                  CentOS.6.base.x86_64                                                57 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install       1 Package(s)

Total download size: 57 k
Installed size: 109 k
Downloading Packages:
nc-1.84-24.el6.x86_64.rpm                                                                                                                                                                                             |  57 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : nc-1.84-24.el6.x86_64                                                                                                                                                                                                     1/1 
  Verifying  : nc-1.84-24.el6.x86_64                                                                                                                                                                                                     1/1 

Installed:
  nc.x86_64 0:1.84-24.el6                                                                                                                                                                                                                    

Complete!

2、測試使用:

在終端上輸入nc -lk 9999

在另一個終端上輸入telnet ip 9999

 在此終端上輸入的東西,在另外一個終端上可以看到,說明端口已通。

 二、nc命令詳解

-g<網關>:設置路由器躍程通信網關,最多設置8個;
-G<指向器數目>:設置來源路由指向器,其數值為4的倍數;
-h:在線幫助;
-i<延遲秒數>:設置時間間隔,以便傳送信息及掃描通信端口; 
-l:使用監聽模式,監控傳入的資料; 
-n:直接使用ip地址,而不通過域名服務器; 
-o<輸出文件>:指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存; 
-p<通信端口>:設置本地主機使用的通信端口; 
-r:指定源端口和目的端口都進行隨機的選擇; 
-s<來源位址>:設置本地主機送出數據包的IP地址; 
-u:使用UDP傳輸協議; 
-v:顯示指令執行過程; 
-w<超時秒數>:設置等待連線的時間; 
-z:使用0輸入/輸出模式,只在掃描通信端口時使用。

NetCat,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍(1.84版本也不過25k,舊版本或縮減版甚至更小)、功能實用,被設計為一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。同時,它還是一個網絡應用Debug分析器,因為它可以根據需要創建各種不同類型的網絡連接。


版本 通常的Linux發行版中都帶有NetCat(簡稱nc),甚至在拯救模式光盤中也由busybox提供了簡版的nc工具。但不同的版本,其參數的使用略有差異。 NetCat 官方地址:http://netcat.sourceforge.net/

引用[root@hatest1 ~]# cat /etc/asianux-release Asianux release 2.0 (Trinity SP2) [root@hatest1 ~]# cat /etc/redflag-release Red Flag DC Server release 5.0 (Trinity SP2) [root@hatest1 ~]# type -a nc nc is /usr/bin/nc [root@hatest1 ~]# rpm -q nc nc-1.10-22

建議在使用前,先用man nc看看幫助。這里以紅旗DC Server 5.0上的1.10版本進行簡單說明。 假設兩服務器信息:

引用server1: 192.168.228.221 server2: 192.168.228.222

 

三、常見使用 1、遠程拷貝文件 從server1拷貝文件到server2上。需要先在server2上,用nc激活監聽,server2上運行:

引用[root@hatest2 tmp]# nc -lp 1234 > install.log

server1上運行:

引用[root@hatest1 ~]# ll install.log -rw-r--r--   1 root root 39693 12月 20   2007 install.log [root@hatest1 ~]# nc -w 1 192.168.228.222 1234 < install.log

2、克隆硬盤或分區 操作與上面的拷貝是雷同的,只需要由dd獲得硬盤或分區的數據,然后傳輸即可。 克隆硬盤或分區的操作,不應在已經mount的的系統上進行。所以,需要使用安裝光盤引導后,進入拯救模式(或使用Knoppix工具光盤)啟動系統后,在server2上進行類似的監聽動作:

# nc -l -p 1234 | dd of=/dev/sda

server1上執行傳輸,即可完成從server1克隆sda硬盤到server2的任務:

# dd if=/dev/sda | nc 192.168.228.222 1234

※ 完成上述工作的前提,是需要落實光盤的拯救模式支持服務器上的網卡,並正確配置IP。
3、端口掃描
 可以執行:

引用# nc -v -w 1 192.168.228.222 -z 1-1000 hatest2 [192.168.228.222] 22 (ssh) open

4、保存Web頁面

# while true; do nc -l -p 80 -q 1 < somepage.html; done

5、模擬HTTP Headers

引用[root@hatest1 ~]# nc www.linuxfly.org 80 GET / HTTP/1.1 Host: ispconfig.org Referrer: mypage.com User-Agent: my-browser
HTTP/1.1 200 OK Date: Tue, 16 Dec 2008 07:23:24 GMT Server: Apache/2.2.6 (Unix) DAV/2 mod_mono/1.2.1 mod_python/3.2.8 Python/2.4.3 mod_perl/2.0.2 Perl/v5.8.8 Set-Cookie: PHPSESSID=bbadorbvie1gn037iih6lrdg50; path=/ Expires: 0 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Cache-Control: private, post-check=0, pre-check=0, max-age=0 Set-Cookie: oWn_sid=xRutAY; expires=Tue, 23-Dec-2008 07:23:24 GMT; path=/ Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: text/html [......]

在nc命令后,輸入紅色部分的內容,然后按兩次回車,即可從對方獲得HTTP Headers內容。
6、聊天 nc還可以作為簡單的字符下聊天工具使用,同樣的,server2上需要啟動監聽:

[root@hatest2 tmp]# nc -lp 1234

server1上傳輸:

[root@hatest1 ~]# nc 192.168.228.222 1234

這樣,雙方就可以相互交流了。使用Ctrl+D正常退出。
7、傳輸目錄 從server1拷貝nginx-0.6.34目錄內容到server2上。需要先在server2上,用nc激活監聽,server2上運行:

引用[root@hatest2 tmp]# nc -l 1234 |tar xzvf -

server1上運行:

引用[root@hatest1 ~]# ll -d nginx-0.6.34 drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34 [root@hatest1 ~]# tar czvf - nginx-0.6.34|nc 192.168.228.222 1234

8、參數簡介 這僅是一個1.10版本的簡單說明,詳細的參數使用還是需要看man:

引用想要連接到某處: nc [-options] hostname port[s] [ports] ... 綁定端口等待連接: nc -l -p port [-options] [hostname] [port] 參數: -g gateway source-routing hop point[s], up to 8 -G num source-routing pointer: 4, 8, 12, ... -h 幫助信息 -i secs 延時的間隔 -l 監聽模式,用於入站連接 -n 指定數字的IP地址,不能用hostname -o file 記錄16進制的傳輸 -p port 本地端口號 -r 任意指定本地及遠程端口 -s addr 本地源地址 -u UDP模式 -v 詳細輸出——用兩個-v可得到更詳細的內容 -w secs timeout的時間

-z 將輸入輸出關掉——用於掃描時,其中端口號可以指定一個或者用lo-hi式的指定范圍。 

9、1.84版本參數簡介

1. nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]

2.    [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x

3.    proxy_address[:port]] [hostname] [port[s]]   1. -4 強制使用ipv4 2. -6 強制使用ipv6 3. -D 允許socket通信返回debug信息

4.       -d 不允許從標准輸入中讀取

5. -h 顯示nc幫助文檔

6. -i interval 

7.    指定每行之間內容延時發送和接受,也可以使多個端口之間的連接延時

8. -k 當一個連接結束時,強制nc監聽另一個連接。必須和-l一起使用

9. -l 用於監聽傳入的數據鏈接,不能與-p -z -s一起使用。-w 參數的超時也會被忽略

10. -n 不執行任何地址,主機名,端口或DNS查詢

11. -p 指定nc使用的源端口,受權限限制且不能余-l一起使用

12. -r 指定nc使用的源端口和目的端口,不能使用系統原來就指定的那些端口 1

3. -S 允許在RFC 2385的TCP MD5簽名選項

14. -s source_ip_address 

15.    指定用於發包的接口的IP地址,不能和-l一起使用

16. -T ToS

17.    指定鏈接的IP服務類型(TOS)

18. -C 自動換行

19. -t 使nc能夠與telnet交互

20. -U 使用UNIX域socket

21. -u 使用udp代替默認的tcp選項

22. -v 輸出詳細報告

23. -w timeout

24.     一個鏈接一段時間無操作,則自動斷開,默認無超時

25. -X proxy_version

26.     指定nc使用代理時所采用的協議,可選的有socksv4,socks5以及https。默認socks5

27. -x proxy_address[:port]

28.     指定nc使用的代理地址和端口。默認設置:1080(SOCKS),3128(HTTPS)

29. -z 只監聽不發送任何包

 

四、版本差異 不用系統上提供的nc版本會有說不同,其提供的參數使用方法也略有差異。 例如,紅旗Asianux 3.0 SP1拯救光盤上的版本是供使用的參數僅有一部分:

引用# nc -h BusyBox v1.2.0 (2008.04.14-01:35+0000) multi-call binary
Usage: nc [OPTIONS] [IP] [port]
Netcat opens a pipe to IP:port
Options:          -l               listen mode, for inbound connects          -p PORT         local port number          -i SECS         delay interval for lines sent          -e PROG         program to exec after connect (dangerous!)          -w SECS         timeout for connects and final net reads

而在Asianux 3.0 SP1系統中提供的nc版本則是1.84的,按上面的參數用法寫會執行不了:

引用[root@ftpserver ~]# rpm -q nc nc-1.84-10 [root@ftpserver ~]# nc -lp 1234 usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]            [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]            [-x proxy_address[:port]] [hostname] [port[s]]

講查看man文檔,可見在這個版本中,-l是不能與-s、-p、-z一起使用的,-w參數也會被忽略,所以,正確的用法是:

[root@ftpserver tmp]# nc -l 1234

ps:推薦詳細鏈接:http://man.linuxde.net/nc_netcat


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM