[wg-easy ; wireguard] 우분투, portainer, docker 환경에서 작동시키기

yes 2024.08.15 13:20:51

[wg-easy ; wireguard] 우분투, portainer, docker 환경에서 작동시키기

 

 

상황

- 서버가 3대 있지만, VPN의 필요성은 느끼지 못했다. (보안을 위해 하는 사람들이 많았다)

  이번에 필요하게 된 이유는, 오라클 프리티어 서버의 ip 를 바꿔야 하는 상황이 발생했다.

   (youtube dl 을 사용했는데, ip 가 ban 당했다. 최근 유튜브가 데이터 센터 ip 를 ban 시킨다고 한다)

- 보통 언급되는 서비스는 wireguard, pivpn, openvpn, tailscale, headscale 등이 있다.

  이중에서 openvpn 제외하면, 모두 wireguard 기술을 기반으로 한다.

  tailscale 은 vpn 설정을 쉽게 해준다. 이를 위해 영리목적 기업이 프로젝트를 주도하고 있다. 

  headscale 은 테일스케일을 오픈소스화 했다.

  결국, 와이어가드가 최신 프로토콜이며, 속도도 빠르다.

 

 

 

 

wg-easy 선택이유

- 주로 모든 앱 설치 삭제에 도커를 이용하다보니, 도커 기반을 제공하는 wg-easy 를 선택했다.

- cli 모드에서 세팅하는 wireguard 보다 많이 쉬웠다.

 

 

 

 

sudo docker run -d \
  --name=wg-easy \
  -e LANG=en \
  -e WG_HOST=152.***.234.23 \                         #설치 서버의 IP
  -e PASSWORD_HASH='$2a$12$jUZVR2cx0svLUJG13wDYKFYhJJNS' \          #비번, 아래 만드는법 참조
  -e PORT=51821 \                                    #ui (웹) 접속 포트
  -e WG_PORT=51820 \                             
  -v /vo2/docker/wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart unless-stopped \
  ghcr.io/wg-easy/wg-easy

 

한줄명령어

sudo docker run -d --name=wg-easy -e LANG=en -e WG_HOST=158.***.***.244 -e PASSWORD_HASH='$2a$12$Ctd7tjJnjZDA3jL6cMBR.y2r8VSBwqZDFxIILcij2' -e PORT=51821 -e WG_PORT=51820 -v /vo2/docker/wg-easy:/etc/wireguard -p 51820:51820/udp -p 51821:51821/tcp --cap-add=NET_ADMIN --cap-add=SYS_MODULE --sysctl="net.ipv4.conf.all.src_valid_mark=1" --sysctl="net.ipv4.ip_forward=1" --restart unless-stopped ghcr.io/wg-easy/wg-easy

 

 

PASSWORD_HASH 만드는 법

sudo docker run ghcr.io/wg-easy/wg-easy wgpw YOUR_PASSWORD

 

#만일, wg-easy 설치 전이라면, 위 명령어를 실행해서, PASSWORD_HASH 값을 얻은 후, 설치한다.

# wg-easy 를 설치했다면, 명령어를 실행하면 이미지 다운로드 없이, 바로 해시값을 받을 수 있다.

# 아래 예는 'YOUR_PASSWORD' 를 변환한 해시값이다.

hos@hcp:~$ sudo docker run ghcr.io/wg-easy/wg-easy wgpw YOUR_PASSWORD
[sudo] password for hos:
Unable to find image 'ghcr.io/wg-easy/wg-easy:latest' locally
latest: Pulling from wg-easy/wg-easy
c6a83fedfae6: Pull complete
d9aac50bc34e: Pull complete
0150f131fd2f: Pull complete
c0ce3bd8f303: Pull complete
8feb6cf49e61: Pull complete
c2198b3a313e: Pull complete
aca230b5559d: Pull complete
4f4fb700ef54: Pull complete
94d0b733a7f6: Pull complete
f758c8747cfc: Pull complete
Digest: sha256:f6c2587da3fdc9d5927743fb4a92cff42d690b182396ffd0cdad034becb41053
Status: Downloaded newer image for ghcr.io/wg-easy/wg-easy:latest
PASSWORD_HASH='$2a$12$GRGsypzmfzaYnz5ziDk9hed3C8yebZFXUO31orXvufPcV8jeLdUKC'

 

 

 

 

 

Untitled-1 copy.JPG

 

 

 

 

wg-easy를 설치 했으면, 일단 폰에 wireguard 앱을 설치 후, wg-easy 에 접속해 본다.

접속이 안되면, 뭔가 문제가 발행한 것이다.

 

 

 

포트에 대해서

- wg-easy 설치된 곳의 공유기에서 udp 포트를 열어 줘야 한다.

- 클라이언트는 포트를 신경쓰지 않아도 된다. 

 

 

 

 

 

oracle free tier 에 설치 하기

- 위 도커 스크립트를 수정해서 사용하면 간단히 설치 가능

- 설치 후, 폰으로 접속해 봤는데, 실패했다.

  네트워크 방화벽에서 51820 udp 를 열어줘야 한다. 그런데, 세팅에 실수가 있었다.

  source port range 에 51820 을 입력했다. 그래서 wireguard 작동이 되지 않았다.

  All 을 입력해 줘야 한다.

 

 

Untitled-3 copy.JPG