Fix: Server Only Visible on LAN, Not on the Internet

September 24, 2025 Daemon666 8 min read 18 views

The server runs, LAN players can join, but it never appears in the internet server browser. There are only a few real causes: sv_lan is set to 1, the server never reaches the Steam master server, or UDP 27015 is not open to the internet. Work the checklist top to bottom.

1. sv_lan must be 0

With sv_lan 1 the engine never heartbeats the master list and rejects internet clients with a LAN error. Set it in server.cfg:

sv_lan 0

Then verify it actually took — read it back in the console:

sv_lan

It must print "sv_lan" is "0". If it prints 1, something is overriding it; you may be passing +sv_lan 1 on the command line, or a later config resets it. See why server.cfg settings do not apply.

2. Force a heartbeat and watch

The server announces itself to the master by heartbeating. Trigger one manually:

heartbeat

If nothing leaves the box, the server is not talking to the master at all — check the firewall (step 3) and that outbound UDP is not blocked. A server that heartbeats but still never lists is usually a NAT/port-reachability problem (step 4).

3. Open UDP 27015 inbound

The internet list only shows servers the master can reach back on their game port. UDP 27015 must be open inbound:

sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp

On Windows:

New-NetFirewallRule -DisplayName "HLDS UDP 27015" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow

Many cloud providers also have a separate security-group/firewall in their control panel — the OS firewall being open does not help if the provider blocks the port upstream. Open UDP 27015 there too.

4. NAT / port forwarding

If the server is at home behind a router, forward UDP 27015 (and TCP 27015 for RCON) to the machine's LAN IP. Without a forward, the master server's reachability probe never arrives and the server is dropped from the list even though it heartbeats. Bind explicitly so there is no ambiguity:

./hlds_run -game cstrike -ip 0.0.0.0 -port 27015 +sv_lan 0 +map de_dust2 +maxplayers 20

5. Confirm the port is really listening

ss -lunp | grep 27015     # Linux
netstat -ano | findstr 27015   # Windows

You must see hlds_linux / hlds.exe bound to *:27015 UDP. If it is bound to 127.0.0.1:27015 instead of 0.0.0.0, it is only reachable locally — add -ip 0.0.0.0.

6. The 2023 anniversary update and master servers

The 2023 25th-Anniversary update changed the Steam client and broke a lot of older server setups' visibility. If you run a very old HLDS build, update it, or move to ReHLDS, which tracks the current master-server behaviour. Players stuck on old clients can roll back to the steam_legacy beta branch. For non-Steam players to see and join, you additionally need Metamod-r plus Reunion (ReHLDS) or dproto (HLDS) — without one of those, non-Steam clients cannot authenticate and will not list the server for their community.

7. sv_region and community lists

Set sv_region so the server appears under the correct geographic filter in the browser; a wrong region hides you from players who filter by their own:

// 0 US East, 1 US West, 2 South America, 3 Europe,
// 4 Asia, 5 Australia, 6 Middle East, 7 Africa, 255 world
sv_region 3

Non-Steam communities often rely on their own game trackers rather than the Steam master. If your audience is non-Steam and you have Reunion/dproto working, make sure the server also heartbeats whatever community master your player base uses; those lists are populated independently of Steam and a server can be present on one and absent from the other.

Common errors

  • Visible on LAN, never on internetsv_lan 1, or UDP 27015 blocked upstream by the provider.
  • Heartbeat sends but no listing — NAT with no port forward, or the provider firewall blocks the return probe.
  • Server bound to 127.0.0.1 — add -ip 0.0.0.0.
  • Lists briefly then vanishes — intermittent packet loss or the server crashing/restarting; check the log.

Verification

From a machine outside your LAN (mobile hotspot works), open the console and:

connect YOUR_PUBLIC_IP:27015

If you connect and spawn, the port is reachable from the internet and the only remaining question is the master listing — which, with sv_lan 0 and a reachable port, follows within a minute. Add the server to the internet favorites by IP as a fallback while the master catches up.

Contributors: Daemon666 ✦
Share: