집에서 홈랩 하다 보면 "사설 대역(IP 대역) 관리"가생각보다 빨리 빡세집니다.
처음엔 192.168.x.x만써도 되는데, VPN 하나 붙이고(WireGuard),클라우드랑 터널 하나 더 뚫고(AWS VPC),
OpenVPN까지 얹으려 하면 "안 겹치는 대역"을 찾아야 하거든요.
이때 마지막 후보로 자주 보이는 게 CGNAT 대역(100.64.0.0/10)입니다.
제가 이 주제를 정리하게 된 계기는, 우리 낭만인프라팀 선배님이 OpenVPN 대역을
정리/변경하신 내용을 공유해주셨고,
그걸 계기로 제가 개인적으로 공부하면서 이해한 내용을 블로그에 남기고 싶어서입니다.
CGNAT는 쉽게 말해,
통신사가 고객에게 "진짜 공인 IP"를 다 줄 수 없어서 통신사 내부에서 한 번 더 NAT(주소 변환)를 해서
여러 고객이 공인 IP를 공유하게 만드는 방식입니다.
원래 집 공유기도 NAT를 하죠. 그런데 CGNAT 환경에서는 집 공유기 NAT + 통신사 NAT로
NAT가 2단으로 일어나는 경우가 매우 흔합니다.
그래서 외부에서 집으로 직접 들어오는 인바운드(포트포워딩 같은 것)가 잘 안 되거나,
되더라도 제약이 생길 수 있습니다.
집에 공인 IP 있는 줄 알았는데 외부 접속이 이상하게 안 된다 의 대표 원인 중 하나가 바로 CGNAT입니다.
여기서 중요한 포인트가 하나 더 있습니다.
CGNAT가 흔히 쓰는 대표 대역이 100.64.0.0/10이라는 점입니다.
이 대역은 10/8, 172.16/12, 192.168/16 같은 "일반 사설 대역"과는 성격이 조금 다릅니다.
보통은 통신사 내부에서 고객을 묶어 관리하는 "공유 주소 공간"으로 많이 쓰고,
인터넷에서 라우팅되는 공인 대역처럼 쓰라고 만든 목적은 아닙니다.
그런데 왜 OpenVPN 대역으로 100.64/10을 쓰게 됐냐?
선배님이 공유해주신 변경 배경은 "대역 겹침을 피하기 위해서"였습니다.
팀에서 이미 여러 구간이 역할별로 대역을 나눠 쓰는 상황에서, OpenVPN이 가져갈 대역이
다른 구간(집 LAN, 다른 VPN, 클라우드 등)과 겹치면 라우팅이 꼬이기 쉽습니다.
VPN에서 대역 선택이 중요한 이유는
"클라이언트 라우팅"이 여기서 시작되기 때문입니다.
대역이 겹치면 증상이 진짜 애매하게 꼬입니다(머리아픔의 시작)
예를 들어 회사/학교/카페 Wi-Fi가 192.168.0.0/24를 쓰는데, 내 VPN도 같은 대역이면
노트북은 “어느 192.168.0.x로 가야 하지?”를 헷갈릴 수 있어요.
그 결과 트래픽이 로컬로 새거나, VPN 내부로 못 들어가거나, 둘 다 생깁니다.
다만 100.64/10을 OpenVPN에 쓰는 건 "가능하지만 주의점이 있는 선택"입니다.
주의점은 이겁니다.
내가 접속하는 외부망(특히 모바일 테더링/특정 ISP/기업망)이 이미 100.64.0.0/10을 내부적으로
쓰고 있을 수 있습니다.
그 상태에서 내 VPN도 100.64.x.x를 쓰면 똑같이 "대역 겹침" (뭐야 왜안돼 무새 생성) 문제가 터질 수 있습니다.
즉, 10/172/192를 피했는데도 이번엔 "상대 네트워크가 100.64/10을 쓰고 있어서"
충돌하는 케이스가 나올 수 있다는 뜻입니다.
그래도 깔끔하게 쓰는 요령이 있습니다.
첫째, 100.64.0.0/10을 통째로 크게 잡기보다는 그 안에서 작은 서브넷 하나만 쓰는 게 좋습니다.
예: 100.64.10.0/24
둘째, 환경에서 쓰는 대역을 한 장으로 정리하고 "중복 없음"을 규칙으로 잡아두면
트러블슈팅 난이도가 확 내려갑니다.
셋째, 어떤 장소에서 VPN이 유독 안 붙거나 특정 IP만 접속이 꼬이면 "그 외부망이 100.64/10을 쓰는지"를
의심 포인트로 잡아보면 좋습니다.
정리하면, CGNAT는 "IP 부족 때문에 통신사가 고객을 한 번 더 NAT로 묶는 방식"이고,
CGNAT 대역(100.64.0.0/10)은 그 과정에서 자주 쓰이는 "공유 주소 공간"입니다.
그리고 이번 OpenVPN 대역 변경은 선배님이 "대역 충돌을 줄이기 위한 선택"으로
알려주신 내용을 바탕으로, 제가 개인적으로 공부하며 이해한 포인트를
네트워크 애기 시선으로 정리한 글입니다.
읽어주셔서 감사합니다!
