Russian sites will not load through your VPN: a separate route on the same server
Many Russian services block foreign data centres by whole ranges, and through a VPN, banking, government or marketplace sites stop loading. This add-on to a normal amneziawg-installer setup sends traffic to Russian networks through Cloudflare WARP. Everything else still goes out directly from your server, as before. No second server needed. It does not give you a genuine Russian address either - for that you need a cascade.
How it works
Your AmneziaWG server gains a second exit, and traffic is split by destination address.
A second exit on the same server
Cloudflare WARP is plain WireGuard, and it comes up with the same tool that is already on the server. There is no separate wireguard-tools to install and no extra machine to rent: WARP runs on a second network interface of the same box.
Destination-based routing
Russian networks go into a separate routing table, and client traffic looks there first. That table has no default route, so anything not found in it automatically takes the old path.
The list updates automatically
The server subscribes over BGP to the antifilter.network feed and receives the list of Russian networks, around 11,800 of them at the time of testing. It updates automatically, with nothing to maintain by hand.
When you need this, and when you do not
This setup solves one specific problem, not the related ones.
It helps when you need to reach Russian sites through your own VPN and they reject connections because of the foreign address: showing a captcha, refusing a login, or declining a transaction. Once configured, traffic to the networks on the list leaves through Cloudflare. Everything else still goes out directly, from your server address.
What this setup does not give you
Russian sites will see a Cloudflare address, not a Russian one. A service that only needs to stop seeing a foreign data centre will accept that; one that specifically requires a Russian address will not, and for that you need a cascade with a second server in Russia.
The limits of this setup. WARP addresses are shared among many users, so some sites may greet them with a captcha or a geo restriction. The setup works over IPv4. The network list comes from a third-party service and can be wrong in both directions: it may miss a Russian network, or hand over one that is not. Russian traffic goes through an additional tunnel: that costs a few extra milliseconds and some CPU. Traffic to the rest of the world keeps its old path.
It is not always worth doing. If Russian sites already open, there is nothing to fix. If the problem is that the tunnel itself is cut on the way to your server, that is a different story and this setup will not help. And if Russian addresses can be kept out of the tunnel on the client side, a list in the client config is simpler - Russian traffic then bypasses the VPN and leaves from your home address.
What it takes
Four steps, all on one server. The commands are in the guide; this is just the scope of work.
- A WARP profile.
The
wgcftool generates a configuration for Cloudflare WARP. - A second interface and a routing rule.
The interface comes up with the same tool already on the server, and the rule sends client traffic to a separate routing table first.
- A feed subscription.
The public address of the server is registered with antifilter.network. Without that registration the BGP session will not come up.
- The BIRD daemon.
It receives the list of Russian networks and fills the routing table with it.
Two things are worth checking first, and either one can block the setup: whether routing table 200 is free, and whether BIRD is already in use for another purpose. If BIRD is running for another task, its config must not be replaced wholesale - the needed blocks are added to the existing one.
Tested end to end
A user sent it in, I reproduced it end to end on my own box.
The setup is by @alexfiu4-cyber, discussed in issue #103. I assembled it on a lab server from start to finish on top of a normal amneziawg-installer install on Ubuntu 24.04: the BGP session came up, around 11,800 networks landed in the routing table, a client behind the tunnel became visible to Russian services from a Cloudflare address and to the rest of the world from the server address. Along the way two places turned out not to work as published, and both are covered in the guide. The guide also includes a table showing what happens in each failure scenario, including the unpleasant case where no fallback to the direct exit happens.