Why do my Steam-based games not show in the browser?

Post Reply
User avatar
Edge100x
Founder
Founder
Posts: 12945
https://www.youtube.com/channel/UC40BgXanDqOYoVCYFDSTfHA
Joined: Thu Apr 18, 2002 11:04 pm
Location: Seattle
Contact:

Why do my Steam-based games not show in the browser?

Post by Edge100x »

We field many concerns from customers that their Steam-based servers (such as TF2) seem to "fall off" the browser list, and at the same time, when they try to follow a player who is on the server into his game, Steam tries to connect to the wrong IP address.

This problem is generally due to a well-known software problem with Steam games on multi-homed machines, and it's not specific to our servers here. It's a simple bug that's been around for years and which has been brought to Valve's attention repeatedly, but which they have so far been unwilling or unable to fix.

Specifically, when the server attempts to connect to Steam using TCP, it does not bind to the correct IP address. As a result, anything that depends on the master server's knowledge of the IP, including the browser and follow-a-friend feature, will use whatever the OS uses for connections by default, which is usually the wrong one.

Steam uses this broken TCP connection by default on Linux. On Windows, it first tries with UDP, and only reverts to TCP if the UDP connection breaks.

On Windows, the simplest workaround is to restart the game server. Most of the time, this will lead to their UDP system being used again, and that mechanism binds to the correct IP. We restart our own servers once a day, which works well for this.

A more thorough workaround is to prevent the TCP connection to Steam from being established, causing those connections to time out and forcing Steam to use UDP exclusively (this is the only workaround that can be applied successfully on Linux). You can do this by using a firewall to block TCP connections that use a remote port range of 27017-27019. This can be done through the "Firewall" page in the control panel using these steps:
  1. Open the control panel for your VDS.
  2. Click "Firewall".
  3. For one of the rules, click "[Choose a preset or custom filter]" and then choose "block tcp from ports 27017 through 27019" from the menu.
  4. Click "Submit filter changes".
This strategy can also be taken through a software firewall inside your OS. If you add firewall rules in either way, though, keep in mind that you'll likely need to remove that rule later in order to connect to Steam for game updates.

You can check to see if your server is listed properly with Valve using a URL like this: http://api.steampowered.com/ISteamApps/ ... 64.202.209. You can check to see what type of Steam connection (TCP or UDP) is being used, and what Steam server IP the game server is trying to connect to, by viewing "Steam/logs/connection_log_xxx.txt" or "bin/logs/connection_log_xxx.txt" (the name varies depending on the type of server) in the server's tree.
User avatar
Edge100x
Founder
Founder
Posts: 12945
Joined: Thu Apr 18, 2002 11:04 pm
Location: Seattle
Contact:

Re: Why do my Steam-based games not show in the browser?

Post by Edge100x »

Fletcher posted a set of workaround bins that disable TCP connection attempts to the Valve mailing list later in November of 2012, in a post with entitled "Potential fix for problems on multi-honed (sic) servers". We posted a response asking for a true fix that keeps TCP connections but uses the correct IP -- something that should be extremely simple to implement -- and clarifying that the correct term is multi-homed, but no Valve employee has yet responded to this. Further posts by Fletcher continue to use the wrong term, suggesting that he has not read our post.
Post Reply