Geomate - Geographic Game Server Filter for OpenWrt

Hey everyone!

I made a few changes with improved debugging capabilities and better visibility into what's happening under the hood.

Health Check System

  • New health_check command to verify your setup at a glance

  • Checks config, required files, data directory, autostart, nftables, and process status

  • Available via CLI: /etc/init.d/geomate health_check and also displayed in the LuCI UI (Service Status section)

Geolocation Status

  • See the current state of IP collection and geolocation, cycle timing, pending IPs, and last geolocation run directly on the Geo Filters page

IP Statistics per Filter

  • New "IPs/Located" column in the filter table that shows total IPs collected and geolocation progress (e.g. "170 (98%)")

  • Displays ✓ when all IPs are geolocated

  • Helps you better visualize how many server IPs each filter has

NFT Error Tracking

  • Failed nftables commands are now logged to /tmp/geomate_nft_errors.log and filter status column shows ✓ or ✗ per filter. Makes it easier to spot which filter has issues

How to Update

/etc/init.d/geomate update -v snapshot

After updating, clear your browser cache (or restart browser) to ensure the LuCI interface loads correctly.

These changes are primarily aimed at debugging and transparency, making it easier to see if everything is working correctly or if something is broken. Especially useful when starting fresh or troubleshooting issues.


In parallel to the changes above, I’ve been working on more substantial performance improvements for GeoMate.

Early testing shows a massive speedup... operations that previously took around 60 seconds now complete in under 1 second.

What's improved:

  • Batch Haversine processing: Instead of calculating distances one IP at a time (spawning thousands of processes), all IPs are now processed in a single pass. This is the main reason for the massive speedup.

  • Private IP filtering: Private/invalid IPs (like 10.x, 192.168.x, 127.x) are now automatically filtered out when collecting new IPs... they don't belong in game server lists.

  • IP expiry per filter: New option in filter settings. Set a number of days (e.g. 180) and IPs not seen since then will be automatically removed on service start. Keeps your lists from growing indefinitely. Disabled by default for existing filters.

  • Manual cleanup command: Run /etc/init.d/geomate cleanup_ips to remove all private/invalid IPs from your existing lists at once.

  • Reduced flash writes: File writes are now bundled and atomic to minimize flash wear on your router.

If you're feeling adventurous and want to help test:
/etc/init.d/geomate update -v branch=performance-optimization

After updating, clear your browser cache (or restart browser) to ensure the LuCI interface loads correctly.

To revert back to stable:
/etc/init.d/geomate update -v release

Feedback appreciated - especially if something breaks!

All of the changes mentioned earlier are also available in the performance-optimization branch. At the moment, this is the most complete branch and the one that is furthest ahead in terms of development.

Once I’ve done enough testing myself and gathered sufficient feedback on the adjustments and improvements, I’ll merge these changes into the main branch and publish a new release.

1 Like

Software, by its very nature, aims to solve people's problems. If it deems what people say irrelevant, it's simply losing users. Furthermore, it contradicts itself by stating that implementing a button to manually activate the process would be a headache since everything is done automatically. So why have a button to manually perform geolocation if it's done automatically?

And how am I supposed to do that? If the software wasn't working? The truth is, he got angry with me because I questioned decisions in the software, even though until recently I had helped him fix a bug that was rendering the software unusable.

Good update, now it will be much easier to test if everything is working correctly. I'll test it when I get home.

Software has no agency and hence does not aim at all. Software developers might aim for something, but the general understanding is that in FOSS software developers often aim to scratch their own itches, so aim to solve their own problems.

I will stop here, because we clearly have different ideas about what we are entitled to from volunteer developers but discussing that further is a) off topic in this thread, b) given our past interactions unlikely to be very productive.

2 Likes

Exactly that, thanks @moeller0.

I’m going to disengage from this discussion now as well, as it’s clearly not leading anywhere and I want to refocus on more important matters.

However, I want to say one last thing:

I don’t mind when someone finds a bug or even voices criticism. What does bother me is the rude and at times, condescending tone in which some people choose to communicate.
It often feels like parts of the community take FOSS work for granted and, without making any effort themselves (e.g. reading the README or learning the basics,...), immediately start blaming developers or helpers.

This is not just about me, but something I see happening across the entire forum. There are many people here who generously sacrifice their free time and personal energy to help others and instead of appreciation, they are often met with snarky replies and a lack of the respect they clearly deserve.

How we engage with others often defines what we receive in return.

6 Likes

Great Work Man @hudra !! .. Your work is highiliy apperiated by all members that using your packages

If you allow me —> To be honest Geomate will be the best package after QOS/SQM but I believe need more work to improve it and close the gaps that will help the players (like Netduma router) or something better ..

Thank you again for you and the team with u for this effort

1 Like

Well, that's only half true. But I agree with you that this isn't the place for that kind of discussion.

Please show me where I treated you that way?

I tested it and didn't find any problems; everything is working as expected. I hope you value my feedback.

Hello, yes, you’re absolutely right! One thing I’ve noticed is that as soon as you use a geofilter—whether on Netduma or OpenWrt—your SQM or Netduma QoS seems to break. I mainly play fighting games and FPS, and I can clearly feel that the game does not play the same way with a geofilter enabled compared to without it.

I wouldn’t be able to explain exactly why this happens. my hitmarker ttk is less and my ennemy is more long to kill

Do you think there could be another geofilter solution, such as the GeoIP approach by @antonk

or the one by that anonymous developer anon which looked very promising, but that I never managed to get working?

special thanks to hudra for this packages same if i don’t use

geoip-shell selectively blocks or allows inbound and/or outbound traffic to/from user-specified countries. It is mainly designed as an extra security measure for a server or a network. It can impose restrictions on which countries your network is able to connect to but it does not have an automatic learning mechanism like Geomate, so probably you would need to customize the settings in order to selectively allow certain IP addresses and/or ports and block others. It also doesn't have an option to selectively apply restrictions to a certain device on your network, so I'm not sure it can be useful for this purpose at all.

2 Likes

thanks for explanation

1 Like

Yes, of course! Thanks for your feedback, it’s very much appreciated.

You’re welcome. Yes your are right, Geomate hasn’t received much love lately. I hope that will change in the future, but my time is currently limited.

That’s a strange behavior and, in my opinion, not something that can really be explained from a technical standpoint... unless you’re experiencing performance issues with your router.

From a technical perspective, you are connecting to the same servers using the same network connection as without geofiltering. Geomate does not manipulate your game traffic or your connection in any way... it simply allows or blocks connections to specific IPs.

Other projects use nothing more than firewall rules under the hood as well, so I don’t see why those projects should behave differently in this regard.

Sorry, but this project never seemed like a serious long-term maintained project.

2 Likes

Hi, thank you for such amazing software. However, I do have one problem persist.

I often have ‘Unable to connect to host problem‘

I assumed that it still connects me to other out-of-range server?

You're welcome!

I don’t think that’s the case, because with strict mode enabled this shouldn’t happen.
I believe the main reason for this behavior is that the allowed IPs in the default Call of Duty filter are primarily tailored for Europe and probably North America. In your region, there may be additional matchmaking or relay servers that also need to be whitelisted.

Your game is likely trying to establish a connection to those servers, which fails, and that’s why you’re seeing this message.

There’s a dedicated section in the README that explains how to find allowed IPs. Please go through those steps one by one and you should be able to resolve the issue:

In short: Use Qosmate and look for connections/IPs using UDP port 3075 when you completely start up the game. Then add those IPs to the allowed list. It’s probably only one or two IPs.
Once you’ve identified the IPs and confirmed that it works, feel free to share them with me and I can add them to the default CoD configuration.

i had to add 1 more server to my allowed list ..just look for all the ips ending with destination 3074 and add them i had to add 185.34.106.103 to my list and i removed the 72.25.64.32 ip

i had to add 1 more server to my allowed list ..just look for all the ips ending with destination 3074 and add them i had to add 185.34.106.103 to my list and i removed the 72.25.64.32 ip

1 Like

Thank You ! I think I have added that already. but is it necessary to remove 72.25.64.32?

I start to think it’s the issue with no one actually populate the SG servers

i dont see that ip when i boot the game or in game so i removed it..i live in the caribbean it probably depends on the region if you dont see it then theres no need for it and i dont think keeping it will do anything anyway

The IP ended up in the default config by mistake (I can change that)… I’m not using it too.

I originally assumed it was a matchmaking server, but it turned out to be just a regular game server in Europe.

1 Like

This is how i have mines and its working fine