Description
Expected Behavior
With the proxy set to Shadowsocks-rust-2022 and VPN set to Glorytun-TCP, any LAN-side UDP egress packets are expected to leave the VPS upstream interface towards the public internet with the VPS public IP as the source address, ensuring proper response routing. See tcpdump snippet below:
05:56:07.803696 gt-tun0 In IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:56:07.803709 eth0 Out IP 37.221.215.79.51903 > 86.59.168.234.58653: UDP, length 1392
05:56:07.804293 gt-tun0 In IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:56:07.804303 eth0 Out IP 37.221.215.79.51903 > 86.59.168.234.58653: UDP, length 1392
05:56:07.805666 gt-tun0 In IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:56:07.805689 eth0 Out IP 37.221.215.79.51903 > 86.59.168.234.58653: UDP, length 1392
Current Behavior
When a LAN-side client transmits UDP packets at a rate above 10 Mb/s (value seems arbitrary), the VPS public egress will erratically leave some of the packets un-masqueraded, resulting in a middlebox dropping them somewhere along the path. The TCP egress bandwidth is 1200Mbit/s in my setup, but UDP caps out at 10Mbit/s due to this.
05:58:22.739332 gt-tun0 In IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:58:22.739336 eth0 Out IP 37.221.215.79.51903 > 86.59.168.234.58653: UDP, length 1392
05:58:22.741206 gt-tun0 In IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:58:22.741214 eth0 Out IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:58:22.741219 gt-tun0 In IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:58:22.741223 eth0 Out IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:58:22.741332 gt-tun0 In IP 10.255.255.2.51903 > 86.59.168.234.58653: UDP, length 1392
05:58:22.741337 eth0 Out IP 37.221.215.79.51903 > 86.59.168.234.58653: UDP, length 1392
Possible Solution
Probably some VPS-side misconfiguration of the firewall or the routing, I can't really debug that
Steps to Reproduce the Problem
- Configure a multipath router with Shadowsocks-Rust as the proxy and Glorytun-TCP as the VPN solution
- Start a controlled UDP stream through the Glorytun towards some remote host (I used iperf3 to get the tcpdumps and determine the rate limit)
- Observe in the OMR-VPS host's tcpdump output that some packets forwarded from the Glorytun towards the public WAN have a private source address
Context (Environment)
I'm trying to run a Wireguard server inside my home for roaming clients to connect in. Ideally, I'd do the server at the VPS, but the OMR daemon just kills every modification I make to its Shorewall config, so I'm instead trying to tunnel the WG transport into the home. The reordering from multipath UDP kills TCP throughput, that's why I went for Glorytun-TCP.
Specifications
- OpenMPTCProuter version: v0.61-6.6 r0+27346-c7ba5574f5
- OpenMPTCProuter VPS version: 0.1031 6.11.10+bpo-cloud-amd64
- OpenMPTCProuter VPS provider: ATW.hu
- OpenMPTCProuter platform: x86_64 Proxmox VM
- Country: Hungary