
我一直在使用共享主機來託管我的網站。我想部署一個使用 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
檢查連接埠。