A modification of lilproxy that forwards only Q3 rcon/query packets. Useful for separating the rcon port from the game server port.
Unfortunately the Q3Rcon engine ties the rcon port to the game servers public port used for client connections. This proxy will allow you to run rcon through a separate whitelisted port.
#!/usr/bin/env bash
/usr/local/bin/q3rcon-proxy \
--proxy-host=0.0.0.0 \
--target-host=localhost \
--ports-mapping=28961:28960 \
--session-timeout=20 \
--loglevel=debug
Each of the flags has a corresponding environment variable:
Q3RCON_PROXY_HOST
: The host the proxy server sits on.Q3RCON_TARGET_HOST
: The host the game servers sit on.Q3RCON_PORTS_MAPPING
: A mapping as a string withsource:target
pairs delimited by;
.Q3RCON_SESSION_TIMEOUT
: Timeout in seconds for each udp session.Q3RCON_LOGLEVEL
: The application's logging level (see Logging).
Multiple rcon proxies may be configured by setting --ports-mapping/Q3RCON_PORTS_MAPPING like so:
export Q3RCON_PORTS_MAPPING="20000:28960;20001:28961;20002:28962"
This would configure q3rcon-proxy to run 3 proxy servers listening on ports 20000, 20001 and 20002 that redirect rcon requests to game servers on ports 28960, 28961 and 28962 respectively.
Set the log level with environment variable Q3RCON_LOGLEVEL
.
Acceptable values are:
trace
debug
info
warn
error
fatal
panic
If not set it will default to info
.
For a compatible rcon client also written in Go consider checking out the Q3 Rcon package.