본문 바로가기

IT/NAS

[자작NAS] 우분투 서버에 Docker로 WireGuard 설치

반응형

WireGuard는 빠른 속도와 간편한 설정을 지원하는 VPN입니다.

OpenVPN이나 IPsec보다 더 빠른 속도와 안정성을 보장하도록 만들어진 VPN입니다.

또한 WireGuard는 리눅스 커널 5.6 이후 버전부터는 기본적으로 커널에 포함되어 있습니다.

빠른 성능과 간편한 연결을 제공하는 WireGuard 설치 방법을 알아보겠습니다.

 

1. WireGuard 설치

먼저 설정 파일을 저장할 디렉터리를 생성합니다.

sudo mkdir -p /data/wireguard/config

그리고 linuxserver/wireguard 이미지로 컨테이너를 생성합니다.

sudo 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=<DDNS 주소> \
-e SERVERPORT=<포트> \
-e PEERS=10 \
-e PEERDNS='8.8.8.8' \
-e INTERNAL_SUBNET=10.13.13.0 \
-p <포트>: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

SERVERURL에는 사용 중인 DDNS 주소를 입력해주면 됩니다.

그리고 SERVERPORT의 <포트>와 -p의 <포트> 부분은 외부에서 접속을 원하는 포트를 입력해주면 됩니다.

양 쪽에 동일한 포트 번호를 입력해주면 됩니다.

PEERS는 설정 파일을 생성할 피어의 수를 적용하면 됩니다.

PEERDNS는 구글 DNS 서버인 8.8.8.8이나 1.1.1.1 등의 DNS 서버를 입력하면 됩니다.

INTERNAL_SUBNET은 충돌이 발생하는 경우에만 마지막 자리의 숫자를 변경해주면 됩니다.

나머지는 기본 설정으로 둔 상태에서 명령어를 실행하면 됩니다.

아래 명령어로 생성된 컨테이너를 실행합니다.

sudo docker start wireguard

컨테이너 로그를 살펴보면 PEERS에 설정한 숫자만큼 QR코드가 표시되는 것을 볼 수 있습니다.

나중에 이 QR 코드를 사용해서 VPN 연결이 가능합니다.

sudo docker logs -f wireguard

이것으로 WireGuard 설치가 완료되며 외부 접속을 위해 포트 포워딩 설정을 해줘야 합니다.

각 공유기의 포트 포워딩 메뉴에서 위 명령어의 <포트> 부분에 입력했던 포트 번호를 열어줍니다.

ASUS 공유기의 경우 WAN > 가상 서버 / 포트 포워딩 메뉴에서 추가할 수 있습니다.

포트 포워딩

WireGuard는 기본적으로 UDP를 사용하기 때문에 UDP나 BOTH 프로토콜을 사용하면 됩니다.

이것으로 VPN 서버 설정은 완료됩니다.

 

2. VPN 연결 방법

WireGuard는 다양한 OS를 위한 클라이언트를 제공하고 있습니다.

https://www.wireguard.com/install/

 

Installation - WireGuard

Installation Windows [7, 8, 8.1, 10, 2012, 2016, 2019] WireGuard for Windows is available from this site: Download for 64-bit Download for 32-bit Download from App Store $ sudo apt install wireguard $ sudo add-apt-repository ppa:wireguard/wireguard $ sudo

www.wireguard.com

안드로이드에서 WireGuard에 연결하는 방법은 다음과 같습니다.

먼저 안드로이드 Play 스토어에서 WireGuard 앱을 설치합니다.

WireGuard 앱 설치

앱을 실행한 후 우측 하단의 + 아이콘을 클릭합니다.

연결 추가

다양한 연결 추가 방법을 제공하는데 여기서는 QR 코드를 사용해서 연결해보겠습니다.

설정 디렉터리에 PEERS에 입력한 수만큼 생성된 peer1~peerX 디렉터리 중 하나를 선택합니다.

cd /data/wireguard/config/peer1

내부에 conf 파일과 png 파일이 있는 것을 확인할 수 있습니다.

연결 설정 파일

이미지 파일(peer1.png)을 열면 QR 코드가 표시되는데 이것을 스캔해주면 간단히 VPN이 추가됩니다.

VPN 연결

VPN에 연결 요청을 해서 정상적으로 연결이 되는지 확인하면 됩니다.

연결 완료

연결에 성공하면 상단에 VPN 연결 아이콘이 표시됩니다.

다른 OS의 경우도 크게 다르지 않기 때문에 동일한 방식으로 VPN을 추가하면 됩니다.

 

3. 192.168.X.X 연결 문제 해결

WireGuard를 켠 상태로 공유기 내부의 디바이스 등에 연결하려는 경우 실패하는 경우가 있습니다.

이 경우 Allowed IPs가 0.0.0.0/0, ::/0으로 설정되어 있어서 모든 연결이 VPN을 통하기 때문입니다.

이럴 때는 192.168.0.0 ~ 192.168.255.255까지를 Allowed IPs에서 제거해주면 됩니다.

우분투 환경에서 아래 명령어로 netmask를 설치합니다.

sudo apt install netmask

0.0.0.0 ~ 192.167.255.255와 192.169.0.0 ~ 255.255.255.255까지를 생성해주면 됩니다.

sudo netmask -c 0.0.0.0:192.167.255.255
sudo netmask -c 192.169.0.0:255.255.255.255

다음과 같은 결과를 얻을 수 있는데 각 라인을 ,(쉼표)로 구분해서 작성해주면 됩니다.

192.168.X.X 연결 허용

VPN 설정 값을 수정해서 Allowed IPs에 다음과 같이 입력해주면 됩니다.

0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 224.0.0.0/3

VPN을 통하지 않고 연결하고 싶은 IP대역이 있는 경우 위 netmask 명령어로 생성해서 적용하면 됩니다.

 

모든 설정을 완료하면 WireGuard VPN 사용이 가능합니다.

이제 빠르고 안전한 WireGuard VPN 연결을 통해 중요한 데이터를 보호할 수 있습니다.

반응형