Real-IP forwarding issues
When PROXY protocol or the IF plugin doesn't forward the real player IP correctly.
When real-IP forwarding is misconfigured, every player on your backend shows the edge IP instead of their real IP. Symptoms are obvious once you know to look — the consequences (mass-bans, broken antibot, useless geo-analytics) are not.
Symptom: all players show the same IP
Your backend logs / LiteBans / antibot all report the same IP for every player. That IP belongs to Infinity-Filter, not to your players.
Cause: real-IP forwarding isn’t enabled, or is enabled on only one side.
Fix:
- In the panel, open Network → Backends and toggle PROXY protocol on.
- In
velocity.toml(orconfig.ymlon BungeeCord):
[advanced]
haproxy-protocol = true
- Remove the Infinity-Filter forwarding plugin JAR from
plugins/if it’s there. - Restart the proxy.
- In the panel, ensure PROXY protocol is off on the Backends page.
- Download the IF plugin from the panel and drop it in
plugins/. - Start the server once so the plugin generates its config.
- Paste the panel’s token into the plugin’s config:
token: "{paste-the-token}"
allow-external-connections: true
geyser-support: true # only if Geyser runs standalone
- Restart the proxy.
Symptom: every connection fails after enabling PROXY protocol
You enabled PROXY protocol on only one side — either in the panel but not in Velocity, or in Velocity but not in the panel. The two must agree.
Fix: enable it in both places, then restart Velocity.
Symptom: weird disconnects, “header parse error”
Both PROXY protocol and the IF plugin are running. Each wraps the connection; combining them double-wraps and breaks the handshake.
Fix: pick one. Remove the IF plugin JAR if you want PROXY protocol; remove PROXY protocol toggle if you want the IF plugin.
Symptom: LiteBans mass-bans the proxy IP
An admin banned a player whose IP, on the backend, looked like the proxy IP. LiteBans then cascade-banned everyone else with the same IP — effectively locking out the entire player base.
Cause: real-IP forwarding off → every player looks like the proxy.
Fix:
- Enable real-IP forwarding (PROXY protocol recommended).
- In LiteBans, lift the ban on the proxy IP and unban affected players.
- Going forward, real bans will target real player IPs.
Symptom: backend timeouts at high traffic only
Real-IP forwarding can look healthy at low load but fail at high load. The actual cause is usually compression-threshold mismatch:
- Velocity in front:
network-compression-threshold = 256 - Spigot behind:
network-compression-threshold = -1
This is destabilising at high player counts.
Fix: match the values on both sides.
Symptom: real IP not visible for Bedrock players
Bedrock’s real-IP forwarding requires three layers in lockstep. See Geyser integration:
advanced.bedrock.use-haproxy-protocol: trueadvanced.java.use-haproxy-protocol: true- PROXY protocol on Velocity / BungeeCord
- PROXY protocol on the IF Backends page
haproxy-protocol-whitelisted-ipsincludes the IF ranges
Missing any one of these silently hides the real IP for Bedrock players.
Diagnostic: verify it actually works
After enabling, have a player connect and check your backend logs:
The IP shown should be the player’s, not Infinity-Filter’s.
Common one-line diagnoses
All players show the same IP PROXY protocol off OR plugin missing. Enable one — not both.
Disconnects right after handshake PROXY protocol enabled on one side only. Enable in both.
Header parse errors Double-wrap. Pick PROXY protocol OR the plugin, not both.
Bedrock real IP not forwarded Missing one of the 3 advanced.bedrock / advanced.java / IF Backends layers.
Backend kicks at high player counts only Compression-threshold mismatch, not real-IP forwarding.
What’s next
Last updated: May 28, 2026