mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-15 19:31:45 +03:00
d58772f177
Merge in DNS/adguard-home from 3290-docker-healthcheck to master Updates #3290. Squashed commit of the following: commit 3ac8f26c1c22855d973910fd13c096776aa8dfa6 Merge: bc17565f0df32601
Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Mon Mar 27 01:09:03 2023 +0500 Merge branch 'master' into 3290-docker-healthcheck commit bc17565fcb5acba68129734450fb08b4fe341771 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Sun Mar 26 18:04:08 2023 +0500 all: fix script commit e150fee8025dacdc5aa1d12916d1f42e89216156 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Sun Mar 26 17:18:12 2023 +0500 all: imp naming commit 26b6448d10af39f8363eadd962af228a9d4ae51d Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Sun Mar 26 03:13:47 2023 +0500 all: support https web commit b5c09ce8b2ac52d6e47a00f76125bee229f616a0 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Sat Mar 25 20:03:45 2023 +0500 all: imp scripts fmt, naming commit 8c3798c46974e48cc0c379c2ecc46a6d8d54164b Merge: e33b0c5cfb7b8bba
Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Sat Mar 25 00:25:38 2023 +0500 Merge branch 'master' into 3290-docker-healthcheck commit e33b0c5cbfe5a28b29734c9ceee046b0f82a0efe Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Mar 24 16:47:26 2023 +0500 all: fix docs commit 57bfd898b9c468b2b72eba06294ed5e5e0226c20 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Mar 24 16:44:40 2023 +0500 dnsforward: add special-use domain handling commit f04ae13f441a25d0b4dc1359b328552f7507fc23 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Mar 24 16:05:10 2023 +0500 all: imp code commit 32f150f88390320d2da85b54e27f6c751eccb851 Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Mar 24 04:19:10 2023 +0500 all: mv Dockerfile, log changes commit a094a44ccfa26988f0e71f19288e08b26e255e2b Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Fri Mar 24 04:04:27 2023 +0500 all: finish scripts, imp names commit 4db0d0e7cb7ed69030994bc1b579534dd2c3395d Author: Eugene Burkov <E.Burkov@AdGuard.COM> Date: Thu Mar 23 18:33:47 2023 +0500 docker: add script and awk program
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package dnsforward
|
|
|
|
import (
|
|
"net"
|
|
"net/netip"
|
|
|
|
"github.com/AdguardTeam/dnsproxy/proxy"
|
|
)
|
|
|
|
// setupDNS64 initializes DNS64 settings, the NAT64 prefixes in particular. If
|
|
// the DNS64 feature is enabled and no prefixes are configured, the default
|
|
// Well-Known Prefix is used, just like Section 5.2 of RFC 6147 prescribes. Any
|
|
// configured set of prefixes discards the default Well-Known prefix unless it
|
|
// is specified explicitly. Each prefix also validated to be a valid IPv6
|
|
// CIDR with a maximum length of 96 bits. The first specified prefix is then
|
|
// used to synthesize AAAA records.
|
|
func (s *Server) setupDNS64() {
|
|
if !s.conf.UseDNS64 {
|
|
return
|
|
}
|
|
|
|
if len(s.conf.DNS64Prefixes) == 0 {
|
|
// dns64WellKnownPref is the default prefix to use in an algorithmic
|
|
// mapping for DNS64.
|
|
//
|
|
// See https://datatracker.ietf.org/doc/html/rfc6052#section-2.1.
|
|
dns64WellKnownPref := netip.MustParsePrefix("64:ff9b::/96")
|
|
|
|
s.dns64Pref = dns64WellKnownPref
|
|
} else {
|
|
s.dns64Pref = s.conf.DNS64Prefixes[0]
|
|
}
|
|
}
|
|
|
|
// mapDNS64 maps ip to IPv6 address using configured DNS64 prefix. ip must be a
|
|
// valid IPv4. It panics, if there are no configured DNS64 prefixes, because
|
|
// synthesis should not be performed unless DNS64 function enabled.
|
|
func (s *Server) mapDNS64(ip netip.Addr) (mapped net.IP) {
|
|
pref := s.dns64Pref.Masked().Addr().As16()
|
|
ipData := ip.As4()
|
|
|
|
mapped = make(net.IP, net.IPv6len)
|
|
copy(mapped[:proxy.NAT64PrefixLength], pref[:])
|
|
copy(mapped[proxy.NAT64PrefixLength:], ipData[:])
|
|
|
|
return mapped
|
|
}
|