Unraid [2부] Unraid 네트워크 최적화: AdGuard Home과 WireGuard로 만드는 광고 없는 VPN
* 본 글은 실제 Unraid 서버 운영 환경에서 철저한 검증 및 튜닝을 거쳐 작성된 실전 구축 가이드입니다.
내 집안의 모든 기기에서 광고를 원천 차단하고, 외부 외출 시에도 모바일 데이터를 통해 안전하게 나만의 홈 DNS 서버로 터널링할 수 있다면 얼마나 편리할까요? 이번 글에서는 Unraid OS를 기반으로 AdGuard Home(이하 AGH)을 구축하고, WireGuard VPN 연동 및 커널 레벨 네트워크 하드웨어 가속(BBR, MSS Clamping, Realtek 튜닝)을 통해 초고속 개인 보안 네트워크를 완성하는 전 과정을 상세히 정리해 드립니다.

⚠️ [필독] Unraid 고질병: macvlan 커널 패닉 방지 설정
AdGuard Home처럼 컨테이너에 공유기 대역의 독립 IP(`br0`/`br1`)를 부여할 때, Unraid의 기본 도커 네트워크 드라이버가 macvlan으로 되어 있으면 호스트 OS와 컨테이너 간의 패킷 충돌로 인해 서버가 통째로 멈추는(Kernel Panic/Freezing) 치명적인 오류가 발생합니다.
반드시 컨테이너 생성 전 Settings > Docker에서 Docker 서비스를 일시 중지한 뒤, Docker network driver를 ipvlan으로 변경하거나, 최신 Unraid 버전을 사용 중이라면 Host access to custom networks: Enabled를 적용해 주어야 시스템이 안전하게 유지됩니다.
1. 네트워크 환경 구축 (싱글 랜 vs 듀얼 랜)
사용자의 메인보드 및 네트워크 환경에 맞춰 컨테이너의 네트워크 통로를 결정합니다.
1-1. 싱글 랜(Single LAN) 환경
- Unraid 앱스토어에서 AdGuard Home 설치 시 네트워크를 Custom : br0로 선택합니다.
- Unraid 호스트와 동일한 내부 공유기 대역(예:
192.168.0.x)의 독립 IP를 부여받아 53번 DNS 포트 충돌 없이 깔끔하게 동작합니다.
1-2. 듀얼 랜(Dual LAN) 환경 및 메트릭(Metric) 최적화
랜 포트가 2개인 서버 보드를 사용 중이라면 eth1 포트를 DNS 및 컨테이너 전용으로 완전히 분리하여 트래픽 간섭을 제거할 수 있습니다.
- Settings > Network Settings에서 eth1 인터페이스의 Enable Bridging을 'Yes'로 설정하여 br1을 생성합니다.
- 메트릭(Metric) 우선순위 지정: 호스트 관리 통로가 뒤틀리지 않도록 eth0(관리용)의 Metric을 10, eth1(데이터/컨테이너용)의 Metric을 20으로 지정합니다. (숫자가 낮을수록 기본 게이트웨이 우선권을 갖습니다.)
2. Docker 호스트 액세스 및 영속성 설정
Unraid 호스트 자체와 다른 도커 컨테이너들이 AdGuard Home의 DNS 필터링을 정상적으로 참조할 수 있도록 브리지 통신 벽을 개방합니다.
설정 경로: Settings > Docker (Docker 서비스를 잠시 Stopped 한 뒤 수정)
- Host access to custom networks: Enabled (호스트-컨테이너 간의 독립 IP 직접 통신 허용)
- Preserve user-defined networks: Yes (도커 서비스 재시작 시 커스텀 브리지 및 서브넷 증발 방지)
3. AdGuard Home 설치 및 독립 IP 고정
Community Applications에서 AdGuard-Home 공식 컨테이너를 설치합니다. Unraid 기본 시스템이 이미 53번 DNS 포트나 80번 웹 포트를 점유하고 있으므로, 독립 IP 부여가 필수적입니다.
- Network Type: 싱글 랜은 Custom : br0, 듀얼 랜은 Custom : br1 선택
- Fixed IP Assignment: 공유기 DHCP 대역과 겹치지 않는 고정 IP 입력 (예: 단일랜
192.168.0.100/ 듀얼랜192.168.10.100)
4. WireGuard VPN 연동 및 NAT 라우팅
외부에서 모바일 기기로 Unraid의 WireGuard 터널에 진입했을 때, AdGuard Home을 거쳐 외부 인터넷으로 나갈 수 있도록 리눅스 커널의 포워딩과 NAT(MASQUERADE)를 활성화합니다.
# 1. 커널 레벨의 IP 포워딩 즉시 활성화
sysctl -w net.ipv4.ip_forward=1
# 2. WireGuard 기본 대역(10.253.0.0/24) 및 AGH 컨테이너 대역의 NAT 활성화
iptables -t nat -A POSTROUTING -s 10.253.0.0/24 ! -d 10.253.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE
5. 하드웨어 가속 및 패킷 최적화 (Realtek & BBR)
Realtek(r8169/r8125) 계열 내장 랜카드의 드라이버 결함으로 인한 패킷 드롭을 방지하고, VPN 통신의 지연 시간(RTT)을 극적으로 줄여주는 필수 튜닝입니다.
5-1. 하드웨어 오프로딩 해제 (Realtek 버그 방지)
Realtek 랜카드는 TSO/GSO 오프로딩 기능 활성화 시 패킷이 비정상 폐기되는 버그가 잦습니다. 이를 소프트웨어 레벨에서 안정적으로 처리하도록 끕니다.
ethtool -K eth0 tso off gso off gro off
ethtool -K eth1 tso off gso off gro off 2>/dev/null
5-2. Google BBR 알고리즘 및 MSS Clamping 적용
구글의 BBR(Bottleneck Bandwidth and RTT) 혼잡 제어 엔진을 활성화하여 패킷 손실률이 높은 외부 LTE/5G 환경에서도 최대 업로드/다운로드 속도를 유지하며, VPN 터널 특유의 MTU 초과 드롭 현상을 MSS Clamping으로 원천 차단합니다.
# TCP BBR 혼잡 제어 알고리즘 가동
sysctl -w net.core.default_qdisc=fq
sysctl -w net.ipv4.tcp_congestion_control=bbr
# MSS Clamping (WireGuard MTU 패킷 단편화 및 웹페이지 멈춤 방지)
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
6. 자동화 설정: User Scripts (중복 등록 방지 멱등성 적용)
서버 재부팅 시마다 수동 입력할 필요 없이 자동으로 최적화되도록 User Scripts 플러그인에 등록합니다. 단순 -A 명령을 반복 실행하면 iptables 규칙이 수십 개로 증식하므로, 규칙 존재 여부를 체크(-C)하여 단 1회만 스마트하게 적용되는 멱등성 스크립트를 사용합니다.
User Scripts 등록 절차
- Unraid 웹 GUI → Settings > User Scripts 이동
- Add New Script 클릭 → 이름:
Network-Hardware-Acceleration입력 - 스케줄을 At Startup of Array로 지정 후 아래 코드를 저장합니다.
#!/bin/bash
# ----------------------------------------------------------------
# Unraid 네트워크 하드웨어 가속 및 WireGuard NAT 자동화 스크립트
# ----------------------------------------------------------------
# 1. 커널 파라미터 최적화 (IP 포워딩 및 BBR 가동)
sysctl -w net.ipv4.ip_forward=1 >/dev/null
sysctl -w net.core.default_qdisc=fq >/dev/null
sysctl -w net.ipv4.tcp_congestion_control=bbr >/dev/null
# 2. WireGuard 및 AGH 대역 NAT 마스커레이드 (중복 등록 방지)
WG_NET="10.253.0.0/24"
AGH_NET="192.168.10.0/24"
iptables -t nat -C POSTROUTING -s $WG_NET ! -d$WG_NET -j MASQUERADE 2>/dev/null || \
iptables -t nat -A POSTROUTING -s $WG_NET ! -d$WG_NET -j MASQUERADE
iptables -t nat -C POSTROUTING -s $AGH_NET ! -d$AGH_NET -j MASQUERADE 2>/dev/null || \
iptables -t nat -A POSTROUTING -s $AGH_NET ! -d$AGH_NET -j MASQUERADE
# 3. MSS Clamping 적용 (터널 MTU 패킷 단편화 방지)
iptables -t mangle -C FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 2>/dev/null || \
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# 4. Realtek 내장 랜카드 오프로딩 안전 해제
for iface in eth0 eth1; do
if [ -d "/sys/class/net/$iface" ]; then
ethtool -K $iface tso off gso off gro off >/dev/null 2>&1
fi
done
echo "✅ [$(date)] Unraid Network & Hardware Acceleration Applied Successfully!"
7. AdGuard Home 프로덕션 베스트 세팅
국내 통신사(SKB 등)의 느린 해외 DNS 피어링을 극복하고, 구글 검색 시 봇 의심(reCAPTCHA)을 최소화하면서 0ms에 수렴하는 응답 속도를 뽑아내는 프로덕션 설정입니다.
⚙️ [설정 > DNS 설정] 최적화 세팅
1. 업스트림 DNS 서버 (Upstream DNS Servers):
일반 웹서핑은 국내 피어링이 가장 빠른 Cloudflare 초고속 DoH/DoT로 처리하고, 구글 검색 트래픽만 구글 전용 DoH로 격리 포워딩합니다.
# 일반 초고속 보안 업스트림
https://dns.cloudflare.com/dns-query
tls://1.1.1.1
# 구글 서비스 전용 격리 라우팅 (봇 캡차 완화)
[/google.com/]https://dns.google/dns-query
[/google.co.kr/]https://dns.google/dns-query
[/gstatic.com/]https://dns.google/dns-query
[/1e100.net/]https://dns.google/dns-query
2. 업스트림 모드: '병렬 요청(Parallel requests)' 선택 (동시 질의 중 가장 빠른 응답 즉시 채택)
3. EDNS 클라이언트 서브넷(ECS): 체크(활성화) (글로벌 CDN 및 검색 엔진에 로컬 위치 힌트 제공)
4. DNS 캐시 설정 (체감 지연 0ms의 핵심):
- 캐시 크기:
67108864(64MB 권장) - 낙관적 캐싱 (Optimistic caching): 체크(활성화) (TTL이 만료되어도 로컬 캐시로 0.1ms 만에 즉시 클라이언트에 응답하고 백그라운드 갱신)
5. 권장 차단 필터 목록:
- AdGuard Base Filter
- AdGuard Tracking Protection Filter
- AdGuard Korean filter (국내 포털 및 언론사 전용)
- YousList (국내 동영상 및 웹 환경 최적화)
8. WireGuard 클라이언트 자동 연결 및 DNS 지정
이제 각 사용자 기기(스마트폰, 랩톱)에서 생성된 터널 프로필을 통해 항상 광고 없는 네트워크에 연결되도록 마무리 설정을 진행합니다.
8-1. 클라이언트 설정 파일(*.conf) 핵심 체크
클라이언트 설정의 [Interface] 섹션에서 DNS 주소를 방금 구축한 AdGuard Home의 고정 IP로 지정해야 모든 트래픽의 DNS가 필터링망을 거치게 됩니다.
[Interface]
PrivateKey = [클라이언트 개인키]
Address = 10.253.0.2/24
DNS = 192.168.0.100 # <--- 본인의 AdGuard Home 고정 IP 지정!
[Peer]
PublicKey = [Unraid WireGuard 서버 공개키]
Endpoint = [서버 공인 도메인]:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
8-2. OS별 무중단 자동 연결 (Always-On) 설정
- Windows: 관리자 권한 명령 프롬프트에서 터널을 윈도우 백그라운드 서비스로 등록합니다.
wireguard.exe /installtunnelservice "C:\Path\To\HomeVPN.conf" - Android: 설정 > 연결 > 기타 연결 설정 > VPN > WireGuard 설정 아이콘 > '항상 켜져 있는 VPN' 활성화
- iOS / macOS: WireGuard 앱 내 프로필 편집 > 'On-Demand Activation (온디맨드 활성화)' > Wi-Fi 및 Cellular 모두 활성화
마치며
이제 집안의 홈 네트워크는 물론, 외부 이동 중에도 안전하게 Unraid 서버로 암호화 터널링되어 광고 없는 초고속 웹 서핑을 즐길 수 있는 개인 맞춤형 인프라가 완성되었습니다.
하지만 국내 인터넷망을 이용하다 보면 통신사의 강력한 SNI 패킷 검열로 인해 일부 정상적인 해외 사이트나 개발 포털이 차단되는 문제에 부딪히게 됩니다. 다음 3편에서는 이 네트워크 위에 국내 통신사의 DPI 차단을 0ms 지연 시간으로 완벽히 무력화하는 Zapret Docker 구축 및 인텔 12700H 빅리틀 하드웨어 가속 심화 가이드를 다루겠습니다.