diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 3130e4e291e54140a1f4534f54a57cdf926263e5..10061b1e3eedd8f138ae46c1ea0919f6b0d59187 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -417,7 +417,9 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
                         case NODE_ROLE_LIGHT:
                         default: {
                             // Get DNS request result from root nodes as synchronization links
-                            while (dap_list_length(l_pvt_net->links_info) < s_max_links_count) {
+                            int l_max_tries = 5;
+                            int l_tries =0;
+                            while (dap_list_length(l_pvt_net->links_info) < s_max_links_count && l_tries < l_max_tries) {
                                 int i = rand() % l_pvt_net->seed_aliases_count;
                                 dap_chain_node_addr_t *l_remote_addr = dap_chain_node_alias_find(l_net, l_pvt_net->seed_aliases[i]);
                                 dap_chain_node_info_t *l_remote_node_info = dap_chain_node_info_read(l_net, l_remote_addr);
@@ -437,7 +439,28 @@ static int s_net_states_proc(dap_chain_net_t * l_net)
                                     l_pvt_net->state = NET_STATE_OFFLINE;
                                     break;
                                 }
+                                l_tries++;
                             }
+
+                            if (!l_pvt_net->links){
+                                for (int i = 0; i < MIN(s_max_links_count, l_pvt_net->seed_aliases_count); i++) {
+                                    dap_chain_node_addr_t *l_link_addr = dap_chain_node_alias_find(l_net, l_pvt_net->seed_aliases[i]);
+                                    if (l_link_addr->uint64 == l_own_addr) {
+                                        continue;   // Do not link with self
+                                    }
+                                    dap_chain_node_info_t *l_link_node_info = dap_chain_node_info_read(l_net, l_link_addr);
+                                    if(l_link_node_info) {
+                                        l_pvt_net->links_info = dap_list_append(l_pvt_net->links_info, l_link_node_info);
+                                    }
+                                    else{
+                                        log_it(L_WARNING, "Not found link "NODE_ADDR_FP_STR" in the node list", NODE_ADDR_FPS_ARGS(l_link_addr));
+                                    }
+                                    if (dap_list_length(l_pvt_net->links_info) >= s_max_links_count) {
+                                        break;
+                                    }
+                                }
+                            }
+
                         } break;
                     }
                 } else {