Docs
Troubleshooting

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:

  1. In the panel, open Network → Backends and toggle PROXY protocol on.
  2. In velocity.toml (or config.yml on BungeeCord):
velocity.toml ini
[advanced]
haproxy-protocol = true
  1. Remove the Infinity-Filter forwarding plugin JAR from plugins/ if it’s there.
  2. Restart the proxy.
  1. In the panel, ensure PROXY protocol is off on the Backends page.
  2. Download the IF plugin from the panel and drop it in plugins/.
  3. Start the server once so the plugin generates its config.
  4. Paste the panel’s token into the plugin’s config:
config.yml yaml
token: "{paste-the-token}"
allow-external-connections: true
geyser-support: true   # only if Geyser runs standalone
  1. 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:

  1. Enable real-IP forwarding (PROXY protocol recommended).
  2. In LiteBans, lift the ban on the proxy IP and unban affected players.
  3. 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: true
  • advanced.java.use-haproxy-protocol: true
  • PROXY protocol on Velocity / BungeeCord
  • PROXY protocol on the IF Backends page
  • haproxy-protocol-whitelisted-ips includes 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:

bash
[15:22:01] Player joined from 86.213.xx.xx

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