-
Imgur의 영국 사용자 차단으로 인해 Reddit, 포럼, 문서 등 곳곳의 이미지 링크가 모두 “unavailable”로 표시되는 문제 발생
- 개인 VPN 대신 네트워크 전체 수준의 자동 우회 구조를 구축해 모든 기기에서 Imgur 접근 가능하도록 구성
-
Pi-hole, Traefik, Gluetun, Nginx, NixOS를 조합해 DNS 차단을 우회하고 트래픽을 VPN을 통해 전달하는 구조 설계
-
TLS 패스스루와 Docker 네트워크 공유를 이용해 암호화된 트래픽을 그대로 전달하면서도 속도 저하 최소화
- 결과적으로 모든 기기에서 별도 설정 없이 Imgur 이미지 접근 가능, 속도 손실 없이 투명한 네트워크 차단 해제 구조 구현
Imgur 차단과 불편 사례
- Imgur가 영국 사용자 접근을 차단하면서, Reddit·포럼·문서 등 다양한 웹페이지의 이미지 링크가 표시되지 않는 문제 발생
- Minecraft 셰이더 미리보기 이미지가 모두 사라져, 어떤 셰이더인지 확인할 수 없는 상황
- 오래된 게시물이나 README 파일 등에서도 Imgur 링크가 여전히 남아 있어 접근 불가 현상 지속
VPN 대신 네트워크 단위 해결 선택
- 일반적인 해결책은 VPN 사용이지만, 2.5Gbps 고속 인터넷 환경에서 전체 트래픽을 VPN으로 우회하면 속도 저하 발생
- 각 기기마다 VPN을 설치하고 연결해야 하는 관리 복잡성 문제 존재
- 모든 기기에서 자동으로 작동하는 클라이언트 설정 불필요한 네트워크 단위 솔루션을 목표로 함
네트워크 레벨 구조 설계
- 기존 홈랩 환경에서 Traefik(리버스 프록시) , Pi-hole(DNS) , NixOS(선언적 설정) 사용 중
- DNS 단계에서 i.imgur.com 요청을 가로채 VPN 연결 컨테이너(Gluetun) 를 통해 전달
- Pi-hole이 Traefik IP를 반환
- Traefik이 SNI 호스트명을 확인해 Gluetun으로 라우팅
- Gluetun이 VPN을 통해 요청을 전달
- Gluetun 내부의 Nginx가 실제 Imgur 서버로 프록시
- 이미지를 터널을 통해 다시 반환
Nginx와 Gluetun 구성
- Gluetun은 VPN 연결만 제공하므로, VPN 네트워크 내부에서 프록시 역할을 수행할 Nginx 필요
- Nginx는 TCP 스트림 모드로 설정되어 SNI 헤더를 읽고 i.imgur.com:443으로 트래픽을 전달
- TLS 핸드셰이크는 종단 간 수행되어 Nginx는 암호 해제된 데이터를 보지 않음
- Docker Compose에서 두 개의 컨테이너(Gluetun, Nginx) 실행
-
network_mode: "service:gluetun" 설정으로 Nginx가 Gluetun의 네트워크 스택을 공유
- 모든 Nginx 트래픽이 자동으로 VPN 터널을 통과
Traefik 및 NixOS 통합
- Traefik은 TCP 라우팅과 TLS 패스스루를 사용해 i.imgur.com 요청을 Gluetun으로 전달
- NixOS에서는 systemd 서비스로 Docker Compose 스택을 실행
-
Agenix를 이용해 VPN 자격 증명을 암호화 저장
- 전체 dotfiles 저장소를 공개로 유지하면서도 비밀 정보 보호
결과 및 성능
- 네트워크 내 모든 기기(휴대폰, 노트북, 게스트 기기 포함)가 별도 설정 없이 Imgur 이미지 접근 가능
-
Pi-hole이 DNS를 가로채고, Traefik이 라우팅, Gluetun이 VPN 터널링 수행
- 이미지 로딩 지연은 거의 없으며, Imgur 트래픽만 VPN을 거쳐 일반 트래픽 속도 유지
- 유지보수가 간단하고, 홈랩 환경에서의 자동화된 지역 차단 해제 구조 완성
- Minecraft 셰이더 등 Imgur 기반 콘텐츠를 다시 정상적으로 확인 가능