Skip to content

Releases: Control-D-Inc/ctrld

Release v1.3.1

11 Oct 02:32
f1b8d1c
Compare
Choose a tag to compare

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

15 Aug 15:52
0ca37dc
Compare
Choose a tag to compare

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

08 Jun 04:23
0c99d27
Compare
Choose a tag to compare

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

View all changes.

v1.2.0

16 May 18:48
b126db4
Compare
Choose a tag to compare

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

View all changes.

v1.1.4

03 Apr 16:52
9c22701
Compare
Choose a tag to compare

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

17 Mar 16:45
9f7bfc7
Compare
Choose a tag to compare

Changelog

  • a7a5501 Bump version to v1.1.3
  • 9f7bfc7 Merge pull request #31 from Control-D-Inc/release-branch-v1.1.3
  • 8ffb429 Use rcode string in error message
  • c401c4e cmd/ctrld: do not set default iface value for uninstall command

v1.1.2

16 Mar 15:41
aad0420
Compare
Choose a tag to compare

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

10 Mar 18:10
7dab688
Compare
Choose a tag to compare

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

07 Feb 17:38
a08b39b
Compare
Choose a tag to compare

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

14 Dec 18:07
924304a
Compare
Choose a tag to compare

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