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:
- https://openwrt.org/docs/guide-user/firewall/fw3_configurations/intercept_dns