• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

Server Linux HLDS, standard firewall ports don't seem enough.

Sheepy

Grizzled Veteran
Oct 15, 2010
159
40
KF-Shropshire
On my Linux KFDS (CentOS 5), when I boot my server up, my server stalls at this:
Game class is 'KFGameType'
[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with
current version anyway.
It stalls for around 120 seconds
appSeconds: 132.222468...
And then later crashes indefinitely at:

STEAMSTATS: Stats Are Now Enabled
pipes.cpp (608) : Assertion Failed: Stalled cross-thread pipe
interfacemap_client.h (444) : Assertion Failed: bufRet.GetUint8() == k_EClientCommandInt
erface
AInternetLink Resolve failed: Can't find host master0.gamespy.com (TRY_AGAIN)
UdpGameSpyUplink: Failed to resolve master server address, aborting.
AInternetLink Resolve failed: Can't find host tripwireinteractive.com (TRY_AGAIN)
pipes.cpp (450) : Assertion Failed: bufRet.GetUint8() == k_EClientCommandCallback
pipes.cpp (449) : Assertion Failed: m_pInternalPipe->BRead( bufRet )
pipes.cpp (450) : Assertion Failed: bufRet.GetUint8() == k_EClientCommandCallback
pipes.cpp (562) : Assertion Failed: m_cAPIPipePending == 0
interfacemap_client.h (417) : Assertion Failed: bufRet.GetUint8() == k_EClientCommandInt
erface
pipes.cpp (608) : Assertion Failed: Stalled cross-thread pipe
interfacemap_client.h (417) : Assertion Failed: bufRet.GetUint8() == k_EClientCommandInt
erface
pipes.cpp (562) : Assertion Failed: m_cAPIPipePending == 0
interfacemap_client.h (1209) : Assertion Failed: bufRet.GetUint8() == k_EClientCommandIn
terface
pipes.cpp (562) : Assertion Failed: m_cAPIPipePending == 0
pipes.cpp (608) : Assertion Failed: Stalled cross-thread pipe
interfacemap_client.h (444) : Assertion Failed: bufRet.GetUint8() == k_EClientCommandInt
erface
pipes.cpp (562) : Assertion Failed: m_cAPIPipePending == 0
pipes.cpp (562) : Assertion Failed: m_cAPIPipePending == 0
It is something to do with the firewall settings, because when I disable the firewall entirely there is no stalling and the server boots up within 20 seconds.

The firewall rules in place are the ports given for KF in the thread from Yosh:

7707 UDP/IP -ALLOW INPUT and OUTPUT chain
7708 UDP/IP -ALLOW INPUT and OUTPUT chain
7717 UDP/IP -ALLOW INPUT and OUTPUT chain
28852 TCP/IP and UDP -ALLOW INPUT and OUTPUT chain
8075 TCP/IP -ALLOW INPUT and OUTPUT chain
20560 TCP/IP and UDP -ALLOW INPUT and OUTPUT chain (also opened for TCP, as I thought the stalling was caused by a Steam interaction)

The ucc.log is attached, and the iptables rules that I use are attached too.

Thanks,
Sheepy
 

Attachments

  • Port rules.txt
    1.9 KB · Views: 0
  • ucc.txt
    7.1 KB · Views: 0
SOLVED: It turns out that around 10 packets were being incoming from a EU Steam server, and the function associated with them wasn't being allowed to complete.

The source port of this data was 27038, what I think is a legacy Steam port, while it's destination port was 49640. Make sure to allow incoming data that's coming from a Steam port, not just going to one.

The Wireshark capture that showed this is attached. After adding the rules accordingly, the server no longer stalled and booted up okay (apart from some Gamespy errors and failure to send heartbeat to Master Server errors).

P.S. The final rules for KFDS on iptables is attached (along with DNS rules).
 

Attachments

  • Wireshark Capture.jpg
    Wireshark Capture.jpg
    102 KB · Views: 0
  • rules.txt
    1.8 KB · Views: 0
Upvote 0