-
Notifications
You must be signed in to change notification settings - Fork 66
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
QUIC support #6
Comments
I wait for a QUIC client library in pure Go from the quic-go project: quic-go/quic-go#310 (comment) |
+1 |
Started in e3f018d - works but with some issues. |
QUIC support still seems broken. Here is an example error msg i/o timeout (Client.Timeout exceeded while awaiting headers) |
So, there is a chicken and egg problem here. In order to utilize QUIC support, the QUIC crypto negotiation requires a DNS lookup, but where is that supposed to be handled if all DNS traffic is being filtered and only going over dingo? Do you see the issue? When using non-quic mode, you can set -gdns:server 1.2.3.4 or whatever IP address there to bypass the DNS lookup required to bootstrap dingo. However, there is no way to pass a static IP address to the -quic option, so when the QUIC protocol attempts to negotiate with dns.google.com, for instance, dingo attempts to perform a DNS lookup on that host. Attempting to bypass this using -gdns:sni and/or -gdns:host with a static IP will fail since the Google servers reject IP virtual hosts (for legitimate security reasons and QUIC client cannot easily verify the certificate chain). The question is, where is this QUIC DNS lookup being generated in the code (or is it in an upstream library) and can there be a bypass like the -gdns:server option to bypass the DNS lookup and pass an IP for the QUIC crypto negotiation to skip the DNS lookup? QUIC appears to be using the -gdns:host value. So, I would propose a change that when -quic is enabled, the QUIC crypto negotiation utilize the -gdns:server value if it is a static IP address in place of the QUIC DNS lookup. Or, add a separate -qdns:host option that allows setting a static IP. Which do you prefer if we were to make a patch? Or do you have a preference? |
DNS over QUIC is the reason why I started the project. Implementation would require a decent QUIC client library for Go, which I believe isn't available yet.
The text was updated successfully, but these errors were encountered: