스크립트를 이용한 Wireguard VPN 간단한 설치법

최근 Wireguard VPN이 리눅스 5.6 커널 릴리즈에 정식으로 포함되어 있다는 소식을 접하고 중국에서 여러가지 VPN을 써보는 입장에서 관심이 생겨 좀 알아봤습니다.

Wireguard 공식 홈페이지
https://www.wireguard.com

구글에서 검색하면 나오는 여러 내용들을 추려보면 대략 아래와 같습니다.
  1. 소스 코드가 4000줄로 간결하다. 그에 따라 코드 자체가 단순하기 때문에 버그 발생가능성이 낮고 그에 따른 보안 위협이 줄어든다. (OpenVPN은 600,000줄, L2TP는 400,000줄로 구현)
  2. 연결 속도가 빠르다.
  3. 설정이 간단하다.
  4. 다양한 플랫폼에서 사용 가능하다.
일단 테스트해본 바로는 아직까지 중국에서 만리방화벽이 Wireguard 관련해서 강력한 감시를 하지는 않는 것 같습니다.
직접 사용중인 VPS에 설치해서 연결했을 때에도 연결 자체는 문제가 없었습니다. (서버가 해외에 있다보니 회선 자체 문제로 연결이 느린 경우는 있어도 연결이 차단 되지는 않았습니다.)
유료로 사용 중인 NordVPN의 경우도 최근에 NordLynx라고 Wireguard 프로토콜을 사용하여 연결하는 방식을 지원하기 시작했습니다. 기존에 NordVPN에서 난독화 서버(Obfuscated servers) 방식으로 연결하면 한참을 기다려도 연결이 안되는 경우가 많았는데, NordLinx 연결방식을 선택하고 나서는 연결도 빨리 되고, 연결 후 네트워크 속도도 꽤 빠르게 유지되는 것을 확인했습니다. NordVPN 유료 결제로 사용하면서도 연결이 안되서 Shadowsocks나 v2ray등 다양한 VPN 대체 기술들을 사용 중이었는데, 어쨌든 선택지가 늘어나서 저로서는 좋은 상황이 되었습니다.

Wireguard 설치

Wireguard를 설치하기 위한 스크립트는 아래 Github에 공개된 스크립트를 사용했습니다.

사이트 Readme.md에는 OS별 어떤 스크립트를 사용할지 표시하고 있는데, 저는 wg_mult.sh 스크립트를 사용하여 설치하였습니다.

VPS에 로그인 하신 후 root권한으로 아래 명령어를 실행합니다.
curl -O https://raw.githubusercontent.com/atrandys/wireguard/master/wg_mult.sh && chmod +x wg_mult.sh && ./wg_mult.sh

혹시 시스템에 Docker를 설치하신 분은 위 Script로 설치하시면 Wireguard가 설치는 되지만 설정 파일에 오류가 생겨 Wireguard 서비스가 제대로 실행되지 않으므로 스크립트 중 물리적 네트워크 어댑터 이름 가져오는 부분을 임시 방편으로 수정한 아래 명령으로 실행하시면 됩니다.
네트워크 어댑터 이름을 가져올 때 Docker 가상네트워크 어댑터 이름이 D로 시작하여 알파벳 E로 시작하는 일반 Ethenet 어댑터 보다 앞에 위치하기 때문에 원작자의 스크립트는 Ethenet 어댑터 이름을 제대로 반환하지 않습니다.
curl -O https://raw.githubusercontent.com/kikunae77/wireguard/master/wg_mult.sh && chmod +x wg_mult.sh && ./wg_mult.sh

위 스크립트를 실행하면 아래와 같은 화면이 뜨는데, 1번 설치항목을 선택하면 경우에 따라 SELinux가 켜져 있어 Wireguard 실행에 영향이 있을 수 있으니 끄고, 다시 리부팅 할지 물어보는 내용이 뜰 수 있습니다. 이 경우 Y를 눌러주시면 설정 후 재부팅 됩니다. 재부팅 한 경우 잠시 기다렸다가 다시 로그인해서 루트 권한으로 다시 ./wg_mult.sh명령을 실행하고 1번 설치 항목을 선택하면 됩니다.

설치 메뉴

설치가 끝나면 아래와 같이 설치 완료 및 설정 파일 위치가 표시되며, 하단에 해당 설정파일 내용을 특수기호를 이용해 QRCode로 표시해 주는데, SSH 연결 프로그램 상황에 따라 아래 이미지와 같이 글꼴 및 자간 등의 영향으로 QRCode 스캐너가 제대로 스캔을 못할 수도 있으니 유의하시기 바랍니다.

설치 완료 메시지

Wireguard가 설치되면서 초기 1개의 연결 정보를 생성하고 해당 연결 설정 파일을 /etc/wireguard/client.conf 라는 이름의 파일로 생성합니다.

설치 스크립트에서 3번을 눌러서 표시되는 QRCode가 제대로 스캔되는 경우, 클라이언트에서 해당 QRCode를 스캔하여 설정을 추가하면 바로 해당 설정으로 VPN 연결이 가능합니다.
만약 QRCode 스캔이 되지 않는 경우,
nano /etc/wireguard/client.conf
명령어로 파일의 내용을 열어서 해당 내용으로 직접 Client를 설정하거나 VPS 연결에 Xsehll을 사용중인 경우
sz /etc/wireguard/client.conf
명령어로 파일을 다운로드 받은 후 Windows Client에서 설정 파일을 불러오기하여 연결 설정을 추가할 수 있습니다.
sz 명령어가 없다고 에러가 표시되는 경우 CentOS를 사용 중이라면
yum install lrzsz
Ubuntu를 사용 중이라면
apt-get install lrzsz
명령어로 설치한 후 사용하면 됩니다.

Wireguard 연결 Device추가

위 스크립트로 Wireguard를 설치하면 기본적으로 1개의 연결 설정을 자동으로 생성하는데, 한개의 연결을 여러 장치에 설정하여 사용하면 데이터를 주고 받는데 문제가 생길 수 있으므로, 여러개의 장치에서 동일한 서버의 Wireguard VPN에 연결하고자 한다면 연결 설정을 추가해 줘야 합니다.

./wg_mult 명령어를 다시 실행해주고 4번 항목 Add user를 선택하면 연결명을 입력하라는 메시지가 표시되고, 연결명을 입력하면 새로운 설정이 추가되며, /etc/wireguard 디렉토리에 "연결명.conf" 이름으로 설정 파일이 생성됩니다.
단, 새로운 연결 설정을 추가해도 스크립트의 3번 항목으로 표시되는 QRCode는 client.conf의 설정 내용이므로 새로 추가한 연결 설정의 경우는 직접 설정 파일의 내용을 통해 설정하거나 위에서 설명한 방법으로 다운로드 받아서 불러오기 하여 설정해야 합니다.

연결 설정 추가

Wireguard 클라이언트는 공식 홈페이지에서 다운로드 가능합니다.

Wireguard의 경우에도 v2-ui와 같이 Wireguard 디바이스 추가 등의 관리를 웹에서 할 수 있는 서비스가 오픈소스로 개발되어 github에 올라와 있는데, 이 서비스를 적용하는 부분은 일단 테스트 중이라 성공하면 다음에 포스팅 해보도록 하겠습니다.

댓글

이 블로그의 인기 게시물

OpenWrt 공유기에 Wireguard 설정하기

Cloudflare DNS 서비스를 통해 Let's Encrypt 인증서 발급 및 갱신 자동화하고 v2-ui에 http+tls 위장 적용하기

샤오미 공유기 3세대(Mi Router R3G)에 OpenWrt 올리기