Commits on Source (8)
-
justus-forks authored
Add QUIC token store to dnsOverQUIC struct so that it can be (re-)used across QUIC connections. This enables avoiding the Retry mechanism and using 0-RTT in case the upstream server supports it.
-
justus-forks authored
Add a TLS 1.3 client session cache to the TLS configuration for QUIC upstreams. This enables 0-RTT.
-
justus-forks authored
Change quic.DialAddrContext to quic.DialAddrEarlyContext
-
justus-forks authored
A token store is associated with each upstream, which should mean one origin only.
-
justus-forks authored
-
justus-forks authored
-
Andrey Meshkov authored
Merge in DNS/dnsproxy from doh3 to master Squashed commit of the following: commit 93dc50875caf2df86ce08f22f5fb74e33b7b5ac0 Author: Andrey Meshkov <am@adguard.com> Date: Fri Sep 16 18:33:38 2022 +0300 fix review comments commit d19fd61eb69f31c94a9374396cbbefeb566a2163 Author: Andrey Meshkov <am@adguard.com> Date: Fri Sep 16 17:28:21 2022 +0300 upstream: added comments, minor fixes commit 9e4bf71275e9d1d3bc1cd72e27812548e8158402 Author: Andrey Meshkov <am@adguard.com> Date: Fri Sep 16 16:59:57 2022 +0300 upstream: added DoH3 support, added TLS resumption The changes are pretty considerable in this PR. First of all, DoH3 support has been added to dnsOverHTTPS. I haven't added a new type of upstream for that, but added it to the already existing one. Configuring supported HTTP versions is possible via upstream.Options. When all versions are enabled, it will "probe" both TLS and QUIC and choose the one that was faster (just like it's done in Chrome). Command-line interface now supports a new argument "http3" that is supposed to enable HTTP/3 globally. At this point it will only enable it for upstreams, but in the future it will also enable it for the DoH server. One more important change here is the introduction of TLS sessions cache. It appears that we weren't benefiting from TLS session resumption mechanism at all, thank god this is finally fixed. Finally, AddressToUpstream now supports "h3://" scheme for those who want to try DoH3 for a particular upstream without enabling it globally. The reasoning for implementing this custom scheme is the following: currently, only a small share of public resolvers fully support DoH3. Users may not want to spend time "probing" every upstream for H3. commit 8c76e435860699a2d5815fc702b7a7e928eba3ed Merge: 1145771 1dd831b0 Author: Andrey Meshkov <am@adguard.com> Date: Fri Sep 16 12:05:34 2022 +0300 Merge branch 'justus-forks-doq-0rtt' into doh3 commit 1145771f7621be5778cf14b47ccfb4aa20d07c81 Author: Andrey Meshkov <am@adguard.com> Date: Fri Sep 16 11:45:42 2022 +0300 upstream: initial attempt to add a DOH3 upstream
823fa92f -
Andrey Meshkov authored
Merge in DNS/dnsproxy from doh3server to master Squashed commit of the following: commit dd7f6ecb0264afd16ee6fcd47ff7bafe06797645 Author: Andrey Meshkov <am@adguard.com> Date: Tue Sep 20 14:17:51 2022 +0300 upstream: fix review comments commit 3b887f614163f4900f75807c990ad2a5d354d3b5 Author: Andrey Meshkov <am@adguard.com> Date: Tue Sep 20 00:14:19 2022 +0300 proxy: added address validation logic commit b29dc3c3b6746ad5be921941904f16ab228b1dab Author: Andrey Meshkov <am@adguard.com> Date: Mon Sep 19 23:31:21 2022 +0300 proxy: fix review comments, general improvements commit 79f47f54adcd30a68a9f7bc0111025ae0a32d99d Author: Andrey Meshkov <am@adguard.com> Date: Mon Sep 19 20:43:26 2022 +0300 upstream: several improvements in DoH3 and DoQ upstreams The previous implementation weren't able to properly handle a situation when the server was restarted. This commit greatly improves the overall stability. commit 59cf92b6097d78acf6f088057134888993f7ca43 Author: Andrey Meshkov <am@adguard.com> Date: Sat Sep 17 02:51:40 2022 +0300 proxy: remoteAddr for DoH depends on HTTP version now commit 804ddedd2807870b7d36dae5ce9857de3a7f7286 Author: Andrey Meshkov <am@adguard.com> Date: Sat Sep 17 01:53:32 2022 +0300 proxy: added HTTP/3 support to the DNS-over-HTTPS server implementation The implementation follows the old approach that was used in dnsproxy, i.e. it adds another bunch of "listeners", the new ones are for HTTP/3. HTTP/3 support is not enabled by default, it should be enabled explicitly by setting HTTP3 field of proxy.Config to true. The "--http3" command-line argument now controls DoH3 support on both the client-side and the server-side. There's one more important change that was made while refactoring the code. Previously, we were creating a separate http.Server instance for every listen address that's used. It is unclear to me what's the reason for that since a single instance can be used to serve on every address. This mistake is fixed now.
a03a56c8
... | ... | @@ -7,6 +7,7 @@ require ( |
github.com/ameshkov/dnscrypt/v2 v2.2.5 | ||
github.com/ameshkov/dnsstamps v1.0.3 | ||
github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0 | ||
github.com/bluele/gcache v0.0.2 | ||
github.com/jessevdk/go-flags v1.5.0 | ||
github.com/lucas-clemente/quic-go v0.29.0 | ||
github.com/miekg/dns v1.1.50 | ||
... | ... | @@ -24,6 +25,7 @@ require ( |
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect | ||
github.com/golang/mock v1.6.0 // indirect | ||
github.com/kr/text v0.2.0 // indirect | ||
github.com/marten-seemann/qpack v0.2.1 // indirect | ||
github.com/marten-seemann/qtls-go1-18 v0.1.2 // indirect | ||
github.com/marten-seemann/qtls-go1-19 v0.1.0 // indirect | ||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect | ||
... | ... |