핵심 인사이트 (3줄 요약)
- 본질: 터널링(Tunneling)은 서로 말이 통하지 않거나 규격이 다른 두 네트워크(예: IPv6 섬과 섬)가, 중간에 가로막힌 엉뚱한 망(예: IPv4 바다)을 통과하기 위해, 원본 패킷의 알맹이를 건드리지 않고 겉면을 "중간 망이 알아듣는 포장지"로 겹겹이 한 번 더 싸매어(캡슐화) 몰래 운반하는 눈속임 배송 기술이다.
- 기만과 투명성: 터널 입구(공유기)에서 두 번째 포장지를 씌우고, 터널 출구(상대방 공유기)에서 두 번째 포장지를 뜯어버리기 때문에, 출발지 PC와 목적지 PC는 자기들이 "중간에 엉뚱한 망을 거쳐 왔다는 사실"을 꿈에도 모른 채 마치 전용선으로 직통 연결된 것처럼 착각하게 된다.
- 응용의 무한함: 이 기술은 보안을 씌우면 인터넷에 나만의 비밀 지하차도를 파는 **VPN(IPsec)**이 되고, 프로토콜의 장벽을 넘으면 **전환 기술(6to4)**이 되며, 라우팅의 한계를 뚫으면 MPLS-TE가 되는 현대 네트워크 설계의 최고 만능 치트키다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 하나의 네트워크 프로토콜(A)의 데이터그램을 다른 네트워크 프로토콜(B)의 페이로드(데이터 영역) 안에 캡슐화(Encapsulation)하여, B의 망을 통해 A의 데이터를 은닉 전송하는 네트워킹 기법.
-
필요성: 내가 구형 애플 컴퓨터(AppleTalk 프로토콜)로 한국 본사에서 미국 지사로 데이터를 보내려 한다. 그런데 태평양 해저 케이블은 철저하게 IP 패킷만 취급한다. AppleTalk 패킷을 태평양에 던지면 바다 한가운데 라우터들이 "뭐야 이 외계어는!" 하고 다 버린다. "아! 이 AppleTalk 패킷 전체를 가상의 IP 봉투 안에 통째로 쑤셔 넣고, 봉투 겉면에 미국 지사 IP를 적어서 태평양을 건너게 한 다음, 미국에서 봉투를 뜯게 만들면 되잖아!" 이것이 인류가 고안해 낸 터널링의 시작이다.
-
💡 비유: 터널링은 **"러시아 마트료시카 인형 포장법"**과 같습니다.
- 내 물건(작은 인형)은 한국어(IPv6)로 쓰여 있습니다.
- 태평양 택배 회사는 오직 영어(IPv4)로 쓰인 상자(큰 인형)만 취급합니다.
- 나는 작은 인형을 큰 인형 뱃속에 넣고 뚜껑을 닫습니다. (캡슐화)
- 택배 회사는 영어로 된 겉모습(큰 인형)만 보고 미국으로 완벽히 배달해 줍니다.
- 미국 지사 직원이 큰 인형을 열고(디캡슐화), 속에서 작은 인형을 꺼내 읽습니다.
📢 섹션 요약 비유: 터널링은 국경을 넘기 위해 **"마차를 기차 화물칸에 통째로 싣고 달리는 것"**입니다. 마차는 바퀴 한 번 굴리지 않았지만(투명성), 기차 화물칸에 실려 수백 킬로미터를 이동한 뒤 목적지에서 기차 밖으로 나와 다시 마차의 길을 갑니다.
Ⅱ. 터널링의 핵심 동작과 패킷의 3단 구조 (Deep Dive)
모든 터널링 프로토콜(GRE, IPsec, L2TP 등)은 결국 아래의 구조를 만든다는 대원칙을 공유한다.
1. 패킷의 3단 캡슐화 구조
터널링이 작동 중일 때 와이어샤크(Wireshark)로 패킷을 까보면 봉투가 3겹으로 되어 있다.
- 여객 프로토콜 (Passenger Protocol):
- 캡슐화되어 "업혀 가는" 불쌍한 원본 데이터다.
- 예: 사내망에서 돌고 있는 사설 IP(
10.x.x.x) 패킷, 또는 IPv6 패킷.
- 캡슐화 프로토콜 (Encapsulating Protocol):
- 여객과 운송수단 사이를 이어주는 "접착제(빈 박스)" 역할이다.
- 예: GRE 헤더, IPsec ESP 헤더, L2TP 헤더. "내 뱃속에 든 건 원래 이런 종류야~"라고 적혀 있다.
- 운반 프로토콜 (Carrier/Delivery Protocol):
- 터널 바깥세상(공중 인터넷망)에서 실제로 패킷을 날라주는 "배달원"이다.
- 예: 목적지가 공인 IP(
8.8.8.8)로 적혀 있는 겉면의 새로운 IP 헤더.
┌─────────────────────────────────────────────────────────────┐
│ 터널링의 전형적인 3단 포장(캡슐화) 구조 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 일반 패킷 ] │
│ [ 오리지널 IP 헤더 (목적지: 10.x) ] ──▶ [ Data (비밀문서) ] │
│ (이대로 인터넷에 나가면 사설 IP라서 버려짐!!) │
│ │
│ [ 터널링 패킷 (VPN 등) ] │
│ [ 새로운 V4 IP 헤더 (목적지: 211.x) ] ◀─ 3. 운반 (Carrier) │
│ └──▶ [ GRE 헤더 (터널링 접착제) ] ◀─ 2. 캡슐화 (Encapsulating)│
│ └──▶ [ 원본 IP 헤더 ] ◀─ 1. 여객 (Passenger) │
│ └──▶ [ Data ] │
│ │
│ ▶ "인터넷 세상은 오직 맨 껍데기(새로운 V4 IP)만 보고 배송해 준다." │
└─────────────────────────────────────────────────────────────┘
2. 터널링의 한계와 트러블슈팅 (MTU 병목)
터널링은 마법 같지만 치명적인 물리적 약점이 하나 있다. 바로 MTU(Maximum Transmission Unit) 문제다.
- 기본 이더넷 망의 패킷 최대 길이는 1500바이트다.
- 그런데 터널링을 쓰면 원본 패킷(1500) 바깥에 GRE 헤더(24)와 새 IP 헤더(20)가 "추가로 덧붙는다".
- 결과적으로 패킷 크기가 1544바이트로 뚱뚱해져서, 다음 라우터를 통과할 때 "야 너 1500 넘었어! DF 비트 켜져 있네? 버려(Drop)!"라는 참사(블랙홀 현상)가 밥 먹듯이 발생한다.
- 해결책: 엔지니어가 라우터 인터페이스에 들어가서 터널 내부의 MTU를 1400 수준으로 강제로 깎아내리거나, TCP MSS 값을 낮춰서(Clamp) 애초에 PC가 데이터를 1400바이트씩 작게 썰어 보내도록 억지로 세팅해 줘야만 터널 통신이 먹통이 되지 않는다.
📢 섹션 요약 비유: 터널링의 MTU 문제는 택배 상자 안에 뽁뽁이(터널링 헤더)를 너무 많이 집어넣어서 **"상자가 터질 듯이 부풀어 올라 우체통 입구(1500바이트)에 걸려 들어가지 않는 현상"**과 똑같습니다. 상자 크기를 못 늘리면, 애초에 안에 넣는 물건(원본 데이터)의 크기를 강제로 잘라 줄여야 합니다.