埠在機器 A 上打開,但在 Nmap 中從機器 B 看不到
我有一台虛擬化的 CentOS 機器,其軟體正在偵聽埠 8080。我關閉了 SELinux 並刷新了所有 iptables(所以現在沒有設置規則)。我已經檢查過
netstat -nap | grep 8080
該埠是否真的打開了。IP 地址為 192.168.1.3。在我的另一台機器上,我想用一個程序連接到那個埠,但它失敗了。執行
nmap -p 8080 192.168.1.3
時顯示埠已關閉!當我檢查 Wireshark 時,我可以看到連接的電腦正在發送 SYN 數據包,但響應電腦(IP 為 192.168.1.3)以 SYN/RESET 響應併中斷連接並且不以 SYN/ACK 響應,從而繼續傳輸。序號正確,發送電腦發送0,接收電腦接收1。
奇怪的是,其他埠可以被 Nmap 從客戶端機器檢測到打開,但不能檢測到 8080。
可能有什麼問題?
編輯:
好的,我現在不知道該相信什麼。這就是我發現的:
在“伺服器機器”上監聽 8080 的 porgram(讓我們這麼稱呼它)是一個用 Java 建構的定制 Web 服務(使用第三方庫如 EclipseLink 等)。在“伺服器機器”上做的時候nmap localhost
,可以發現埠打開了。從“客戶端電腦”執行nmap 192.168.1.3
時,它會發現埠已關閉(如上所述)。
還有新發現:我剛剛製作了一個簡單的 java 應用程序,它只使用 ServerSocket 類來監聽 8080,然後可以從“客戶端機器”發現埠。那麼,它與網路服務應用程序有關嗎?為什麼在執行 web 服務時埠可以從“伺服器機器”(掃描自身時,本地主機)而不是“客戶端機器”發現?為什麼在執行偵聽 8080 的簡單 java 應用程序時,兩台機器都可以發現埠 8080?netstat -ntpl tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 3481/java
編輯2:
愚蠢的我!現在我明白了,::ffff:127.0.0.1:8080
這意味著該程序只能從 localhost 訪問!:-D我在哪裡改變所以它聽從所有人?
可能是8080埠綁定在其他地方?
在主機上?
無論如何,向您展示網路配置,網橋中的虛擬機?
如果它是舊版本的 centos,可能是“/etc/hosts.{allow,deny}”的問題,但如果它有 iptables,它可能不會使用這些。檢查這些文件是否存在。