Geomate - Geographic Game Server Filter for OpenWrt

An error occurred during installation: HTTP error 429

root@Predator_W6x:~# # Get latest release tag and install LuCI Web Interface
$PKG_MANAGER add lua luci-lua-runtime
root@Predator_W6x:~# LATEST_TAG=$(uclient-fetch -O - https://api.github.com/repos/hudra0/luci-app-geomate/releases/latest 2>/dev/null |
grep -o '"tag_name":"[^"]*' | sed 's/"tag_name":"//') && \

Detect package manager and install required dependencies

if command -v apk >/dev/null 2>&1; then
PKG_MANAGER="apk"
$PKG_MANAGER add lua luci-lua-runtime
elif command -v opkg >/dev/null 2>&1; then
PKG_MANAGER="opkg"
$PKG_MANAGER update && $PKG_MANAGER install lua luci-lua-runtime
else
echo "Error: No supported package manager found (apk/opkg)"
exit 1
fi &&
mkdir -p /www/luci-static/resources/view/geomate /usr/share/luci/menu.d /usr/share/rpcd/acl.d /usr/libexec/rpcd &&
uclient-fetch -O /www/luci-static/resources/view/geomate/view.js https://raw.githubusercontent.com/hudra0/luci-app-geomate/$LATEST_TA
G/htdocs/luci-static/resources/view/geomate/view.js &&
uclient-fetch -O /www/luci-static/resources/view/geomate/geofilters.js https://raw.githubusercontent.com/hudra0/luci-app-geomate/$LAT
EST_TAG/htdocs/luci-static/resources/view/geomate/geofilters.js &&
uclient-fetch -O /www/luci-static/resources/view/geomate/map.html https://raw.githubusercontent.com/hudra0/luci-app-geomate/$LATEST_T
AG/htdocs/luci-static/resources/view/geomate/map.html &&
uclient-fetch -O /usr/share/luci/menu.d/luci-app-geomate.json https://raw.githubusercontent.com/hudra0/luci-app-geomate/$LATEST_TAG/r
oot/usr/share/luci/menu.d/luci-app-geomate.json &&
uclient-fetch -O /usr/share/rpcd/acl.d/luci-app-geomate.json https://raw.githubusercontent.com/hudra0/luci-app-geomate/$LATEST_TAG/ro
ot/usr/share/rpcd/acl.d/luci-app-geomate.json &&
uclient-fetch -O /usr/libexec/rpcd/luci.geomate https://raw.githubusercontent.com/hudra0/luci-app-geomate/$LATEST_TAG/root/usr/libexe
c/rpcd/luci.geomate &&
chmod +x /usr/libexec/rpcd/luci.geomate &&
/etc/init.d/rpcd restart &&
/etc/init.d/uhttpd restart
OK: 57 MiB in 223 packages
Downloading 'https://raw.githubusercontent.com/hudra0/luci-app-geomate/1.1.2/htdocs/luci-static/resources/view/geomate/view.js'
Connecting to 185.199.108.133:443
HTTP error 429
root@Predator_W6x:~#

This means “too many requests”. You ran into github API limits. Wait a bit and try again.

1 Like

thanks for this amazing app @Hudra geomate is working perferct before i use to get waiting for relay or something like that but now everything is perfect :slight_smile:

1 Like

Has anyone managed to get Arc Raiders running with Geomate yet?

Hi first of all thank you for developing these tools like qosmate and geomate. I bought a flint 2 specifically to use your tools and an opensource router instead of my locked isp one, I replaced it by pppoe, added your tools, adguard and banip. Qosmate worked very well regarding bufferbloat and I even enabled software offloading for more speed without any loss on bufferbloat test (or should I just turn it off?) the custom rule "# Mark traffic from specific IP as high priority
ip saddr ip dscp set cs5 comment "Gaming PC priority""worked very well to mark my gaming traffic as cs5 separating it from other traffic.

But my real question is about geomate, I need some help here for gaming...

I have a question, ive been trying to use it on delta force. I played a lot on monitor mode filtering connections by avg like it says on the guide and ive seen most traffic comes from 17000-18000 udp ports for game servers like: 35.197.210.239:17934 /49.51.133.69:17975 / 35.228.72.141:17905/ 162.62.228.69:17950 (some examples) but I cant seem to make the geofilter work.

It does lock the servers outside the region but only when the game is already loading which doesnt work for me because I will lose my gear or am forced to turn off geomate and play on the bad server. so is there anything I can do? Its strange because ive seen forums about the geofiltering router netduma with the same problem but then there are monthly paid services like LagoFast or Exitlag that provide exactly geofiltering and more and I dont understand why it works for those services. thanks!

This to services they dont block servers, they only do routing a faster route to a game server, they reduce hops from you do the server.

True. I understand they reduce the hops through their vps but they also allow you to select servers (like madrid/paris/london and avoid germany, poland, finland) and select lobbies with new players.

Shortening hops doesnt change ping from 10ms to 80ms like the regular matchmaking makes you and they avoid that. They do have a partnership with the game now.

I just want to avoid over 40ms (eastern europe) and dont want to pay for something that should be normal

1 Like

I got ‘unable to connect host’ when I am using GEO mate

Somehow it does not collect IPs. I have it to dynamic and created a new empty list. After 2 hours the list is still empty…

Anyone has a server list for BF6 ?

I'm trying to configure Geomate, but it's not working at all.

Here is my configuration:

I think I've configured everything correctly, however, no connections appear on the map. Could it be because I'm using CGNAT or does Geomate only work in specific applications?

Qosmate doesn't reliably work with sofware flow offloading yet so I would turn it off...

@TioDESGA
Hard to say what’s really happening here and unfortunately I don’t know the game myself, so I don’t have any direct experience with it.

It’s possible that the game uses a dedicated server for matchmaking, which might already be whitelisted or on your allow-list. That would explain why the game is generally allowed and then only connects to the actual game servers when the match starts.

You might also simply not have mapped the correct regions yet, or you haven’t collected all game servers.

I’d also recommend enabling Strict Mode in your case, because otherwise the server list can update after approx. 20 - 30 minutes of gameplay.
In that case, the server gets added to the blocklist and if that happens mid-game, you’ll get disconnected....

But in general, it’s a bit of trial and error.

Try to find out which servers exist, whether there are dedicated matchmaking servers, relay servers, or anything the game always connects to that must stay allowed.

Play for a while in Monitor Mode until you’re confident you’ve collected all relevant servers. Then switch to Strict Mode and test if everything works as expected. As mentioned, I can’t offer much more specific help since I don’t play this game myself.

Then you probably didn’t configure your ports or IPs correctly for the geofilter.

Here’s the config I use for BF6 on PC (Steam). Keep in mind that if you’re playing on a different platform, the port might be different (also use the correct ip of your gaming device). The QoSmate connections tab and the GeoMate README can help you figure out the right ones.

config geo_filter
	option name 'BF6'
	list allowed_region 'circle:52.32191089:6.85546875:680275'
	option enabled '1'
	option protocol 'udp'
	option src_ip '192.168.1.208'
	option ip_list '/etc/geomate.d/bf6_servers.txt'
	option src_port '65535'

I’ve also created a small list of Battlefield 6 servers and just uploaded it to the repo. You can find it here:

No, this shouldn’t be related to CGNAT. When you create a new geofilter and your server list is completely empty, it can take a bit of time before you start seeing connections in the ui.

Your geofilter will actually track a lot of connections because you specified a very wide port range. That’s probably not the best approach, since you’ll end up with many non-game servers in the list as well.
Which game are you playing, and on which platform?

So I set this large range because I can't get it to work. Look here, I played for quite a while and also manually run the geolocation while in the game, and even then nothing saves and no connections appear on the map.

Captura de tela 2025-12-12 013828

CS2 And BLOODSTRIKE. Windows 11 25H2


Geolocation: Queries online API to get geographical coordinates of collected IPs.

I saw this and thought my network might be blocked, could that be it? My reasoning is that since I'm on CGNAT, my IP might be on a blocklist.

Nope, don’t think so… please show the output (as preformated text) of:

nft list table inet geomate

Here:

table inet geomate {
        set geomate_Gaming_allowed {
                type ipv4_addr
                flags interval
        }

        set geomate_Gaming_blocked {
                type ipv4_addr
                flags interval
        }

        set geomate_Gaming_ui_dynamic {
                type ipv4_addr
                flags dynamic,timeout
                timeout 10s
        }

        set geomate_Gaming_dynamic {
                type ipv4_addr
                flags dynamic,timeout
                timeout 1h
        }

        chain forward {
                type filter hook forward priority mangle; policy accept;
                counter packets 211503 bytes 132631585 accept
        }

        chain prerouting {
                type filter hook prerouting priority mangle; policy accept;
        }
}

i think for battlefied

port range between 21000-24000 destination port in geomate

I don't play Battlefield.

This shows the problem. The nftables rules are missing/not complete. The prerouting/forward chain should normally look something like this:

        chain forward {
                type filter hook forward priority mangle; policy accept;
                ip saddr 192.168.1.208 udp sport { 3074, 3075 } ip daddr @geomate_Call_of_Duty_allowed counter packets 0 bytes 0 accept
                ip saddr 192.168.1.208 udp sport 65535 ip daddr @geomate_BF6_allowed counter packets 0 bytes 0 accept
        }

        chain prerouting {
                type filter hook prerouting priority mangle; policy accept;
                ip saddr 192.168.1.208 udp sport { 3074, 3075 } update @geomate_Call_of_Duty_ui_dynamic { ip daddr }
                ip saddr 192.168.1.208 udp sport { 3074, 3075 } update @geomate_Call_of_Duty_dynamic { ip daddr }
                ip saddr 192.168.1.208 udp sport 65535 update @geomate_BF6_ui_dynamic { ip daddr }
                ip saddr 192.168.1.208 udp sport 65535 update @geomate_BF6_dynamic { ip daddr }
        }
}
root@OpenWrtHudra:~# 

I assume you might be running an old or buggy version. Could you try reinstalling Geomate with the current version? Just run the two one-liners again:

I did that and nothing changed, i even uninstalled and reinstalled it again.

Captura de tela 2025-12-12 171256

But 1.1.3 is the latest version. So something didn’t work.. also if you have an empty ip list you‘ll have to play some games. Maybe uninstall geomate first, the reinstall it - there are instructions in the readme.