Following the White Rabbit: Developer Builds Custom Rust VPN PAYPHONE Using QUIC and Obfuscation to Evade Detection
A developer has published a detailed technical account of building PAYPHONE, a custom IPv4 VPN written in Rust that uses QUIC as the primary transport and an optional TLS-over-TCP fallback. The project was created to give the author full control over packet handling, routing, and traffic shaping while exploring techniques that might resist the detection methods used against standard WireGuard in Russia.
Applications on the client send packets to a TUN interface. The client reads these packets, prepends a 16-byte PAYPHONE header containing version, type, flags, length, and sequence number, then transmits them over QUIC datagrams or an obfuscated TLS stream. On the server the header is stripped and the original IP packet is written to the server-side TUN, after which Linux routing and NAT forward it to the internet. Return traffic follows the reverse path.
The protocol deliberately uses QUIC datagrams rather than a single ordered stream so that loss of one packet does not stall unrelated TCP connections inside the tunnel, following the approach described in RFC 9221. The implementation relies on the Quinn library; an early mistake with send_datagram_wait was corrected by switching to non-blocking send_datagram calls and pre-checking datagram size.
Authentication uses short-lived Ed25519-signed tokens that encode subscription limits. The server re-validates tokens on every session event and maintains a list of revoked identifiers. Rate limiting is performed with a token-bucket algorithm tied to the subscription record.
Several practical problems surfaced after the first working connection. An initial MTU of 1280 exceeded Quinn’s available datagram budget once the 40-byte PAYPHONE header and QUIC overhead were added, producing TooLarge errors under load. The value was reduced to 1100 with dynamic adjustment based on the path’s max_datagram_size. On macOS, the /32 route to the server was occasionally removed by networksetup calls, causing the tunnel to route its own QUIC packets back into the TUN; the final solution combined a persistent /32 route with IP_BOUND_IF socket binding.
Tokio timer handling also required correction. Creating a fresh sleep inside each select! iteration prevented PING and route-check timers from ever firing. The timers are now created once before the loop and reset after each expiration. The client additionally polls routes every 400 ms to restore them after network configuration changes.
Obfuscation that rounded QUIC packet lengths to fixed sizes (128, 296, 568, 1200, 1440) was later removed because it distorted QUIC’s path-MTU discovery probes. Only random padding between 0 and 32 bytes is now applied after XOR masking.
Related articles
Personal Data in Russian Franchise Networks: Who Qualifies as Data Operator Under 152-FZ
In typical franchise models, customer personal data is collected at franchisee points, stored in the franchisor’s central system, and used for network-wide loyalty programs and marketing. The key legal question is which party determines the purposes of processing and therefore bears operator status under Federal Law No. 152-FZ. The law defines an operator as the entity that independently or jointly sets processing purposes, data composition, and actions, regardless of contractual labels. Franchisees usually act as operators when concluding contracts with customers, while franchisors become processors unless they pursue independent goals such as running loyalty schemes or sending branded advertising. When a franchisor defines its own purposes, both parties may simultaneously qualify as operators for different processing objectives, requiring separate legal bases and documentation. Proper data-processing instructions must be embedded in the commercial concession agreement and must list specific data categories, actions, security measures, and breach-notification timelines to avoid administrative fines ranging from 150,000 to 500,000 RUB.
Dynamic Sites on Yandex Cloud Storage Enable Communication Under White-List Restrictions
A developer facing mobile internet white lists explored ways to exchange encrypted messages without relying on blocked infrastructure. Initial attempts with a national messenger bot failed due to poor API documentation and account hijacking. The team then modeled the problem as three neighboring plots where Alice and Bob route messages through Eve while a slow postman handles delivery. Yandex Disk was tested as a message store accessible via direct GET and POST requests, though it required accounts and suffered from 15-25 second latency. The final approach used Yandex Cloud object storage, whose domains remained whitelisted, allowing HTML files to load and function even when only government services and select platforms were reachable.
Rawline Aggregates VK, MAX, DNS and Other Tunnels into One Multi-Platform VPN Client
Rawline is a new multi-platform client that combines various VPN protocols and non-standard transports into a single application for Android, Windows, Linux and macOS. The project is built on Throne using sing-box and Xray network cores and supports both conventional protocols and unusual transports such as VK and MAX calls, WebRTC, DNS and S3. Users can import profiles via links or QR codes, test latency, chain connections and apply per-app or per-domain routing rules. The developer paid special attention to security issues, removing unnecessary local proxy endpoints, protecting internal connections with random passwords and adding traffic ownership verification that is enabled by default on Android 10 and newer. Additional fixes were implemented after discovering that some transport bridges could be hijacked by external applications sending the first UDP packet. Source code and builds are available on GitHub.
Russia Freezes Entire Hosting Networks to Block VPN Traffic, Investigation Finds
An independent test of 435 endpoints across 154 hosting providers revealed that Russian internet providers are throttling connections to entire autonomous systems rather than individual IP addresses. Networks belonging to Hetzner, OVH, DigitalOcean, M247 and HostPapa are frozen after roughly 25 TCP packets, causing downloads to stall at around 16 KB while UDP-based WireGuard tunnels remain unaffected. The blocking is applied uniformly by multiple Russian operators including Beeline, MTS and home broadband providers, indicating a centrally distributed rule from Roskomnadzor via the TSPU filtering system. Smaller providers that rent IP space from the affected autonomous systems are also impacted, regardless of their own brand or location. Cloudflare-hosted resources currently pass the test, but the list of blocked networks has remained stable since mid-2025. The researcher published an open-source script that allows anyone to reproduce the measurements in under a minute.