External Connection Timeout (UDP Issue)



  • Hello,
    I have players who cannot connect externally.
    When using a webbased port checker, port 3001 is listed as open and the server's web panel works.
    However, port 3000, the default game server port is listed closed when scanned by a UDP web based port scanner.

    I have Avira running on this dedicated machine, but it has no firewall of its own.
    Current and intended setup includes

    • Separate Router NAT entries for 3000 UDP and 3001 TCP
    • Separate Windows Firewall entries for 3000 UDP and 3001 TCP
    • ECO Server running on ports 3000 and 3001

    This configuration (despite port 3000 being deemed closed) has sometimes allowed brief connections that always timeout.

    Here's my extensive troubleshooting
    I tried to prove that my ISP isn't blocking ports. This configuration included..

    • Router NAT entries for 4000 UDP and 4001 TCP pointed at my dedicated machine
    • Separate Windows Firewall entries for 4000 UDP and 4001 TCP
    • netsh forwarded 4000 to 3000 and 4001 to 3001
    • ECO Server running on ports 3000 and 3001

    Results showed that

    • Both 4000 and 4001 were open when checked with the web port scanner
    • Port 4001 forwarded correctly to 3001 and the server's Web Panel still worked with this configuration
    • External game server connections were still unsuccessful

    I cleared all firewall and NAT entries and tried this in reverse

    • Like the intended setup, Router NAT entries for 3000 UDP and 3001 TCP pointed at my dedicated machine
    • Separate Windows Firewall entries for 3000 UDP and 3001 TCP
    • netsh forwarded 3000 to 4000 and 3001 to 4001
    • ECO Server running on ports 4000 and 4001

    Results this time were similar.

    • Port 3000 UDP and 3001 TCP were open according to the scanner.
    • Port 3000 doesn't appear to be blocked by my ISP
    • Webpanel worked
    • Unsuccessful connection to the game server

    I've also tried running an instance of an older game's server that uses UDP. The scanner showed that port to be open.
    My ISP doesn't appear to be blocking UDP.

    I asked my ISP to assist me with this issue. We went through the process of resetting both my ONT device (used with fiber connections) and my modem router.
    After reconfiguring everything back to the intended setup, I received the following error code when connecting..

    <size=150%>Connection Failed</size>
    
    Server encountered an exception:
    
    <size=60.00%>Exception: NullReferenceException
    Message:Object reference not set to an instance of an object.
    Source:Eco.Shared
    
    System.NullReferenceException: Object reference not set to an instance of an object.
       at Eco.Shared.Networking.RPCManager.UnpackArgs(INetClient client, BSONObject bson, RPCMethod[] methods, Object target, RPCMethod& targetMethod)
       at Eco.Shared.Networking.RPCManager.TryInvoke(INetClient client, Object target, String methodname, BSONObject bsonArgs, Object& result)
       at Eco.Shared.Networking.RPCManager.InvokeOn(INetClient client, BSONObject bson, Object target, String methodname)
       at Eco.Shared.Networking.RPCManager.HandleReceiveRPC(INetClient client, BSONObject bson)
       at Eco.Plugins.Networking.NetworkServer.Eco.Shared.Networking.INetworkEventHandler.ReceiveEvent(INetClient client, NetworkEvent netEvent, BSONObject bsonObj)
       at Eco.Plugins.Networking.Client.<.ctor>b__56_2()</size>
    
    Log File:
    Initialize engine version: 2019.1.6f1 (f2970305fe1c)
    GfxDevice: creating device client; threaded=1
    Direct3D:
        Version:  Direct3D 11.0 [level 11.1]
        Renderer: NVIDIA GeForce GTX 970 (ID=0x13c2)
        Vendor:   
        VRAM:     4043 MB
        Driver:   25.21.14.1616
    <RI> Initializing input.
    
    <RI> Input initialized.
    
    <RI> Initialized touch support.
    
    UnloadTime: 0.475400 ms
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    The character used for Ellipsis is not available in font asset [titlescreenfont].
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:LogWarning(Object, Object)
    TMPro.TMP_Text:GetSpecialCharacters(TMP_FontAsset)
    TMPro.TextMeshProUGUI:LoadFontAsset()
    TMPro.TextMeshProUGUI:Awake()
    UnityEngine.Object:Instantiate(T)
    UI.UIManager:Open(String, BSONObject, UILayer)
    UI.UIManager:Open(String, UILayer)
    NetworkManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    Logging in as 76561198024952571 using token e30.eyJpc3MiOiJzdHJhbmdlbG9vcGdhbWVzLWVjbyIsImV4cCI6MTU2MDk4Njc5NSwidnhhIjoibG9naW4iLCJ2eGkiOjIwODg0LCJmIjoic2lwOi5zdHJhbmdlbG9vcGdhbWVzLWVjby43NjU2MTE5ODAyNDk1MjU3MS5AbXQxcC52aXZveC5jb20ifQ.2NORqETmU8b3WRkdopO-9gIJKB9fPEpGLjmUt48NZHE
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:Log(Object, Object)
    VoiceManager:LoginUser(String, String, String)
    <LoginCoroutine>d__44:MoveNext()
    UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    Voice chat logging in
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:Log(Object)
    Eco.Shared.Utils.Log:Debug(String, Object[])
    VoiceManager:LoginSession_PropertyChanged(Object, PropertyChangedEventArgs)
    System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs)
    VivoxUnity.Private.LoginSession:set_State(LoginState)
    VivoxUnity.Private.LoginSession:BeginLogin(Uri, String, AsyncCallback)
    VoiceManager:LoginUser(String, String, String)
    <LoginCoroutine>d__44:MoveNext()
    UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    Voice chat logged in
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:Log(Object)
    Eco.Shared.Utils.Log:Debug(String, Object[])
    VoiceManager:LoginSession_PropertyChanged(Object, PropertyChangedEventArgs)
    System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs)
    VivoxUnity.Private.LoginSession:set_State(LoginState)
    VivoxUnity.Private.<>c__DisplayClass39_0:<Login>b__0(IAsyncResult)
    UnityEngine.ReapplyDrivenProperties:Invoke(RectTransform)
    VivoxUnity.AsyncResult`1:SetComplete(T)
    VivoxUnity.VxClient:InstanceOnMainLoopRun(Boolean&)
    Mono.Unity.unitytls_key_free_t:Invoke(unitytls_key*)
    VivoxUnity.Client:RunOnce()
    VoiceManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    Connecting to x.x.x.x:3000...
    
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:Log(Object)
    Eco.Shared.Utils.Log:WriteLine(LocString)
    Eco.Shared.Networking.NetworkClient:ConnectInternal(IPEndPoint)
    Eco.Shared.Networking.NetworkClient:Connect(IPEndPoint)
    AddServerUI:OnAddServer()
    UnityEngine.LowMemoryCallback:Invoke()
    UnityEngine.Events.UnityEvent:Invoke()
    System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs)
    UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
    UnityEngine.EventSystems.StandaloneInputModule:ReleaseMouse(PointerEventData, GameObject)
    UnityEngine.EventSystems.StandaloneInputModule:ProcessMousePress(MouseButtonEventData)
    UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent(Int32)
    UnityEngine.EventSystems.StandaloneInputModule:Process()
    UnityEngine.EventSystems.EventSystem:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    Unloading 6 Unused Serialized files (Serialized files now loaded: 0)
    
    Unloading 16 unused Assets to reduce memory usage. Loaded Objects now: 89631.
    Total: 140.701900 ms (FindLiveObjects: 4.460100 ms CreateObjectMapping: 5.350900 ms MarkObjects: 130.578600 ms  DeleteObjects: 0.312000 ms)
    
    NullReferenceException: Object reference not set to an instance of an object.
      at Eco.Shared.Networking.NetworkClient.get_RemoteEndPoint () [0x00000] in <00000000000000000000000000000000>:0 
      at SteamFriendsHandler.OnLobbyCreated (Steamworks.LobbyCreated_t e) [0x00000] in <00000000000000000000000000000000>:0 
      at System.Action`1[T].Invoke (T obj) [0x00000] in <00000000000000000000000000000000>:0 
      at Steamworks.SteamCallbacks+LobbyCreated_t.OnRunCallback (System.IntPtr thisptr, System.IntPtr pvParam) [0x00000] in <00000000000000000000000000000000>:0 
      at Steamworks.NativeMethods.SteamAPI_RunCallbacks () [0x00000] in <00000000000000000000000000000000>:0 
    UnityEngine.Logger:LogException(Exception, Object)
    UnityEngine.Debug:LogException(Exception)
    Steamworks.LobbyCreated_t:OnRunCallback(IntPtr, IntPtr)
    Steamworks.NativeMethods:SteamAPI_RunCallbacks()
     
    (Filename: currently not available on il2cpp Line: -1)
    
    Logging in as 76561198024952571 using token e30.eyJpc3MiOiJzdHJhbmdlbG9vcGdhbWVzLWVjbyIsImV4cCI6MTU2MDk4NjgyMSwidnhhIjoibG9naW4iLCJ2eGkiOjIwODg5LCJmIjoic2lwOi5zdHJhbmdlbG9vcGdhbWVzLWVjby43NjU2MTE5ODAyNDk1MjU3MS5AbXQxcC52aXZveC5jb20ifQ.7wgBJAqVIxni0wqeq-oNHzj-f8XgNyc_J1PeEt5zCHo
    UnityEngine.Logger:Log(LogType, Object, Object)
    UnityEngine.Debug:Log(Object, Object)
    VoiceManager:LoginUser(String, String, String)
    <LoginCoroutine>d__44:MoveNext()
    UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    Voice chat logging in
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:Log(Object)
    Eco.Shared.Utils.Log:Debug(String, Object[])
    VoiceManager:LoginSession_PropertyChanged(Object, PropertyChangedEventArgs)
    System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs)
    VivoxUnity.Private.LoginSession:set_State(LoginState)
    VivoxUnity.Private.LoginSession:BeginLogin(Uri, String, AsyncCallback)
    VoiceManager:LoginUser(String, String, String)
    <LoginCoroutine>d__44:MoveNext()
    UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    Voice chat logged in
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:Log(Object)
    Eco.Shared.Utils.Log:Debug(String, Object[])
    VoiceManager:LoginSession_PropertyChanged(Object, PropertyChangedEventArgs)
    System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs)
    VivoxUnity.Private.LoginSession:set_State(LoginState)
    VivoxUnity.Private.<>c__DisplayClass39_0:<Login>b__0(IAsyncResult)
    UnityEngine.ReapplyDrivenProperties:Invoke(RectTransform)
    VivoxUnity.AsyncResult`1:SetComplete(T)
    VivoxUnity.VxClient:InstanceOnMainLoopRun(Boolean&)
    Mono.Unity.unitytls_key_free_t:Invoke(unitytls_key*)
    VivoxUnity.Client:RunOnce()
    VoiceManager:Update()
     
    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 48)
    
    
    
    

    Network config entries I have include..

    "PublicServer": true,
    "Password": "taint",
    "IPAddress": "Any",
    "RemoteAddress": "X.X.X.X:3000",
    "GameServerPort": 3000,
    "WebServerPort": 3001,
    "Rate": 20,
    "MaxConnections": -1,
    "UPnPEnabled": false

    I know this is long, but the situation isn't getting any better for me.
    Thank you!



  • Hi,

    I had similar problems, turned out that they were caused by my firewall (Sophos UTM)
    In my case I had to add an IPS (IntrusionPrevention) Exception for "UDP Flooding ".


Log in to reply