보관함

WireGuard(wg-easy) 로 VPN 클라이언트에 포트포워딩하기

공인 IP 가 있는 서버에 wg-easy(Docker)로 WireGuard 를 띄우고, 집이나 사무실 PC 를 VPN 클라이언트로 붙여 두면 외부에서 그 PC 의 서비스로 들어갈 수 있다. 아래 예시에서 VPN 대역은 wg-easy 기본값인 10.8.0.0/24, 클라이언트 PC 는 10.8.0.2 다.

1. 도메인으로 들어오는 웹 요청을 넘길 때 (nginx)

서버의 nginx 가 80/443 으로 요청을 받고, VPN 안쪽 PC 로 넘긴다.

2. 특정 포트로 바로 들어오는 요청을 넘길 때 (iptables DNAT)

웹이 아닌 서비스(게임 서버, RDP 등)는 iptables 로 포트를 그대로 넘긴다. wg-easy 의 docker-compose.yml 환경 변수에 넣어 두면 VPN 이 올라오고 내려갈 때 규칙이 같이 붙고 빠진다.

  • ens5 는 서버의 외부 네트워크 인터페이스 이름이다. ip -br addr 로 확인해서 바꾼다. (AWS 는 보통 ens5, 다른 곳은 eth0 등)
  • PREROUTING 에서 처리되므로 서버 자체 방화벽(ufw)은 열지 않아도 되지만, 그 앞단의 클라우드 방화벽(AWS 보안 그룹 등)에서는 해당 포트를 열어야 한다.
  • 클라이언트 PC 의 방화벽에서도 그 포트를 허용해야 한다.

3. wg-easy 관리자 비밀번호 바꾸기

wg-easy 14 버전은 비밀번호를 평문 대신 bcrypt 해시(PASSWORD_HASH)로 넣는다.

docker-compose.yml 의 PASSWORD_HASH 를 바꾸고 다시 띄운다. compose 파일 안에서는 $ 를 $$ 로 두 번 써야 변수로 해석되지 않는다.

※ 참고 wg-easy 15 부터는 처음 접속할 때 웹 화면에서 관리자 계정을 만들고, 비밀번호도 웹 화면에서 바꾸는 방식으로 바뀌었다.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.