Releases: Control-D-Inc/ctrld
Releases · Control-D-Inc/ctrld
Release v1.3.1
Minor Release
This is a minor release with new features, some performance improvements, and various bug fixes.
Added
- Support the hosts file as a source for resolving hostnames.
- Including the OS version in the DoH header.
- Including the client's IP address when ctrld is an upstream of dnsmasq.
Improved
- Making PTR lookup failures less noisy for users.
- Upgrading quic-go to v0.38.0
- ctrld now generates a working default configuration in both cd and local mode.
- Using
/etc/version
to detect a UniFi Gateway. - The general performance and stability of ctrld:
- All upstreams are monitored to prevent high resource consumptions in case of outage.
- Guarding against DNS loops.
- Reporting error when
--cd/--cd-org
is set to empty string.
Fixed
- Service restart loop in EdgeOS.
- Using Control D bootstrap DNS for the OS resolver, fixed #59.
- Fix the default route IP address with the public interface.
- Fix the setting of DNS so that it takes effect in some cloud providers with systemd-resolved.
- Fix
ctrld
home directory created randomly with windows RMM.
Release v1.3.0
Major Release
This is a major release that may have breaking changes with existing configs in some narrow edge cases, especially if deploying custom configs via Control D web interface.
Deprecated
- The "Router Mode" and "setup" command have been replaced with a universal "start" command.
Added
- LAN client discovery via ARP, mDNS, and PTR probes, with support for custom client name on Asus Merlin routers.
- The "clients list" subcommand shows all discovered LAN clients.
- Running client discovery on all platforms and in all modes of operation.
- Support for older GL.iNet routers.
- Support for UniFi Gateway.
- Support for Firewalla.
- Support for OPNsense firewall.
- Support for building Docker images with multiple architectures.
- Support Control-D hostname overrides.
- Support Control-D org provisioning tokens.
- Support remote custom configuration from the Control-D API.
- Support limiting the maximum number of concurrent requests via a configuration parameter.
Improved
- The performance and stability of ctrld on underpowered devices.
- DoH and DoH3 transport setup.
- General improvements to the UX:
- All "ctrld service" subcommands now have aliases.
- More friendly error and debug message when the "ctrld start" command failed to run.
- Configuration validation error message.
- Configuration fetching and probing process.
Fixed
- Resolving bootstrap IP address broken with CNAME chain.
- Performance issues with EdgeOS routers.
- Incorrect checking condition in pre-start preventing
ctrld
from running on DD-WRT. - Incorrect reading of base64 config.
- Attempting to write configuration in ephemeral mode.
Release v1.2.1
New Features
- Added support for WSL
- Added support for Synology
- Added support for EdgeOS
- Added support for Pfsense
- Added support for Freshtomato
Enhancements
- Enhanced spoofing of source IP on routers using DHCP lease file
- Implemented error handling for UDM devices with "Content Filtering" enabled, which may conflict with ctrld
- Improved compatibility with older versions of Openwrt
Bug Fixes
- Resolved split mode issue for when DNS-over-TLS/QUIC is used
- Fixed incorrect checking condition in pre-start that caused ctrld to fail on ddwrt
v1.2.0
Major Changes
- Added router support for OpenWRT, DD-WRT, Asus Merlin, Ubiquiti, GL.iNet
- Added network topology transmission when Control D upstreams are used
- Added ability to fetch a config file from the Control D API
- Added split stack mode when Control D upstreams are used
- Multiple bug fixes
v1.1.4
Changelog
- 42d29b6 Adding more source for getting available DNS
- 8869e33 Inject version and commit during goreleaser build
- 9c22701 Merge pull request #37 from Control-D-Inc/release-branch-v1.1.4
- a77a924 Require go1.20 for building ctrld
- 95dbf71 Upgrage tailscale.com for fixing security issue
- b65a5ac all: fix bug that causes ctrld stop working if bootstrap failed
- ba48ff5 all: fix os resolver hangs when all server failed
- b3a342b all: some improvements for better troubleshooting
- c94e1b0 all: supports multiple protocols for no config mode
- 8a56389 cmd/ctrld: ensure both udp/tcp listener aborted
- f0c604a cmd/ctrld: only watch config when doing self-check
- 9927803 cmd/ctrld: response to OS service manager earlier
v1.1.3
v1.1.2
Major Changes
- TCP listener support
- Faster bootstrapping on some IPv6 networks
Changelog
- 5b36241 Add quic free version to goreleaser
- e4eb3b2 Do not query ipv6 eagerly when setup bootstrap IP
- aad0420 Merge pull request #28 from Control-D-Inc/release-branch-v1.1.2
- 3e6f6cc cmd/ctrld: add TCP listener
- 77b62f8 cmd/ctrld: add default timeout for os resolver
- 4bfcaca cmd/ctrld: bump version to v1.1.2
- ccf07a7 cmd/ctrld: log that ctrld is starting
- 096e7ea internal/net: enforce timeout for probing stack
v1.1.1
Major Changes
- Fixed recovery from network state/stack changes that rendered service inoperable and required restarting
- Logging improvements
- Fixed MacOS USB NIC issues
- Added FreeBSD builds
- Preserve previous service log on restart
- Respect
--config
flag on restarts
Changelog
- 9a249c3 .github/workflows: use go 1.20
- 0dfa377 Add freebsd to goreleaser config
- 8852f60 Add idle conn timeout for HTTP transport
- 3218b5f Add quic-free binaries in build pipeline
- 2f42fc0 Add some badges to README.md
- f13f615 Add upx to goreleaser builds
- 12512a6 Always use first record from DNS response
- 64f2dcb Fix parsing network service name on darwin
- 018f665 Fix wrong time precision in bootstrapping timeout
- 9dab097 Merge pull request #10 from GiddyGoatGaming/patch-1
- 790cb77 Merge pull request #17 from Control-D-Inc/readme-badge
- 6428ac2 Merge pull request #20 from Control-D-Inc/upx
- 7dab688 Merge pull request #26 from Control-D-Inc/release-branch-v1.1.1
- e6800fb Query all possible nameservers for os resolver
- 1cdce73 Update ci.yml
- df514d1 Update quic-go to v0.32.0
- 2e1b3f9 Upgrade golang.org/x/net to v0.7.0
- 14bc297 Use both os and bootstrap DNS to resolve bootstrap IP
- d1589bd Use separate context when querying upstream ips
- 1a40767 Use upstream timeout when querying bootstrap IP
- 4c2d21a all: add freebsd supports
- fa50cd4 all: another rework on discovering bootstrap IPs
- fb20d44 all: retry the request more agressively
- 8b08cc8 all: rework bootstrap IP discovering
- 85c95a6 all: set timeout for re-bootstrapping
- 5f9ac58 ci.yml: bump checkout -> 3.3.0 and setup-go-faster -> 1.8.0
- 997ec34 cmd/ctrld,internal/dns: support systemd-networkd dbus
- 4172fc0 cmd/ctrld: add self check for better error message reported
- cad7199 cmd/ctrld: allocate new ip instead of port
- 7cd1f7a cmd/ctrld: bump version to v1.1.1
- 262dcb1 cmd/ctrld: check for ipv6 listen local
- bac6810 cmd/ctrld: fix missing unmarshalling config without --cd
- 71b1b32 cmd/ctrld: honor configPath when writing config file
- 84fca06 cmd/ctrld: implement allocate/deallocate ip on freebsd
- 4f6c203 cmd/ctrld: log reason if first query failed
- b0114df cmd/ctrld: make staticcheck happy
- d9b6995 cmd/ctrld: merge proxy log to main log
- 82900ee cmd/ctrld: move log file if existed on app start
- 930a5ad cmd/ctrld: only set ::1 as DNS server on Windows if ipv6 available
- 35c8900 cmd/ctrld: remove prefix main field
- 50b0e5a cmd/ctrld: use proper exit codes for status command
- 83b551f internal/controld: check if ipv4 is available before connect to API
- 45f827a internal/controld: connect to API using ipv4 only
- 6d3c82d internal/dns: add debian/openresolv to linux manager
- e385547 internal/net: fix wrong address when testing network up
v1.1.0
Major Changes
- Added caching support
- Added ephemeral mode
- Added service mode
- Added custom config start mode using
--cd
flag - Added DNS assignment on network interface functionality
Changelog
- 31b30c5 Add notarizing darwin binary with gon
- fa3c3e8 Close http3 roundtripper when error occurred
- a6b3c4a Don't set default log level in config file
- 3602484 Merge pull request #11 from Control-D-Inc/release-branch-v1.1.0
- 5961947 Merge pull request #13 from Control-D-Inc/goreleaser-macos-notarize
- be6e2cc Merge pull request #14 from Control-D-Inc/cuonglm/fix-readme-conflicts
- a08b39b Merge pull request #16 from Control-D-Inc/remove-darwin-from-regular-release
- 56d8c10 Remove conflicts marker in README.md
- d73ece9 Remove darwin from regular builds
- e331a41 Rework os resolver
- 340016a Update README.md
- f9d6223 Update README.md Deleted docs/controld_config.md
- 056b76d Update docs/basic_mode.md
- 4c8ea45 Update docs/ephemeral_mode.md, README.md
- a318e19 Workaround quic-go DoQ server issue
- b93970c all: add CLI flags for no config start
- 30fefe7 all: add local caching
- 114ef9a all: add starting service with Control D config
- 851f9b9 all: fork tailscale Linux dns manager package
- ebcc545 all: improving DoH query performance
- 4ea1e64 all: make cache scope to upstream
- f637136 all: satisfy staticcheck
- b03aa39 all: support ipv6 for doh3 upstream bootstrap ip
- a7ae6c9 all: support ipv6 for upstream bootstrap ip
- 5330623 all: uninstall service if got invalid config from API
- 1186963 all: use controld dialer for probing network
- 837563d all: wait for network up before running
- 3014556 cmd/ctrld,internal/controld: do not set bootstrap IP
- b00a7c3 cmd/ctrld: add --iface for setting DNS on specific interface
- ec72af1 cmd/ctrld: add commands to control ctrld as a system service
- e6d77e2 cmd/ctrld: add default value and CLI flag for cache size
- d5344ae cmd/ctrld: add list interfaces command
- 0637203 cmd/ctrld: add more logging details
- 8a2c48e cmd/ctrld: allow log/cache flags work wit --cd flag
- 8e16418 cmd/ctrld: always pass config file on windows start mode
- d830706 cmd/ctrld: always process "--cd" in start mode
- 0e09b45 cmd/ctrld: bump version to v1.1.0
- 065a391 cmd/ctrld: check elevated privilege for service mode
- b021833 cmd/ctrld: correct the write default config condition
- 6edd426 cmd/ctrld: correct write default config condition when start
- 49e9b8b cmd/ctrld: do not change DNS for tailscale0
- 149941f cmd/ctrld: do set/reset DNS only when start/stop/uninstall
- cd37d93 cmd/ctrld: ensure cleaning up done when self-uninstall
- 1c2cd55 cmd/ctrld: ensure ctrld start after NetworkManager
- 3a5c715 cmd/ctrld: ensure viper is re-new in --cd mode
- 14ddb1f cmd/ctrld: ensure writing config message is printed on non-Windows
- 8571580 cmd/ctrld: fatal if failed to get default iface name
- 318fec2 cmd/ctrld: fatal loudly if listen failed
- 7b13fd8 cmd/ctrld: fix mis-handling of start alias
- 44bd580 cmd/ctrld: fix reset DNS when uninstalling
- beca95d cmd/ctrld: fix systemd dependencies config
- 05cfb9b cmd/ctrld: fix typo in Network name
- 1f2bd90 cmd/ctrld: fix wrong stop command alias
- 9fc5464 cmd/ctrld: ignore syscall.EINTR on Linux
- 99b0cbe cmd/ctrld: include DNS in interface list
- 31e4bcb cmd/ctrld: init logging before processing --cd
- b8772d7 cmd/ctrld: log fatal if could not start the listener
- 279e938 cmd/ctrld: make "--cd" always owerwrites the config
- 8c47ffb cmd/ctrld: make NetworkManger ignore auto dns
- dc7d77b cmd/ctrld: only add "--iface" if not changed for start/stop aliases
- c82a0e2 cmd/ctrld: optimizing set/reset DNS
- 87091f2 cmd/ctrld: print writing config file message
- 837d319 cmd/ctrld: rework "verbose" flag
- 326d7a4 cmd/ctrld: rework reset DNS statically vs DHCP
- a9fabd1 cmd/ctrld: separate iface variable for start/stop aliases
- 37de544 cmd/ctrld: silent DHCPv6 error
- d3fe2c7 cmd/ctrld: surpress backoff logging message
- 9f90811 cmd/ctrld: update config when "--cd" present
- eb0dd62 cmd/ctrld: use NetworkManager to disable DNS manager
- 9e7578f cmd/ctrld: use better approach for checking IPv6 available
- b0dc96a cmd/ctrld: use debug level when --log set
- 47c280c cmd/ctrld: use network service on darwin
- d418e57 cmd/ctrld: workaround ipv6 dns resolver on Windows
- 6115645 cmd/ctrld: workaround setting DNS issue on Linux
- 8e91123 cmd/ctrld: write default config to home dir when start
- 46965b0 internal/resolvconffile: add build tag for test file
v1.0.1
Changelog
- b2a6f18 Create LICENSE
- d42ee31 Merge pull request #3 from Control-D-Inc/cuonglm/fix-readme
- fe0faac Merge pull request #4 from Control-D-Inc/cuonglm/update-example
- 64dff35 Merge pull request #5 from Control-D-Inc/cuonglm/upstream-failover-rcode
- 924304a Merge pull request #6 from Control-D-Inc/bump-version
- 0556825 Update README.md
- bb51a40 Update arguments section to reflect latest changes
- ccada70 all: implement policy failover rcodes
- 0240f7a cmd/ctrld: bump version to v1.0.1