Linux 서버를 운영하다 보면 SSH, 웹 서버, 데이터베이스 등에 접속할 때 Connection timed out이라는 오류를 자주 만나게 됩니다. 이 오류는 서버와 연결을 시도했지만 일정 시간 동안 응답을 받지 못했을 때 발생하는 대표적인 네트워크 오류입니다.
많은 사람들이 Connection refused와 혼동하지만 두 오류는 의미가 다릅니다. Connection refused는 서버가 연결을 거부한 것이고, Connection timed out은 서버로부터 아예 응답을 받지 못한 상태를 의미합니다.
이번 글에서는 Connection timed out 오류의 원인과 실무에서 확인하는 방법을 알아보겠습니다.
Connection timed out란 무엇인가?
Connection timed out은 클라이언트가 서버에 연결을 시도했지만 제한 시간 안에 응답을 받지 못했을 때 발생합니다.
대표적인 오류 예시는 다음과 같습니다.
ssh: connect to host 192.168.0.10 port 22: Connection timed out
또는
curl: (28) Connection timed out
또는
telnet: Unable to connect to remote host: Connection timed out
이 오류는 대부분 네트워크 경로 또는 방화벽 문제와 관련이 있습니다.
Connection timed out가 발생하는 대표적인 원인
다음과 같은 경우에 자주 발생합니다.
- 서버 전원 종료
- 네트워크 장애
- 방화벽 차단
- 클라우드 보안 그룹(Security Group) 차단
- 라우팅 문제
- VPN 연결 문제
- 잘못된 IP 주소
- 공유기 또는 NAT 설정 오류
- ISP 네트워크 장애
- 서버 과부하
실무에서는 네트워크 연결부터 확인하는 것이 중요합니다.
1. Ping 테스트하기
먼저 서버와 통신이 가능한지 확인합니다.
ping 서버IP
응답이 없다면 서버 또는 네트워크 장애를 의심해야 합니다.
2. Traceroute 확인하기
패킷이 어디에서 끊기는지 확인합니다.
traceroute 서버IP
Ubuntu에서는 다음 명령으로 설치할 수 있습니다.
sudo apt install traceroute
중간 구간에서 응답이 끊기는지 확인합니다.
3. 서버 전원 확인하기
가상 서버라면 클라우드 콘솔에서 서버 상태를 확인합니다.
물리 서버라면 서버가 정상적으로 부팅되어 있는지 확인합니다.
4. 방화벽 확인하기
Firewalld
firewall-cmd --list-all
UFW
ufw status
접속하려는 포트가 허용되어 있는지 확인합니다.
5. 서비스 실행 여부 확인하기
네트워크는 정상이어도 서비스가 실행되지 않으면 문제가 발생할 수 있습니다.
SSH
systemctl status sshd
Nginx
systemctl status nginx
MySQL
systemctl status mysqld
6. 포트 개방 여부 확인하기
현재 포트가 열려 있는지 확인합니다.
ss -tlnp
또는
netstat -tlnp
LISTEN 상태인지 확인합니다.
7. 클라우드 보안 그룹 확인하기
AWS, Azure, GCP에서는 운영체제 방화벽과 별도로 보안 그룹이 존재합니다.
다음 사항을 확인합니다.
- 인바운드 규칙
- 포트 허용 여부
- 허용 IP 주소
- VPC 네트워크 설정
8. DNS 확인하기
도메인을 사용하는 경우 DNS가 정상인지 확인합니다.
nslookup example.com
또는
dig example.com
잘못된 IP를 반환하고 있지 않은지 확인합니다.
9. 로컬 방화벽 확인하기
클라이언트 PC에서도 방화벽이 차단하고 있을 수 있습니다.
다른 PC나 모바일 네트워크에서 동일한 접속을 시도해 보는 것도 좋은 방법입니다.
10. 시스템 로그 확인하기
서버 로그를 확인합니다.
journalctl -xe
또는
dmesg
네트워크 관련 오류가 있는지 확인합니다.
Connection timed out 문제를 확인하는 순서
실무에서는 다음 순서대로 점검하는 것이 가장 효율적입니다.
- Ping 확인
- Traceroute 확인
- 서버 전원 확인
- 방화벽 확인
- 서비스 실행 여부 확인
- 포트 확인
- 보안 그룹 확인
- DNS 확인
- 클라이언트 방화벽 확인
- 시스템 로그 확인
이 순서대로 확인하면 대부분의 원인을 빠르게 찾을 수 있습니다.
Connection refused와의 차이점
| 오류 | 의미 |
|---|---|
| Connection refused | 서버까지는 도달했지만 서비스가 연결을 거부 |
| Connection timed out | 서버로부터 응답을 받지 못함 |
이 두 오류는 원인이 다르므로 문제 해결 방법도 달라집니다.
자주 묻는 질문
Ping도 되지 않습니다.
서버 전원, 네트워크 장비, 라우팅 또는 방화벽 문제일 가능성이 높습니다.
Ping은 되는데 Connection timed out이 발생합니다.
방화벽이나 클라우드 보안 그룹에서 특정 포트를 차단하고 있을 수 있습니다.
SSH만 timeout이 발생합니다.
22번 포트 차단, SSH 서비스 중지 또는 보안 그룹 설정을 확인해야 합니다.
마무리
Connection timed out은 Linux 서버에서 가장 많이 발생하는 네트워크 오류 중 하나입니다. ping, traceroute, ss, systemctl, journalctl 등을 활용해 네트워크와 서비스 상태를 단계적으로 확인하면 대부분의 원인을 빠르게 찾을 수 있습니다. 특히 Connection refused와의 차이를 이해하면 문제를 훨씬 효율적으로 해결할 수 있습니다.