Windows如何檢測UDP端口的連通性
2024-02-28 11:16 瀟湘隱者 閱讀(11316) 評論(0) 收藏 舉報在Windows平臺上如何檢測UDP端口的連通性呢?其實,平時我們遇到檢測TCP端口的連通性的情況比較多,遇到檢測UDP端口連通性的情況較少。而且檢測UDP端口的連通性比較復雜一點。像檢測TCP端口是否連通(放開),Windows平臺,一般常用的工具有telnet、psping等工具,而檢測UDP端口的工具,在Linux平臺,有nc(netcat),ncat,nmap等工具,在Windows平臺,有哪一些工具可以用來檢測UDP端口的連通性呢?下面簡單介紹一下,僅供學習參考。
PortQry工具
PortQry 是一種命令行工具,可用于幫助排查 TCP/IP 連接問題。 此工具在本地計算機或遠程計算機上報告目標 TCP 和用戶數(shù)據報協(xié)議 (UDP) 端口的狀態(tài)。 它還提供有關本地計算機的端口使用情況的詳細信息。它有三種模式,分別為命令行模式,本地模式,交互模式。另外,你也可以下載PortQryUI這個工具,它包含PortQry的圖形UI工具。
下載地址請見下面鏈接地址[1]
命令例子:
portqry.exe -n 192.168.63.217 -p udp -e 1434
參數(shù)說明
-n 特定查詢目標主機
-p 使用指定的協(xié)議, 默認值為tcp
-e 端口號
注意,命令窗口下執(zhí)行命令,必須切換到PortQryUI的解壓目錄,執(zhí)行命令,檢測UDP端口的連通性
如果端口1434沒有正在監(jiān)聽(SQL Server Browser服務關閉情況下)并且防火墻沒有屏蔽端口的情況下,此時提示NOT LISTENING
C:\PortQryUI>portqry.exe -n 192.168.63.217 -p UDP -e 1434
Querying target system called:
192.168.63.217
Attempting to resolve IP address to a name...
IP address resolved to vDashDB3UAT
querying...
UDP port 1434 (ms-sql-m service): NOT LISTENING

如果端口1434正在監(jiān)聽(SQL Server Browser服務啟動情況下)并且防火墻沒有屏蔽端口的情況下,此時提示如下所示:
C:\PortQryUI>portqry.exe -n 192.168.63.217 -p UDP -e 1434
Querying target system called:
192.168.63.217
Attempting to resolve IP address to a name...
IP address resolved to *****
querying...
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED
Sending SQL Server query to UDP port 1434...
Server's response:
ServerName ******
InstanceName MSSQLSERVER
IsClustered No
Version 15.0.2000.5
tcp 14033
==== End of SQL Server query response ====
UDP port 1434 is LISTENING
C:\PortQryUI>

如果防火墻屏蔽了UDP 1434端口,不管SQL Server Browser服務是啟動也好,關閉也好,此時檢測狀態(tài)為FILTERED。
C:\PortQryUI>portqry.exe -n 192.168.63.217 -p udp -e 1434
Querying target system called:
192.168.63.217
Attempting to resolve IP address to a name...
Failed to resolve IP address to name
querying...
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED
Sending SQL Server query to UDP port 1434...
UDP port 1434 (ms-sql-m service): FILTERED
C:\PortQryUI>
如果防火墻開啟的情況下,服務器根本沒有相關服務偵聽UDP 1436端口的話,此時輸出信息如下所示:
C:\PortQryUI>portqry.exe -n 192.168.63.217 -p UDP -e 1436
Querying target system called:
192.168.63.217
Attempting to resolve IP address to a name...
Failed to resolve IP address to name
querying...
UDP port 1436 (unknown service): LISTENING or FILTERED
C:\PortQryUI>
此時結果為UDP port 1436 (unknown service): LISTENING or FILTERED。這個結果是不準確的。官方的解釋如下:
如果目標 UDP 端口未返回 Internet 控制消息協(xié)議 (ICMP) “目標無法訪問”消息,則端口處于 偵聽 狀態(tài)。 由于以下一個或兩個原因,此結果可能不準確:
如果沒有對定向數(shù)據報的響應,則目標端口可能是 FILTERED。 大多數(shù)服務不會響應發(fā)送給它們的未格式化用戶數(shù)據報。 通常,偵聽端口的服務或程序僅響應使用特定會話層或應用程序層協(xié)議的消息。
為了生成更準確和有用的結果,PortQry 使用雙重測試過程。
ncat命令
直接安裝nmap的Windows版本,里面包含了ncat命令。
1:如果端口1434沒有正在監(jiān)聽(SQL Server Browser服務關閉情況下)并且防火墻沒有屏蔽端口的情況下,此時提示“Ncat: 遠程主機強迫關閉了一個現(xiàn)有的連接。“
C:\Program Files (x86)\Nmap>ncat -zu 192.168.63.217 1434 -v
Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.63.217:1434.
Ncat: 遠程主機強迫關閉了一個現(xiàn)有的連接。 .
2:如果端口1434正在監(jiān)聽(SQL Server Browser服務啟動的情況下)并且防火墻沒有屏蔽端口的情況下,此時提示如下:
C:\Program Files (x86)\Nmap>ncat -zu 192.168.63.217 1434 -v
Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.63.217:1434.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.40 seconds.
3:如果防火墻屏蔽了UDP 1434端口,此時輸出結果跟2一樣。這個跟UDP的特性有關。 對于使用者來說,就無法判別端口是被防火墻屏蔽還是開通。關于更多詳情,下面nmap工具一起細說。這里暫且略過。
C:\Program Files (x86)\Nmap>ncat -zu 192.168.63.217 1434 -v
Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.63.217:1434.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.37 seconds.
C:\Program Files (x86)\Nmap>
nmap工具
大名鼎鼎的nmap工具,這個就無須額外介紹了,下面我們通過例子來驗證一下。
1:端口連通正常的情況:端口1434正在監(jiān)聽(SQL Server Browser服務啟動情況下)并且防火墻沒有屏蔽端口的情況下
C:\Users\Administrator>nmap -sU 192.168.63.217 -p 1434 -Pn
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-01 11:32 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.63.217
Host is up (0.010s latency).
PORT STATE SERVICE
1434/udp open|filtered ms-sql-m
MAC Address: 00:50:56:97:68:65 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 13.74 seconds
關于STATE字段的解釋如下:
STATE為open是正常打開的狀態(tài)
STATE為filtered是被阻斷或者沒有打開的狀態(tài)
參數(shù)說明:
-sU 表示掃描UPD端口
-p 表示指定端口號,例如 -p 1434 表示指定掃描端口號1434
-Pn 表示繞過ping進行掃描,如果有些服務器是放在防火墻下面的禁止PING的,就有可能會被跳過。所以用-Pn來強制性地掃描
UDP端口1434沒有正在監(jiān)聽狀態(tài)(SQL Server Browser服務關閉的情況下)并且防火墻沒有屏蔽端口的話
C:\Users\Administrator>nmap -sU 192.168.63.217 -p 1434 -Pn
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-01 11:33 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.63.217
Host is up (0.0074s latency).
PORT STATE SERVICE
1434/udp closed ms-sql-m
MAC Address: 00:50:56:97:68:65 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 13.44 seconds
C:\Users\Administrator>
UDP端口被防火墻屏蔽的情況,依然顯示1434端口是open|filtered狀態(tài),如下所示
C:\Users\Administrator>nmap -sU 192.168.63.217 -p 1434 -Pn
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-01 11:39 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.63.217
Host is up (0.0020s latency).
PORT STATE SERVICE
1434/udp open|filtered ms-sql-m
MAC Address: 00:50:56:97:68:65 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 13.72 seconds
C:\Users\Administrator>
這個跟情況1是一樣的。也就是說在防火墻屏蔽端口的情況下,我們沒法判斷UDP端口 1434的連通性,跟上面ncat命令的情況一致,那么這是為什么呢? 下面是我看到的一個解釋[2]:
因為UDP掃描或偵測時,發(fā)送空的(沒有數(shù)據)UDP報頭到每個目標端口。 如果返回ICMP端口不可到達錯誤(類型3,代碼3), 該端口是closed(關閉的)。 其它ICMP不可到達錯誤(類型3, 代碼1,2,9,10,或者13)表明該端口是filtered(被過濾的)。 偶爾地,某服務會響應一個UDP報文,證明該端口是open(開放的)。 如果幾次重試后還沒有響應,該端口就被認為是 open|filtered(開放|被過濾的)。 這意味著該端口可能是開放的,也可能包過濾器正在封鎖通信。
nc命令
nc命令檢測如下所示:
1:端口連通正常的情況:端口1434正在監(jiān)聽(SQL Server Browser服務啟動情況下)并且防火墻沒有屏蔽端口的情況下
D:\netcat-win32-1.11\netcat-1.11>nc -vuz 192.168.63.217 1434
vDashDB3UAT [192.168.63.217] 1434 (ms-sql-m) open
2:UDP端口被防火墻屏蔽的情況,如下所示
D:\netcat-win32-1.11\netcat-1.11>nc -vuz 192.168.63.217 1434
192.168.63.217: inverse host lookup failed: h_errno 11004: NO_DATA
(UNKNOWN) [192.168.63.217] 1434 (ms-sql-m) open
其實可以通過在客戶端和服務器上同時部署nc命令,然后來驗證UDP端口的連通性。網上有很多這方面的介紹。這里就此略過。
參考資料
1: https://download.microsoft.com/download/3/f/4/3f4c6a54-65f0-4164-bdec-a3411ba24d3a/portqryui.exe
[2]1: https://nmap.org/download.html#windows
浙公網安備 33010602011771號