시나리오

- 노트북: 외부에서 아무곳에서나 사용

- 중계서버: 외부 네트웍의 VPS 고정IP

- 홈서버: DDNS 사용

 

0. 용어

- 모든 컴퓨터는 하나의 서브넷으로 구성함 <WG subnet>

- WG의 interface name : wg0 (중계서버, 홈서버 간 달라도 되나 편의상)

- <DDNS> : 홈서버의 도메인 네임

- <WG subnet> : wireguard에서 사용한 subnet (Ex. 10.0.0.0/24)

- <홈 subnet> : 집 공유기가 사용하는 subnet (Ex. 192.168.0.0/24)

 

 

1. 중계서버

- 노트북의 패킷을 홈서버로 보내주려면 wg0로 포스트라우팅 필요함

PostUp = iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE
cs

/etc/wireguard/wg0.conf 의 [Interface]에 추가함.

방화벽에 영구적으로 반영해도 되나, WG 실행 중에만 의미있는 정책이라 여기에 넣음.

 

wg0로 들어온 패킷을 routing table 따라서 다시 wg0로 보내주는 것이라서 포스트라우팅에 해당하는 듯..

 

 

- 다른 peer와 달리 홈서버에 중계서버에서도 능동적으로 접속해야 하므로 endpoint 필요하고, PersistentKeepalive도 필요함

[Peer]
# 홈서버
Publickey = *****************************
AllowedIPs = <WG subnet>, <홈 subnet>
Endpoint = <DDNS>:<PORT>
PersistentKeepalive = 20
cs

 

2. 홈서버

- wg0에서 들어온 패킷을 로컬 기기로 보내주려면 홈서버 랜카드의 인터페이스로 포스트라우팅

  (중계서버의 명령어 참조)

- 중계서버 peer는 Endpoint, PersistentKeepalive 설정할 것

 

3. 노트북

- AllowedIPs에 <홈 subnet> 추가할 것