Port

為什麼 netcat 掃描 UDP 埠總是成功?

  • May 22, 2021

我正在嘗試驗證我們的一些伺服器是否可以在將我們的一些服務遷移到它們之前通過某些埠進行通信,並且它們沒有被我們組織的防火牆 ACL 阻止。

說得通

[mrduki@mybox1~]$ nc -ul 40000
---
[mrduki@mybox2~]$ nc -zvuw2 mybox1.com 40000
Connection to mybox1.com 40000 port [udp/*] succeeded!

沒有意義

[mrduki@mybox1~]$ nc -ul 40000
[mrduki@mybox1~]$ ^C
---
[mrduki@mybox2~]$ nc -zvuw2 mybox1.com 40000
Connection to mybox1.com 40000 port [udp/*] succeeded!

事實上,如果我從 進行埠掃描40000-40100,每個埠都會成功。

如果我在沒有的情況下進行相同的測試-u(以便它測試 TCP 而不是 UDP),我會得到40000 (tcp) timed out: Operation now in progress錯誤,正如我所期望的那樣(因為我沒有監聽這樣的 TCP 服務40000)。

做一個雖然顯示沒有這樣的服務在這些埠上監聽sudo netstat -alnp | grep LISTENmybox1那麼我錯過了什麼?

nc可能不是測試埠狀態的最佳工具。你試過nmap嗎?它實際上是一個埠掃描器。我檢查了我的家庭網路和 127.0.0.1 上的文件伺服器,兩者都報告UDP port 40000已關閉。

地圖

# nmap -sU -p 40000 igor

Starting Nmap 7.01 ( https://nmap.org ) at 2016-08-18 18:27 EDT
Nmap scan report for igor (192.168.1.125)
Host is up (0.00027s latency).
rDNS record for 192.168.1.125: igor.swass
PORT      STATE  SERVICE
40000/udp closed unknown
MAC Address: 68:05:CA:3A:BF:B7 (Intel Corporate)

Nmap done: 1 IP address (1 host up) scanned in 0.53 seconds

核心 + /dev

您也可以像這樣使用核心來執行此操作。但nmap可能更好。

# timeout 3 cat < /dev/udp/example.com/40000

當我nc在同一台伺服器(igor)上嘗試時,我得到了和你一樣的結果。但是我回去再試一次,現在它沒有返回任何輸出(沒有成功的消息),wireshark 顯示“目標無法訪問”正在通過 ICMP 發回。我不明白這些。但我會切換到另一種檢查 UDP 埠狀態的方法。

引用自:https://serverfault.com/questions/797763