핵심 인사이트 (3줄 요약)

  1. 본질: ALG(Application Layer Gateway)는 공유기(NAT 장비)가 3계층 IP 주소만 기계적으로 바꿔치기하다가 데이터 알맹이(7계층) 속에 숨어있는 진짜 IP 주소 정보를 미처 바꾸지 못해 발생하는 치명적 통신 오류(FTP, SIP 등)를 막아주는 똑똑한 지능형 감시 모듈이다.
  2. 능동 FTP의 딜레마: FTP나 인터넷 전화(SIP) 프로토콜은 패킷의 7계층 Payload(편지 내용물) 안에다가 "나 사설 IP 192.168.0.5 니까 일로 전화 걸어"라고 적어 보낸다. 일반 공유기는 겉 봉투(헤더)만 공인 IP로 바꾸고 내용물은 안 건드리므로, 서버가 내용물에 적힌 가짜 주소(192)로 연락을 시도하다가 응답 불가(접속 장애)에 빠진다.
  3. NAT 횡단(Traversal) 해결: ALG 모듈이 켜져 있으면, 라우터가 남의 편지 봉투뿐만 아니라 편지 내용물(7계층)까지 싹 다 뜯어보고, 그 안의 사설 IP 텍스트를 공인 IP 텍스트로 지우개로 지우고 덮어써서 다시 밀봉해 주는 엄청난 오지랖을 부려 통신을 살려낸다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: 라우터나 방화벽이 특정 애플리케이션 프로토콜(FTP, SIP, H.323 등)의 구조를 깊숙이 이해(Deep Packet Inspection)하여, NAT 환경에서도 정상적으로 통신 세션이 맺어지도록 패킷 페이로드의 IP/포트 정보를 동적으로 변조해 주는 기능이다.

  • 필요성: 웹서핑(HTTP)은 단순하다. 내가 요청하면 서버가 나에게 응답한다. NAT가 봉투 겉면만 잘 갈아 끼우면 문제가 없다. 하지만 구형 프로토콜인 **FTP 능동 모드(Active Mode)**는 내가 서버에 "내 주소 192.168.x.x의 3000번 포트로 데이터 좀 쏴줘!"라고 편지지에 적어 보낸다. 서버는 겉 봉투의 공인 IP가 아니라 편지지 속의 192 주소로 데이터를 쏘려다 실패한다. NAT 기술의 근본적인 "내용물은 건드리지 않는다"는 철학이 부른 참사를 해결할 특수 요원이 필요했다.

  • 💡 비유: 미국 유학생이 부모님께 편지를 씁니다. 겉 봉투(IP 헤더)에는 미국 배대지(NAT) 주소가 적혀있어 문제가 없는데, 편지 내용물(페이로드) 안에 **"답장은 한국 우리 집(192.168...)으로 보내주세요"**라고 적어버렸습니다. 부모님이 그 주소로 답장을 쓰면 편지가 우주 미아가 됩니다. ALG는 배대지 직원이 몰래 편지를 뜯어보고 내용물 안의 주소마저 **"미국 배대지 주소"**로 화이트를 칠해 고쳐 적어주는 불법(오지랖) 서비스입니다.

📢 섹션 요약 비유: ALG는 택배 상자 겉면(헤더)만 스캔하는 게 아니라 상자를 뜯어서 내용물에 적힌 보증서 주소(L7 페이로드)까지 일일이 수정 테이프로 지우고 "공인 IP"로 새로 적어 넣는 극한의 스캔 검수반입니다.


Ⅱ. FTP Active Mode 장애와 ALG의 개입 메커니즘 (Deep Dive)

1. 포트 번호를 페이로드에 적는 FTP의 구조

FTP(File Transfer Protocol)는 특이하게 두 개의 길을 판다.

  • 길 1 (Control) : 21번 포트 (명령어 주고받기)
  • 길 2 (Data) : 20번 포트 (실제 묵직한 파일 전송하기)

클라이언트(사설망)가 PORT 192,168,0,5,19,136 이라는 명령어를 페이로드에 텍스트로 적어서 21번 채널로 서버에 쏜다. 이는 "내 IP는 192.168.0.5고 포트는 5000번(19*256+136)이니까 여기로 데이터를 쏴라"는 뜻이다.

2. 일반 NAT 장비의 멍청한 실패

  1. 공유기(NAT)는 패킷의 3계층 IP 헤더만 192.x에서 211.200.x.x(공인 IP)로 바꾼다.
  2. 하지만 페이로드 안의 텍스트 PORT 192,168,0,5...는 남의 일급기밀이므로 건드리지 않고 그대로 보낸다.
  3. FTP 서버가 이 편지를 받고 "오케이, 파일 보낸다!" 하며 192.168.0.5:5000으로 20번 포트 데이터를 냅다 쏜다.
  4. 이 주소는 사설 IP이므로 인터넷상에서 라우팅되지 못하고 쓰레기통에 폐기된다. 사용자는 "파일 목록은 보이는데 다운로드가 안 눌려요!"라며 절규한다.
 ┌─────────────────────────────────────────────────────────────┐
 │                ALG 모듈의 FTP 패킷 내용물(L7) 조작 도식           │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   [ PC (사설) ]  ────▶  [ 공유기 (ALG 작동 중!) ] ────▶ [ FTP 서버 ] │
 │                                                             │
 │   [ IP 헤더 (Src: 192.168.0.5) ]  │ (1) 헤더를 211.x 공인IP로 변환 │
 │   [ 페이로드 (PORT 192.168.0.5) ]   │ (2) 앗! 내용물도 192네? 변환!   │
 │                                                             │
 │                            ▼ 공유기 통과 후 변조된 패킷           │
 │                                                             │
 │   [ IP 헤더 (Src: 211.x.x.x 공인) ] ── (정상 변환)               │
 │   [ 페이로드 (PORT 211.x.x.x) ]      ── (ALG가 개입하여 화이트 칠함) │
 │                                                             │
 │   ▶ 결과: FTP 서버는 아무것도 모른 채 211.x.x.x로 데이터를 잘 쏴준다! │
 └─────────────────────────────────────────────────────────────┘

3. ALG의 부하와 수동 모드(Passive Mode)의 등장

ALG는 라우터가 3계층 헤더만 만지는 게 아니라, 엄청나게 무거운 7계층 데이터를 일일이 까서 정규식(문자열 검색)으로 IP 주소를 찾아 고쳐야 하므로 라우터의 CPU를 폭발시킨다 (Deep Packet Inspection 오버헤드). 또한 암호화된 트래픽(HTTPS/FTPS)일 경우 ALG는 암호를 풀지 못해 내용물을 고칠 수가 없다.

  • 해결책: "아잇 귀찮게 공유기가 고치게 하지 말고, 클라이언트가 서버한테 **'네가 열어둔 포트로 내가 알아서 찾아갈게(Passive Mode)'**라고 하면 되잖아!"
  • 이것이 바로 클라이언트가 서버로 길을 먼저 치고 들어가는 **FTP 수동 모드(Passive Mode)**의 탄생 배경이며, 이 방식은 NAT나 방화벽의 제약을 전혀 받지 않아 현대 FTP 통신의 99%를 장악했다.

📢 섹션 요약 비유: ALG는 공유기가 택배 상자 안에 든 편지 내용을 몰래 읽어보고 오타를 고쳐주는 무거운 스팸 검사기입니다. 라우터가 너무 힘들어서 쓰러지기 때문에, 현대 네트워크는 라우터가 이런 오지랖을 부릴 필요가 없게 애초에 편지를 잘 쓰는 방식(Passive 모드)으로 완전히 진화했습니다.