it-swarm-ko.com

Linux 서버에서 포트가 열려 있는지 또는 닫혀 있는지 확인하십시오.

포트가 Linux 서버에서 수신 대기 중인지 어떻게 확인할 수 있습니까?

228
James Anderson

프로세스가 TCP 또는 netstat -tuplen.

외부에서 일부 포트에 액세스 할 수 있는지 확인하려면 (이것이 원하는 것임) Nmap from another 시스템. 확인하려는 동일한 호스트에서 Nmap.

195
joschi

TCP 포트가 열려 있는지 (있는 하드웨어 방화벽 포함) 열려 있는지 테스트하는 가장 빠른 방법은 원격 컴퓨터 (예 : 데스크탑)에서 입력하는 것입니다.

telnet myserver.com 80

해당 서버의 포트 80에 대한 연결을 열려고 시도합니다. 시간이 초과되거나 거부되면 포트가 열려 있지 않은 것입니다. :)

108
Adrian Macneil

요약하면, 로그인 할 수있는 서버가 있습니다. 어떤 포트에서 무언가를 듣고 있는지 확인하고 싶습니다. 루트 권한으로 다음을 실행하십시오.

netstat -nlp

여기에는 TCP 및 UDP 포트에서 수신 대기중인 프로세스 목록이 표시됩니다. 관심있는 프로세스 및/또는 예상되는 포트 번호에 대해 스캔 (또는 grep) 할 수 있습니다. .

예상되는 프로세스가 없으면 해당 프로세스를 시작하고 netstat를 다시 확인해야합니다. 프로세스가 있지만 예상치 못한 인터페이스와 포트에서 수신 대기하는 경우 구성 문제가 있습니다 (예 : 수신 대기 중일 수 있지만 루프백 인터페이스에서만 발생하므로 127.0.0.1:3306 및 MySQL의 기본 구성 인 경우 포트 3306의 다른 행은 없습니다.

프로세스가 작동 중이고 원하는 포트에서 수신 대기중인 경우 사무실/가정의 Macbook에서 해당 포트로 "텔넷"을 실행 해보십시오 (예 :

 telnet xxxxxxxxxxxx.co.uk 443

SSL에 대해 웹 서버가 구성되어 있는지 (표준 포트로 가정) 테스트합니다. telnet을 사용한이 테스트는 프로세스가 TCP 포트에서 수신 대기중인 경우에만 작동합니다. UDP 포트 인 경우 사용하려는 클라이언트와 함께 시도 할 수도 있습니다. 연결하십시오. (포트 224를 사용했음을 알 수 있습니다. 이것은 masqdialer이며, 그것이 무엇인지 전혀 모릅니다).

서비스가 있지만 외부에 접근 할 수 없으면 방화벽이 차단되어있는 것입니다. 이 경우 다음을 실행하십시오.

 iptables -L -n

시스템에 정의 된 모든 방화벽 규칙이 표시됩니다. 이를 게시 할 수 있지만 일반적으로 INPUT 체인의 모든 것을 허용하지 않는 경우 문제의 포트에서 트래픽을 명시 적으로 허용해야합니다.

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

또는 그 라인을 따라 뭔가. 낯선 사람이 인터넷에서 말한 내용에 따라 맹목적으로 방화벽 명령을 실행하지 마십시오. 하고있는 것을 고려하십시오.

상자의 방화벽이 원하는 트래픽을 허용하는 경우 호스팅 회사에서 방화벽을 실행 중일 수 있습니다 (예 : SSH (22/tcp), HTTP (80/tcp) 및 HTTPS (443/tcp) 만 허용 함) 다른 모든 수신 트래픽 거부). 이 경우 cPanel에 허용 할 수있는 무언가가 있다고 생각하지만이 문제를 해결하려면 헬프 데스크 티켓을 열어야합니다.

32
cjc

netstatlsof의 콤보를 사용합니다.

netstat -an | grep <portnumber>
lsof -i:<portnumber>

포트가 사용 중인지 및 사용 중인지 확인합니다.

12
warren

시스템에 연결되어 있고 루트로 명령을 실행할 수 있다면 iptables의 출력을 확인할 수 있습니다

iptables -L -vn

방화벽 규칙과 열려있는 대상 포트 ACCEPT 및 명시 적으로 닫힌 포트 대상 REJECT이 나열됩니다.

8
user9517

lsof -i :ssh는 ssh 포트가 열려 있고 수신 및 활성 연결 모두로 모든 프로세스를 나열합니다.

6
pgs

이러한 테스트를 스크립팅해야하는 경우 Serhii Popov (의견 참조)의 솔루션은 아마도 nc이 TCP 스택을 검색 할 수 있기 때문에) 최고 일 것입니다. 실제 연결을 시도하는 대신 포트.

가장 간단한 형태는 다음과 같습니다.

nc -z <ip> <port>

지정된 <ip>:<port> 콤보가 열린 것으로 발견되면 (즉, 서비스 중 하나가 수신 대기 중) 명령이 true를 리턴합니다.

이제 포트가 열릴 때까지 기다리는 스크립트를 작성할 수 있습니다.

while ! nc -z <ip> <port>
do
    sleep 1
done

참고 1 : -w 명령 줄 옵션을 시도했지만 아무 것도 수행하지 않는 것 같습니다. 명령이 즉시 반환되는 방식입니다. -w-z.

참고 2 : 디버그를 돕기 위해 -v 명령 줄 옵션을 사용해보십시오.

0
Alexis Wilke