Tholianยฎ Warps
Overview
Tholianยฎ Warps
is a proactive and adaptive Mesh Network Router.
It tries to automatically detect and bypass censorship and throttling measurements at all cost. Programmable routing, traffic compression, traffic scattering, dynamic encryption rotation and other features are part of this experimental research project.
The goal of this project is to find out how feasible common NAT breaking and firewall bypassing techniques are and whether they can be used to build a reliable mesh network that's based on a peer-to-peer architecture.
Network Architecture
- A Warps
tunneltunnels network traffic through apeerorgatewayto access the internet. - A Warps
tunneluses the initial configured network protocol. - A Warps
peertunnels network traffic through otherpeerorgatewayinstances. - A Warps
peerrotates the used network protocols.
- All Warps
peerorgatewayinstances useoptimizersto reduce web asset file sizes. - All Warps
peerorgatewayinstances useDNS over TLSto resolve relayed DNS queries. - All Warps instances use a local
ProxyCacheandResolverCache. - All Warps instances can rotate encryption keys and can scatter network traffic on-demand.
Building
cd /path/to/tholian-network/warps; # build binary bash build.sh; # install binary chmod +x ./build/tholian-warps; sudo cp ./build/tholian-warps /usr/bin/tholian-warps; # show help tholian-warps;
Usage: Tunnels and Gateways
The easiest way to use Warps is with running a Warps
gateway
on your own VPS
that is connected to the internet, and a locally running Warps
tunnel
.
As a defaulted network protocol, it is best to use
dns
, as that usually works
to bypass typical firewall setups. Alternative supported network protocols are
documented further down in this document.
# on your VPS server (1.3.3.7) tholian-warps gateway "dns://0.0.0.0:1053"; # on your local machine tholian-warps tunnel "any" "dns://1.3.3.7:1053"; curl -x localhost:1080 http://google.com;
Usage: Proxy Chains
Warps can be chained via multiple proxies, without a limit on how many network hops you want to the public internet. In this example, we are routing local web traffic through 3 instances before the traffic hits the clearnet.
# on your first VPS server (1.3.3.7) tholian-warps gateway "dns://0.0.0.0:1337"; # on your second VPS server (1.3.3.8) tholian-warps forward "http://1.3.3.8:1338" "dns://1.3.3.7:1337"; # on your third VPS server (1.3.3.9) tholian-warps forward "dns://1.3.3.9:1339" "http://1.3.3.8:1338"; # on your local machine # local -> dns -> 1.3.3.9 -> http -> 1.3.3.8 -> dns -> 1.3.3.7 -> * -> internet tholian-warps tunnel "any" "dns://1.3.3.9:1339"; curl -x localhost:1080 http://google.com;