tl;dr: Help me, Obi-Wan, you’re my only hope.
Summary:
I am trying to play peer-to-peer games while streaming them on Twitch as an Affiliate. I have a degraded performance when I enter peer-to-peer areas, and it crushes the stream and the data output gets tanked until the stream stutters and even disconnects. If not p2p gaming, it’s stellar!
The Problem:
I am stuck with a CG-Strict NAT service provider. And so I try to use a VPN Datacenter-Hosted Static IP with Forwarded Ports in a different country using Wireguard with a Specified Domain List and full Port Forward setup in LuCI, including Custom Rules.
Key detail:
When I look at ssh output while gaming, I can see that 0 data flows through my intended peer-to-peer ports.
Seems I’m not setting myself up properly.
I have used Google Gemini LLM to try to get me setup and after a LOT of effort, my data still doesn’t flow through the VPN tunnel for my Specified Doman + Forwarded Ports using them.
My basic setup:
- Router: GL-MT6000 4.9.1
- 850 Mb Up/Down Fiber Optics in Viet Nam which has a Carrier-Grade Strict NAT
- Max Cap of 880 Mbps Up and Down with LuCI’d cake SQM (A+ Bufferbloat Rating)
- Windscribe Pro Static IP Datacenter with Forward Ports (imported into GL’s VPN Client)
- VPN Dashboard Connected 1 Device (PC) to 7 Addresses (Domains like Steam.com)
- Network > IPv6 Enable, LAN, Mode NAT6, DNS acquisition method Auto
- Security > NAT Mode: Enable Full Cone NAT ON (just turned it on, haven’t tested yet)
- Ports Forwarded From [wgclient1] to [this device] to Lan IP __ port __
- Firewall - Custom Rules (currently, I tried iptables first, no data flowed)
- nft add chain inet fw4 mangle_prerouting { type filter hook prerouting priority mangle; policy accept; } 2>/dev/null
- nft flush chain inet fw4 mangle_prerouting 2>/dev/null
- nft add rule inet fw4 mangle_prerouting ip saddr 192.xxx.x.xxx udp dport { 2456-2458, 4950, 4955, 27015, 27031-27036, 30640 } meta mark set 0x1000 counter
- nft add rule inet fw4 mangle_prerouting ip saddr 192.xxx.x.xxx udp sport { 2456-2458, 4950, 4955, 27015, 27031-27036, 30640 } meta mark set 0x1000 counter
none of this works, data do not flow- ip show rules normal, most all that stuff is well-formed, data still don’t flow
Attempts:
I have tried so many things beyond the obvious basics in LuCI, which are insufficient, including PREROUTING mangling with nft commands using –dport and –sport or else older-style iptable injections in the Custom Rules section. Big problem with all of this is that I’m not specialist in any way, I just try to vibe my way through it using LLMs. It’s brutal, hey!
P.S. I’d be willing to just put all my data through my Singapore Datacenter, but it seems like that extra couple of hops is something I’d better like to avoid since other than peer-to-peer gaming, I’m blazing and can multi-stream at 60FPS 1440p on four+ platforms at once.
