간단하게 Wireguard VPN 세팅하기
내가 사용하는 Wireguard 설정하는 법을 간단하게 적어보았다.
아래의 순서를 통해서 설정해줄 것이다.
- Wireguard 설치
- Public key, Private key 생성
- Wireguard 구성
- 방화벽 설정
- Wireguard 실행 및 자동 재시작 설정
1. Wireguard 설치
일단 설치할 모든 서버에 Wireguard 설치가 필요하다.
sudo apt update
sudo apt install wireguard
다른 패키지 매니저를 통한 설치 방법은 와이어가드 공식 홈페이지에 자세히 올라와있다.
Public key, Private key 생성
양서버에 각각 Public key와 Private key를 생성해준다.
# Private 키 생성
wg genkey | sudo tee /etc/wireguard/private.key
# 권한 변경
sudo chmod go= /etc/wireguard/private.key
# Public 키 생성
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
- Public Key 위치: /etc/wireguard/public.key
- Private Key 위치: /etc/wireguard/private.key
3. Wireguard 구성
sudo vi /etc/wireguard/wg0.conf
각 서버에 설정파일을 추가한다. 그리고 다음의 내용을 넣어준다.
[Interface]
PrivateKey = ${해당 서버의 private key}
MTU = 1500
Address = ${원하는 사설 ip}/32
ListenPort = ${Wireguard 사용할 포트}
[Peer]
PublicKey = ${서버1의 public key}
AllowedIPs = ${서버1의 사설 ip}/32
Endpoint = ${서버1의 Public ip}:${서버1의 Wireguard 포트}
PersistentKeepalive = 15
[Peer]
PublicKey = ${서버2의 public key}
AllowedIPs = ${서버2의 사설 ip}/32
Endpoint = ${서버2의 Public ip}:${서버2의 Wireguard 포트}
PersistentKeepalive = 15
만약에 연결할 서버가 여러대일 경우 Peer 항목을 똑같이 추가 해주면 된다.
사설 아이피는 겹치지 않도록 분리 해주자.
예를들어서 연결 할 서버가 두대라고 해보자.
- Wireguard1 서버
- IP: 64.176.225.86
- Wireguard로 사용 할 포트: 51820
- 사용하고자 하는 사설 아이피: 10.1.0.1
- Public Key: rJr7/DxZKzJd3hVIH2Z8m+LwOUgHPKM0VRFWBLH7zCM=
- Private Key: UAtohpaPCiUd4bjUo7FMWpJ8IzBlGVPheTgrIg2s0UE=
- Wireguard2 서버
- IP: 158.247.255.193
- Wireguard로 사용 할 포트: 51820
- 사용하고자 하는 사설 아이피: 10.1.0.2
- Public Key: FG+UIpeqEKh473f6WmYHtW1CMr8nyNZ64xCb2x+WpBc=
- Private Key: CBkuiciU98/9MApOqcRUaDFzJEIextHHn+XLKguoCUU=
그렇다면
Wireguard1(64.176.225.86) 서버 설정
[Interface]
PrivateKey = UAtohpaPCiUd4bjUo7FMWpJ8IzBlGVPheTgrIg2s0UE=
MTU = 1500
Address = 10.1.0.1/32
ListenPort = 51820
[Peer]
PublicKey = FG+UIpeqEKh473f6WmYHtW1CMr8nyNZ64xCb2x+WpBc=
AllowedIPs = 10.1.0.2/32
Endpoint = 158.247.255.193:51820
PersistentKeepalive = 15
Wireguard2(158.247.255.193) 서버 설정
[Interface]
PrivateKey = CBkuiciU98/9MApOqcRUaDFzJEIextHHn+XLKguoCUU=
MTU = 1500
Address = 10.1.0.2/32
ListenPort = 51820
[Peer]
PublicKey = rJr7/DxZKzJd3hVIH2Z8m+LwOUgHPKM0VRFWBLH7zCM=
AllowedIPs = 10.1.0.1/32
Endpoint = 64.176.225.86:51820
PersistentKeepalive = 15
서로가 서로를 Peer로 바라본다면 설정 완료이다.
[Peer] 설정에 보면 AllowedIPs 라는 옵션이 있는데, 해당 옵션에 있는 아이피 대역들에 대한 요청들을 설정되어있는 EndPonit 로 라우팅 하도록 설정하는 옵션이다.
나처럼 특정 아이피만을 입력하면 해당 사설망에 대한 요청만이 라우팅 되는 것이고, 모든 요청을 라우팅 하고 싶은 경우 내부망을 제외한 모든 외부망을 설정 해 주면 된다. 만약에 0.0.0.0/0을 설정 할 경우 127.0.0.1 과 같은 내 컴퓨터를 향한 모든 요청마저 라우팅이 되므로 조심해야한다.
Wireguard AllowIPs Calculatord
위 웹사이트를 통해서 내가 사용할 내부망 아이피 대역 예를들어 127.0.0.1 혹은 공유기에서 할당하는 아이피 대역등을 DisallowIPs항목에 넣으면 알아서 계산하여 AllowIps를 만들어준다.
4. 방화벽 설정
방화벽에는 여러개의 종류가 있을 수 있다.
Wireguard 는 UDP 프로토콜을 사용하므로 사용하고자 하는 포트에 대해 UDP 통신을 허용하면 된다.
위 예시의 경우에는 두개의 서버 모두 51820/UDP를 허용하면 된다.
클라우드 방화벽
Vultr의 경우에는
이렇게 허용 해주면 된다.
공유기
포트포워딩을 통해 해당 포트 및 프로토콜에 대해 접속을 허용 해 주면 된다.
운영체제 방화벽
sudo ufw status
를 통해 현재 운영체제 방화벽이 실행중인지 확인해본다.
방화벽이 실행중이라면, 아래와 같이 Status가 active로 나올것이고
방화벽이 꺼져있다면,
이렇게 나올것이다.
운영체제 방화벽이 필요한 경우에는
sudo ufw allow 51820/udp
를 통해 51820/UDP 에 대한 요청을 허용할 수 있다.
그리고 확인해보면 위와 같이 잘 허용되었음을 확인할 수 있다.
5. Wireguard 실행 및 자동 재시작 설정
# 재부팅시 자동재시작이 되도록 등록
sudo systemctl enable wg-quick@wg0
# Wireguard 프로그램 시작
sudo systemctl start wg-quick@wg0
# Wireguard 프로그램 실행 상태 확인
sudo systemctl status wg-quick@wg0
이렇게 나온다면 잘 실행이 된 것 같다.
서로 상대 서버의 사설 아이피에 ping을 발송 해 봄으로서 Wireguard가 정상적으로VPN을 구축했는지 확인 해 볼 수 있다.
정상작동한다면 정상적으로 ping이 발송 될 것이다.
반대로, 정상 작동 하지 않는다면 아래와같이 100% packet loss 가 발생한다.
끝.
다음글 보기> 간단하게 Tailscale VPN 세팅하기
참고 사이트