[Network] NAT Loopback / Hairpin NAT

twid_yuni·2025년 6월 24일

네트워크

목록 보기
1/3

NAT Loopback (Hairpin NAT)

내부망에서 같은 네트워크에 있는 서버의 공인 IP 또는 도메인(example.com) 으로 접속했는데 접속이 안 되거나 멈추는 경우가 있다. 이 상황에서 등장하는 개념이 바로 NAT Loopback 혹은 Hairpin NAT다.

NAT Loopback과 Hairpin NAT는 같은 개념을 가리키는 용어로, 라우터 제조사나 문서마다 다르게 부르기도 한다. 일부 라우터에서는 NAT Reflection이라고도 한다.

사설 IP를 할당받은 5G 라우터에 DDNS를 설정하고 내부에서 해당 도메인으로 접속을 시도했는데 실패했다.
원인을 찾는 과정에서 NAT Loopback이라는 개념을 알게 되었고, 그 구조와 동작 방식을 정리해두기로 했다.

1. NAT 기본: SNAT과 DNAT

SNAT (Source NAT)

  • 출발지 IP를 바꾸는 NAT
  • 내부 → 외부로 패킷을 보낼 때 사용
  • 예: 192.168.0.10 → 123.45.67.89로 바뀌어서 외부 서버에 도달

DNAT (Destination NAT)

  • 목적지 IP를 바꾸는 NAT
  • 외부 → 내부로 들어오는 패킷을 내부 서버로 보내줄 때 사용
  • 예: 123.45.67.89:80 → 192.168.0.20:80

일반적인 라우터는 포트포워딩 설정을 통해 DNAT 처리를 한다. 외부에서 공인 IP:포트로 접근하면 이를 내부 서버 IP로 매핑해준다.

2. 문제 상황: 내부에서 공인 IP로 접속

구성 예시

  • 클라이언트: 192.168.0.10
  • 서버: 192.168.0.20
  • 라우터 공인 IP: 123.45.67.89
  • 라우터 내부 IP (게이트웨이): 192.168.0.1
  • example.com → 123.45.67.89

같은 내부망에 있는 클라이언트가 http://example.com으로 접속할 때, 도메인은 라우터의 WAN IP를 가리킨다.

핵심 문제: 이 요청이 외부로 나갔다가 돌아오는 게 아니라, 라우터에서 자기 자신에게 온 패킷으로 인식된다. 하지만 일반적인 라우팅 규칙으로는 이런 자기 자신을 목적지로 하는 패킷을 다시 내부로 보내는 처리가 불가능하다.
이걸 가능하게 하는 기술이 바로 NAT Loopback!

3. NAT Loopback의 처리 방식

NAT Loopback이 동작하려면 라우터가 다음 3단계를 순차적으로 수행해야 한다:

1단계: DNAT 적용

  • 목적지 123.45.67.89:80 → 내부 서버 192.168.0.20:80로 변경
  • 포트포워딩 규칙에 따라 처리

2단계: SNAT 적용 (핵심!)

  • 출발지 192.168.0.10 → 라우터의 내부 IP 192.168.0.1로 변경
  • 왜 필요한가?
    • SNAT 없이 서버가 직접 클라이언트로 응답하면 클라이언트는 192.168.0.20에서 온 응답을 받게 됨
    • 하지만 클라이언트는 123.45.67.89에 요청했으므로 세션이 매칭되지 않아 패킷을 거부함
    • SNAT로 라우터를 거치게 해야 응답도 올바른 경로로 돌아옴

3단계: Hairpin Routing

  • 변환된 패킷을 외부가 아닌 다시 내부 인터페이스로 포워딩
  • 마치 머리핀(hairpin) 모양처럼 패킷이 라우터에서 꺾여서 내부로 되돌아감

패킷 플로우 예시

정상적인 NAT Loopback 처리:
1. 클라이언트(192.168.0.10:12345) → 라우터(123.45.67.89:80)
2. [DNAT] 목적지 변경: 123.45.67.89:80 → 192.168.0.20:80
3. [SNAT] 출발지 변경: 192.168.0.10:12345 → 192.168.0.1:54321
4. [Hairpin] 라우터 → 서버(192.168.0.20:80) 
5. 서버 응답: 192.168.0.20:80 → 192.168.0.1:54321
6. [역방향 NAT] 라우터 → 클라이언트(192.168.0.10:12345)

4. 미지원 라우터

NAT Loopback을 지원하지 않는 라우터에서는 다음과 같은 현상이 발생한다:

  • 라우터가 목적지 IP가 자기 자신(공인 IP)인 것을 보고 내부 라우팅 테이블에서 처리 경로를 찾지 못함
  • SNAT 처리 없이 DNAT만 적용하여 세션 불일치 발생
  • Hairpin routing 기능 부재로 내부 인터페이스로 패킷 포워딩 불가능

5. 정리

구분설명역할
SNAT출발지 IP 변경 (내부 → 외부)응답 경로 보장
DNAT목적지 IP 변경 (외부 → 내부)포트포워딩
NAT Loopback내부에서 공인 IP로 접속한 패킷을 내부로 되돌리는 방식내부-도메인 접속 허용
Hairpin Routing라우터에서 패킷을 다시 내부 인터페이스로 포워딩물리적 패킷 전달

6. 결론

NAT Loopback은 라우터가 DNAT과 SNAT을 동시에 적용한 뒤 자기 자신을 목적지로 가진 패킷을 내부망으로 포워딩할 수 있도록 하는 기술이다.

현대 대부분의 가정용/기업용 라우터는 이 기능을 지원하지만, 설정에서 비활성화되어 있거나 펌웨어가 오래된 경우 문제가 발생할 수 있으므로 확인이 필요함.

profile
프론트엔드 3년차 정연희입니다.

0개의 댓글