개요

서버에 올린 서비스가 연결할 수 없을 때 제일 먼저 할 일은 외부에서 해당 포트로 접속이 가능한지 여부이다.


포트 오픈 확인은 telnet 을 직접 실행해서 포트 오픈을 확인하거나 web 기반 서비스라면 curl 을 사용하면 된다.

telnet DOMAIN PORT
BASH
curl http://DOMAIN:PORT/
BASH


에러가 날 경우 메시지는 다음중 하나이며 각 상황에 따라 다르다

  • connection refused
  • No route to host
  • Destination unreached

curl 일 경우 7 connection timeout 이 날수도 있다.

연결 에러 메시지

Connection refused

"connection refused"  에러는 방화벽 정책에서 해당 포트가 오픈되서 외부에서 연결가능하나 포트에 서비스 daemon 이 구동 안 되어 발생하는 경우이다. 

lsof 로 해당 포트를 listening 하는 데몬이 있는지 여부를 확인하고 서비스를 재구동해주면 된다.

sudo lsof -i TCP:PORT
BASH

No route to host

방화벽에서 포트가 차단되어 있으며 DROP 정책으로 설정했을 경우 발생한다.

DROP 일 경우 source host  에 ICMP response 를 보내지 않으므로 port scanning 에 조금 더 안전한 편이다.

Destination unreached

방화벽에서 포트가 차단되어 있으며 Reject 정책으로 설정했을 경우 발생한다.

Reject 일 경우 설정한 ICMP response 를 보내므로 더 빨리 port scanning 을 할수 있으므로 권장하지 않는다.


curl 에서 connection timeout 이 나는건 방화벽에서 해당 포트 연결을 허용하지 않고 DROP 또는 REJECT 설정해서 발생한다.


같이 보기

Ref