diff --git a/src/initscripts/system/knot-resolver b/src/initscripts/system/knot-resolver
index 980a095f3..a27323b37 100644
--- a/src/initscripts/system/knot-resolver
+++ b/src/initscripts/system/knot-resolver
@@ -45,6 +45,13 @@ case "${1}" in
 			--config=/etc/knot-resolver/config.yaml reload
 		;;
 
+	force-reload)
+		# Replace the workers too, so that they re-run the Lua script
+		# (e.g. to register the DNS-over-TLS forwarders)
+		/usr/bin/kresctl \
+			--config=/etc/knot-resolver/config.yaml reload --force
+		;;
+
 	restart)
 		${0} stop
 		sleep 1
@@ -56,7 +63,7 @@ case "${1}" in
 		;;
 
 	*)
-		echo "Usage: ${0} {start|stop|reload|restart|status}"
+		echo "Usage: ${0} {start|stop|reload|force-reload|restart|status}"
 		exit 1
 		;;
 esac
diff --git a/src/misc-progs/dnsctrl.c b/src/misc-progs/dnsctrl.c
index 84b0ae211..66007c8f7 100644
--- a/src/misc-progs/dnsctrl.c
+++ b/src/misc-progs/dnsctrl.c
@@ -28,6 +28,13 @@ int main(int argc, char** argv) {
 
 		return run("/etc/rc.d/init.d/knot-resolver", args);
 
+	} else if (strcmp(argv[1], "force-reload") == 0) {
+		char* args[] = {
+			"force-reload", NULL,
+		};
+
+		return run("/etc/rc.d/init.d/knot-resolver", args);
+
 	} else if (strcmp(argv[1], "sync-rpzs") == 0) {
 		char* args[] = {
 			NULL,
