> For the complete documentation index, see [llms.txt](https://axiomemu.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://axiomemu.gitbook.io/docs/joinserver/allowableiplist.md).

# AllowableIpList.txt

Whitelist of GameServer IP addresses permitted to connect to JoinServer

JoinServer rejects every incoming GameServer connection whose remote IP is not in this file. The check runs at socket accept time via a condition callback, before any bytes are read and before authentication.

## File Location

```
JoinServer/AllowableIpList.txt
```

Loaded once at startup, after the TCP listen socket is up and the UDP heartbeat target has been resolved. Changes require a JoinServer restart.

## Format

```
0
"127.0.0.1"
"10.0.0.5"
"10.0.0.6"
end
```

* First line: section number `0`
* Middle lines: one IPv4 address per line, double-quoted
* Last line: the literal token `end`

Rules:

* IPv4 only
* Exact string match against the dotted-quad form of the connecting socket's remote address; no CIDR, no wildcards, no hostnames
* Whitespace and blank lines between entries are ignored
* `//` starts a line comment and is skipped to end of line
* The file is parsed as a script, not line-by-line; keep the `0` and `end` markers
* Only section `0` is scanned for addresses; any other section number is silently skipped

## Important Behavior

* A missing, empty, or malformed file results in an empty whitelist, which blocks every GameServer
* Addresses are compared to the remote IP as seen by the OS. Behind NAT, list the public IP that reaches JoinServer, not the private one the GameServer binds to
* `127.0.0.1` allows only loopback connections from the same host; it does not cover any LAN IP
* Duplicate entries are silently collapsed into a single whitelist slot
* No wildcard support; every GameServer needs its own line
* The parser enforces a one-second wall-clock limit on the whole file; oversized or malformed files will abort loading with an error box and leave the whitelist empty

## Examples

{% tabs %}
{% tab title="Single host" %}
{% code title="AllowableIpList.txt" %}

```
0
"127.0.0.1"
end
```

{% endcode %}
{% endtab %}

{% tab title="Multiple GameServers" %}
{% code title="AllowableIpList.txt" %}

```
0
"10.0.0.5"
"10.0.0.6"
"10.0.0.7"
end
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Common Issues

* **GameServer connects and instantly drops** - the IP JoinServer sees is not the one in the file. Check what the OS reports on the JoinServer host, not what the GameServer thinks its IP is
* **All GameServers rejected after restart** - file saved without the `end` line, or the `0` header is missing
* **Works on one host, fails on another** - NAT or a proxy changed the source IP; add the translated address

## Related

* [JoinServer.ini](/docs/joinserver/joinserver-ini.md) - port, database, and license configuration
* [DataServer AllowableIpList.txt](/docs/dataserver/allowableiplist.md) - identical format, separate file, GameServer IPs that may reach DataServer
