我使用 Lutris 并通过它运行 VK Play GameCenter。我还使用 WireGuard 和网络命名空间将流量从 Lutris 路由到 WireGuard。在此配置中,VK Play GameCenter 无法工作,根据 tcpdump (
sudo -E ip netns exec lutris-ns tcpdump -nn -i wg-lutris
),我发现它甚至不向网络发送数据包。
这是我的脚本:
#!/usr/bin/bash
NOMO="lutris"
NET_NS="$NOMO-ns"
WG_NOMO="wg-$NOMO"
sudo ip netns add $NET_NS
sudo ip link add $WG_NOMO type wireguard
sudo ip link set $WG_NOMO netns $NET_NS
sudo ip -n $NET_NS addr add 192.168.2.2/29 dev $WG_NOMO
sudo ip netns exec $NET_NS wg setconf $WG_NOMO /etc/wireguard/$WG_NOMO.conf
sudo ip -n $NET_NS link set $WG_NOMO up
sudo ip -n $NET_NS route add default dev $WG_NOMO
sudo -E ip netns exec $NET_NS sudo -E -u \#$(id -u) -g \#$(id -g) /usr/bin/lutris
sudo ip -n $NET_NS link set $WG_NOMO down
sudo ip -n $NET_NS link del $WG_NOMO
sudo ip netns del $NET_NS
同时,如果我在系统级别使用 WireGuard(没有网络命名空间) - VK Play GameCenter 可以工作。
网络命名空间工作也没有问题。如果我将 lutris 调用更改为curl 调用 - 它可以工作:
sudo -E ip netns exec $NET_NS sudo -E -u \#$(id -u) -g \#$(id -g) curl https://2ip.ru # <-- this is work
通过 lutris 本身在隔离命名空间中搜索安装程序也可以。问题仅出现在 VK Play GameCenter 上并且仅当我使用网络命名空间时出现。
问题 - 据我了解,网络隔离应该只影响网络设置,程序甚至不应该注意到它。什么会导致程序甚至不尝试发送数据包?
特别是您在网站上使用 VPN。实际情况是 Lutris 网站使用 Cloudfare,它会在您连接时对您的 IP 进行此类检查。部分原因是它可以将您引导到最好的云服务器(我认为是通过 DNS),但如果它检测到同一 IP 地址上有很多用户,您可能会收到烦人的验证码废话。
我从我的 VPN 中发现我必须切换所连接的服务器,然后我才能继续。