DoH proxy: https-dns-proxy new RFC8484-supporting package and Web UI

For the IPv6 instance please add option force_ipv6_resolvers ‘1’.

If that works as well as I hope it does, let me know if you’re willing to amend the README. :wink:

@stangri Is there any way to force https-dns-proxy to return only DNS A records for IPv4 resolvers / instances and only DNS AAAA records for IPv6 resolvers / instances ?

No dice. What is this option expected to do? It is not documented.

Looks like I also needed option force_ipv6 ‘1’

That's not a valid config option name (it's only an internal variable name in the script), but maybe restarting https-dns-proxy again fixed it from the previous attempt.

Which one? force_ipv6 is documented here: https://docs.openwrt.melmac.ca/https-dns-proxy/

force_ipv6_resolvers is the correct one, at least in the instance definitions. force_ipv6 is wrong in the documentation as best I can tell.

Post the config again please.

You were right: it is working now without force_ipv6. I must have made a mistake the first time around. I now see IPv6 bootstrap IP on the command line and netstat shows a IPv6 connection established. All good now.

2 Likes

Hi and thanks for this easy to implement doh solution!
I force a reconnect with ifup waninterface at around 3:00 am, since my isp would do that for me anyway. Recently i found out that i dont have working dns for about an hour after that in my network. dns calls just time out. I have to do service https-dns-proxy restart and then it starts working again. Is that expected behaviour? I would expect the service to take note of the wan interface reconnecting.

It would hung up randomly for me too a few times a week without restarting any interfaces or doing anything on the router at all. I migrated to stubby a week ago and not a single issue so far.

Yep, it's just make and forget type of software.

Guys, how do we use the “Filters” field in the configuration of a certain provider like RethinkDNS for instance. Its empty so what should be put there. RethinkDNS just gives you a DoH url based on your configuration

update: ok i think i got it, its the last part added to the given url

Hi @stangri, I have compiled curl with http/3 support.
checking Nextdns logs, if selected option is use negotiated http version it still uses http2.

i need to include option force_http3 for it to use http3.
is this normal behavior?

1 Like

Speaking of libcurl build options, I think you may have to remove/rethink Quad9 in the templates, given they apparently shut down http/1.1 support on their DoH resolver a few days ago. leave a note for 24.10 users to upgrade their images.

1 Like

It should still use HTTP/2, no?

root@router:~# curl -v https://dns9.quad9.net/dns-query
> GET /dns-query HTTP/2
> Host: dns9.quad9.net
> User-Agent: curl/8.12.1
> Accept: */*
> 
< HTTP/2 400 
< content-type: text/plain; charset=utf-8
< content-length: 23
< 

Ah, I was looking at the Makefile for curl tagged for 24.10 when I looked into this.

It should work for snapshot builds newer than 4 months ago + the upcoming 25.12 release just fine then.

Anyone on 24.10 release builds will have to upgrade at some point, but given that it’s not one of the two default resolvers, it shouldn’t affect too many people. (Nor would I suspect that they would be running a single resolver without fallback)

What’s the output of curl -V?

curl 8.15.0 (aarch64-openwrt-linux-gnu) libcurl/8.15.0 OpenSSL/3.5.4 nghttp2/1.66.0 ngtcp2/1.15.0 nghttp3/1.11.0
Release-Date: 2025-07-16
Protocols: file ftp ftps http https mqtt
Features: alt-svc HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile SSL threadsafe UnixSockets

I’m not sure with package update caused the “hdp.getRuntime is not a function“ error on the Luci Overview interface, pbr or https-dns-proxy since i updated both at same time today, previously was using their last previous version.

opkg files luci-base | grep -i "hdp|runtime" gives back: /usr/share/ucode/luci/runtime.uc

Is there a way to go back to the previous version of the package? If so how, can someone show me.

@stangri OpenWrt’s curl package used by https-dns-proxy is no longer maintained.

1 Like