Linux Network is Unreachable 오류의 원인과 해결 방법

Linux 서버를 운영하다 보면 SSH 접속, API 호출, 데이터베이스 연결 또는 인터넷 접속 시 Network is unreachable, ENETUNREACH 오류를 만나는 경우가 있습니다. 이 오류는 운영체제가 목적지 네트워크 자체에 접근할 수 없다고 판단했을 때 발생하는 대표적인 네트워크 오류입니다.

No route to host와 비슷하게 보이지만, Network is unreachable는 네트워크 자체에 접근할 수 없는 상태이며, No route to host는 네트워크는 인식하지만 목적지 호스트까지 도달하지 못하는 상태라는 차이가 있습니다.

이번 글에서는 Network is Unreachable 오류의 원인과 확인 방법, 해결 방법을 실무 중심으로 알아보겠습니다.

Network is Unreachable란?

Linux에서 TCP 연결을 생성하면 커널은 먼저 목적지 네트워크가 존재하는지 확인합니다.

동작 과정은 다음과 같습니다.

Application

↓

connect()

↓

Routing Table 조회

↓

목적지 네트워크 확인

↓

Gateway 선택

↓

패킷 전송

하지만 목적지 네트워크 자체를 찾지 못하면 다음과 같은 오류가 발생합니다.

connect()

↓

Network is unreachable

ENETUNREACH

즉, 운영체제가 목적지 네트워크까지 갈 수 있는 방법 자체를 알지 못하는 상태입니다.

Network is Unreachable가 발생하는 주요 원인

대표적인 원인은 다음과 같습니다.

  • 기본 게이트웨이(Default Gateway) 없음
  • 라우팅 테이블 오류
  • 네트워크 인터페이스 DOWN
  • IP 주소 설정 오류
  • VLAN 설정 오류
  • VPN 연결 실패
  • Docker 네트워크 오류
  • Kubernetes CNI 문제
  • 잘못된 Static Route
  • NIC 장애

실무에서는 기본 게이트웨이 설정 누락이 가장 흔한 원인입니다.

1. Routing Table 확인하기

가장 먼저 라우팅 정보를 확인합니다.

ip route

또는

route -n

기본 게이트웨이와 목적지 네트워크가 존재하는지 확인합니다.

2. Default Gateway 확인하기

기본 게이트웨이를 확인합니다.

ip route | grep default

예시

default via 192.168.0.1 dev eth0

기본 게이트웨이가 없다면 외부 네트워크로 통신할 수 없습니다.

3. 네트워크 인터페이스 확인하기

인터페이스 상태를 확인합니다.

ip link

또는

ip addr

예시

eth0: DOWN

인터페이스가 DOWN 상태라면 먼저 활성화해야 합니다.

ip link set eth0 up

4. IP 주소 확인하기

현재 할당된 IP를 확인합니다.

hostname -I

또는

ip addr show

IP 주소가 없거나 잘못 설정되어 있다면 정상적인 통신이 불가능합니다.

5. 목적지 네트워크 확인하기

라우팅 경로를 확인합니다.

ip route get 8.8.8.8

예시

8.8.8.8 via 192.168.0.1 dev eth0

경로를 찾지 못하면 라우팅 설정을 점검해야 합니다.

6. DNS와 구분하기

먼저 IP 주소로 연결을 시도합니다.

ping 8.8.8.8

다음으로 도메인으로 확인합니다.

ping google.com

IP는 되는데 도메인만 안 된다면 DNS 문제일 가능성이 높습니다.

7. Docker 환경 확인하기

Docker 네트워크를 확인합니다.

docker network ls

컨테이너 네트워크도 확인합니다.

docker inspect 컨테이너명

Bridge Network 설정 오류가 없는지 확인합니다.

8. Kubernetes 환경 확인하기

Pod 네트워크를 확인합니다.

kubectl get pods -A -o wide

CNI 플러그인 상태도 확인합니다.

kubectl get nodes

Calico, Flannel, Cilium 등의 네트워크 플러그인이 정상 동작하는지 점검합니다.

9. ARP 및 인터페이스 확인하기

동일 네트워크에서는 ARP도 확인합니다.

ip neigh

인터페이스 통계도 확인합니다.

ip -s link

패킷 오류나 Drop이 증가하는지 확인합니다.

10. 로그 확인하기

커널 로그를 확인합니다.

journalctl -k

또는

dmesg | grep -i network

NIC 오류나 드라이버 문제도 함께 분석합니다.

Network is Unreachable 점검 순서

실무에서는 다음 순서대로 점검하는 것이 좋습니다.

  1. Routing Table 확인
  2. Default Gateway 확인
  3. 인터페이스 상태 확인
  4. IP 주소 확인
  5. 목적지 경로 확인
  6. DNS 문제 구분
  7. Docker 네트워크 확인
  8. Kubernetes 네트워크 확인
  9. ARP 및 인터페이스 상태 확인
  10. 커널 로그 확인

Network is Unreachable 사용 시 주의사항

다음 사항을 고려해야 합니다.

  • 기본 게이트웨이를 가장 먼저 확인한다.
  • 인터페이스가 UP 상태인지 확인한다.
  • DNS 문제와 혼동하지 않는다.
  • Docker와 Kubernetes 네트워크도 함께 점검한다.
  • Static Route 설정도 확인한다.
  • NIC 드라이버 오류도 함께 확인한다.

단순히 Ping이 되지 않는다고 해서 DNS 문제라고 판단하기보다 라우팅과 인터페이스 상태를 먼저 확인하는 것이 중요합니다.

Network is Unreachable와 No Route to Host의 차이

항목Network is UnreachableNo Route to Host
오류 코드ENETUNREACHEHOSTUNREACH
의미목적지 네트워크 자체에 접근 불가목적지 호스트에 접근 불가
주요 원인Gateway, 인터페이스, 라우팅방화벽, 호스트 다운, 라우팅
해결 대상네트워크 설정호스트 및 네트워크

Network is Unreachable는 네트워크 단위의 문제, No Route to Host는 특정 호스트 접근 문제라는 점이 가장 큰 차이입니다.

자주 묻는 질문

Network is Unreachable와 No Route to Host는 같은 오류인가요?

아닙니다. Network is Unreachable는 목적지 네트워크 자체를 찾지 못하는 경우이고, No Route to Host는 네트워크는 인식하지만 특정 호스트에 도달하지 못하는 경우입니다.

기본 게이트웨이가 없어도 내부 통신은 가능한가요?

같은 서브넷에 있는 장비끼리는 통신이 가능합니다. 하지만 다른 네트워크나 인터넷으로 나가려면 기본 게이트웨이가 반드시 필요합니다.

Docker에서도 Network is Unreachable 오류가 발생하나요?

네. Bridge Network 설정 오류, 컨테이너 네트워크 충돌, CNI 문제 등으로 인해 자주 발생할 수 있습니다.

마무리

Network is Unreachable(ENETUNREACH)는 목적지 네트워크까지의 경로 자체를 찾을 수 없을 때 발생하는 대표적인 Linux 네트워크 오류입니다. ip route, ip addr, ip link, journalctl 등을 활용하면 원인을 빠르게 파악할 수 있으며, 기본 게이트웨이와 라우팅 테이블, 네트워크 인터페이스 상태를 함께 점검하면 대부분의 문제를 해결할 수 있습니다.

댓글 남기기