我們在檢測遠(yuǎn)程服務(wù)是否正常時(shí)蓖捶,經(jīng)常會(huì)用一些工具(命令)來檢測端口是否開啟,來確定服務(wù)是否正常沛膳。通橙臃悖可用于檢測的工具有nc、socat锹安、nmap等短荐,基本思想是向遠(yuǎn)端指定端口發(fā)送數(shù)據(jù),看其狀態(tài)叹哭。
測試方法
測試服務(wù)器地址:
遠(yuǎn)端:192.168.0.15
本端:192.168.0.10
測試方法:
單向檢測(適用于無法登錄遠(yuǎn)端服務(wù)查看的情況)
方法1:nc
如果返回succeeded忍宋,則說明相應(yīng)的UDP端口訪問正常。
如果無任何返回信息风罩,則說明相應(yīng)的UDP端口訪問失敗糠排。
nc -uvz $IP $Port.?? //UDP
nc -vz $IP $Port?? //TCP
遠(yuǎn)端不監(jiān)聽1777端口情況
# nc -uvz 192.168.0.15 1777
#
遠(yuǎn)端監(jiān)聽1777端口
# nc -ul 1777
XXXXX
# nc -uvz 192.168.0.15 1777
Connection to 192.168.0.15 1777 port [udp/powerguardian] succeeded!
方法2:socat于nc類似
如果succeeded,則無任何返回超升,如果failed則返回Connection refused入宦。
echo "This socat udp test." | socat - udp-connect:$IP:$Port
遠(yuǎn)端不監(jiān)聽1777端口,本端發(fā)送udp數(shù)據(jù)至遠(yuǎn)端指定端口室琢。
# echo "This socat udp test." | socat - udp-connect:192.168.0.15:1777
2017/06/18 14:26:39 socat[22195] E read(3, 0xb48a20, 8192): Connection refused
遠(yuǎn)端開啟監(jiān)聽乾闰,本端再次發(fā)送。
# nc -ul 1777
This socat udp test.
# echo "This socat udp test." | socat - udp-connect:192.168.0.15:1777
#
方法3:nmap測試
用指定協(xié)議掃描遠(yuǎn)端指定端口
nmap -sU -p $Port $IP
# nmap -sU -p 1777 192.168.0.15
Starting Nmap 5.51 (http://nmap.org) at 2017-06-18 14:35 CST
Nmap scan report for host-192-168-0-15 (192.168.0.15)
Host is up (0.00098s latency).
PORT ??? STATE? SERVICE
1777/udp closed unknown
MAC Address: FA:16:3E:1A:54:30 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
本端和遠(yuǎn)端同時(shí)測試:
可以通過傳輸文本及文件來測試UDP端口是否正常(先開監(jiān)聽研乒,再發(fā)送)
方法1:發(fā)送文本
遠(yuǎn)端:nc -ul $Port
本端: nc -u $IP $Port
在本端鍵入任意字符汹忠,看遠(yuǎn)端是否可以收到。
方法2:發(fā)送文件(nc傳文件要比scp快雹熬,但安全性低)
遠(yuǎn)端:nc -l $Port > $Filename
本端:nc $IP $Port < $Filename
可以執(zhí)行md5sum看兩端的文件md5是否相同
注:如果是檢測tcp協(xié)議端口宽菜,上述nc命令中,去掉參數(shù)-u即可竿报。另外铅乡,也可以使用telnet $IP $Port來完成
關(guān)于使用NC進(jìn)行端口掃描
$ nc -vzw 2 180.76.148.122 22-81 //顯示詳細(xì)信息,包含失敗的
$ nc -zw 2 180.76.148.122 22-81 //不顯示詳細(xì)信息烈菌,只包含成功的阵幸,如果檢測udp端口花履,可用"vzw"參數(shù),"z"參數(shù)表示連接成功后立即關(guān)閉連接
Connection to 180.76.148.122 port 22 [tcp/ssh] succeeded!
Connection to 180.76.148.122 port 80 [tcp/http] succeeded!
附全面的ncat使用方法:https://linux.cn/article-9190-1.html