espressif / arduino-esp32

Arduino core for the ESP32
GNU Lesser General Public License v2.1
12.96k stars 7.28k forks source link

DNS server support for https / TLS query -- enable captive portal for android. #6645

Open LearnDude opened 2 years ago

LearnDude commented 2 years ago

Related area

DNS server - captive portal

Hardware specification

ESP32

Is your feature request related to a problem?

Captive portal for android isn't working. After connecting to the SoftAP, the DNS server receives UDP messages from iPhone and Windows devices, but not from Android devices. This is presumably because Android uses DNS over HTTPS or DNS over TLS.

iPhone test: DNS server receives ␇captive␅apple␃com and opens up the captive portal.

Windows 11 laptop test: DNS server receives a bunch of names:

␃www␏msftconnecttest␃com
␄bolt␇dropbox␃com
␃api
dropboxapi␃com
␆client␃wns␇windows␃com
␃geo␄prod␂do␃dsp␂mp microsoft␃com
␃nav␋smartscreen    microsoft␃com
␆client␃wns␇windows␃com
␇gateway␇discord␂gg
␅mtalk␆google␃com

I still need to enter local IP to see captive portal page.

Android phone (Galaxy X) test: DNS server receives nothing. Can't reach captive portal in any way.

Describe the solution you'd like

Requesting DNSServer support for DNS over HTTPS and DNS over TLS.

Describe alternatives you've considered

No response

Additional context

No response

I have checked existing list of Feature requests and the Contribution Guide

CDFER commented 1 year ago

Have you tried disabling AMPDU? https://github.com/espressif/arduino-esp32/issues/4423#issuecomment-1172296941

Have you tried it with mobile data enabled and disabled?

I'm working on a captive portal example with workarounds so it can work with any device in theory https://github.com/CDFER/Captive-Portal-ESP32