Set up AdGuard, DNS menu gone & no DHCP

Hello,

Excited to join the open router community!

Yesterday I set up a GL-MT6000, it worked flawlessly? A better experience than most commercial routers OSes I've had.

My setup is a Motorola MB7621 using DOCSIS3 cable modem, connected to broadband coax, and its ethernet plugged into the WAN jack of the GL-MT6000

I followed the GL-MT6000 page, used the OpenWRT quick start guide, all was well.

Then I followed the guide for AdGuard setup, which replaced the dnsmasq DHCP with odhcpd, and following that, DHCPv4 stopped working, and the DNS menu kept displaying an error:
"TypeError Cannot read properties of null (reading 'remove')

I checked to see if DHCPv4 was even listening on a port via netstat, it is not.

This morning I went to log back in and the DNS menu is completely gone from the Network menu.

I'm also seeing this in the System Log:

[Jun 26, 2026, 1:54:29 AM UTC] daemon.err: odhcpd[12482]: Invalid dns value configured for interface 'lan'
[Jun 26, 2026, 1:54:30 AM UTC] daemon.warn: odhcpd[12482]: No default route present, setting ra_lifetime to 0!
[Jun 26, 2026, 1:54:46 AM UTC] daemon.warn: odhcpd[12482]: No default route present, setting ra_lifetime to 0!
[Jun 26, 2026, 1:55:02 AM UTC] daemon.warn: odhcpd[12482]: No default route present, setting ra_lifetime to 0!

EDIT: Forgot to mention, I got a little overzealous and thought maybe the fix was to remove dnsmasq entirely, so I did an apk delete dnsmasq.

Am I borked? If not, any ideas?

/etc/config/dhcp contents

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv4 'server'
        option dhcpv6 'server'
        option ra 'server'
        list ra_flags 'managed-config'
        list ra_flags 'other-config'
        option ra_preference 'medium'
        list dhcp_option '3,'
        list dhcp_option '6,'
        list dhcp_option '15,lan'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '1'
        option leasefile '/tmp/odhcpd.leases'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'
        option piodir '/tmp/odhcpd-piodir'
        option hostsdir '/tmp/hosts'

Did you update any packages post install?

Not manually, I did do apk update.

Do you mean Adguard Home (current version is approx. 0.107.76-r1) or something different? Which installation guide did you follow?
I'm using AGH on my Bpi-R3 and there hasn't been a switch from dnsmasq to odhcpd.

Really just an apk update, not an apk upgrade?

Yes, AdGuard home.

I followed here:

I'm unfamiliar with BusyBox/OpenWRT so I don't know the idioms here, is that comment necessary?

None of the guides I read (might have missed) showed anything other than apk update.

apk update only refreshes the package index; apk upgrade is the one people worry about on OpenWrt, so that question is just ruling out a common cause. For DHCP I would first get LAN clients working again with dnsmasq, then add AdGuard Home as DNS after the network is stable. Can you paste the exact wiki section/commands you followed and your /etc/config/dhcp? The “Invalid dns value configured for interface lan” line sounds more like a config issue than the GL-MT6000 itself.

Thanks, and for sure.

I just realized what I did, I followed the first 1/2 of this guide:

But only did the odhcpd portion, and used apk instead of opkg (as my understanding was this was the proper way to do it on the current version of OpenWRT).

My intent was to avoid having 2 DNS servers running to minimize resource use, as the AdGuard guide has you just set the port for dnsmasq' DNS to 54 but leaves the server running for internal resolution.

EDIT: DHCP config should be in the first post, for the commands:

apk update
apk add adguardhome
service adguardhome enable
service adguardhome start

# Get the first IPv4 and IPv6 Address of the router LAN interface and store them in following variables for use during the script.
dev=$(ifstatus lan | grep \"device | awk '{ print $2 }' | sed 's/[",]//g')
NET_ADDR=$(/sbin/ip -o -4 addr list $dev | awk 'NR==1{ split($4, ip_addr, "/"); print ip_addr[1]; exit }')
NET_ADDR6=$(/sbin/ip -o -6 addr list $dev scope global | awk '$4 ~ /^fd|^fc/ { split($4, ip_addr, "/"); print ip_addr[1]; exit }')
echo "Router IPv4 : ""${NET_ADDR}"
echo "Router IPv6 : ""${NET_ADDR6}"

# 1. Move dnsmasq to port 54.
# 2. Set local domain to "lan".
# 3. Add local '/lan/' to make sure all queries *.lan are resolved in dnsmasq;
# 4. Add expandhosts '1' to make sure non-expanded hosts are expanded to ".lan";
# 5. Disable dnsmasq cache size as it will only provide PTR/rDNS info, making sure queries are always up to date (even if a device internal IP change after a DHCP lease renew).
# 6. Disable reading /tmp/resolv.conf.d/resolv.conf.auto file (which are your ISP nameservers by default), you don't want to leak any queries to your ISP.
# 7. Delete all forwarding servers from dnsmasq config.
uci set dhcp.@dnsmasq[0].port="54"
uci set dhcp.@dnsmasq[0].domain="lan"
uci set dhcp.@dnsmasq[0].local="/lan/"
uci set dhcp.@dnsmasq[0].expandhosts="1"
uci set dhcp.@dnsmasq[0].cachesize="0"
uci set dhcp.@dnsmasq[0].noresolv="1"
uci -q del dhcp.@dnsmasq[0].server

# Delete existing config ready to install new options.
uci -q del dhcp.lan.dhcp_option
uci -q del dhcp.lan.dns

# DHCP option 3: Specifies the gateway the DHCP server should send to DHCP clients.
uci add_list dhcp.lan.dhcp_option='3,'"${NET_ADDR}"

# DHCP option 6: Specifies the DNS server the DHCP server should send to DHCP clients.
uci add_list dhcp.lan.dhcp_option='6,'"${NET_ADDR}" 

# DHCP option 15: Specifies the domain suffix the DHCP server should send to DHCP clients.
uci add_list dhcp.lan.dhcp_option='15,'"lan"

# Set IPv6 Announced DNS
uci add_list dhcp.lan.dns="$NET_ADDR6"

uci commit dhcp
service dnsmasq restart
service odhcpd restart
exit 0

apk update
apk delete dnsmasq odhcpd-ipv6only
apk add odhcpd
uci -q delete dhcp.@dnsmasq[0]
uci set dhcp.lan.dhcpv4="server"
uci set dhcp.odhcpd.maindhcp="1"
uci commit dhcp
service odhcpd restart

Not related to your current issue, but something you might run into down the road, OOMs - AdGuard Home memory spike during filter update causing router crash on GL-MT6000 Flint 2 (OpenWrt v25.12.2).

Thanks for this!

Thanks all who took a look, I decided to go ahead and firstboot -y, I'll try the Adguard tutorial again and update.

If the only thing you are after is adblocking and secure DNS then there are easier options like one of our fine adblock apps and https- dns-proxy
Adguard is a resource hog but it has a shiny interface

Hi, is not an answer to your question, just to share my experience after some tests with different add blockers. I have the same router, using "Technitium DNS Server", which offers also DNS-over-HTTPS. At the end easy to install:

  1. Docker following Howto on OpenWRT website
  2. Technitium container have to be configured running in host mode !
  3. You have to add 6,182.168.x.x to DHCP settings of your LAN interface
  4. Network => DHCP & DNS => DNS server port => change that to e.g. 5353, so your Technitium will be used by each traffic

Works like a charme, very good blocking with flexible lists and more secure through DNS-over-HTTPS and flexible. GL-MT6000 has enough power and memory space for it.