WireGuard로 가상 사설망 구성해보기 (microtik)
wireguard는 대표적인 VPN 프로토콜이다. 가상 사설망을 구성하는 용도로 사용할 수 있다.
openVPN의 강력한 경쟁자이고, 빠른 속도와 낮은 리소스 사용량이 장점이다. 그래서 보안/안정성보다 속도와 처리량이 중요하다면 최우선으로 선택할만하다.
여기서는 microtik의 라우터 기능을 사용해서 외부 클라우드의 장비를 내부망에 집어넣는 방법을 정리해본다.
오픈 프로토콜이기 때무에 wireguard를 지원하는 라우터라면 전부 비슷한 흐름으로 처리할 수 있다.
준비
먼저 현재 장비가 wireguard를 지원하는지부터 확인한다.
:put ("WG supported: " . [:tostr ([:len [/interface wireguard print as-value]] >= 0)])

microtik의 경우에는 다음과 같은 전용 탭 & UI를 제공한다.

라우터에 wireguard 기본 구성 추가
이건 한번만 해도 된다. 터미널을 열어서 먼저 적당한 이름으로 인터페이스를 추가하고, IP를 할당하고, 네트워크 경로와 방화벽을 허용해준다.
/interface/wireguard add name=wg-cloud listen-port=51820 # 인터페이스 추가
/ip/address add interface=wg-cloud address=10.100.0.1/24 # 라우터 터널에 IP 할당
/ip/firewall/filter add chain=input action=accept protocol=udp dst-port=51820 place-before=0 comment="WG inbound" # 방화벽 허
# WG <> LAN 트래픽 허용
/ip/firewall/filter add chain=forward action=accept in-interface=wg-cloud place-before=0 comment="WG → LAN"
/ip/firewall/filter add chain=forward action=accept out-interface=wg-cloud place-before=0 comment="LAN → WG"
그리고 저기서 나온 라우터 측 공개키를 가져다가 보관해둔다.
피어 등록 (MacOS)
이번에는 피어용 키를 만들고 라우터에 등록해보자.
이건 피어 장비에서 하지는 않아도 된다.
brew install wireguard-tools
전용 도구를 설치하고
mkdir -p ~/wg-keys/worker-test && cd ~/wg-keys/worker-test
wg genkey | tee private.key | wg pubkey > public.key
# 권한 (private key 는 소유자만 읽기)
chmod 600 private.key
키 쌍을 만든 다음에
/interface/wireguard/peers add interface=wg-cloud public-key="피어측 공개키" allowed-address=10.100.0.2/32 comment="test-worker"
라우터에 적절히 등록해준다. (터미널)
그래서 이렇게 등록이 되면 잘 된 것이다.
피어 등록 (외부 장비)
이제 피어를 신규로 띄워서 등록해보자.
나는 AWS EC2 인스턴스를 하나 잡고 그걸 피어로 추가하려고 한다.

종속성을 적당히 설치하고, wireguard 설정파일을 추가해서 내용을 적당히 채워준다.
sudo apt-get update && sudo apt-get install -y wireguard
sudo vim /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0[Interface]
PrivateKey = <피어 측 private key>
Address = 10.100.0.2/24
MTU = 1420
[Peer]
PublicKey = <라우터 public key>
Endpoint = <라우터공인IP>:51820
AllowedIPs = 10.100.0.0/24, 192.168.88.0/24
PersistentKeepalive = 25
위에는 아까 공개키 쌍 만들고 나온 피어 비밀키를 넣고, 아래에는 라우터의 공개키, 라우터의 공인 IP를 넣어준다.

그리고 오류 없이 이렇게 실행되고
sudo wg show
# LAN 접근 테스트
ping -c 3 10.100.0.1 # 라우터 터널 IP
ping -c 3 192.168.88.202 # 내부 LAN 장비 아무거나

실제 LAN 내부의 IP에도 핑퐁이 잘 되면 끝난 것이다.


그럼 이제 쿠버 클러스터를 물린다든지 하든 내부망 전용 작업도 스무스하게 할 수 있을 것이다.
참조
https://help.mikrotik.com/docs/spaces/ROS/pages/69664792/WireGuard