diff --git a/include/opendht/callbacks.h b/include/opendht/callbacks.h
index 25a8f4574a45e63badd1f29d1a95a61344592d7e..21fad568b28d30da1cf8af53b903feb9657dffdb 100644
--- a/include/opendht/callbacks.h
+++ b/include/opendht/callbacks.h
@@ -44,6 +44,13 @@ enum class NodeStatus {
     Connected     // 1+ good nodes
 };
 
+inline constexpr const char*
+statusToStr(NodeStatus status) {
+    return status == NodeStatus::Connected  ? "connected"  : (
+           status == NodeStatus::Connecting ? "connecting" :
+                                              "disconnected");
+}
+
 struct OPENDHT_PUBLIC NodeStats {
     unsigned good_nodes {0},
              dubious_nodes {0},
diff --git a/tools/dhtchat.cpp b/tools/dhtchat.cpp
index 2083287dba62f9117977ad0489071475cc35ea0e..baed3b6102f92f683577ab851a4b9d856fbf4c9a 100644
--- a/tools/dhtchat.cpp
+++ b/tools/dhtchat.cpp
@@ -57,19 +57,13 @@ main(int argc, char **argv)
 
     DhtRunner dht;
     try {
+        params.generate_identity = true;
         auto dhtConf = getDhtConfig(params);
         dht.run(params.port, dhtConf.first, std::move(dhtConf.second));
 
         if (not params.bootstrap.first.empty())
             dht.bootstrap(params.bootstrap.first.c_str(), params.bootstrap.second.c_str());
 
-#ifdef OPENDHT_PROXY_CLIENT
-    if (!params.proxyclient.empty()) {
-        dht.setProxyServer(params.proxyclient);
-        dht.enableProxy(true);
-    }
-#endif //OPENDHT_PROXY_CLIENT
-
         print_node_info(dht, params);
         std::cout << "  type 'c {hash}' to join a channel" << std::endl << std::endl;
 
diff --git a/tools/tools_common.h b/tools/tools_common.h
index 352a6edc2bc8e441c43bb24477957ad8e9ff787d..ff6999a34dc33a205650872c6cecd338d02bf78b 100644
--- a/tools/tools_common.h
+++ b/tools/tools_common.h
@@ -171,6 +171,11 @@ getDhtConfig(dht_params& params)
         else
             context.logger = dht::log::getStdLogger();
     }
+    if (context.logger) {
+        context.statusChangedCallback = [logger = *context.logger](dht::NodeStatus status4, dht::NodeStatus status6) {
+            logger.WARN("Connectivity changed: IPv4: %s, IPv6: %s", dht::statusToStr(status4), dht::statusToStr(status6));
+        };
+    }
     return {std::move(config), std::move(context)};
 }