CGNAT 환경에서 셀프 호스팅하기

4 hours ago 2

CGNAT 때문에 가정용 라우터의 포트 포워딩이 통하지 않는 환경에서도, 공인 인터넷에 연결된 VPS 브리지와 터널을 이용해 집의 서비스를 외부에 공개할 수 있음 집의 서버가 WireGuard 터널을 먼저 연결하므로 가정에 고정 전용 IP가 필요하지 않으며, 브리지가 들어오는 트래픽을 홈랩으로 전달함 브리지에서 목적지 주소만 변환해 실제 클라이언트 IP를 보존하고, SSH 관리 포트와 VPN 포트를 제외한 모든 포트의 트래픽을 홈랩으로 보냄 홈랩은 정책 기반 라우팅으로 외부 요청의 응답만 브리지로 돌려보내고, 자체적으로 발생시키는 트래픽은 가정용 라우터로 내보냄 스페인 북부의 홈랩과 프랑스 데이터 센터의 브리지를 연결한 사례에서 브리지로 인한 RTT 지연 비용은 39ms이며, 홈랩, 브리지, 터널 각각의 장애에도 대비함 CGNAT를 우회하는 VPS 브리지 소프트웨어와 하드웨어를 직접 소유하고 클라우드 기업 의존과 검열에서 벗어나는 것이 가정 내 셀프 호스팅의 지향점임 과거에는 라우터에서 포트 포워딩을 설정하고, ISP가 공인 IP를 바꿀 때 동적 DNS로 도메인을 갱신하면 됐음 IPv4 주소 부족으로 여러 가정이 공인 IP를 공유하는 CGNAT가 사용됨 통신사 네트워크의 두 번째 NAT 계층이 라우터의 사설 주소를 변환하므로, 가정용 라우터의 포트 포워딩만으로는 외부 요청을 받을 수 없음 실제 구성은 스페인 북부 어머니 집 지하실의 중급 서버에서 서비스를 실행하고, 프랑스 데이터 센터의 저렴한 VPS를 브리지로 사용함 Linux 커널에서 동작하는 VPN인 WireGuard로 양방향 터널을 구성함 홈랩이 연결을 시작하므로 집에 고정 전용 IP가 필요하지 않음 대안으로 ISP에서 고정 IP를 구매할 수 있으며, 스페인에서는 월 약 20유로가 듦 이 구성에서 브리지로 인한 RTT 지연 비용은 39ms임 터널 설정과 장애 대응 브리지의 wg0.conf 는 터널 주소를 10.0.0.1/24, 수신 포트를 51820, 홈랩 피어의 AllowedIPs를 10.0.0.2/32로 설정함 새 서버의 초기 설정은 First Steps on a New Server를 참고할 수 있음 PostUp에서 커널 수준의 NAT 및 포워딩 규칙을 추가하고, PostDown에서 제거함 ens3로 들어오는 UDP 51820은 VPN용, TCP 2222는 브리지 SSH용으로 남겨 두고, 나머지는 DNAT로 목적지를 10.0.0.2로 변경함 wg0와 ...

Read Entire Article