피드로 돌아가기
Dev.toInfrastructure
원문 읽기
systemd-networkd 기반의 Declarative WireGuard 설계로 설정 관리 최적화
Stop Rolling Your Own VPN Configs: Practical WireGuard with systemd-networkd on Linux
AI 요약
Context
기존 wg-quick 기반의 VPN 설정 방식은 Ad-hoc 파일 구조와 PostUp/PostDown 스크립트 의존성으로 인해 자동화 환경에서 관리 복잡성이 증가함. 특히 재부팅 후 설정 유지 및 시스템 서비스와의 통합 부족으로 인한 운영 오버헤드가 발생함.
Technical Solution
- wg-quick 의존성을 제거하고 systemd-networkd를 통한 Declarative 유닛 기반의 네트워크 제어 구조 설계
- .netdev 파일을 통한 WireGuard 인터페이스 정의와 .network 파일을 통한 IP 할당 로직을 분리하여 설정의 관심사 분리 구현
- PrivateKeyFile 지시어를 활용해 유닛 파일 내부의 Private Key 노출을 방지하고 전용 파일 기반의 엄격한 권한 관리 체계 구축
- systemd-resolved 및 networkctl과의 네이티브 통합을 통한 DNS 설정 간소화 및 Observability 확보
- nftables Masquerade 규칙 적용으로 VPN 클라이언트의 외부 트래픽 포워딩을 위한 L3 라우팅 경로 최적화
- networkctl reload 명령어를 통한 서비스 중단 없는 런타임 설정 업데이트 메커니즘 적용
실천 포인트
- WireGuard 설정 시 Private Key를 유닛 파일에 직접 기입하지 않고 전용 파일(chmod 0440)로 분리했는지 확인 - 단순 VPN 연결을 넘어 systemd-networkd 기반의 Declarative 설정을 통해 IaC(Ansible, Git) 적용 가능성을 검토 - 커널 네이티브 WireGuard 모듈 사용 여부를 확인하여 불필요한 DKMS 설치 프로세스 제거 - nftables를 활용한 Masquerade 설정으로 효율적인 트래픽 포워딩 아키텍처 구성