我一直使用共享主机托管我的网站。我想部署使用 Ratchet PHP 构建的 PHP WebSocket 应用程序。因此我希望它监听端口 9000。
当我在 SSH 访问中运行命令时,php server.php
它显示服务器已启动并正在监听 domain.com:9000。但在我的聊天应用程序中,它需要一些时间,然后显示:
Firefox 无法与 ws://domain.com:9000/ 的服务器建立连接
另外,我已经检查了telnet domain.com 9000
哪些结果
无法在端口 9000 上打开与主机的连接:连接失败。
我联系了客服,他们说
您的端口 9000 已开放用于出站连接。
我如何检查我的端口是否打开?如果打开了,为什么它不监听作为客户端的 Web 浏览器与服务器的连接?
答案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
检查端口。