How to Configure IP Forwarding for BungeeCord and Velocity on Minecraft

Set up IP forwarding so backend Minecraft servers see real player IPs and UUIDs through a BungeeCord or Velocity proxy.

By default, when a player connects through a BungeeCord or Velocity proxy, the backend server sees the proxy's IP (127.0.0.1 or local) instead of the player's real address. This breaks IP-based bans, region detection, anti-cheat, and any plugin that uses player IPs.

IP forwarding passes the real player IP and UUID through the proxy to the backend, so backends see exactly who's connecting from where.

Forwarding Modes Compared

ModeUsed bySecurityNotes
Legacy BungeeCordBungeeCord, older Velocity⚠️ Insecure without BungeeGuardThe "classic" mode
Modern VelocityVelocity 1.1+, modern Paper✅ Secure (shared secret)Recommended for new setups
BungeeguardBungeeCord + plugin✅ Secure (shared token)Use this if you must use BungeeCord
NoneBackend sees proxy IP, not player IP

Set Up IP Forwarding

Enable on the proxy

In the XGamingServer Panel, open Files on your BungeeCord proxy and edit config.yml. Set:

ip_forward: true

Save.

Enable on each backend

On every backend Minecraft server, edit spigot.yml:

settings:
  bungeecord: true

If you're running Paper, also add to config/paper-global.yml:

proxies:
  bungee-cord:
    online-mode: true

Save.

Set online-mode correctly

Serveronline-mode
Proxy (config.yml)online_mode: true
Backends (server.properties)online-mode=false

The proxy authenticates; backends trust the proxy.

Install BungeeGuard (CRITICAL)

Without BungeeGuard, anyone who knows a backend IP can connect directly and impersonate any player. Install BungeeGuard on the proxy AND every backend, with the same token.

Restart all servers

Restart the proxy and every backend. Forwarding only takes effect after a clean restart of both sides.

Velocity's "modern" forwarding mode uses a shared secret, so backends can verify the proxy is genuine — no separate plugin needed. This is the recommended setup for new networks.

Set forwarding mode on the proxy

Open velocity.toml on your Velocity proxy:

player-info-forwarding-mode = "modern"

Get the forwarding secret

Velocity generates a random secret in the file forwarding.secret in the server root. Open it and copy the value (it's a single line of random characters).

Configure each Paper backend

On every Paper backend, edit config/paper-global.yml:

proxies:
  velocity:
    enabled: true
    online-mode: true
    secret: "paste-the-secret-here"

Replace paste-the-secret-here with the exact value from forwarding.secret.

Set backend online-mode

In each backend's server.properties:

online-mode=false

The Velocity proxy handles authentication.

Restart all servers

Restart Velocity and every Paper backend. Modern forwarding only loads at startup.

Why modern is better: No separate plugin needed, no token to leak, secret is unique per network, and Velocity verifies the secret on every connection. Forge/Fabric backends need extra modules — see Velocity's docs.

How to Verify Forwarding Works

After restarting, connect to your proxy and check on a backend:

  1. In the backend's Console, log in and run:
    list
  2. Check the player's IP in latest.log — it should be your real IP, not 127.0.0.1 or the proxy's IP.
  3. Run /whois <yourname> in any plugin that exposes IPs (LuckPerms, EssentialsX) — same check.

If backends still show 127.0.0.1, forwarding isn't working — see common errors below.

Common Errors

ErrorCauseFix
If you wish to use IP forwarding, please enable it in your BungeeCord configip_forward: true missing on proxySet it, restart proxy
Your server is not using the modern forwarding mode...Velocity is set to modern but backend isn'tSet the velocity proxy block in paper-global.yml
Players appear with random UUIDsForwarding broken — backend can't verify proxyRestart both sides; verify token/secret matches
IP shows as 127.0.0.1 on backendForwarding not enabled or backend not in BungeeCord modeCheck bungeecord: true in spigot.yml
Failed to verify username after enablingBackend online-mode is still trueSet to false on backends, restart
Bans by IP not workingIP forwarding off — backend sees proxy IPEnable forwarding

Common Mistakes

MistakeFix
Restarting only the proxy (not the backends)Restart both — settings load at startup
Setting online_mode: false on the proxyShould be true on the proxy. false on backends only
Using BungeeCord legacy forwarding without BungeeGuardInstall BungeeGuard immediately — your network is compromised without it
Mismatched Velocity secretCopy the secret exactly from forwarding.secret — including length
Mixing Velocity modern + BungeeCord legacy in paper-global.ymlPick one — never both

How is this guide?

40% Off — Limited TimeGet your Minecraft server todayInstant setup, DDoS protection, and 24/7 support included.
Get a Server

On this page