v1.6.0

qdm12/dnsv1.6.0Apr 7, 2021by qdm12

AI Summary

Feature-rich release introducing DoT/DoH support and major architectural refactoring.

Key Highlights

  • Introduction of DoT and DoH packages
  • New DoT providers (CIRA, Quad9)
  • Major package restructuring (cache, blacklist, provider)
  • Upgraded Unbound and Alpine

New Features

  • New DoT providers (CIRA family, CIRA private, Quad9 secured, Quad9 unsecured)
  • DoT resolver and DoT DNS server support
  • DoH resolver and DoH DNS server support
  • LRU based caching for DNS servers
  • Hostnames, IPs, and IP networks blocking capabilities

Full Release Notes

## Bug fixes

- Fix unbound loop logic sometimes running two Unbound instances
- Fix restart logic in unbound loop
- Fix proper exit on crash in unbound loop

## Features

- New DoT providers
    - `cira family`
    - `cira private`
    - `quad9 secured`
    - `quad9 unsecured`
- Upgrade from Alpine 3.12 to 3.13
- Upgrade from Unbound 1.10.1 to 1.13.0
- `CHECK_UNBOUND` renamed to `CHECK_DNS` (retro-compatibility maintained)

## Maintenance

- Remove duplicate signal logic in main.go
- Update logging library included in golibs
- Always use DNSSEC validation for Unbound as all providers support it
- Remove `pkg/models` type aliases
- Use `pkg/provider` and remove `pkg/models` (`ProviderData`)
- Remove unused PUID and PGID for Unbound
- Move Unbound `Settings` to `pkg/unbound` package
- Move `Username` to `pkg/unbound`'s `Settings`
- Move all settings parsing, setting and validation in the `internal/config` package

## Go API

- `pkg/dot` package
    - DoT resolver
    - DoT DNS server
    - Support for both IPv4 and IPv6 DoT/DNS upstream server IP addresses
    - Option to fallback on plain DNS on failure
    - Thread safe cycling operation for all settings (service providers, service IP addresses etc.)
    - Specify DNS server listening port
- `pkg/doh` package
    - DoH resolver (using the DoT resolver to resolve the DoH url)
    - DoH DNS server
    - Thread safe cycling operation for all settings (service providers, service IP addresses etc.)
    - Specify DNS server listening port
- `pkg/provider` package
    - All providers DNS, DoT and DoH information
    - Add more providers
- `pkg/cache` package
    - LRU based caching for DNS servers
    - Used by `pkg/dot` and `pkg/doh`
- `pkg/blacklist`
    - Hostnames blocking
    - IPs blocking
    - IP networks blocking
    - Blocklist building with `BuilderSettings`
- Mocks generated for all new packages
- `examples/` directory with example main.go for DoT and DoH resolvers and DNS servers