diff --git a/plugins/portcheck/plugin.go b/plugins/portcheck/plugin.go
index ebfe045bf954be4f4175f6824c9c0991516128a1..6bcf907e8491d9cde50d414224bee4ed9d00e1a6 100644
--- a/plugins/portcheck/plugin.go
+++ b/plugins/portcheck/plugin.go
@@ -1,6 +1,7 @@
 package portcheck
 
 import (
+	"math/rand"
 	"net"
 	"sync"
 
@@ -65,14 +66,16 @@ func checkAutopeeringConnection() {
 
 	disc.Start(srv)
 	defer disc.Close()
-
-	for _, master := range autopeering.Discovery().GetMasterPeers() {
-		err = disc.Ping(master)
-		if err == nil {
-			log.Infof("Pong received from %s", master.IP())
+	
+	const retryCount = 10
+	entryNodes := autopeering.Discovery().GetMasterPeers()
+	for i := 0; i < retryCount; i++ {
+		randEntryNode := entryNodes[rand.Intn(len(entryNodes))]
+		if err = disc.Ping(randEntryNode); err == nil {
+			log.Infof("Pong received from %s", randEntryNode.IP())
 			break
 		}
-		log.Warnf("Error pinging entry node %s: %s", master.IP(), err)
+		log.Warnf("Error pinging entry node %s (attempts left %d/%d): %s", randEntryNode.IP(), retryCount-i+1, retryCount, err)
 	}
 
 	if err != nil {