Someone threatened to DDoS my FiveM server: is my IP exposed?
Updated
Verified against FXServer build 35245 (recommended), 37150 (latest) and txAdmin v8.1.1, checked on 7 October 2026. Sources
A threat is not an attack. The real question is whether your origin IP is published, and you can check that in two minutes.
Hiding the origin behind a proxy is what FiveShield does, but steps you can take yourself cover part of it: do those first.
A threat is not traffic. A message in Discord or a ticket shows that someone wants to hurt your server, not that a packet has been sent. It changes the question: not “am I being attacked?” but “can someone find the address to aim at?”
Start with what the Cfx.re listing publishes. By default a server is advertised with its real address: the documentation says sv_forceIndirectListing (default false) “prevents the server from being advertised using its real IP address”. The CFX Finder reads the listing as a stranger would, from your join code. A raw IP and port there means the address is public. A Cfx.re staff member wrote, in the thread on deprecating the Nucleus reverse proxy, that “finding out your server IP has always been possible”.
Only evidence from outside the machine turns a threat into an attack: a host notice, a mitigation-log row, an inbound traffic graph that jumps. Until then, close the ways your address is found and take a baseline of inbound traffic on a quiet day. If evidence appears, read the guide on traffic spikes and host notices.
Messages you may see
Error: Force indirect listing is enabled, but no host override is set. This is not supported!In the server console, in red, each time a heartbeat is sent, when
sv_forceIndirectListingis on withoutsv_listingHostOverride
What it actually means
This page is about what your server tells the outside world. Every 3 minutes, and sooner after a player connects or drops, FXServer (GameServer.cpp) sends a heartbeat: an outbound HTTPS POST to the Cfx.re listing ingress. It carries your port, a listing token and ipOverride (from sv_listingIpOverride, empty by default). The proxy guide says that value is only needed when the listing backend cannot work out the IP itself, which implies that normally the backend finds your address on its own.
A client then resolves a connect endpoint (the connectEndPoints field of the listing, which sv_listingHostOverride can set), calls GET /info.json and POST /client there, and asks getEndpoints for the server endpoint, which sv_endpoints sets and which then receives its UDP traffic. Hiding the origin means changing what both endpoints publish, then making the machine refuse everyone but your proxy. The convars that set endpoints filter no packet.
Check this first (two minutes)
Five checks separate “someone said something” from “the address is public” and from “traffic is arriving”.
Evidence of traffic, or only a message?
Evidence is outside the machine: a host notice of an attack on your IP, a mitigation-log row, a jump in inbound traffic. A message is not evidence.
Only a message or a rumour.: Go on to step 2.
Your host reports an attack, or a graph spikes now.: Read the guide on traffic spikes and host notices
Players are failing right now and you have no notice yet.: Collect the evidence listed under “What a DDoS looks like here”
Look up your server in the CFX Finder
Enter your
cfx.re/join/code to see the connect address cfx.re publishes.It shows a raw IP and a port, under “This server’s IP is exposed” or a title ending “but publishes a raw IP”.: Read cause 1: the listing publishes your real address
It shows a hostname, or an address in a proxy network’s range.: Go on to step 3.
It says “Listed as private” and you meant it.: Go on to step 4: the listing publishes no address, but the other leaks remain.
It says “Listed as private” and you did not mean it.: Read the guide on a server missing from the server list
It says “No usable connect address”.: The listing gives nothing to read. Go on to step 3.
Force a heartbeat and read the console
Run
heartbeat, watch the console for a red line, then look the server up in the CFX Finder again.heartbeatYou see
Error: Force indirect listing is enabled, but no host override is set. This is not supported!: Read cause 2: indirect listing set but incompleteNo error, but a raw IP still shows.: Read cause 2: check that the settings were applied
No error, and a hostname shows.: Go on to step 4.
Compare three addresses
The machine’s public address; what each of your hostnames resolves to (your website, and the name in
sv_listingHostOverride; ask a DNS tool for A and AAAA records); andsv_endpointsinserver.cfg.A hostname of yours resolves to the machine’s address.: Read cause 4: a DNS record or a website points at the origin
sv_endpointsholds the machine’s own address.: Read cause 3: the game endpoint is the originNone of them is the machine’s address.: Go on to step 5.
Test the origin from outside
From a machine that is neither your server nor your proxy (a phone on mobile data works), open
http://<origin-ip>:30120/info.json, the URL the FiveM documentation uses to test reachability, thenhttp://<origin-ip>:40120for txAdmin./info.jsonanswers.: Read “When protection is, and is not, the answer”The txAdmin login page answers, with or without
/info.json.: Read cause 5: txAdmin or another service answers on the same addressNeither answers.: From outside, the TCP side is closed (or the server is down). The documentation gives no UDP reachability test, so check the UDP rules in your firewall yourself.
Causes, ranked
The order is editorial: the causes a source documents come first, cheapest check first. It is not a measured frequency, and several can apply at once.
Ranked by what owners report most and how cheap each check is. That is an editorial order, not a statistic: nobody publishes a dataset of FiveM outage causes. Documented means official docs or the FXServer and txAdmin source. Owners report means forum threads and issue trackers. Our inference is our reasoning from documented facts, shown so you can check it.
The Cfx.re listing publishes your real address
DocumentedBy default the listing advertises the machine’s real address:
sv_forceIndirectListingdefaults tofalse, and the proxy guide’s comment on that line reads “prevents the server list from advertising your server using its actual IP”. The connect endpoint comes from theconnectEndPointsfield of the listing, whichsv_listingHostOverridecan set. Anyone with your join code can read it.How to confirm
- Look up your join code in the CFX Finder. A raw IPv4 address and a port confirm it; a hostname does not. “Listed as private” does not prove a hidden origin: it publishes no address.
What to do
- Put a connect proxy on a hostname you control, then set
sv_forceIndirectListing trueandsv_listingHostOverride "server1.example.com"(use your own hostname), withsv_proxyIPRangeslisting only your proxy, because the listed ranges also bypass the rate limiter. Wait until the hostname answers: a comment in the FXServer source warns that the option “will break listings if the proxy host can not be reached”. Then runheartbeatand check again; the documentation gives no refresh time for a changed listing (it says only that a new server can take up to 8 minutes to appear).
sv_forceIndirectListingis set withoutsv_listingHostOverride, or was never appliedDocumentedIn
GameServer.cppthe heartbeat addsforceIndirectListingandhostOverrideonly whensv_listingHostOverrideis not empty. With the flag on and no override, the server prints the red error above and sends neither field. The source does not show what the backend then does; the CFX Finder does.How to confirm
- Run
heartbeat: the red line means the override is missing. With no error and a raw IP still showing, check that the lines are in the file FXServer executes, that you restarted, that a heartbeat has gone out since, and the spelling ofsv_listingHostOverride. What to do
- Set both together, once the hostname answers. With no proxy yet, remove
sv_forceIndirectListing: alone, the server does not even send it.
The game endpoint,
sv_endpoints, still names your own addressDocumentedA hostname in the listing hides only the first half. The proxy guide says the server endpoint “needs a raw TCP/UDP proxy on matching ports”:
getEndpointshands every client “one or more IP/port combos” and the client sends its UDP there. The guide’s own example setssv_endpointsto “the actual endpoint your server is hosted on”. Everyone who has joined while that value was in place, a player you later banned included, was handed that address. Left empty,sv_endpointsis not what decides: the convar documentation says “the auto-detected public IP is used”, but inInitConnectMethod.cppan empty value makes the server return an empty list, and the client (NetLibrary.cpp) then sends its UDP to the host it connected to. A raw IP in the listing therefore means the origin; a hostname means wherever that name points.How to confirm
- Read
sv_endpoints. The machine’s own address means the game endpoint is the origin. Empty, see above: the listing decides, so cause 1 and cause 4 are where to look. The CFX Finder cannot see this: it reports the connect address only. What to do
- Point
sv_endpointsat the public address of a proxy that forwards UDP and TCP on matching ports, then close the game port to everything but that proxy. Until then the old address keeps working for anyone who has it.
A DNS record, a website, a screenshot or a resource publishes the address
Our inferenceThis is our reasoning, not FXServer behaviour. A hostname whose A or AAAA record holds the machine’s address publishes it to anyone who can type the name: your website, a
play.name, the name insv_listingHostOverrideif it points at the origin. Addresses also leave through the owner: a console screenshot in a help channel, a webhook that includes the endpoint, a client script that calls your API by IP (players download client scripts). Treat any address ever published next to your name as known.How to confirm
- Compare the A and AAAA records of every related hostname with the machine’s address. Search your resources and configs for the literal address, and read your webhook templates.
What to do
- Move the website elsewhere or behind an HTTP proxy, point the listing hostname at the proxy only, and remove literal addresses. If the origin address was ever published, ask your host for a new one once the proxy is in place: changing it first only gets the new address listed within a few heartbeats.
txAdmin or another service answers on the same address
Our inferenceThe txAdmin documentation says it listens on TCP port
40120by default (TXHOST_TXA_PORT) on interface0.0.0.0(TXHOST_INTERFACE), every interface. Whether the internet reaches it depends on your firewall, which the documentation does not describe, so the rest is inference: a panel answering onhttp://<origin-ip>:40120tells anyone who finds it that this address runs your server.How to confirm
- From outside your network, open
http://<origin-ip>:40120. A txAdmin login page means the panel answers on the origin. Repeat for any other panel or service on the machine. What to do
- Restrict port
40120to the addresses you administer from, in the machine’s or your host’s firewall. Do not useTXHOST_INTERFACEto hide it: its documentation says it also decides what FXServer binds to.
The threat is followed by a real attack
Our inferenceThe DDoS caseA threat can be carried out. No source we know of measures how often, so this page gives no rate. Once someone has the address they can aim traffic at it from anywhere, and the sources are usually spoofed, which is why OVHcloud does not show them. Only evidence from outside your machine shows it.
How to confirm
- Look for a host notice, a log row or a jump in inbound traffic (commands below). On OVHcloud, Network > Network Security Dashboard lists each detected attack with “Detection time”, “End time”, “Destination IP” and “Attack vectors”; an empty log means “no suspected attacks have targeted your public IP addresses”, but it covers only what the detection flags.
What to do
- Do not restart repeatedly or announce a new address. Save the host’s log and graph now (OVHcloud documents 1 year for the log, 2 months for the chart). Put a proxy in front first, then change the origin address and publish it nowhere.
What a DDoS looks like here
An attack that follows a threat shows up outside your machine first, not in the message.
What a DDoS looks like here
- Your host tells you: an e-mail or dashboard entry saying traffic to your IP was rerouted or filtered, starting when the trouble did.
- An inbound traffic graph that jumps in packets or bits per second against a quiet-day baseline. Outbound traffic after a restart is downloads, not an attack.
Evidence you can collect
Your host’s notice and log
On OVHcloud: Network > Network Security Dashboard, scrubbing centre log. Sources are hidden because they are usually spoofed: there is nothing to ban. Other hosts differ.
Inbound packet rate on Linux
Run it during the event and on a quiet day; compare
rxpck/s(packets received per second) andrxkB/s.sar -n DEV 1 10Inbound packet rate on Windows
The same comparison, with the packets-received counter.
Get-Counter -Counter '\Network Interface(*)\Packets Received/sec' -ContinuousA short capture of the game port
Needs root. Use your interface and port. A handful of player addresses is normal; many scattered sources sending far more packets than you have players is not. Sources can be spoofed, so a capture supports the host notice and the graph without replacing them. Do not ban sources.
tcpdump -n -i <iface> -c 2000 'udp dst port 30120'
What it does not look like
- The threat itself, even one quoting your real address: the address is known, so close the origin, but no traffic is shown.
- Lag, hitch warnings or timeouts on their own.
- A raw IP in the CFX Finder alone, or outbound traffic after a restart.
When protection is, and is not, the answer
Protection is the answer when
- Your address has been public (a raw IP in the CFX Finder, a quoted address, a screenshot) and you want that to stop mattering: the listing and the game endpoint must publish a proxy’s address, and the machine must refuse everything else.
- You have confirmed attack traffic that your host’s own mitigation does not stop. Convars publish less and a firewall refuses strangers, but neither absorbs traffic that has already reached your link.
- You cannot run a TCP and UDP proxy on matching ports yourself, which the proxy guide requires for the server endpoint.
Protection is not the answer when
- The CFX Finder shows a hostname that is not your machine,
sv_endpointsnames a proxy and the origin refuses outside traffic: the address is no longer published; filtering is a separate decision. - The leak is your own: a DNS record, a website on the machine, an open txAdmin port, an address in a resource. A proxy in front of the game port closes none of them.
- The symptom is lag, a hitch warning or a timeout with no outside evidence. A proxy does not change how fast a thread runs.
- The origin still accepts direct traffic: a proxy is bypassed until the origin address changes and its firewall accepts only the proxy.
If you are actually attacked, or want the origin hidden
If an attack is happening now: do not restart repeatedly, because traffic arriving from outside does not stop when the process restarts and every restart disconnects your players; do not announce a new address, because the person who threatened you may be in the channel; save your host’s evidence before it expires.
Put a proxy in front before you change the origin address: unless the listing and sv_endpoints point at the proxy, the new address is listed again within a few heartbeats. Once the proxy answers, ask your host for a new origin address and publish it nowhere.
FiveShield does this part. Players connect through its proxy instances, so the listing and the game endpoint publish a FiveShield hostname instead of your address, and its filtering applies to what reaches the proxy. Leaks you created yourself, as in causes 4 and 5, stay yours to close.
Your first server gets $10 CAD of free trial credit (eligible accounts, no card required): about four days of protection for up to 50 players.
What FiveM anti-DDoS protection has to do, including hiding the origin
Still stuck? What to post
Replace your real address with x.x.x.x in anything you paste: a help thread is public.
- Your FXServer build number, and your txAdmin version if you use it.
- What the CFX Finder reports (raw IP, hostname or private), address hidden.
- The
server.cfglines startingsv_forceIndirectListing,sv_listingHostOverride,sv_endpointsandsv_proxyIPRanges, addresses masked. - The console output after
heartbeat, including anyError: Force indirect listingorServer list query returned an error:line. - Whether your website and panel run on the same machine as FXServer.
- If you suspect an attack: the host’s log row (masked) and your
sarorGet-Counteroutput.
Frequently asked questions
Someone threatened to DDoS me. What should I do?
A threat is not traffic. Look up your join code in the CFX Finder and work through the five checks above. If your host or a graph shows traffic, read the guide on traffic spikes and host notices. Do not restart repeatedly or announce a new address.
How do I check whether my FiveM server IP is exposed?
Enter your cfx.re/join/ code in the CFX Finder: a raw IP and port mean the listing publishes your address. Then compare your hostnames and sv_endpoints with the machine’s address, and from outside open http://<origin-ip>:30120/info.json and http://<origin-ip>:40120.
Is changing my server IP enough?
It clears the past, not the future. The proxy guide implies that the listing backend finds your address itself, so within a few heartbeats (sent every 3 minutes) expect the listing to show the new address as it showed the old one, unless the listing and sv_endpoints point at a proxy. Put the proxy in place first.
Does sv_endpointPrivacy hide my server’s IP?
No. It concerned player addresses and has been removed. If you still set it, FXServer prints “sv_endpointPrivacy has been removed. Player endpoint addresses are no longer exposed on any HTTP endpoint.” Your own address depends on sv_forceIndirectListing, sv_listingHostOverride and sv_endpoints.
Verified against, and sources
Verified against FXServer build 35245 (recommended), 37150 (latest) and txAdmin v8.1.1, checked on 7 October 2026.
- FiveM docs: server commands and convars (opens in a new tab)
- FiveM docs: proxy setup and the connection process (opens in a new tab)
- FiveM docs: server issues (opens in a new tab)
- FXServer source: GameServer.cpp (build 35245, same at 37150) (opens in a new tab)
- FXServer source: InfoHttpHandler.cpp (build 35245, same at 37150) (opens in a new tab)
- FXServer source: InitConnectMethod.cpp (build 35245, same at 37150) (opens in a new tab)
- FiveM client source: NetLibrary.cpp (build 35245, same at 37150) (opens in a new tab)
- txAdmin docs: environment configuration (opens in a new tab)
- Cfx.re forum: Nucleus reverse proxy deprecation (staff statements) (opens in a new tab)
- OVHcloud docs: Network Security Dashboard (opens in a new tab)
- Linux man page: sar (opens in a new tab)
- tcpdump man page (opens in a new tab)
- Microsoft Learn: Get-Counter (opens in a new tab)
Server behaviour changes between builds. If your build prints something different, the build numbers above tell you what this page was checked against.