network / knowledge

systemd를 쓸 수 없는 TrueNAS에서 WireGuard 자동 시작

paul 2026.01.18 147words (1m)

VPN이 부팅할 때 자동으로 안 올라오면 원격에서 손을 못 댄다. 재부팅 한 번에 접근 경로가 끊긴다.

보통은 한 줄이다.

console
$ systemctl enable wg-quick@wg0

PVE나 일반 리눅스는 이걸로 끝이다. 문제는 TrueNAS다. 시스템 데이터셋 밖의 systemd 유닛은 업데이트할 때 날아가고, 애초에 이런 식으로 서비스를 추가하는 걸 전제로 만들어진 시스템이 아니다.

TrueNAS는 대신 Init/Shutdown Scripts를 제공한다.

bash
#!/bin/bash

sleep 120
/usr/bin/wg-quick up /etc/wireguard/wg0.conf

System → Advanced Settings → Init/Shutdown Scripts → Add에서 이 스크립트를 POST INIT으로 등록한다.

sleep 120이 왜 필요한가

이게 없으면 실패한다. Init 스크립트가 도는 시점에 네트워크가 아직 준비되지 않았을 수 있다. wg-quick up 은 인터페이스를 만들고 라우팅을 걸어야 하는데, 그 전 단계가 안 끝나 있으면 그냥 죽는다.

systemd의 After=network-online.target 같은 의존성을 여기서는 걸 수 없으니 시간으로 때운다. 120초는 넉넉하게 잡은 값이다.

TrueNAS 자체의 부팅이 느린 편이기도 하다. 부팅 순서에서도 TrueNAS 뒤에 오는 VM에 120초 지연을 주고 있는데 같은 이유다.

wg-quick up wg0 이 아니라 conf 파일의 전체 경로를 넘겼다. 스크립트가 도는 환경에서는 wg0 이름만으로 /etc/wireguard/ 를 찾아주지 않을 수 있다.