2024年5月28日 星期二

如何快速判斷port是否開放?

一般來說,先看你用的OS是甚麼?
通常是Windows 或是 Linux,除非你是有專業一點的工具如: nmap。

簡單說
Windows 下用 telnet
Linux 下用nc
-------------------


Windows 預設是沒有裝telnet的,但你可以點進,新增移除裡面,有個[開啟或關閉Windows功能],再勾選[Telnet用戶端],確定後,就安裝開好這個telnet功能了。(參考下圖)


接下來稍微說明TCP和UDP特性
TCP 是有問有回答。
UDP 是有問,不會回。但其實是有問不一定回答。

TCP protocol是通過建立連接的方法,準確判斷是否開放。
所以判斷TCP Port是否開放,比較容易。

ex:
windows 為例: (DOS模式)
Command: 
telnet [IP] [port number]

若指標是閃爍的,代表這個port是通的。
若提示 [正連線到 ip:xxx.xxx.xxx.xxx...無法開啟到主機的連線, 在連接埠 333: 連線失敗],代表這個port是不開放的。

Linux為例: 
Command:
$ nc -vz xxx.xxx.xxx.xxx port

$ nc -vz 142.251.43.14 443                                           
tsa03s08-in-f14.1e100.net [142.251.43.14] 443 (https) open
                                                                             
$ nc -vz 142.251.43.14 53 
tsa03s08-in-f14.1e100.net [142.251.43.14] 53 (domain) : Connection refused


UDP protocol無連接式通訊(英語:Connectionless communication,又稱 CL-mode),又譯為免接式通訊,一種通訊傳輸模式,使用於電信及電腦網路中。在兩個端點之間傳遞的訊息,不需要事先安排,建立連線。這就理論比較難判斷UDP Port是否開放。

但有兩種特殊情況,第一種是如果有對這個Port發送data,它回應了,這證明它有開放。但是它若有要隱藏是可以不要回應的。

第二種是某些主機若你連接沒有開放的port,它會回應ICMP錯誤訊息(ICMP_PORT_UNREACH),這種就可以確定沒有開放。

Telnet 無法測試UDP,我們用Linux nc來測試。

ex:
$ nc -vzu 168.95.1.1 520
dns.hinet.net [168.95.1.1] 520 (route) open
若你測試有開放,但只是有可能開放,不一定正確。
若你沒有得到任何回應,這種可以確定,UDP Port沒有開放。



沒有留言:

TeraTerm是一款開放原始碼的遠程客戶端操作軟體

因為工作需求,有時我們需要從遠端登入某設備或是主機,又或者因為故障排除,需要透過serial port連入某設備進行檢查和操控。 偶然看到某SI的工程師,使用這個工具,想說也來使用看看。心中相信這應該是好工具,人家才會用它。 我自己通常都是簡單使用的話用 putty,想要用好一...