VPN과 연결된 특정 컨테이너로, 다른 모든 컨테이너의 트래픽을 라우팅 하는 방법을 알아보자.
아래 글을 NordVPN 기준으로 작성되었다.
NordVPN 토큰 발급
요새 대부분의 서비스들은 "ID:PW" 방식은 웹 페이지 로그인할 때만 사용하고 외부에서 해당 서비스를 이용할 때는 API나 토큰을 발급하는데 이는 NordVPN도 마찬가지였다.
https://my.nordaccount.com/dashboard/nordvpn
접속 후 하단의 Get Access token 클릭
이메일 인증 후 발급되는 토큰 기록
VPN 컨테이너 빌드 및 실행
Dockerfile
FROM ubuntu:24.04
RUN apt-get update && \
apt-get install -y --no-install-recommends wget apt-transport-https ca-certificates && \
apt-get install -y --no-install-recommends wget apt-transport-https ca-certificates && \
wget -qO /etc/apt/trusted.gpg.d/nordvpn_public.asc https://repo.nordvpn.com/gpg/nordvpn_public.asc && \
echo "deb https://repo.nordvpn.com/deb/nordvpn/debian stable main" > /etc/apt/sources.list.d/nordvpn.list && \
apt-get update && \
apt-get install -y --no-install-recommends nordvpn && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
ENTRYPOINT /etc/init.d/nordvpn start && sleep 5 && /bin/bash -c "$@"
CMD bash
빌드
docker build -t nord_vpn:latest .
실행
docker run -it --hostname nord_bridge \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
--privileged \
--name nord_bridge nord_vpn:latest
방화벽 설정
- 아래 명령어는 '실행' 단계에서 실행 된 컨테이너 내부에서 실행해야 한다.
- 컨테이너 실행 후 초기에는 방화벽 정책에 의해 그 어떠한 서버와도 통신할 수 없다.
-- 다시 말하면 NordVPN 로그인 조차 불가능하다는 뜻
-- 따라서 최소한의 NordVPN과 통신할 수 있는 정책은 필요하다.
update-alternatives --set iptables /usr/sbin/iptables-legacy
iptables -A OUTPUT -d api.nordvpn.com -j ACCEPT && iptables -A OUTPUT -d downloads.nordcdn.com -j ACCEPT
NordVPN 로그인
- 아래 명령어는 '실행' 단계에서 실행 된 컨테이너 내부에서 실행해야 한다.
- 토큰 발급 단계에서 발급 받은 토큰을 사용한다.
nordvpn login --token token_goes_here
NordVPN 설정
- 아래 명령어는 '실행' 단계에서 실행 된 컨테이너 내부에서 실행해야 한다.
nordvpn set autoconnect enable # 자동 연결 활성화
nordvpn set analytics disable # 통계 정보 제공하지 않음
nordvpn set killswitch enable # 킬 스위치 활성화
nordvpn c uk # 영국 연결
여기까지 문제 없이 실행되었으면 생성 된 컨테이너는 다른 컨테이너의 트래픽을 받아서 VPN 을 통해 처리하게 되는 역할을 한다.
다른 컨테이너 트래픽 라우팅 하기 ( 예시: 우분투 )
VPN 컨테이너를 만들어 놨으니 이제 다른 컨테이너의 트래픽을 라우팅 시켜야 하는데, 이는 간단하게 `-net` 옵션으로 해결할 수 있다.
docker run -it --net=container:nord_bridge -d --name ubuntu_vpn ubuntu
오류 해결
resolv.conf 권한 오류
루트 편집 허용
chattr -i resolv.conf
파일 권한 재설정
chmod 777 resolv.conf
'도커&쿠버네티스' 카테고리의 다른 글
[Docker] Nginx Proxy Manager, NPM 사용법 (리다이렉션) (1) | 2025.06.04 |
---|---|
[Docker] Nginx Proxy Manager, NPM 사용법 (리버스 프록시) (0) | 2025.05.31 |
[Docker] Nginx Proxy Manager, NPM 사용법 (설치 및 인증서 발급) (0) | 2025.05.31 |