Is there equivalent of WFP on Linux?

Hi,

I’ve recently switched from Windows to Linux. I used WFP on Windows to address the CDN issues. Does Mudfish on Linux suffer from the same issues? If yes, what is the workaround?

:frowning: Thank you for your feedback. As you can guess, my answer is that no WFP mode support for Linux at this moment.

I need to research a little bit how easily I can implement it. Let me create an internal ticket to follow up your feature request.

Thank you very much. I appreciate it.

EDIT: It seems this method won’t work because of how Steam’s loopback works.

I’m not sure if this is useful but I asked Claude.ai for a possible solution and this is what it came up with. Basically it creates a namespace for the game I’m playing (FF14) and then routes the traffic appropriately. This is configured specifically for my machine (CachyOS). I also haven’t tested this thoroughly yet.


#!/bin/bash
# Save as setup-ff14-namespace.sh

# Create namespace
sudo ip netns add ff14

# Create veth pair
sudo ip link add veth-ff14-host type veth peer name veth-ff14-ns

# Move one end to namespace
sudo ip link set veth-ff14-ns netns ff14

# Configure host side
sudo ip addr add 10.200.0.1/30 dev veth-ff14-host
sudo ip link set veth-ff14-host up

# Configure namespace side
sudo ip netns exec ff14 ip addr add 10.200.0.2/30 dev veth-ff14-ns
sudo ip netns exec ff14 ip link set veth-ff14-ns up
sudo ip netns exec ff14 ip link set lo up

# Enable forwarding
sudo sysctl -w net.ipv4.ip_forward=1

# Add UFW rules to allow namespace traffic
sudo ufw route allow in on veth-ff14-host
sudo ufw route allow out on veth-ff14-host

# Setup NAT using nftables - force traffic out tap0 only
sudo nft add table ip ff14nat
sudo nft add chain ip ff14nat postrouting { type nat hook postrouting priority 100 \; }
sudo nft add rule ip ff14nat postrouting ip saddr 10.200.0.0/30 oifname "tap0" masquerade

# Set default route in namespace
sudo ip netns exec ff14 ip route add default via 10.200.0.1

# Setup DNS in namespace
sudo mkdir -p /etc/netns/ff14
echo "nameserver 8.8.8.8" | sudo tee /etc/netns/ff14/resolv.conf
echo "nameserver 8.8.4.4" | sudo tee -a /etc/netns/ff14/resolv.conf

echo "Namespace setup complete"
echo "Traffic will route through tap0 (Mudfish)"

Cleanup script:

#!/bin/bash
# Save as cleanup-ff14-namespace.sh

# Remove UFW rules
sudo ufw route delete allow in on veth-ff14-host
sudo ufw route delete allow out on veth-ff14-host

# Remove nftables NAT table
sudo nft delete table ip ff14nat

# Delete veth interface
sudo ip link del veth-ff14-host

# Delete namespace
sudo ip netns del ff14

# Remove DNS config
sudo rm -rf /etc/netns/ff14

# Remove sudoers file if created
sudo rm -f /etc/sudoers.d/ff14-namespace

echo "FF14 namespace removed"

Then you adjust your startup to use the namespace:

sudo ip netns exec ff14 sudo -u <user> steam steam://rungameid/39210

Oops, looks like it’s based on network namespaces. That could be one way to simulate WFP mode on Linux, but it seems a bit complicated. If I were to implement this, I’d probably use eBPF + SO_BINDTODEVICE. :slight_smile: