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 코드도 나오게 됩니다.
5. 방화벽 설정은 51820 udp 포트를 열어주면 됩니다.
6. iOS, Android 등의 기기에서 Wireguard 앱을 설치하고 + 를 터치하여 QR코드로 추가하여 주고 연결하면 됩니다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | Wireguard 를 이용한 VPN 구축하기 (Docker 기반) | 지혜바보 | 2021.01.24 | 2859 |
2 | v2-ui 쉬운 설치, 웹을 통한 간편한 관리 V2ray 설치 툴 | 지혜바보 | 2021.01.24 | 2702 |
1 | Outline 으로 나만의 VPN 서버 구축하기 | 지혜바보 | 2021.01.24 | 3102 |