문서

빠른 시작 + 부분별, 기기별 기능 설명 (계속 업데이트 중)

NAT 서버 감지와 터널링 제안

이 문서는 패널이 NAT 서버를 자동으로 식별하고, 「포트를 설정할 수 있는 NAT」와 「포트를 설정할 수 없는 NAT」를 구분하며, 필요할 때 터널링 운영 사용을 안내하는 방법을 소개합니다.

먼저 알아두기: NAT란 무엇인가

NAT 서버는 「내부망 IP만 있고 독립 공인 IP가 없는」 서버를 말합니다. 예를 들어 저렴한 NAT VPS는 사업자가 내부망 주소(예: 192.168.x.x)를 주기 때문에 공인망에서 직접 접근할 수 없고, 사업자가 제공하는 포트 매핑(공인망의 특정 포트를 내부망으로 전달)을 통해서만 접근할 수 있습니다.

기능 소개

서버를 추가한 뒤 SSH 연결에 성공하면, 패널이 이 머신이 NAT 유형(로컬에 내부망 주소만 있고 독립 공인 IP가 없음)인지 자동으로 감지합니다. NAT로 감지되면 서버 카드에 작은 배지를 표시하고, 「개요」 상단에 안내를 한곳에 모아 보여줍니다. 사용자는 노란색 배지를 클릭해 해당 NAT 서버가 사업자 패널에서 포트 포워딩을 직접 설정할 수 있는지 확인하고, 터널링 운영이 필요한지 판단할 수 있습니다.

NAT를 구분해야 하는 이유

「내부망 IP」 ≠ 「터널링 필요」. NAT 서버는 두 종류로 나뉩니다:

유형특징터널링 필요 여부
포트를 설정할 수 있는 NAT사업자가 포트 매핑 패널을 제공해, 사용자가 직접 공인 포트를 내부망 포트로 매핑할 수 있음❌ 불필요, 포트를 스스로 해결 가능
포트를 설정할 수 없는 NAT사업자가 SSH(22) 등 소수 포트만 고정 매핑해, 나머지 포트는 공인망에서 들어올 수 없음✅ 터널링 운영 필요

「포트를 설정할 수 없는 NAT」만 터널링 운영이 필요합니다. 포트를 설정할 수 있는 NAT는 포트를 스스로 매핑할 수 있어 공인 IP 머신과 사용감이 다르지 않으므로, 반복해서 알림을 띄우지 않아야 합니다.

감지 원리

패널은 SSH 연결에 성공한 뒤 읽기 전용 명령 ip -4 addr show를 실행해 서버 로컬 네트워크 카드 IP를 읽고, 모두 내부망 대역에 속하는지 판단합니다:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • 100.64.0.0/10(CGNAT 통신사급 NAT)
  • 127.0.0.0/8, 169.254.0.0/16, 0.0.0.0/8

공인 대역 IP가 하나라도 있으면 「공인 IP 있음」(비 NAT)으로, 전부 내부망 대역이면 「NAT」로 판정합니다.

> 감지 명령은 읽기 전용이라 서버의 어떤 상태도 변경하지 않습니다. 감지 결과는 데이터베이스에 기록되며 최초 연결 시 한 번만 감지하고 이후에는 결과를 그대로 재사용해 연결 속도를 떨어뜨리지 않습니다.

배지와 안내 위치

NAT가 감지되면 안내는 두 곳에 표시됩니다:

1. 시스템 관리 패널 「개요」 탭: 서버 카드의 「시스템 관리」를 클릭해 패널에 들어가면, 첫 번째 탭인 「개요」에 해당 NAT 안내 배너가 표시됩니다. 노란색으로 표시된 서버는 노란색 설명(해제 안내 포함)을, 빨간색으로 표시된 서버는 빨간색 터널링 안내를 보여줍니다. 안내는 NAT이면서 아직 확인하지 않은 직접 연결 서버에만 나타나 카드를 차지하지 않습니다.

2. 카드의 작은 배지: 카드에는 작은 배지 하나만 남으며 세 가지 상태로 나뉩니다:

배지색상의미클릭 동작
NAT노란색NAT 감지됨(로컬 IP가 내부망 대역), 확인 대기확인 대화상자 표시
터널링 필요빨간색포트를 공인망에서 접근할 수 없어 터널링 필요터널링 운영 안내 표시
(배지 없음)—「포트에 문제 없음」으로 확인되어 표시 해제됨—

노란색 NAT 배지는 「확인 대기」 상태입니다. 클릭하면 확인 대화상자가 뜨고 두 가지 중 하나를 고를 수 있습니다:

  • 「포트에 문제 없음, 표시 해제」 → 배지가 사라지고 이후 알림이 뜨지 않습니다;
  • 「포트에 접근할 수 없음, 터널링 필요로 표시」 → 배지가 빨간색으로 바뀌고 터널링 운영을 안내합니다.

빨간색 터널링 필요는 「경고」입니다. 클릭하면 터널링 운영 + 포트 터널링으로 바로 이동합니다.

> 「포트 접근 가능 여부를 자동으로 탐지」하지 않는 이유: 패널 서버와 대상 서버가 같은 데이터센터에 있을 수 있어, 패널의 탐지가 내부망을 경유하기 때문에 「연결됨」이 외부 방문자의 접근 가능을 의미하지 않아 결과를 신뢰할 수 없습니다. 따라서 「터널링 필요」는 사용자가 노란색 설명 팝업에서 직접 표시합니다.

NAT 서버가 「쓰다 보면 끊기는」 이유

NAT 서버는 사업자 게이트웨이에 idle timeout(유휴 연결 타임아웃)이 있습니다. SSH 연결이 몇 분간 유휴하면 게이트웨이가 조용히 연결을 끊어버리고(TCP 반개방), 양쪽 모두 이를 인지하지 못합니다.

패널은 다음 두 가지로 근본적으로 해결합니다:

1. SSH 연결 keepalive 활성화: 모든 연결이 수립된 뒤 30초마다 keepalive 패킷을 보내 NAT 유휴 차단을 막고, 반쯤 죽은 연결을 빠르게 발견합니다.

2. 연결 풀 정기 정리: 백그라운드 스레드가 2분마다 2분 이상 유휴한 연결을 닫아 반쯤 죽은 연결이 무한정 쌓이는 것을 막습니다.

주의 사항

1. 감지는 SSH 연결 성공에 의존: 서버가 오프라인이거나 비밀번호가 틀리면 감지할 수 없어 배지가 표시되지 않습니다.

2. 배지가 표시되지 않는 서버: 공인 서버, 안드로이드 기기(Termux), 이미 터널링된 기기(tunnel_token 보유)에는 NAT 배지가 표시되지 않습니다. 이들은 원래 각자의 채널을 사용하므로 NAT 알림이 필요 없습니다.

3. 특수한 경우의 여지: 극소수의 「1:1 NAT」(모든 포트가 열린 서버)는 로컬 IP도 내부망이라 NAT로 감지됩니다. 이때 사용자가 확인 대화상자에서 「가능」을 선택하면 되고 사용에는 영향이 없습니다.

4. 확인 후 변경 가능: 배지 상태는 사용자의 확인으로 결정되며, 언제든 배지를 클릭해 조정할 수 있습니다.

관련 문서