-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iOS 16 compatibility #4927
Comments
Hello and thanks for the report. I've seen some reports from iOS 16 users on Reddit who also had issues with DNS, and especially encrypted DNS. Here's some info that could shed some light:
|
Hi Ainar, Thank you for your answer. AGH accepts connections on IPv4/6, but connections seem to be partially broken at the moment for iOS16. So far, not good, because I want to know the root cause of the issue. iOS 16 ;; QUESTION SECTION: ;; ANSWER SECTION: Then some log entries I do not understand Maybe "dns?dns" is the problem here? Then some TLS requests are flying in OK, the client complains about a certificate. That's correct because it is a cert signed by internal CA. Nevertheless the client trusts the CA root cert. Bug in iOS? Seems that I cannot use DNS encryption anymore. Sadly the AGH admin interface is bound to this. Doing something similar on iPadOS 15.7 -> iOS 16 is forcing encryted DNS. // Agent Purple |
Thanks for the investigation!
It could be. We have released a fix for that in v0.108.0-a.299+4fc045de on the Edge channel. Could you please check if that version works at least a bit better?
This is already a feature request, and it's planned for v0.108. See #4671. This won't be easy, though, since both the UI and the DoH are typically on the same port. Judging by the |
Same problem here. Request is malformed: 2022/09/21 06:10:24.506276 1#1013 [debug] github.com/AdguardTeam/dnsproxy/proxy.(*Proxy).handleTCPConnection(): handling tcp: started handling tls request from [2a02:a456:da92:0:d820:7842:7264:ef2]:53841 More importantly, certificate is correct and is not self-signed. Error only is displayed for requests made by IOS16 devices. Im using v0.108.0-a.299+4fc045de |
@wgentine, your device has probably cached the previous DDR response. Try either changing the DNS settings back and forth or rebooting it.
The Perhaps, it has something to do with the algorithms used to create the certificates? Apple not accepting some weaker key lengths, for example? |
Dear @ainar-g you are right. The DoH requests after some time stopped throwing errors. However, connections to 853 (DoT) are still throwing remote error. I also thought that certificate could have been the issue as I use elliptical p384 certs but also with rsa-4096 I have got the same issue. Im almost sure that at this point this is an IOS issue. To stop impacting iOS clients, I have disabled DoT for now. |
@agent-purple, @wgentine, if I recall correctly, the additional requirement that some DDR-capable clients have is that the certificate contain the IP addresses in its SAN extension. See this guide. Which is required as an additional validation that the DDR message sent over the plain protocol wasn't forged. |
Thanks @ainar-g, that's likely the case and letsencrypt doesn't support IPs in SAN (searched and found some feature requests in the past). So, it will be a self-signed or let DoT off. |
Just in case, ZeroSSL supports IPs |
Updates AdguardTeam#4927. Squashed commit of the following: commit 8cf080d Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Sep 20 15:18:48 2022 +0300 dnsforward: fix doh template
I recently installed a letsencrypt certificate. It shows up with green success messages in the AGH config 👍 |
Some news from my side: Thank you all for your good support. Conclusion: |
@agent-purple That's curious. I managed to get DoH running with ios16 devices seamlessly without fancy stuff. Using a letsencrypt certificate but as I said before, doesn't support IP addresses in SAN which seems now to be necessary for DoT. As I'm looking for alternatives, I've disabled DoT port which also removes the respective entry from DDR response. IOS16 devices will then default to DoH. |
Not so curious if you ask me. Are you using an own CA? |
@agent-purple Im using a proper letsencrypt certificate, not a self-signed cert. The only thing out of compliance so far is that I cannot have a IP in SAN with letsencrypt. Im looking for alternatives. This is only enforced for DoT, not for DoH hence DOH works without any issues. |
Hi! Some further test with DoT inactive (thank for the hint). iOS behaves strange. Most DNS requests via IPv4 instead of IPv6... and plain port 53,,, :( Sometimes I see a request on HTTPS port. This message is confirmed to be corrected. (I did not not install any testing version, because dunno how to -> was using default installation)
Not sure if this is causing a little bit laggy behavior sometimes. |
@agent-purple some devices reads DDR config to select best suitable config some others not, hence some will come via 53, others via DoH. In regards to ipv6/ipv4, it also depends on the client, DHCP config, which addresses you are publishing etc... This parse error is the one we have been discussing in the beginning and has been corrected in the edge channel. Its a bug. |
Was there a resolution to this? I've had issues ever since I moved to iOS 16. My iPhone constantly asks if it should switch to cellular data because wifi is not working. Switching to one of my windows DNS servers resolves all these issues. I've especially noticed issues with my MFA app when I get a push notification to accept, the app says that it is taking to long to get a response from the internet. I'm using the latest version: v0.107.13, and am using a Let's Encrypt certificate. EDIT: is the solution to use the version in the Edge channel? |
Yes you can try the edge channel version. |
@ainar-g it seems we should file a bug report to Apple about this since the issue seems to be causing lots of headache. The short plan would be:
|
@ameshkov, it's up to you. I feel like since DoH is still available, it's not as critical, but we'll see. |
@ainar-g let's decide after testing it. |
Do you have an update? (Postponed the iOS 16 upgrade.) |
Apologies for the lack of updates. Here's what we have found out or done:
|
Merge in DNS/adguard-home from 4898-redirect-https to master Updates #4898. Updates #4927. Squashed commit of the following: commit bc41b6c Merge: 815e299 ac7634d Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 13:02:23 2022 +0300 Merge branch 'master' into 4898-redirect-https commit 815e299 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 12:58:28 2022 +0300 home: imp ip addr detection commit 9d4ecd9 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 31 17:23:41 2022 +0300 home: imp cyclo commit 86c47b6 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 31 15:06:05 2022 +0300 all: imp text commit bcc2569 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 31 11:47:57 2022 +0300 home: fix test commit bb51a74 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Sun Oct 30 23:23:40 2022 +0300 home: imp code commit 3852233 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 28 17:00:50 2022 +0300 home: imp code commit 7284f72 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Oct 27 19:42:57 2022 +0300 all: log changes commit 540efcb Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Oct 27 19:24:21 2022 +0300 home: imp tls
Merge in DNS/adguard-home from 4927-ddr-ip-san to master Updates #4927. Squashed commit of the following: commit 92e7498 Merge: f4770ab fa0fd90 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Nov 2 14:29:08 2022 +0300 Merge branch 'master' into 4927-ddr-ip-san commit f4770ab Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Nov 2 13:50:40 2022 +0300 dnsforward: imp logs commit 8d71371 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 20:57:43 2022 +0300 all: imp code, docs commit 9793820 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 19:37:39 2022 +0300 all: remember the cert props
@ainar-g, Have been doing some tests and realised that why querying adguard-home with kdig: kdig -d @192.168.0.1 +tls-ca www.google.com kdig -d @dns.example.com +tls-ca www.google.com it will work since its requesting via fqdn. Having said that, is there any way to announce DDR with FQDN instead? or does it break RFC? |
How can I disable DoT/encrypted DNS? On iOS or AdGurd Home? greetz |
The current warning style is rather problematic IMO, it looks like an error while it is not. I suggest removing this warning completely as it only confuses people and adds no value. The issue is specific to DDR and already handled by c139287. |
This is exactly how we do it. However, iOS 16 seem to be requiring having IP addresses in the certificate regardless. |
@ameshkov, apologies for the long wait. I agree that the UI looks bad, but I wouldn't want to remove it completely. Rather, I'd like it to be a more neutral colour, if it's really a warning and not a critical error. I wouldn't want to hide the information regarding the behaviour of AdGuard Home, especially if it depends on the user input. |
Hi all. |
Updates AdguardTeam#4927. Squashed commit of the following: commit 8cf080d Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Sep 20 15:18:48 2022 +0300 dnsforward: fix doh template
Merge in DNS/adguard-home from 4898-redirect-https to master Updates AdguardTeam#4898. Updates AdguardTeam#4927. Squashed commit of the following: commit bc41b6c Merge: 815e299 ac7634d Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 13:02:23 2022 +0300 Merge branch 'master' into 4898-redirect-https commit 815e299 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 12:58:28 2022 +0300 home: imp ip addr detection commit 9d4ecd9 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 31 17:23:41 2022 +0300 home: imp cyclo commit 86c47b6 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 31 15:06:05 2022 +0300 all: imp text commit bcc2569 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Oct 31 11:47:57 2022 +0300 home: fix test commit bb51a74 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Sun Oct 30 23:23:40 2022 +0300 home: imp code commit 3852233 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Oct 28 17:00:50 2022 +0300 home: imp code commit 7284f72 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Oct 27 19:42:57 2022 +0300 all: log changes commit 540efcb Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Oct 27 19:24:21 2022 +0300 home: imp tls
Merge in DNS/adguard-home from 4927-ddr-ip-san to master Updates AdguardTeam#4927. Squashed commit of the following: commit 92e7498 Merge: f4770ab fa0fd90 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Nov 2 14:29:08 2022 +0300 Merge branch 'master' into 4927-ddr-ip-san commit f4770ab Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Wed Nov 2 13:50:40 2022 +0300 dnsforward: imp logs commit 8d71371 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 20:57:43 2022 +0300 all: imp code, docs commit 9793820 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Tue Nov 1 19:37:39 2022 +0300 all: remember the cert props
Updates AdguardTeam#4927. Squashed commit of the following: commit 5101433 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Nov 22 15:00:13 2022 +0300 home: imp err commit fd65a99 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Mon Nov 21 18:53:39 2022 +0300 client: imp validation ui
I'm not sure where this is dev wise but a workaround that resolves the random delay is to set blocking mode to 'Custom IP' and then set it to local host (127.0.0.1 & ::1). I have no idea why this works or what Apple did to iOS but my iOS devices haven't had an issue since making this change. |
Prerequisites
I have checked the Wiki and Discussions and found no answer
I have searched other issues and found no duplicates
I want to report a bug and not ask a question
Operating system type
Linux, Other (please mention the version in the description)
CPU architecture
AMD64
Installation
GitHub releases or script from README
Setup
On one machine
AdGuard Home version
0.713.13
Description
I am running AdGuard Home in a Proxmox Container (on Debian Bullseye) since a long time without any issues.
So first of all thank you for this great product.
Last week I updated two iPhones (X and 12 Pro) to iOS 16. Since then I am facing the issue that AdGuard Home does not work properly together with the new iOS.
When I wake up a device it takes up to 20 seconds until it gets a response for a DNS request (i.e. via safari or another app).
After a lot of investigation I found, that this issue is likely related to IPv4. (Don't know why iOS prefers IPv4 DNS over IPv6)
This can also be reliably reproduced by turning wifi off and on again.
The issue does not exist for devices running iOS 15.6.1 or iPadOS 15.7!
Here some workarounds that helped me (hopefully temporarily) to come around this issue.
#1: I set up another DNSv4 server and configured it via DHCP to be used for my devices. The upstream for this temp. DNS server is AdGuard Home.
#2: I configured manual DNS settings on iOS only to use my AdGuard Home IPv6 DNS server. (This is not really a workaround.)
Let me know if you need further information like configs.
Edit: No private relay in use.
The text was updated successfully, but these errors were encountered: