sumarsono.com
Take it with a grain of salt


Openwrt Adguardhome Dns Hijack

Posted on

Aku punya router Openwrt 21.02.1, adapun yang terhubung ke lan openwrt: Raspbery Pi 3B, Laptop, dan HP. Aku menjadikan Raspbery Pi sebagai server kecil, memanfaatkan cloudflare argo tunnel dan docker. Salah satu aplikasi yang aku pasang di raspbery pi adalah AdGuardHome. Aku memasang AdGuardHome menggunakan docker compose:

version: '3.3'
services:
    adguardhome:
        container_name: adguardhome
        restart: unless-stopped
        volumes:
            - './workdir:/opt/adguardhome/work'
            - './confdir:/opt/adguardhome/conf'
        network_mode: host
        image: adguard/adguardhome

Sekarang, aku ingin semua query dns yang masuk ke router Openwrt dihandle oleh AdGuardHome yang ada di Raspbery Pi. Aku sudah set dhcp option untuk assign ip address raspbery pi sebagai dns ke klien, wan dns juga sudah diarahkan ke raspbery pi, dnsmasq juga sudah forward ke raspbery pi. Tapi hasilnya kurang memuaskan, banyak query yang gak lewat AdGuardHome.

Setelah membaca wiki openwrt, aku menemukan cara untuk hijack dns melalui firewall openwrt. Begini caranya:

# Intercept DNS traffic
uci -q delete firewall.dns_int
uci set firewall.dns_int="redirect"
uci set firewall.dns_int.name="Intercept-DNS"
uci set firewall.dns_int.src="lan"
uci set firewall.dns_int.src_dport="53"
uci set firewall.dns_int.proto="tcp udp"
uci set firewall.dns_int.target="DNAT"
uci commit firewall
/etc/init.d/firewall restart

# Configure firewall to exclude the local DNS server from the interception rule
uci set firewall.dns_int.src_mac="!00:11:22:33:44:55"
uci commit firewall
/etc/init.d/firewall restart

Ganti 00:11:22:33:44:55 dengan MAC address Raspbery Pi yang digunakan

Dan Boom, cek di https://dnsleaktest.com/ dns sudah sesuai dengan yang di set di AdGuardHome.

Referensi: