jammsen / docker-sons-of-the-forest-dedicated-server

Docker container to easily provision and manage Sons of the Forest Dedicated Server with Wine
https://hub.docker.com/r/jammsen/sons-of-the-forest-dedicated-server
136 stars 20 forks source link

[Self-Tests] [Networking] Failed to get public ip from Steam. #5

Closed csdnak closed 1 year ago

csdnak commented 1 year ago

Hello! My system configuration is as follows: image

Problem: Encountered at the end of the startup log“ [Self-Tests] [Networking] Failed to get public ip from Steam. [Self-Tests] Please restart the server.”Can you help me see why this error occurred? The server has internet access The entire startup process log is as follows `[root@localhost sonsoftheforest]# ./docker-run.sh Checking if Wine is set in bashrc Setting up Wine in bashrc Setting up WineConfig and waiting 15 seconds 0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005 [UnityMemory] Configuration Parameters - Can be set up in boot.config "memorysetup-bucket-allocator-granularity=16" "memorysetup-bucket-allocator-bucket-count=8" "memorysetup-bucket-allocator-block-size=4194304" "memorysetup-bucket-allocator-block-count=1" "memorysetup-main-allocator-block-size=16777216" "memorysetup-thread-allocator-block-size=16777216" "memorysetup-gfx-main-allocator-block-size=16777216" "memorysetup-gfx-thread-allocator-block-size=16777216" "memorysetup-cache-allocator-block-size=4194304" "memorysetup-typetree-allocator-block-size=2097152" "memorysetup-profiler-bucket-allocator-granularity=16" "memorysetup-profiler-bucket-allocator-bucket-count=8" "memorysetup-profiler-bucket-allocator-block-size=4194304" "memorysetup-profiler-bucket-allocator-block-count=1" "memorysetup-profiler-allocator-block-size=16777216" "memorysetup-temp-allocator-size-gfx=262144" Mono path[0] = 'Z:/sonsoftheforest/SonsOfTheForestDS_Data/Managed' Mono config path = 'Z:/sonsoftheforest/MonoBleedingEdge/etc' 011c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION Initialize engine version: 2022.2.16f1 (d535843d11e1) [Subsystems] Discovering subsystems at path Z:/sonsoftheforest/SonsOfTheForestDS_Data/UnitySubsystems Forcing GfxDevice: Null GfxDevice: creating device client; threaded=0; jobified=0 NullGfxDevice: Version: NULL 1.0 [1.0] Renderer: Null Device Vendor: Unity Technologies Begin MonoManager ReloadAssembly

Processed options ERROR: Shader Sprites/Mask shader is not supported on this GPU (none of subshaders/fallbacks are suitable) Releases.Initialize Releases : 07/21/2023 00:00:00 Version.Initialize Version : EarlyAccess.36736DS UnloadTime: 1.084100 ms Missing GameSettingsManager Instance! Fps Limiter set to 0 FMOD Setting Voice Count 128 FMOD Setting maxVorbisCodecs 118 Home directory not accessible: Permission denied ALSA lib confmisc.c:767:(parse_card) cannot find card '0' ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default ALSA lib confmisc.c:767:(parse_card) cannot find card '0' ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM default [FMOD] Error (ERR_INVALID_PARAM): An invalid parameter was passed to this function. FMOD System output rate: 48000 speaker mode: _5POINT1 0284:fixme:ver:GetCurrentPackageId (000000005961FE10 0000000000000000): stub 011c:fixme:d3d:wined3d_guess_card No card selector available for card vendor 0000 (using GL_RENDERER "llvmpipe (LLVM 11.0.1, 256 bits)"). 011c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0000000055A67560, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 000000000010E2E0, modes 0000000000000000 partial stub! 011c:fixme:dxgi:dxgi_output_GetDisplayModeList iface 0000000055A67560, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 000000000010E2E0, modes 00007F9A60000010 partial stub! 011c:fixme:system:QueryDisplayConfig (00000002 000000000010E2B0 00007F9A60000010 000000000010E2B8 00007F9A60000070 0000000000000000): semi-stub Screen.brightness : 1 Screen.cutouts : Screen.dpi : 96 Screen.height : 551 Screen.orientation : Portrait Screen.resolutions : h:768 w:1024 rate:60 Screen.width : 762 Screen.currentResolution : h:768 w:1024 rate:60 Screen.fullScreen : False Screen.safeArea : w:762 h:551 x:0 y:0 Screen.sleepTimeout : -1 Screen.autorotateToPortrait : False Screen.fullScreenMode : Windowed Screen.autorotateToLandscapeLeft : False Screen.autorotateToLandscapeRight : False Screen.autorotateToPortraitUpsideDown : False Missing GameSettingsManager Instance! Fps Limiter set to 30 [Self-Tests] Running self tests... [Self-Tests] [AppId] App ID is correct. [Self-Tests] [Settings] Validating game settings file format... [Self-Tests] [Settings] Game settings file is valid. [Self-Tests] [Config] Validating server config file and command line arguments... Server configuration is valid. More... { "IpAddress": "0.0.0.0", "GamePort": 8766, "QueryPort": 27016, "BlobSyncPort": 9700, "ServerName": "?A??oi?u<??u??i?!E??i?ei?O? (??o?o?)", "MaxPlayers": 8, "Password": "", "LanOnly": false, "SaveSlot": 1, "SaveMode": "Continue", "GameMode": "Normal", "SaveInterval": 600, "IdleDayCycleSpeed": 0.0, "IdleTargetFramerate": 5, "ActiveTargetFramerate": 60, "LogFilesEnabled": false, "TimestampLogFilenames": true, "TimestampLogEntries": true, "GameSettings": {}, "CustomGameModeSettings": {} } [Self-Tests] [Config] Dedicated Server configuration file is valid. [Self-Tests] [Networking] LanOnly is disabled, testing public accessibility... 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 02ac:fixme:iphlpapi:NotifyAddrChange (Handle 000000005C8E0018, overlapped 000000005C8E0020): stub 02cc:fixme:wbemprox:wbem_locator_ConnectServer unsupported flags 02ac:fixme:win:RegisterSuspendResumeNotification 000000005C14FA00, 0x2: stub. 02cc:fixme:wbemprox:client_security_SetBlanket 000000005E620E80, 000000000266BAA0, 10, 0, (null), 3, 3, 0000000000000000, 0 02cc:fixme:wbemprox:client_security_Release 000000005E620E80 0060:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled 0060:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled 02cc:fixme:wbemprox:enum_class_object_Next timeout not supported 0060:fixme:mountmgr:query_property Faking StorageDeviceProperty data 0060:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled Setting breakpad minidump AppID = 1326470 0060:fixme:mountmgr:query_property Faking StorageDeviceProperty data 0060:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and DISK_DETECTION_INFO structures will not be filled 02d4:fixme:kernelbase:AppPolicyGetThreadInitializationType FFFFFFFFFFFFFFFA, 0000000060AFFE10 src\clientdll\steamengine.cpp (3003) : Assertion Failed: Attempt to call interface with invalid hSteamUser /+/ 1, appid=1326470, hpipe=131073, inprocess, thread=684 src\clientdll\steamengine.cpp (3003) : Assertion Failed: Attempt to call interface with invalid hSteamUser /+/ 1, appid=1326470, hpipe=131073, inprocess, thread=684 src\common\interfacemap.cpp (890) : Assertion Failed: IPC call to IClientHTTP::ReleaseHTTPRequest returned failure code 12 src\common\interfacemap.cpp (890) : Assertion Failed: IPC call to IClientHTTP::ReleaseHTTPRequest returned failure code 12 011c:fixme:iphlpapi:CancelIPChangeNotify (overlapped 000000005C8E0020): stub 011c:fixme:win:UnregisterSuspendResumeNotification 00000000DEADBEEF: stub. [Self-Tests] [Networking] Failed to get public ip from Steam. [Self-Tests] Please restart the server. `

jammsen commented 1 year ago

Hello @csdnak Thanks for your system-config, the server seems to be not able to connect to the internet.

Im not sure what you want me to help you with, can you please better format your logs and write me want you want me to help you with and separate that better? Example: Introduction: xyz Question: abc Logs: 3 times ` then the log and then 3 times ` again?

Like this:

log log log
csdnak commented 1 year ago

Maybe I didn't describe it clearly. At present, my server can access the Internet, which is mapped to the intranet server through the public network ip and all the ports are open. This server also runs other survival game servers like rust without any problems, only running sons of t He forest private server encountered: Unable to get steam public network ip, please restart the server. This is the automatic detection mechanism of the game. If it fails, the game server will not be started, so can I bypass it, because I try the LAN mode to run it perfectly!

jammsen commented 1 year ago

You can only bypass that by using LAN-Mode, but that dont registers your server at the master-server so anybody else can see it and join it with you, only LAN-IPs are free i guess.

You have to make sure your setup allows that lookup of the Public/WAN-IP of the server or else the server wont start. This is way better then the old TheForest DS did that, because it checks the basics of communication and if that is not given it refuses to server, which in itself is very good.

I understand it causes confusion here and on Steam-Forums but i rather have this version like this than the old way of guessing whats wrong, because the TheForest server didnt check anything and you were clueless whats going on and whats broken.

csdnak commented 1 year ago

39F2BC4C-B210-46AD-9ED7-CAF357CA3161 943E4FB9-F0DB-49A3-B544-26CD749B261F

The link log in the LAN mode shown in the figure shows that the server can be accessed to the Internet, so can I try to link to my LAN server through the background public network ip ➕ port? Its three ports have been mapped to the public network ip 210.75.203.35 (8766, 27016, 9700 udp)

csdnak commented 1 year ago

@jammsen Thank you very much for your answer. I want to know whether the automatic detection mechanism is friendly to the multi-network card environment. Can you add an option to bind the public network ip?

csdnak commented 1 year ago

@jammsen image Sorry to bother you again. Today I tried to restart the server. The difference is that it detected my public network IP but could not detect the port. I am very sure that these ports are open in the firewall and router, but the Windows server does not seem to have this problem. Does this prove that there are some problems with the detection mechanism on Linux?

csdnak commented 1 year ago

image @jammsen As shown in the image, to demonstrate that the server's ports are accurately open, I conducted tests on the relevant UDP ports. The top-left corner shows network card traffic monitoring, while the top-right corner displays packet tests on three ports of the server's public IP: 27016/udp, 8766/udp, and 9700/udp. Below is the game log listener window, which successfully launched in LAN mode. It can be observed that the packet tests for all three ports are marked as "successfully." Additionally, when sending packets to port 9700, the game log provides a corresponding indication, confirming that the packets have entered the server via the 9700/udp port on the public network. The network card traffic monitoring in the top-left corner also detected incoming traffic packets from Huawei Cloud. All of this serves as sufficient evidence that my server has correctly opened all UDP ports.

Through multiple attempts, I have also noticed that there seems to be a minor issue with the self-testing mechanism. It produces two types of results: 1. Unable to obtain the public IP, requiring a server restart; 2. Successfully obtained the public IP, but the port detection failed, necessitating repairs and a server restart. The former occurrence is more frequent than the latter. Therefore, I boldly speculate that the self-testing mechanism's network timeout duration may be too short, resulting in poor communication with Steam's network in certain regions, leading to a perpetual network testing state.

jammsen commented 1 year ago

@jammsen Thank you very much for your answer. I want to know whether the automatic detection mechanism is friendly to the multi-network card environment. Can you add an option to bind the public network ip?

I dont know if that is friendly to milti-nics, but that shouldnt matter, its Docker using the routing tables of your system, thats it, if your routing is good, that Docker and the game-server is good, you just might need to look deeper into your router.

The difference is that it detected my public network IP but could not detect the port. I am very sure that these ports are open in the firewall and router, but the Windows server does not seem to have this problem. Does this prove that there are some problems with the detection mechanism on Linux?

That even confirms it for me.

Portscans and IP lookup screens, if that IP and ports are working i would say its between your ?VM? and your ?Router? + "resulting in poor communication with Steam's network in certain regions, leading to a perpetual network testing state."

There are times when Steam-servers are offline indeed, but they have normally loadbalancing, shouldnt be that big of a problem, except the entire region is offline.

Without a deep insight or a stream in Discord of your setup, im not sure how to help any further. Because this seems to me a networking-problem not a Docker or my image problem.

csdnak commented 1 year ago

@jammsen Okay, thank you very much for your patient answer. The container is indeed running perfectly. I will follow the forum for future solutions. Thank you again for your answer!

jammsen commented 1 year ago

@csdnak I mean we can hop into a Discord call if you want and you share me what you have, maybe we find something.

csdnak commented 1 year ago

@jammsen Of course, no problem. I think it's feasible.

jammsen commented 1 year ago

You guys have PFSENSE or OpenSense? https://steamcommunity.com/app/1326470/discussions/0/3808404524164518482/?ctp=6#c3808404963060221979

csdnak commented 1 year ago

@jammsen Since my server is located in China, I am using the Huawei AR1220-S enterprise router. It is a versatile enterprise-level router launched by Huawei Technologies Co., Ltd. It incorporates advanced hardware and software designs, providing powerful network connectivity, routing, security, and service features. It is suitable for small and medium-sized enterprises, branch offices, and office environments.

csdnak commented 1 year ago

你们有PFSENSE还是OpenSense? https://steamcommunity.com/app/1326470/discussions/0/3808404524164518482/?ctp=6#c3808404963060221979

image

I tried the forum method, but due to some differences in the routers I used, I did not find the reflection rule NAT+PROXY mode in the NAT configuration. As shown in the picture, this is my management page NAT configuration.

csdnak commented 1 year ago

@jammsen My problem has been resolved: update the server -->modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": true, so that network detection can be skipped!

jammsen commented 1 year ago

Yeah i just seen this, i answered here with the updater-info too: https://github.com/jammsen/docker-sons-of-the-forest-dedicated-server/issues/6#issuecomment-1611187681

csdnak commented 1 year ago

@jammsen Now it's twelve o'clock in the morning

IvesSSa commented 1 year ago

@jammsen My problem has been resolved: update the server -->modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": true, so that network detection can be skipped!

hello csdnak I have a question , I don't have a public IP address on my computer , I used FRP ,how to make it detect my penetrated ip

Dancza1 commented 11 months ago

I met the same problem as you, the self-test always fails to detect the ip.

jammsen commented 11 months ago

@jammsen My problem has been resolved: update the server -->modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": true, so that network detection can be skipped!

@Dancza1 use this.

Dancza1 commented 11 months ago

@jammsen My problem has been resolved: update the server -->modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": true, so that network detection can be skipped!

@Dancza1 use this.

Feeling your answer, using this method allows me to connect directly to the server by entering the ip and port number, but I can't search for the server in the game lobby

jammsen commented 11 months ago

@jammsen My problem has been resolved: update the server -->modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": true, so that network detection can be skipped!

@Dancza1 use this.

Feeling your answer, using this method allows me to connect directly to the server by entering the ip and port number, but I can't search for the server in the game lobby

Not that only skips the tests of the startup-process of the gameserver, you still need to make sure that the master-server can reach your on server via port-forwarding or nat'ing.

Dancza1 commented 11 months ago

@jammsen My problem has been resolved: update the server -->modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": true, so that network detection can be skipped!

@Dancza1 use this.

Feeling your answer, using this method allows me to connect directly to the server by entering the ip and port number, but I can't search for the server in the game lobby

Not that only skips the tests of the startup-process of the gameserver, you still need to make sure that the master-server can reach your on server via port-forwarding or nat'ing.

first of all, I'm using Windows Server 2022.when I modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": true, the following would occur. I'm sure the game side is able to connect to the server, it's just that steam doesn't search for it, like this image and I have to manually type in the public ip from while playing the game in order to get to the server. image image when I modify the dedicated server configuration file: "SkipNetworkAccessibilityTest": false image

gitzec commented 11 months ago

My guess is that:

  1. GFoC is blocking outgoing checks of SOTF server which detect the public ip. This can be solved by disabling SkipNetworkAccessibilityTest as you did.
  2. SOTF then cannot be reached by Steam server browsers because you did not configure everything needed to let it connect to your server. As @jammsen wrote: Make sure to allow these ports in your firewall and create port forwarding rules if needed: 8766,27016,9700 (all UDP)
jammsen commented 11 months ago
  1. First of, if you need support create a new issue and dont spam other people on a ticket thats already solved, Thanks!
  2. You put a LAN-IP in the field for the PUBLIC-IP, that will freak out the server.
  3. I have already told you, you need to setup port-forwarding or NAT'ing
jammsen commented 11 months ago

I made the rules for support more clear, feel free to read them here: https://github.com/jammsen/docker-sons-of-the-forest-dedicated-server/blob/master/README.md

According to that now written out rules (they existed in my head, but werent written down, now they are) im locking this thread, so the other participants wont get bothered with this.