In editor, you have in options of playing, the fact that client are auto connecting to server. You can disable this option, and test your own way to connect.
From my side, I don’t use anything as subsystem, I have a Mainmenu with a connect button, and a textbox with the ip filled by user.
Next I wrote a tiny C++ code to connect to server
bool UMyGameInstance::ClientTravelToServer(FString ip) {
UEngine* const Engine = GetEngine();
Engine->SetClientTravel(WorldContext->World(), (*ip), TRAVEL_Absolute);
return true;
}
Next over internet, it seems that UE uses UDP and TCP, so check that your NAT authorizes UDP outgoing on default port (7777).