We have got the same issue in two replica sets in AWS cloud.
According to rs.status() on primary secondary jumping between SECONDARY and unhealthy states. With period of 10-20 seconds.
In logs I see socket errors. On secondary db.currentOp() shows only heartbeat operation that have seconds_run 1-30 seconds each.
But AWS security group assigned to all instances in replica set grant access to port 27017.
I have checked from each node - it can reach other two (mongo host:27017).
Also replica set used to work just before we tried to replace secondary with new node.
We detached EIP from one secondary to new (with properly confiured new node of course).
But new node got described above issue. We have tried three new nodes (from backup, clean, new EIP) with the same result.