서버에서 포트가 열려 있는지 확인하는 방법은 무엇입니까?

서버에서 포트가 열려 있는지 확인하는 방법은 무엇입니까?

저는 공유 호스팅을 사용하여 웹사이트를 호스팅해 왔습니다. Ratchet PHP를 사용하여 구축된 PHP WebSocket 애플리케이션을 배포하고 싶습니다. 그래서 포트 9000에서 수신 대기하고 싶습니다.

php server.phpSSH 액세스에서 명령을 실행하면 서버가 시작되어 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포트를 확인하는 데 사용하지 마십시오.

관련 정보