nftable nat 链中的 TCP 数据包丢失

nftable nat 链中的 TCP 数据包丢失

我正在尝试连接到 Minecraft 服务器,但在尝试连接时出现连接超时,尽管服务器显示为在线

Minecraft 多人游戏屏幕

这个问题可能看起来不合适,但是等一下。

minecraft 服务器在 Proxmox 容器上运行。Proxmox 容器在 Home-Server 上运行。Home-Server 连接到在 Linode 上运行的 Wireguard 服务器。

因此,我通过 wireguard 将前往公共 Linode 服务器的流量路由到 Homeserver,然后在 Homeserver 上,我再次将流量路由到 Minecraft 服务器并返回。

路由

对于路由部分,我在 linode 服务器和 proxmox 服务器上都使用了 nftable nat 规则。以下是来自 Linode 服务器的一个示例。

table ip nat {
        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                tcp dport 25565 dnat to 192.168.0.46
                udp dport 25565 dnat to 192.168.0.46
        }

        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                masquerade
        }
}

由于与服务器的基本通信似乎可以正常工作,所以我真的很困惑为什么我无法连接。

也许有人可以帮助我破译 Minecraft 客户端的 Wireshark 日志。

Minecraft 客户端 Wireshark 日志

我非常欢迎任何帮助、建议或问题,因为我在这方面投入的时间比我愿意承认的要多。

欢呼吧,Leo

附言:我不知道标题是否正确,所以请纠正我。:)

答案1

找到了!这是由 wireguard 配置引起的。默认 MTU 对我的配置来说太大了。我将其降低到 1392(我认为),它运行得很好。

如果有人想知道的话。Wireguard 不考虑 IPv4 到 IPv6 隧道,如今许多 ISP 都使用 IPv4 隧道来节省 IPv4 地址。这会增加 tcp 数据包的标头,一切都会崩溃。

相关内容