Wireguard VPN을 GUI로. wireguard-ui docker로 설치하기.

안녕하세요. 달소입니다.

이전부터 Wireguard VPN의 압도적 성능을 여러번 자랑해드렸었는데요.
기존에 썼던글이 블로그와 헤놀로지용만 있어서 포럼용으로 하나 더 업데이트 해봅니다.

Wg-easy는 Wireguard의 불편한 단점인 CLI 및 불편한점을 GUI에서 편하게 사용할 수 있도록 구축된 도커 이미지로 pull이 100만이 넘을정도로 인기가 많습니다.

서버포럼 - 떠오르는 VPN WIREGUARD 란?
https://www.wireguard.com/ WireGuard: fast, modern, secure VPN tunnel wireguard.com - Jason A. Donenfeld 이번 포스팅에서는 이전에 현재 많이 사용되고있는 OpenVPN, IPsec VPN보다 보안이 높으면서도 속도는 ...
서버포럼 - 구축형 VPN 속도 비교하기.(Open VPN / Wireguard / Sophos IPsec)
안녕하세요. 달소입니다! 오늘은 최근에 구축한 VPN들의 속도비교입니다! 망 구성 / 장비마다 스펙도 다르지만 어떤 VPN이 가장빠른지 제 환경에서 테스트해본것이니 참고하시면 되겠습니다. 요약 속도 Wireguard >>>...

특징

  • 올인원: WireGuard + 웹 UI.
  • 간편한 설치, 사용이 간편합니다.
  • 클라이언트를 나열, 생성, 편집, 삭제, 활성화 및 비활성화합니다.
  • 고객의 QR 코드를 보여줍니다.
  • 클라이언트의 구성 파일을 다운로드합니다.
  • 클라이언트가 연결된 통계입니다.
  • 연결된 각 클라이언트에 대한 Tx/Rx 차트.
  • 그라바타 지원.

설치 환경

Ubuntu 20.04 LTS
Docker + Docker compose

사용 이미지 : https://hub.docker.com/r/weejewel/wg-easy

+ vpn을 사용하기위해서는 vpn 사용포트인 51820 포트를 공유기나 방화벽상에서 포트포워딩해주셔야합니다.(기기마다 설정방법 상이)

wg-easy 컨테이너 생성하기

컨테이너 생성전에 설정파일과 데이터를 저장할 디렉터리를 만들어주세요.

mkdir -p /data/wg-easy/
mkdir -p /data/wg-easy/data

vi /data/wg-easy/docker-compose.yml

가장중요한건 WG_HOST에 사용하고계신도메인 or 공인 ip를 적어주셔야하며 기타옵션들도 설정을 한번 보시고 다 설정해주시면되겠습니다.

처음사용하시는분들을 위해 옵션을 몇가지 설명해드리자면

PASSWORD // WG-easy 웹 ui 접속시 사용하는 pw입니다.(임의지정 상관x)
WG_PORT // 기본 wireguard port로 변경하실필요없습니다. 변경하시고싶으시면 아래 ports에 호스트쪽 포트를 변경하시면됩니다.
WG_DEFAULT_ADDRESS=10.8.0.x // VPN 연결시 할당받을 ip 대역입니다.(기호에 맞게..)
WG_DEFAULT_DNS // VPN 연결시 사용할 DNS 입니다.
WG_MTU // VPN 연결시 MTU 속도인데 디폴트로 놔두셔도 됩니다.
WG_ALLOWED_IPS // 이게 가장 헷갈리실거라고 생각합니다. 이건 VPN을 타고나갈 구간입니다. 예를들어 192.168.15.0/24 라고 적으신다면 192.168.15.3과 통신할때는 VPN을 타겠지만 일반 Naver,google 등 트래픽을 사용할때는 VPN을 사용하지않습니다. 모든 트래픽에 VPN을 적용하시려면 0.0.0.0/0으로 설정하시면 되겠습니다.

version: "3.8"
services:
  wg-easy:
    environment:
      # ⚠️ Required:
      # Change this to your host's public address
      - WG_HOST=[사용하고계신 도메인 or 공인 ip]

      #Optional:
      - PASSWORD=dalso
      - WG_PORT=51820
      - WG_DEFAULT_ADDRESS=10.8.0.x
      - WG_DEFAULT_DNS=1.1.1.1
      - WG_MTU=1420
      - WG_ALLOWED_IPS=192.168.1.0/24, 10.8.0.0/24
      
    image: weejewel/wg-easy
    container_name: wg-easy
    volumes:
      - /data/wg-easy/data:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

위처럼 내용 작성을 마치셨으면 docker-compose up -d 명령어로 컨테이너를 생성해주세요.

wg-easy 웹 ui 접속 및 사용하기

ip:51821 포트로 접속하시면 아래처럼 로그인창이 나오는데 pw는 아까지정해놓으신 pw로 접속해주시면됩니다.

로그인하신다음 새로운 클라이언트 생성을 위해 New Client를 해주세요.

원하는 이름대로 클라이언트를 만들고 나면 아래처럼 화면이 뜨는데
QR을 누르면 QR코드로 등록할 수 있게 창이 뜨고 다운로드를 하면 설정파일을 다운로드할 수 있게됩니다.

QR코드는 모바일 기기가 등록하기쉽고 conf파일은 윈도우 클라이언트 에서 넣기 쉽습니다.

간단하게 플레이스토어에서 WIreGuard 앱을 설치하고 qr코드를 스캔한다음에 접속하면 아래처럼 연결됐다는 표시가 나옵니다.

윈도우 앱도 import tunnul만 하셔서 파일만 불러오시면 바로 연결이 가능합니다.

이상 쉬운 WireGuard VPN 구축방법이였습니다~