사설망 간 WireGuard 라우팅(정적·정책 기반) 설정
사설망 간 WireGuard 라우팅 설정 시 정적 라우트와 정책 기반 라우팅 개념, 구성 예제, 검증 방법을 단계별로 정리한 기술적 설명
목차
개요
사설망(예: 본사와 지사) 간 안전한 터널을 구성할 때 WireGuard를 쓰면 성능과 단순성이 장점이다. 그러나 단순한 터널 설정만으로는 원하는 트래픽 흐름을 만들기 어렵다. 이 글은 WireGuard 라우팅 설정에서 정적 라우트와 정책 기반 라우팅을 어떻게 구성하고 검증하는지 설명한다. 초보자도 이해하기 쉽게 단계와 예제를 포함한다.
기본 개념
정적 라우트
정적 라우트는 목적지 네트워크를 특정 인터페이스나 다음 홉으로 고정시키는 방식이다. WireGuard에서는 피어의 AllowedIPs가 커널 라우트를 생성하거나, 호스트의 ip route 명령으로 직접 추가한다. 단순하고 예측 가능하지만 트래픽 분기나 세분화된 정책에는 한계가 있다.
정책 기반 라우팅(PBR)
정책 기반 라우팅은 소스 주소, 포트, 마크 등 조건에 따라 다른 라우팅 테이블을 선택한다. 이를 통해 동일한 호스트에서 목적지에 따라 서로 다른 터널을 사용하거나, 특정 애플리케이션 트래픽을 분리할 수 있다. ip rule, ip route, 그리고 패킷 마킹(iptables/nftables)을 조합해 구현한다.
준비 사항
- WireGuard 설치(wg, wg-quick)
- IP 포워딩 활성화(sysctl net.ipv4.ip_forward=1)
- 서로 다른 사설망 서브넷 설계(예제에서 10.10.0.0/24, 10.20.0.0/24 사용)
네트워크 설계 예시
예제를 단순화하면 다음과 같다.
- Site A: LAN 10.10.0.0/24, WireGuard 인터페이스 wg0 (10.255.1.1)
- Site B: LAN 10.20.0.0/24, WireGuard 인터페이스 wg0 (10.255.1.2)
정적 라우트 구현
가장 간단한 방식은 각 피어의 AllowedIPs에 상대 사이트 서브넷을 추가하는 것이다. 예를 들어 Site A의 구성은 다음과 같다.
[Interface]
PrivateKey = <여기에_개인키>
Address = 10.255.1.1/24
ListenPort = 51820
[Peer]
PublicKey =
Endpoint = b.example.net:51820
AllowedIPs = 10.20.0.0/24
Site B는 AllowedIPs에 10.10.0.0/24를 추가하면 서로 라우팅이 형성된다. 경우에 따라 호스트 라우트를 수동으로 추가해야 한다.
# Site A에서 수동 라우트 예시
ip route add 10.20.0.0/24 dev wg0
정책 기반 라우팅(PBR) 구현
특정 소스 또는 포트 트래픽만 터널로 보내고 싶은 경우 PBR을 사용한다. 절차 요약:
- 라우팅 테이블 추가
- 목표별 라우트 설정
- 패킷 마킹(iptables) 또는 소스 기반 룰 생성
- ip rule로 마크/소스에 따른 테이블 선택
예제: Site A에서 10.10.0.0/24의 192.168.10.50(특정 호스트)에서 발생한 트래픽만 Site B로 보낸다.
# 1. rt_tables에 100 항목 추가 (파일 편집)
echo "100 wg_b" >> /etc/iproute2/rt_tables
# 2. 라우트 테이블에 룰 추가
ip route add 10.20.0.0/24 dev wg0 table wg_b
ip route add default via 10.255.1.2 dev wg0 table wg_b
# 3. ip rule로 소스 기반 선택
ip rule add from 192.168.10.50/32 table wg_b priority 100
# 또는 마크 기반 (iptables 사용)
iptables -t mangle -A PREROUTING -s 192.168.10.50/32 -j MARK --set-mark 0x1
ip rule add fwmark 0x1 table wg_b
이렇게 하면 지정된 소스에서 발생한 패킷만 별도 테이블을 통해 wg0로 전달된다. 마크 방식은 포트나 프로토콜 기반 필터와 결합하기 유리하다.
검증 및 트러블슈팅
- wg show로 피어 연결 상태 확인
- ip route, ip rule로 라우트와 룰 확인: ip route show table wg_b, ip rule list
- tcpdump 또는 tshark로 인터페이스(wg0, eth0) 패킷 흐름 관찰
- ping과 traceroute로 경로 확인. 필요 시 sysctl 설정 확인(net.ipv4.ip_forward)
주의사항
- AllowedIPs는 반드시 중복 충돌을 피하도록 설계
- 방화벽 규칙이 터널 트래픽을 차단하지 않도록 확인
- PBR 적용 시 NAT 및 응답 경로 일관성에 유의(반대 방향도 동일하게 구성 필요)
정리
WireGuard 라우팅 설정은 목적에 따라 정적 라우트와 정책 기반 라우팅을 선택해 구성하면 된다. 정적 라우트는 단순한 사이트 간 연결에 적합하고, 정책 기반 라우팅은 소스·포트별 세분화된 경로 제어에 유리하다. 예제와 검증 절차를 따라 설정하면 WireGuard 라우팅 설정과 운영에 필요한 기본 역량을 빠르게 확보할 수 있다.