Geomate - Geographic Game Server Filter for OpenWrt

I don't believe the issue can be resolved through UPnP or port forwarding.

I've suggested a few possible solutions above. Have you already tried them?

This is awesome!

Question though. Do I have to look at what ip addresses are being used say for CoD and then put them in myself or will it automatically store them?

1 Like

Thank you,

Did you take a look at the README? It should contain all the information you need. If anything is still unclear, feel free to ask!

1 Like

so i just change the default ip in cod with the ip of my pc and geomate will do the rest of the ip filtering ?

Make sure to move the region (the circle) to where you want to play.

If you haven’t done so during installation, perform the geolocation setup manually, either using the button in the UI or by running the command as described in the installation instructions. This only needs to be done initially to update the COD IP list with the correct geocoordinates.

And please make sure to read the README carefully.

1 Like

I have another question, what are the red circles?

A red circle, a green circle, or a blue circle indicates that multiple symbols of the same color are grouped together. There is even a counter for the ips within this circle. For example, if you zoom in further, you’ll see the individual symbols. Green means “Allowed” because it’s within the allowed region. Red means “Blocked” because it’s outside the region. Blue means “Allowed IP,” essentially an explicitly whitelisted IP address. If you zoom out far enough that icons of different colors are grouped together, the circle will turn orange.

I didn’t create a legend because I thought the symbols and groupings were fairly self-explanatory… apparently not. I’ll either update the README or add a legend to the UI.

I guess the red circles are high latency ip servers, or how? is there a way to allow only low latency servers and block the high latency ones?

Yeah, I did. I was just asking for reassurance and making sure I read it right lol.

I did have a question. Do I have to ping these ip addresses to see which one's will have less latency? I'm not in Europe so it'll be different for me compared to you.

Nope

No, currently there is no way to filter a connection to a server based on RTT. You can find more information about this higher up in the thread.
But generally, in most cases, the servers that are closest to you also tend to have the lowest latency. So only allow the region where your closest server is located and you should always get the lowest latency.

edit:
I added a legend to the UI:

image

1 Like

No, you don't need to ping the servers, but you can if you want to. Under active connections, all your active connections are displayed, and if you click on the icon of a connection, the IP will be shown.

In most games, the server regions are displayed when you start the game. Simply drag the circle over the server or servers that are closest to you, and you should generally get the lowest latency. In-game, your ping is usually displayed as well.

@zavyzz I noticed earlier that you were having trouble with servers not being displayed on the map. You deleted the post, does that mean you’ve resolved the issue?

1 Like

Yeah, I figured it out so I deleted it so you didn't have to respond.

1 Like

I was following your posts in last these days becuase you posts adding a lot to gamers ,

additional to previous discussion

Allowed IPs

Region : Middle East
Country: Saudi Arabia

This part still is difficult to figure it as user how I can know the allowed IP for my region or for my game for example Overwatch or COD or ....etc for other games
because I searched in google about MW3 or BO6 or Ovverwatch games IP for Middle East I couldn't find


one Issue I couldn't find a solution for it

Network Type : Moderate

IP Address for Gaming device : 192.168.17.1

I setup the Upnp settings but still no connection or no port forwarding when I play MW3

How to solve this issue if you can advise

First of all, let me ask: what problem are you trying to solve? You're attempting to find allowed IPs for CoD, but do you even have an issue where the allowed IPs I provided for CoD prevent you from connecting to the game?

Here’s an example of how allowed IPs work to help you understand better: If you live in Saudi Arabia and want to play CoD on the closest server, you’d likely draw your Geo-Filter circle around Saudi Arabia (assuming there’s a CoD server there at all). If you do this, only connections to CoD servers located in Saudi Arabia will be allowed. However, when you start the game, it connects to a central server (Authentication/Relay Matchmaking server — for CoD, this is in the UK; I’m not sure if there are other locations). If you don’t allow this connection, you might not be able to start the game or could encounter error messages.

It’s also possible that a game doesn’t require specific allowed IPs, or that your Geo-Filter circle might coincidentally include the region where the matchmaking or relay servers are located.

I added a new section to help identify these IPs in the README:

Upnp has nothing to do with geomate and open ports also aren't needed for cod. Moderate nat type is ok.

2 Likes

Thank you for respond my friend ..

For 1st Point
Sometimes the CoD and MW3 are starting the search for match within ping 120ms (where sometimes it is entering me with people from US and sometimes with people from Middle East) and sometimes ping 40ms

Note : when Geomate is active and circle on middle east region ....


For 2nd point Net Type

When I use a third party app on PC for example Gear Up Booster or ExitLag , They make the Net Type Open for with low ping rate for game .

So I want know how I can make the Nat Type Open

You cannot influence which servers the game itself attempts to connect you to using any application. That is entirely decided by the game. However, with GeoMate, you can prevent the game from establishing a connection if it tries to place you on a server outside your allowed region. The game will keep trying until it finds a server within your permitted region (or one whitelisted via the allowed IPs) where the connection is allowed.

Additionally, the matchmaking isn't searching for a "120 ms game" as you mentioned, but rather for a game with a ping lower than 120 ms. This means it is only looking for matches where the ping is less than 120 ms.

What exactly do you mean by "sometimes it is entering me with people from the US and sometimes with people from the Middle East"? If you mean you’re playing on US servers, then it’s likely that GeoMate isn’t set up correctly. If you are playing in your region but still encounter English-speaking players or people from the US in the lobby, there’s nothing you can do about that—this is determined by the game itself.

It’s also possible that Middle East servers are not always online and only available during peak times.


  1. It's NAT Type
  2. NAT Type has nothing to do with low ping rates for gaming. This is all marketing.
  3. An open NAT (Network Address Translation) was advantageous 20 years ago because older games operated on a peer-to-peer basis. This meant one player in the lobby acted as the host (essentially the server). Being the host gave a significant advantage in terms of gameplay since they had the lowest ping and best connection. To have an open NAT, players needed to open the game’s ports. Only players with an open NAT (not moderate or strict) could host games. However, since modern online games now use dedicated servers, having an open NAT is no longer necessary.
  4. NAT Type is not related to GeoMate. If you believe it is relevant to your issue, you should start a new thread.
1 Like

@moeller0 Over the past few days, I’ve been thinking about the RTT approach and experimenting a bit. Maybe you have an idea or a spark of inspiration?

Basically, I’ve implemented an independent mode that collects IPs based on the defined game ports, pings these IPs regularly (in parallel using fping), and caches the results for a certain amount of time so that only new IPs are pinged. If the ping is below a predefined threshold, the IP is added to an nftables set where it’s allowed; otherwise, it’s blocked.

In theory, this concept already works to some extent. However, and I think this is the biggest issue with the whole approach and the reason I may have to abandon this idea, I tested it with Call of Duty, but 99% of the servers do not respond to ICMP ping requests.

The only thing I could theoretically try, which might yield somewhat usable results, is using mtr. If the gaming server or the final hop doesn’t reply, I could simply use the ping from the last responding hop. If it’s in the same region or city, the RTT values might not differ significantly. However, I’m not sure if it’s worth the effort at all.

2 Likes

Ah, maybe just do this on installation/refresh of the IP list (or on manual request), then using an mtr approach might be permissable*?
My thought was more, use RTT to sanity check the geoIP information (for false positives). Case in point, there is a current peering/transit issue with deutsche telekom and deutsche glasfaser were packets between two german end points get routed via Ashburn VA (IIRC) with the to be expected attrocious latency.

But the (game) "server does not respond" issue is a true pain in the ass for any kind of path verification... with no good solution for end users like us.

*) path RTT should stay pretty constant, and while paths can change they do not actually do so all that often, at least not in a way that changes the RTT by a lot. So I naively assume checking RTTs once per day should be plenty, but that still leaves the node does not respond issue which might be the showvstopper here...

1 Like

Mhh yea, I will think about it.

Ah, okay, now I understand. Yes, that would make total sense, but for this, we would also need a response.

Exactly, that was my thought as well, and it would be a good alternative to the more resource-intensive approach of querying geocoordinates and then calculating the locations of individual IPs.

The only other method I found where we could determine the RTT (even if the servers don’t respond to ICMP) would theoretically be using eBPF with tcprtt. However, this doesn’t really help us much since most games use UDP.

1 Like