伺服器埠測試是否正常,運維一般使用telnet來檢查,但它有侷限性,伺服器的埠必須存在服務執行。
這時使用nc可以在服務端模擬開啟一個埠,再通過nc測試此埠,好用!
nc是netcat工具的簡稱,一個網路工具,可以用來埠掃描、檔案傳輸等功能。
centos上面安裝也很簡單:
yum install nc -y
nc常用功能
1、實現任意TCP/UDP埠的偵聽,nc可以作為server以TCP或UDP方式偵聽指定埠
2、埠的掃描,nc可以作為client發起TCP或UDP連線
3、機器之間傳輸檔案
4、機器之間網路測速
一般nc只用來做TCP/UDP協議的埠測試,其它功能少用!
nc幫助說明
# nc --help
Ncat 7.50 ( https://nmap.org/ncat )
Usage: ncat [options] [hostname] [port]
Options taking a time assume seconds. Append 'ms' for milliseconds,
's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms).
-4 Use IPv4 only
-6 Use IPv6 only
-U, --unixsock Use Unix domain sockets only
-C, --crlf Use CRLF for EOL sequence
-c, --sh-exec <command> Executes the given command via /bin/sh
-e, --exec <command> Executes the given command
--lua-exec <filename> Executes the given Lua script
-g hop1[,hop2,...] Loose source routing hop points (8 max)
-G <n> Loose source routing hop pointer (4, 8, 12, ...)
-m, --max-conns <n> Maximum <n> simultaneous connections
-h, --help Display this help screen
-d, --delay <time> Wait between read/writes
-o, --output <filename> Dump session data to a file
-x, --hex-dump <filename> Dump session data as hex to a file
-i, --idle-timeout <time> Idle read/write timeout
-p, --source-port port Specify source port to use
-s, --source addr Specify source address to use (doesn't affect -l)
-l, --listen Bind and listen for incoming connections
-k, --keep-open Accept multiple connections in listen mode
-n, --nodns Do not resolve hostnames via DNS
-t, --telnet Answer Telnet negotiations
-u, --udp Use UDP instead of default TCP
--sctp Use SCTP instead of default TCP
-v, --verbose Set verbosity level (can be used several times)
-w, --wait <time> Connect timeout
-z Zero-I/O mode, report connection status only
--append-output Append rather than clobber specified output files
--send-only Only send data, ignoring received; quit on EOF
--recv-only Only receive data, never send anything
--allow Allow only given hosts to connect to Ncat
--allowfile A file of hosts allowed to connect to Ncat
--deny Deny given hosts from connecting to Ncat
--denyfile A file of hosts denied from connecting to Ncat
--broker Enable Ncat's connection brokering mode
--chat Start a simple Ncat chat server
--proxy <addr[:port]> Specify address of host to proxy through
--proxy-type <type> Specify proxy type ("http" or "socks4" or "socks5")
--proxy-auth <auth> Authenticate with HTTP or SOCKS proxy server
--ssl Connect or listen with SSL
--ssl-cert Specify SSL certificate file (PEM) for listening
--ssl-key Specify SSL private key (PEM) for listening
--ssl-verify Verify trust and domain name of certificates
--ssl-trustfile PEM file containing trusted SSL certificates
--ssl-ciphers Cipherlist containing SSL ciphers to use
--version Display Ncat's version information and exit
nc常用案例
TCP監聽測試
- nc可作為server端
192.168.10.11
啟動一個tcp的監聽
nc -l 80
- 客戶端測試方法:直接telnet該機器ip+埠
telnet 192.168.10.11 80
或:nmap 192.168.10.11 -p 80
UDP監聽測試
- nc作為server端啟動一個udp的監聽
nc -lu 80
通過netstat可以看到udp協議已經監聽:
> # netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:80 0.0.0.0:* 15401/nc
- 客戶端測試方法:(telnet只能測試tcp協議)
nc -vuz 192.168.10.11 80
(u表示udp埠,v表示視覺化輸出,z表示掃描時不傳送資料)
使用nc傳輸檔案
使用nc傳輸檔案不用scp或rsync那種輸入密碼的操作,當然也存在一定安全性。
例如:要把A機器上的一個sql檔案傳送到B機器上
(需要先開啟偵聽B機器埠,再到A機器傳送資料到該埠)
步驟1,先在B機器上啟動一個接收檔案的監聽,格式如下
nc -l 888 > zabbix.sql
步驟2,在A機器上往B機器的888埠傳送資料,把下面sql包傳送過去
nc 192.168.10.11 888 < zabbix.sql
也可通過nc傳輸目錄,但這裡不推薦使用,暫不舉例。
網路測試
這裡也不推薦使用nc,直接使用speedtest,簡單:
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
./speedtest-cli
解決telnet 無法斷開問題
用CTRL+]
鍵,這時會強制退到telnet命令介面下,再輸入quit
退出就行。
----by 鋼鐵 648403020@qq.com