如何檢查伺服器上的連接埠是否開放?

如何檢查伺服器上的連接埠是否開放?

我一直在使用共享主機來託管我的網站。我想部署一個使用 Ratchet PHP 建置的 PHP WebSocket 應用程式。所以我希望它監聽連接埠 9000。

php server.php當我在 SSH 訪問中運行命令時,它顯示伺服器已啟動並正在偵聽 domain.com:9000。但在我的聊天應用程式中,需要一些時間然後說:

Firefox 無法與 ws://domain.com:9000/ 的伺服器建立連接

另外,我還檢查了telnet domain.com 9000結果

無法在連接埠 9000 上開啟與主機的連線:連線失敗。

我聯繫了支援人員,他們說

您的連接埠 9000 已為出站連線開啟。

如何查看我的連接埠是否開放?如果打開,為什麼它不偵聽網頁瀏覽器作為客戶端到伺服器建立的連線?

答案1

您的連接埠 9000 已為出站連線開啟。

但這不是您想要做的。你正在嘗試做一個入境到伺服器的連接,而不是來自伺服器的出站連接。

如何查看我的連接埠是否開放?

聯絡託管提供商,並明確您想要設置聽眾在共享主機帳戶的連接埠 9000 上,而不是進行出站連線。

在共用伺服器上,託管提供者可能根本不允許任何入站連接,或者他們可能要求您使用特定範圍的連接埠。

(同時,在私有/專用伺服器上,唯一的限制是您在伺服器防火牆上設定的限制,因此您可以透過查看防火牆規則進行檢查 - iptables、ufw、firewalld 等。)

答案2

如果您有 ssh 存取權限,在 Linux 系統中,您可以使用 iptables 查詢您的防火牆規則:

sudo iptables -S | grep ACCEPT

如果使用 修改了防火牆規則firewall-cmd,您可以使用下列命令查詢規則:

sudo firewall-cmd --list-all

要獲得防火牆的完整「地圖」(如果您需要了解如何配置各個鏈,則很有用),您可以執行以下命令:

sudo iptables -L

答案3

這是我的 bash 腳本來檢查開放連接埠!

log_file=log_file    
ip_list=("192.168.111.1" "192.168.111.2" "192.168.111.3")    
#ip_list=$(cat ip_addr.txt)  #put all ip in the text file 
        for ip in "${ip_list[@]}"
             do
              nc -z -w5 "$ip" 22
                if [ $? -eq 0 ]; then
                    echo "$ip port 22 is open " >> $log_file
                else
                    echo "SSH port 22 is not open on $ip"
                fi
            done

檢查連接埠是否開啟用於nc檢查連接埠。

相關內容