OPNsense에 Adguard 설치

OPNsense에 Adguard 설치

환경: OPNsense 22.7.x (작성일 기준 가장 최신 버전)

OPNsense를 사용하며 OPNsense에서 제공하는 Unbound DNS를 통해 Ad blocking과 DNS over TLS (DoT)를 사용하고 있었다. 하지만 Unbound DNS는 기능은 충실한데 AdGuard가 훨씬 더 좋은 사용성과 UI를 제공하기에 AdGuard를 홈 서버에 따로 설치해서 사용하고 있었다.

하지만 DNS 서버를 따로 돌리니 failure 포인트가 하나 더 생기게 되었고, 비슷한 기능을 하는 서비스끼리는 한곳에 모으고 싶었기에 OPNsense에 AdGuard 설치하는 방법을 찾아보았다. 설치와 운영 방법은 여러 가지가 있었고, 직접 사용하며 테스트해보니 지금 사용하고 있는 방법이 가장 좋았기에 여기에 기록해 놓는다.

설정 방법은 AdGuard는 기본 53 포트를 사용하고 네트워크의 모든 디바이스는 AdGuard를 통해 DNS resolve를 한다. 그리고 AdGuard는 Unbound DNS를 upstream DNS로 사용한다. 이때 Unbound DNS와는 포트 5353을 통해 통신한다. 그리고 모든 DNS 기능은 Unbound DNS를 통해 관리한다. AdGuard는 Ad blocking만 담당하게 된다.

참고로 Unbound DNS의 cache policy에 대해 알기 어려웠다. 개인적으로 Unbound DNS가 조금 느리다고 느껴졌다. DoT를 사용하기에 recursive DNS로 동작하는 것은 아니다. Prefetch를 켜주고 조금 나아진 것 같지만 Statistics에 나오는 숫자로는 cache hit이 매우 부족해 보였다. 특히 Cache 옵션을 자세히 살펴봤지만, cache policy를 여전히 알기 어려웠다.

다행히 AdGuard에서는  자체적으로 cache를 운영하고 있다. Cache hit을 위해 AdGuard의 Cache를 조금 늘려주었다. 그리고 기분 탓인가 아니면 실제로 AdGuard에서 cache 기반 DNS resolve를 잘하기 때문인가... DNS resolve 속도가 조금 빨라진 것 같다. (DNS resolve time이 줄어들기는 했으나 Unbound에서의 측정 방법과 AdGuard에서의 측정 방법이 다른 것 같아 절대 비교는 힘들다. 또한 AdGuard에서는 statistics가 자세히 안 나온다.)

OPNsense에 AdGuard 설치 방법은 다음과 같다.

Opnsense 22.7.4 Install:

1 - Activate mimugmail's community repository

2 - Install AdGuardHome from System --> Firmware --> Plugins

3 - Opnsense - System - Settings -General

      DNS Servers: empty

      Untick: Do not use the local DNS service as a nameserver for this system

      Untick: Allow DNS server list to be overridden by DHCP/PPP on WAN

4 - Services – DHCPv4 – [LAN] : DNS Servers all empty

5 – Opnsense – Services - Unbound DNS – General

       Tick: Enable Unbound ( Listen Port: 5353 )

       Tick: Enable DNSSEC Support
       
       Network Interfaces: All

6 - Opnsense - Services - Unbound - Dns Over Tls

      Server IP: 1.1.1.1

      Server Port: 853

      Verify CN: cloudflare-dns.com

7 - Open SSH Tunnel to OPNSense and edit the following config file
     
Code: [Select]
nano /usr/local/AdGuardHome/AdGuardHome.yaml

7.1 - You need to change following parts:
Code: [Select]
bind_host: 0.0.0.0
dns:
  bind_hosts:
    - 0.0.0.0

7.2 - Activate and start AdGuardHome from Services --> AdGuardHome

8 - Navigate to http://Opnsense ip:3000/ ( 127.0.0.1:3000 ) to complete the setup Adguard

9 - Adguard Home - DNS Configuration - Upstream Servers:

       Add 127.0.0.1:5353    !!!Delete those that exist!!!

10 – Adguard Home – DNS Configuration – Bootstrap DNS servers

       Add 127.0.0.1:5353    !!!Delete those that exist!!!
     
11 - Adguard Home - DNS Configuration - Private reverse DNS servers:

       Add 127.0.0.1:5353

12 - Now go Settings -> Encryption

       Pick "Encrytion activation"

       Servername = opnsensehostname.your-local-domain.tld

       Tick: "Automatic HTTPS redirect"
 
       If you want change HTTPS do it in "HTTPS-Port"

       Under Certificate choose your certificate from acme client which should be located in:

Code: [Select]
/var/etc/acme-client/home/*.your-local-domain.tld/fullchain.cer

       Under Private Key choose your certificate from acme client which should be located in:

Code: [Select]
/var/etc/acme-client/home/*.your-local-domain.tld/*.your-local-domain.tld.key

13 - Save the settings

DoT 테스트는 Cloudfare Browser Check를 통해 할 수 있다.

Ref: https://forum.opnsense.org/index.php?topic=22162.180