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