Oracle VPS / Setup 101 – 3. Wireguard VPN 서버 & wg-easy 설치

 

Setup 101 - 1. 오라클 클라우드 가입하기
Setup 101 - 2. SSH 접속 및 기본 설정
Setup 101 - 3. Wireguard VPN 서버 & wg-easy 설치

 

Setup 101 – 3. Wireguard VPN 서버 & wg-easy 설치

 
이제 wireguard를 설치 합니다.

Wireguard는 최신 VPN 프로토콜로서 보안성이 우수하면서 속도는 경쟁자인 OpenVPN을 월등히 앞서는거로 보고가 되어있는데요 사실상 성능이 우수한 서버가 아니라면 큰 차이가 없으며 서버가 연결된 인터넷이 빠르지 않다면 더 의미가 없습니다.

대신 OpenVPN 보다 아주 가볍게 코딩되어서 쉽고 빠르게 설치가 가능하며 wg-easy 개발자 덕분에 더욱 더 쉽게 이용이 가능 합니다.

참고로 중국에서 한국이나 해외 접속을 원해서 지금 VPN 구축을 시도 중이시라면 멈추시고 OpenVPN으로 가세요. wireguard는 중국 방화벽에서 쉽게 막혀요.
중국에서 해외 접속으로 많은 최신 프로토콜들이 생겨났지만 며칠 긴급 출장용으로 사용 하시는게 아니라면 다 막혀요. 나름 최신 프록시 서버 v2ray, xray vless/vmess, trojan, wireguard 기반인 tailscale도 소용 없어요. Outline VPN이 그나마 괜찮다고는 하는데 개인적으로 OpenVPN tcp 방식으로 443 또는 8443 포트로 서버 돌리시는게 그나마 나은거 같습니다. 하지만 이것도 case-by-case 겠죠. 아무튼 모든 wireguard 기반은 중국에서 쉽게 막혀요.

wireguard 설치 하기

sudo apt update
sudo apt install wireguard

(apt update는 설치 전 한번 해주는 것을 습관)

끝.

원래는 이후에 여러 설정들을 해줘야 하는데 wg-easy가 다 해줄꺼예요.

그럼 이제 wg-easy를 설치 해야 하는데 wg-easy는 도커 안에 설치 해줘야 합니다.
* Docker에 대한 자세한건 구글링

Docker 설치

하나씩 입력 후 엔터 입력 후 엔터.
SSH 터미널에서는 Ctrl+V가 안 먹혀요.
MobaXterm에서는 Shift+Insert 또는 오른쪽 마우스 클릭 후 paste 선택.

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-cache policy docker-ce

* 여기서 리스트가 쭉 뜨는데 주소가 https://download.docker.com/linux/ubuntu 어쩌고 저쩌고인지만 확인

sudo apt install docker-ce -y

끝.

– SSH 팁 –
* 도커가 잘 돌아가고 있는지 확인 = sudo systemctl status docker
(쭉 뜨는 내용 중 Active (running) 이 보이면 잘 돌아가고 있음)
* 다른 방법으로 도커를 설치 할 수도 있음

이제 마지막 wg-easy를 설치 합니다.

docker run -d \
  --name=wg-easy \
  -e WG_HOST=YOUR_SERVER_IP \
  -e PASSWORD=YOUR_ADMIN_PASSWORD \
  -v ~/.wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart unless-stopped \
  weejewel/wg-easy

메모장을 열고 복사 후
YOUR_SERVER_IP를 서버 공인 아이피 주소로 변경 해주세요.
YOUR_ADMIN_PASSWORD를 지우시고 관리자 페이지 비번을 지정해 주세요.
* 주의: 위에 예시대로 = 다음에 바로 적으셔야하고 \ 와 한칸 띄워져 있어야 합니다.
* 개발자분이 기본 포트로 코딩 하셔서 접속 포트 변경 하시면 작동 안되요.

이제 메모장에서 수정하신 것을 전체 선택 및 복사 하시고 SSH 터미널에 그대로 붙여넣기 하시면 됩니다.
* 주의: MobaXterm에서는 Ctrl+V가 안되요. 터미널 창에서 마우스 오른쪽 클릭 하신 후 paste로 하시거나 Shift+Insert 버튼으로 하세요.
참고로 Putty 터미널에서는 오른쪽 마우스 클릭 하시면 자동 붙여넣기가 됩니다.

붙여넣기 후 엔터.

끝.

* 모든 감사는 개발자분께 – https://github.com/wg-easy/wg-easy

이제 웹브라우저에서 바로 wireguard wg-easy 관리자 페이지로 접속이 가능합니다.
웹브라우저에서 공인 주소 다음에 관리자 포트를 입력해 주시면 됩니다.

http://xxx.xxx.xxx.xxx:51821

메모장에서 수정하신 관리자 비밀번호를 입력 하세요.

오른쪽 + New 를 클릭 후 원하는 이름을 입력 하세요.

그럼 입력하신 이름으로 된 계정이 생성 됩니다.
위 스샷처럼 빨간색 버튼을 비활성화 시켜 주시면 해당 계정 접속이 차단 됩니다.
현 상태는 활성화가 된 상태.
그 옆에 QR 코드 버튼을 누르시면 아래와 같이 QR 코드가 뜹니다.
그럼 스마트폰의 wireguard 앱에서 QR코드 스캔을 하시면 바로 등록이 되며 접속 하시면 바로 접속 됩니다.

PC에서 이용시 QR코드 스캔이 번거로울 수 있으니 QR코드 버튼 옆 다운로드로 conf 파일을 다운 받으신 후 윈도우즈용 wireguard 설치 후 파일을 등록 하시면 바로 접속 하실 수 있습니다.
Wireguard 클라이언트 다운로드: https://www.wireguard.com/install/

접속이 확인 되었다면 이제 구축하신 VPN 서버를 통해서 인터넷을 이용 하시게 되며 서버 SSH 접속 및 wireguard 관리 페이지 역시 공인 아이피가 아닌 사설 아이피로 접속이 가능 합니다.

보안을 위해서 다시 오라클 클라우드 사이트에 접속 하셔서 Ingress rules에서 22번과 51821 포트를 삭제해 주세요.
앞으로 SSH 터미널 또는 wireguard 관리자 페이지 접속시에는 먼저 wireguard를 통해 서버로 접속 하신 후 사설 아이피 (private IP)로 접속 하시면 됩니다.

내 서버 IP 확인하는 법 –
오라클 클라우드 사이트 접속 후 Compute – Instance에서 Private IP 확인
또는 SSH 터미널에서

hostname -I

대문자 I 로 입력해 주세요.
다커가 생성 되어서 이제 사설 아이피가 2개로 뜨게 됩니다.
10.0.x.x 를 메모 하시고 접속 하시면 됩니다.
이제 와이어가드 관리자 페이지 접속시 http://10.0.x.x:51821 로 접속 하시면 됩니다.
SSH 터미널에서 서버 접속 주소도 10.0.x.x 로 변경 하시면 됩니다.

다음편엔 웹서버 구축하기

Oracle VPS / Setup 101 – 2. SSH 접속 및 기본 설정

 

Setup 101 - 1. 오라클 클라우드 가입하기
Setup 101 - 2. SSH 접속 및 기본 설정
Setup 101 - 3. Wireguard VPN 서버 & wg-easy 설치

 

Setup 101 – 2. SSH 접속 및 기본 설정

 

오라클 클라우드로 만드신 인스턴스에 접속 하셔서 기본적으로 진행하셔야 하는 부분을 설정 드릴껀데요 우분투는 기본적으로 SSH 라는 프로토콜을 사용해서 컴퓨터간 통신을 하는데요 예전 Dos 같은 방식의 텍스트 형태에 커맨드로 진행 됩니다.

어렵지 않아요. 설명 그대로 따라 하시면 됩니다.

우선 SSH 사용을 위해 프로그램을 설치 합니다.
가장 유명하고 많이 사용하는 Putty라는 프로그램이 있는데 저는 초보자에게 좀 더 쉽게 접근 가능한 MobaXterm로 진행 합니다.
이거로 익숙해지시면 Putty로 넘어가세요.

다운로드: https://mobaxterm.mobatek.net/download.html

Home Free Edition 다운하시고 설치 하세요.

 

 

다운로드 후 프로그램을 실행하시고 왼쪽 상단에 Session을 클릭 하면 위와 같이 세션 창이 뜸니다.
여기서 제일 첫번째 SSH를 선택 후 Remote host에 적어두신 인스턴스 공인 아이피 (public ip)를 입력 합니다.
그 다음 Advance SSH setting 선택 후 Use private key 체크 후 인스턴스 생성시 다운 받아 둔 private key를 선택 합니다.

그리고 OK!

 

 

그럼세션 시작과 함께 login as: 가 뜨면 ubuntu 라고 입력 후 엔터!

 

 

Welcome 과 함께 로그인이 완료 되었습니다.

* 위 스샷에는 IPv4 address가 2개로 보이는데 처음에는 1개만 보이실꺼예요. 걱정 안 하셔도 됩니다.

Ubuntu 아이디로 로그인 하셨기 때문에 ubuntu로 로그인이 되었는데 여기서 최종 관리자인 root로 로그인 하세요.

sudo -i

그럼 앞이 ubuntu@xxxx 에서 root@xxx로 변경 됩니다.
사실 root로 굳이 로그인 안 하셔도 ubuntu도 관리자 아이디라서 대부분 다 진행 하실 수 있는데 안되는 것들도 있어서 그냥 처음부터 로그인 하시면 sudo -i (엔터) 치시고 루트에서 진행 하세요.

* root로 접속 했기 때문에 아래 커맨드에서 sudo를 입력 안해도 되지만 기본적으로 외우고 익숙해지기 위해서 sudo도 입력 합니다. (sudo = 윈도우에 관리자 모드 비슷)

 

 

자 이제 서버 접속 시 가장 기본적으로 해주셔야 하는 것들 입니다.

sudo apt update

업데이트가 완료되면

sudo apt upgrade

업그레이드 중 [y/n]가 뜨면 y 입력 후 엔터

 

– SSH 팁 –
* update를 항상 먼저 그 다음 upgrade
* sudo apt update && sudo apt upgrade -y = 업데이트 먼저하고 업그레이드 하고 -y (y/n)에서 yes 해라
* apt 대신 apt-get 을 써도 됨 ex: sudo apt-get update

 

그 다음은 방화벽 설정 입니다.

이미 오라클 클라우드 ingress rules에서 설정을 했지만 그건 오라클 방화벽이고 이번에는 이 서버 방화벽을 설정해 줘야 합니다.
* 서버에서 모든 포트를 열어놔도 오라클 방화벽 (ingress rules)에서 막혀 있으면 막혀 있는 것이라서 서버 방화벽을 설정 안 하셔도 되지만 어렵지 않고 한번만 해두면 되니깐 서버에서도 firewall 설정을 합니다.

인스턴스를 처음 만들면 방화벽이 실행 되어 있지 않아요.
실행하기 전에 제일 중요한 22번 포트를 먼저 설정 합니다.

sudo ufw allow 22

ufw는 우분투 방화벽
즉, 방화벽아 22번 allow 해줘.

 

하는김에 필요한거도 다 열어 줍니다.

sudo ufw allow 51820/udp

포트 번호 뒤에 /udp 또는 /tcp 를 넣어주면 그것만 열어줌. 지정 안하면 udp tcp 다 열림.
물론 오라클 방화벽에서 udp로 설정해서 tcp는 못 들어와서 상관은 없지만 그래도 udp로….

 

sudo ufw allow 51821/tcp

51821 tcp 포트는 wireguard vpn 이용을 아주 쉽게 도와주는 wg-easy 관리자 페이지용 포트 입니다.

 

웹서버도 구축 하실 분들은 80번 443번 포트도 열어 줍니다.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

다시 말씀드리지만 오라클 방화벽에서는 80번 443번을 안 열어놔서 외부에서는 접속 할 수 없으니 나중에 웹서버 구축도 고민 중이시라면 지금 열어 두셔도 상관 없어요.

 

이제 다 하셨으면 제대로 등록 되었는지 확인 합니다.

sudo ufw status

입력 후 엔터 치면 등록된 포트 번호가 쭉 나와요.

22, 51820, 51821 등등이 allow로 보이면 ok!

 

그럼 이제 방화벽을 활성화 시켜주세요.

sudo ufw enable

경고 문구가 뜰수 있어요. 활성화하면 접속이 막힐 수 있다 어쩌고 저쩌고…
포트 22번을 allow로 등록해놔서 괜찮아요. y 누르세요.

이제 방화벽 설정이 끝났습니다.

– SSH ufw 팁 –
등록을 지우고 싶으면 = ufw delete allow XX  (ex: ufw delete allow 51821/tcp)

 

 

서버 시간대를 설정 합니다.

sudo datetimectl set-timezone Asia/Seoul

서울로 시간대가 변경 되었습니다.

 

– SSH datetimectl 팁 –

시간대 설정 확인 = datetimectl status
미국 서부 시간대 설정 = datetimectl set-timezone US/Pacific
타임존 리스트 보기 = datetimectl list-timezones (타임존 마지막 s 추가)
* 리스트 떳을때 목록이 길어서 root로 빠지지 않을때 당황하지 마세요. 엔터치면 쭉 내려가고 그만 보고 싶을땐 키보드에서 q 눌러 주시면 됩니다.

 

 

다음편은 wireguard 설치하기