
私は共有ホスティングを使用して Web サイトをホストしています。Ratchet PHP を使用して構築された PHP WebSocket アプリケーションをデプロイしたいと考えています。そのため、ポート 9000 でリッスンするようにします。
php server.php
SSH アクセスでコマンドを実行すると、サーバーが起動し、domain.com:9000 でリッスンしていることが示されます。ただし、チャット アプリケーションでは、しばらく時間がかかってから次のように表示されます。
Firefox は ws://domain.com:9000/ のサーバーへの接続を確立できません
また、私はtelnet domain.com 9000
どの結果が
ポート 9000 のホストへの接続を開けませんでした: 接続に失敗しました。
サポートに問い合わせたところ、
ポート 9000 は OutBound 接続用に開かれています。
ポートが開いているかどうかを確認するにはどうすればよいですか? また、開いている場合、クライアントからサーバーへの Web ブラウザーによる接続をリッスンしないのはなぜですか?
答え1
ポート 9000 は OutBound 接続用に開かれています。
しかし、それはあなたがやろうとしていることではない。インバウンドサーバーからの送信接続ではなく、サーバーへの接続です。
ポートが開いているかどうかを確認するにはどうすればよいですか?
ホスティングプロバイダーに連絡し、リスナー送信接続を行うのではなく、共有ホスティング アカウントのポート 9000 で接続します。
共有サーバーでは、ホスティング プロバイダーが受信接続を一切許可しないか、特定の範囲のポートを使用するように要求する場合があります。
(一方、プライベート/専用サーバーでは、サーバーのファイアウォールに自分で設定した制限のみが適用されるため、iptables、ufw、firewalld などのファイアウォール ルールを確認して確認する必要があります。)
答え2
Linux システムで SSH アクセス権がある場合は、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
ポートのチェックに使用します。