Direct answer
Multiple Java servers may share one public IP by using different TCP ports or a proxy with distinct backend listeners.
Recommended procedure
- Assign a unique
server-portto every independently reachable server, or give each proxy/backend its own listener and address. - If using Velocity, register the backends in
velocity.tomlunder[servers]and route all public logins through the proxy. - Allow only intended public ports through host/router firewalls; restrict backend ports so untrusted users cannot bypass proxy authentication.
Why this matters
Networking problems are easiest to solve when you separate DNS, routing/NAT, firewalls, and the Minecraft process instead of treating them as one setting.
Important limitation: An SRV record can hide a Java port from players but does not merge port listeners or create a firewall rule.
How to verify the result
- Connect to each destination and verify server switching and player identity; test that backend addresses reject direct public logins.
Version and compatibility notes
- When a setting, command, or file name differs from this guide, stop and check the documentation for your exact Minecraft/server-software version instead of forcing an old example.
Official references
These sources were checked for the current MSH revision. Version-sensitive details should always be confirmed against the project documentation for the release you run.
Related guides
Help us improve this article
Tell us what is missing, unclear, outdated, or incorrect. You can also suggest something we should add.