메뉴 건너뛰기

IT지혜

1. WireGuard는 무료 오픈소스 소프트웨어 애플리케이션 및 통신 프로토콜이다. 이 프로토콜은 라우팅 되거나 브리지 된 구성에서 안전한 지점 대 지점 연결을 생성하기 위해 VPN 기법을 구현한다. WireGuard는 VPN 업계에서 시장의 판도를 바꾸는 제품이 될 수 밖에 없다. 이 터널링 프로토콜은 최첨단 암호 기술과 매우 깔끔한 구조를 활용해 구축되었다. 따라서 다른 프로토콜보다 100배 적은 4,000줄의 코드만 있으면 비교적 쉽게 배포 및 감사, 버그 제거가 가능하며 일반적으로 OpenVPN등의 기술보다 효율적인 동작이 가능하기에 공유기등에 WireGuard 방식의 VPN을 구축시 OpenVPN 대비 속도가 10~15% 가량 높아지는 경향을 보인다. 이는 최적화 문제와 별개로 OpenVPN의 경우 싱글 스레드만 지원 하지만 WireGuard는 멀티 스레드를 지원하는 영향이 더 크다.

 

2. 먼저 OS 에 Docker 를 설치합니다.

curl -fsSL https://get.docker.com/ | sudo sh

 

3. Docker 로 wireguard 컨테이너를 생성합니다.

docker create \
--name=wireguard \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
-e PUID=$UID \
-e PGID=$(id -g $USER) \
-e TZ=Asia/Seoul \
-e SERVERURL=au.zzori.com \
-e SERVERPORT=51820 \
-e PEERS=10 \
-e PEERDNS='1.1.1.1' \
-e INTERNAL_SUBNET=10.13.13.0 \
-p 51820:51820/udp \
-v /data/wireguard/config:/config \
-v /lib/modules:/lib/modules \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--restart unless-stopped \
linuxserver/wireguard

–name : 컨테이너명
-e SERVERURL : VPN서버 주소 혹은 IP로 설정
-e SERVERPORT : 사용할 포트, default 51820
-e PEERS : 피어 개수
-e PEERDNS : DNS 주소 지정 1.1.1.1, 8.8.8.8 혹은 자신이 원하는대로 설정

 

4. wireguard 컨테이너가 부팅시에 자동 실행될 수 있도록 설정

# vi /etc/systemd/system/wireguard.service

[Unit]
Wants=docker.service
After=docker.service
 
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/docker start wireguard
ExecStop=/usr/bin/docker stop wireguard
 
[Install]
WantedBy=multi-user.target

저장하고 쉘로 나옵니다.
그리고 아래의 명령어를 실행하여 기동합니다.

 

systemctl enable wireguard
systemctl start wireguard

# QR 코드 확인을 위해서
docker logs -f wireguard

 처음 실행시 필요한 패키지를 설치하고 gcc 로 컴파일 하는 과정을 거치기 때문에 약간의 시간이 소요됩니다. 그리고 QR 코드가 나오게 됩니다. PEERS 에서 설정한 수만큼 QR 코드도 나오게 됩니다.

wireguard_qr.png

 

5. 방화벽 설정은 51820 udp 포트를 열어주면 됩니다.

 

6. iOS, Android 등의 기기에서 Wireguard 앱을 설치하고 + 를 터치하여 QR코드로 추가하여 주고 연결하면 됩니다.