Как проверить открыт ли порт на сервере?

Как проверить открыт ли порт на сервере?

Я использовал Shared хостинг для размещения своего сайта. Я хочу развернуть приложение PHP WebSocket, созданное с помощью Ratchet PHP. Поэтому я хочу, чтобы оно прослушивало порт 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команду check the port.

Связанный контент