diff --git a/Dockerfile b/Dockerfile index ad290b0d..699f4dab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -170,7 +170,8 @@ ENV VPN_SERVICE_PROVIDER=pia \ DNS_SERVER=on \ DNS_UPSTREAM_RESOLVER_TYPE=DoT \ DNS_UPSTREAM_RESOLVERS=cloudflare \ - DNS_PRIVATE_ADDRESSES=127.0.0.1/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,::1/128,fc00::/7,fe80::/10,::ffff:7f00:1/104,::ffff:a00:0/104,::ffff:a9fe:0/112,::ffff:ac10:0/108,::ffff:c0a8:0/112 \ + DNS_BLOCK_IPS= \ + DNS_BLOCK_IP_PREFIXES=127.0.0.1/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,::1/128,fc00::/7,fe80::/10,::ffff:7f00:1/104,::ffff:a00:0/104,::ffff:a9fe:0/112,::ffff:ac10:0/108,::ffff:c0a8:0/112 \ DNS_CACHING=on \ DNS_UPSTREAM_IPV6=off \ BLOCK_MALICIOUS=on \ diff --git a/internal/configuration/settings/dnsblacklist.go b/internal/configuration/settings/dnsblacklist.go index f1828449..0d770329 100644 --- a/internal/configuration/settings/dnsblacklist.go +++ b/internal/configuration/settings/dnsblacklist.go @@ -149,8 +149,7 @@ func (b *DNSBlacklist) read(r *reader.Reader) (err error) { return err } - b.AddBlockedIPs, b.AddBlockedIPPrefixes, - err = readDNSPrivateAddresses(r) // TODO v4 split in 2 + b.AddBlockedIPs, b.AddBlockedIPPrefixes, err = readDNSBlockedIPs(r) if err != nil { return err } @@ -160,12 +159,35 @@ func (b *DNSBlacklist) read(r *reader.Reader) (err error) { return nil } -var ErrPrivateAddressNotValid = errors.New("private address is not a valid IP or CIDR range") - -func readDNSPrivateAddresses(reader *reader.Reader) (ips []netip.Addr, +func readDNSBlockedIPs(r *reader.Reader) (ips []netip.Addr, ipPrefixes []netip.Prefix, err error, ) { - privateAddresses := reader.CSV("DOT_PRIVATE_ADDRESS") + ips, err = r.CSVNetipAddresses("DNS_BLOCK_IPS") + if err != nil { + return nil, nil, err + } + ipPrefixes, err = r.CSVNetipPrefixes("DNS_BLOCK_IP_PREFIXES") + if err != nil { + return nil, nil, err + } + + // TODO v4 remove this block below + privateIPs, privateIPPrefixes, err := readDNSPrivateAddresses(r) + if err != nil { + return nil, nil, err + } + ips = append(ips, privateIPs...) + ipPrefixes = append(ipPrefixes, privateIPPrefixes...) + + return ips, ipPrefixes, nil +} + +var ErrPrivateAddressNotValid = errors.New("private address is not a valid IP or CIDR range") + +func readDNSPrivateAddresses(r *reader.Reader) (ips []netip.Addr, + ipPrefixes []netip.Prefix, err error, +) { + privateAddresses := r.CSV("DOT_PRIVATE_ADDRESS", reader.IsRetro("DNS_BLOCK_IP_PREFIXES")) if len(privateAddresses) == 0 { return nil, nil, nil }