요즘 집에서 홈서버를 돌리고 있다.
80포트나 443포트는 개방해 두고 있지만 22포트까지 열어둘 순 없는 노릇이다.
사실 밖에서 접속할 일도 많이 없지만 코앞에 있는 추석 연휴 내내 자취방을 비워둘 예정이기 때문에, VPN을 구성해두려 한다.
많고 많은 VPN 중에 나는 WireGuard를 선택했는데, 무엇보다 설치/설정이 간단하면서 성능이 좋다는 점이 매력적이었다.
또 최근 회사에서 IPsec VPN과 WireGuard VPN을 체이닝할 일이 있었는데, 정말 쉽고 빠르게 구성할 수 있었던 WireGuard에 비해 IPsec VPN이 너무 복잡해서 WireGuard가 반사이익을 본 면도 없지 않아 있긴 하다.
어쨌든 여러모로 장점이 많다!
1. WireGuard 설치
sudo apt update
sudo apt upgrade우선 패키지를 최신화하고 업데이트를 해준다.
sudo apt install wireguardWireGuard를 설치한다.
2. WireGuard 설정
wg genkey | sudo tee /etc/wireguard/privatekey
sudo chmod 600 /etc/wireguard/privatekey
sudo cat /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
sudo chmod 644 /etc/wireguard/publickeyWireGuard는 데이터를 주고받기 위해 공개키 암호화를 사용한다. 따라서 공개키와 개인키를 생성한다.
sudo vim /etc/wireguard/wg0.confWireGuard 설정 파일을 연다.
국룰처럼 wg0 이렇게 사용하는 듯하다. 나도 똑같이 쓰고 있다.
또 약간 국룰처럼 10.0.0.0/16대역의 아이피를 사용한다.
나 역시 그렇다.
# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = [생성한 Private Key]
Address = 10.0.0.1/32 # VPN 서버에 할당할 아이피
ListenPort = 51820 # UDP Port
[Peer]
PublicKey = [클라이언트의 Public Key]
AllowedIPs = 10.0.0.2/32 # 클라이언트에 할당할 아이피서버 측에선 이렇게 설정해 준다.
여기서 클라이언트의 Public Key는 연결할 클라이언트에서 생성해서 건네주어야 한다.
나는 macOS 버전으로 설치했다. (macOS를 쓰기 때문이다.)
Add Empty Tunnel(또는 Command + N)을 누른다.
여기서 보이는 공개키를 서버 측에 설정해 주어야 한다.
개인키는 절대 노출되지 않도록 주의하자.
서버와 반대로 작성한다고 생각하면 된다.
즉 내가 서버를 바라봤을 때 스스로 인터페이스가 되고 서버가 피어(클라이언트)가 된다고 생각하면 된다.
차이점이라면 이쪽에는 Endpoint가 추가된다는 정도?
Endpoint는 당연하게도 서버의 공인 아이피를 써줘야 하고, 나처럼 공유기 환경에 있는 경우엔 포트 포워딩을 잊지 말자.
양쪽에 설정을 해줬으면 놀랍게도 끝이다!
sudo wg-quick up wg0을 통해 서버 측에서 VPN을 켜주고,
클라이언트에서도 Activate를 시켜주자.
아주 간단하게 VPN 설정이 완료된다!
참고로, 재부팅 후에도 자동으로 해당 연결을 맺도록 해주고 싶으면
sudo systemctl enable wg-quick@wg0을 꼭 해주도록 하자.
부팅할 때 wg0 인터페이스를 자동으로 활성화시키도록 하는 명령어다.