network / knowledge

WireGuard로 서버 여러 대를 하나의 대역에 묶기

paul 2026.01.18 170words (1m)

처음 WireGuard를 쓸 때는 휴대폰 하나를 집에 붙이는 용도였다. 서버가 여러 곳으로 늘어나면서 구성이 달라졌다. 이제는 집 서버, 원격지 백업 서버, VPS가 같은 대역에 있어야 한다.

10.10.11.0/24 를 그 대역으로 잡았다.

서버

ini
[Interface]
PrivateKey = <서버의 개인키>
Address = 10.10.11.1/24
ListenPort = 51820
PostUp = /etc/wireguard/postup.sh "%i"
PostDown = /etc/wireguard/postdown.sh "%i"

[Peer]
PublicKey = <서버1의 공개키>
AllowedIPs = 10.10.11.2/32

[Peer]
PublicKey = <서버2의 공개키>
AllowedIPs = 10.10.11.3/32

[Peer] 블록을 붙일 때마다 참여자가 하나씩 는다. 각각의 AllowedIPs/32 로 잘라 주소를 하나씩 배정한다.

여기서 /32 인 게 중요하다. /24 로 주면 그 peer가 대역 전체를 가져가서 다른 peer로 갈 패킷까지 그쪽으로 보내려 한다. 두 번째 peer를 추가하는 순간 라우팅이 겹쳐 깨진다.

클라이언트 쪽

ini
[Interface]
PrivateKey = <클라이언트의 개인키>
Address = 10.10.11.2/32

[Peer]
PublicKey = <서버의 공개키>
Endpoint = <서버 주소>:51820
AllowedIPs = 10.10.11.1/24
PersistentKeepalive = 25

Address/32 로 준다. 이 기계는 이 주소 하나만 갖는다.

AllowedIPs0.0.0.0/0 이 아니라 10.10.11.1/24 로 좁혔다. 전체 트래픽을 VPN으로 태우지 않는다는 뜻이다. 서버끼리 서로 닿기만 하면 되고, 각자의 인터넷은 각자 회선으로 나가야 한다. 여기를 0.0.0.0/0 으로 두면 모든 서버의 트래픽이 VPN 서버 한 대로 몰린다.

올리기

console
$ wg-quick up wg0

peer를 추가한 뒤에는 서버 쪽에서 다시 올려야 반영된다.