Linux里有類似Windows系統里的Tcping端口連接檢測工具嗎
1. nc命令簡介
NetCat,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。同時,它還是一個網絡應用Debug分析器,因為它可以根據需要創建各種不同類型的網絡連接。
netcat簡介
以CentOS7.5最小安裝版為例,默認情況下系統并沒有集成nc工具集,需要手動安裝它:
- [root@zcwyou ~]# yum install -y nmap-ncat
2. 測試192.168.1.1的TCP80端口是否可以正常連接
- [root@zcwyou ~]# nc -v -w 1 192.168.1.1 -z 80
linux使用netcat命令檢測TCP80端口是否可以正常連接。
試試連接81端口
- [root@zcwyou ~]# nc -v -w 1 192.168.1.1 -z 81
- Ncat: Version 7.50
- Ncat: Connection refused.
- Connection refused.連接拒絕,表示對方沒有打開81端口或者中間防火墻不允許81端口。
3. 使用nc傳輸文件
大部分時間中,我們都在試圖通過網絡或者其他工具傳輸文件。有很多種方法,比如FTP,SCP,SMB等等,但是當你只是需要臨時或者一次傳輸文件,真的值得浪費時間來安裝配置一個軟件到你的機器上嘛。假設,你想要傳一個文件zcwyou.txt 從A到B。A或者B都可以作為服務器或者客戶端,以下,讓A作為服務器,B為客戶端。
Server端配置
- [root@zcwyou ~]# nc -l 1567 < zcwyou.txt
Client
- [root@zcwyou ~]# nc -n 172.31.100.7 1567 > zcwyou.txt
原理:Server端把zcwyou.txt輸入到nc,由nc發送,Client端通過nc接收消息,把它保存到zcwyou.txt。
4. 克隆硬盤或分區
server2上進行類似的監聽動作,即把接收的數據重定向給dd:
- [root@zcwyou ~]# nc -l -p 1234 | dd of=/dev/sda
server1上把dd后的數據重定向給nc,即發送數據。
- [root@zcwyou ~]# dd if=/dev/sda | nc 192.168.200.27 1234
注意:克隆硬盤或分區的操作,不應在已經mount的的系統上進行。
5. 指定源端口
假設你的防火墻過濾除25端口外其它所有端口,你需要使用-p選項指定源端口。
服務器端打開監聽:
- [root@zcwyou ~]# nc -l 1567
客戶端發送數據,目標端口1567,源端口25
- [root@zcwyou ~]# nc 172.31.100.7 1567 -p 25
使用1024以內的端口需要root權限。
該命令將在客戶端開啟25端口用于通訊,否則將使用隨機端口。
6. 指定源地址
使用-s選項指定源ip地址。
服務器端打開監聽,把zcwyou.txt重定向給nc。
- [root@zcwyou ~]# nc -u -l 1567 < zcwyou.txt
客戶端
- [root@zcwyou ~]# nc -u 192.168.100.1 1567 -s 192.168.88.20 > file.txt
當服務器有多個IP時,指定使用192.168.88.20作為源IP。
7. 目錄傳輸
發送一個文件很簡單,但是如果我們想要發送多個文件,或者整個目錄,一樣很簡單,只需要使用壓縮工具tar,壓縮后發送壓縮包。
如果你想要通過網絡傳輸一個目錄從A到B。
Server端,打包abc目錄,并重定向到nc。
- [root@zcwyou ~]# tar -cvf - abc | nc -l 1567
Client端,通過nc接收數據并由tar解包。
- [root@zcwyou ~]# nc -n 172.31.100.7 1567 | tar -xvf -
如果想要節省帶寬傳輸壓縮包,我們可以使用bzip2或者其他工具壓縮。
Server端通過bzip2壓縮目錄abc并重定向到nc,監聽端口1567。
- [root@zcwyou ~]# tar -cvf - abc | bzip2 -z | nc -l 1567
Client端把接收到的數據通過交給bzip2和tar處理。
- [root@zcwyou ~]# nc -n 172.16.26.88 1567 | bzip2 -d |tar -xvf -
8. 加密你通過網絡發送的數據
如果你擔心你在網絡上發送數據的安全,你可以在發送你的數據之前用如mcrypt的工具加密。
服務端,使用mcrypt工具加密數據。
- [root@zcwyou ~]# nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > zcwyou.txt
客戶端,使用mcrypt工具解密數據。
- mcrypt -flush -bare -F -q -m ecb < zcwyou.txt | nc -l 1567
以上兩個命令會提示需要密碼,確保兩端使用相同的密碼。
這里我們是使用mcrypt用來加密,使用其它任意加密工具都可以。
9. 傳輸流視頻
雖然不是生成流視頻的最好方法,但如果服務器上沒有特定的工具,使用netcat,我們仍然有希望做成這件事。
服務端讀取一個視頻文件重定向輸出到netcat客戶端。
- [root@zcwyou ~]# cat video.avi | nc -l 1567
客戶端通過nc讀取內容交給mplayer播放器。
- [root@zcwyou ~]# nc 172.31.100.7 1567 | mplayer -vo x11 -cache 3000 -
10. 使用UDP協議
默認情況下,nc創建連接時只會連接TCP端口。 不過我們可以使用-u選項來連接到 UDP 端口。
- [root@zcwyou ~]# ncat -l -u 8888
udp 8888端口已經打開,然后用netstat驗證一下端口是否打開。
- [root@zcwyou ~]# netstat -tunlp | grep 1234
udp 0 0 0.0.0.0:1234 0.0.0.0:* 17341/nc
udp6 0 0 :::1234 :::* 17341/nc
測試某服務器的UDP端口,比如檢查本地是否可以使用阿里DNS服務器223.5.5.5
- [root@zcwyou ~]# nc -v -u 223.5.5.5 53
Ncat: Version 7.50
Ncat: Connected to 223.5.5.5:53.
顯示Connected即表明成功連接到遠程DNS端口,DNS工作正常。
linux使用netcat測試服務器的UDP端口
11. 其它用途
使用-t選項模擬Telnet客戶端:
HTTP客戶端用于下載文件
連接到郵件服務器,使用SMTP協議檢查郵件
使用ffmpeg截取屏幕并通過流式傳輸分享,等等。其它更多用途。
簡單來說,只要你了解協議就可以使用netcat作為網絡通訊媒介,實現各種客戶端。