端口转发至 Linux KVM 客户机

端口转发至 Linux KVM 客户机

我有一个设置,在其中运行 PopOS 并在 KVM 中运行 Windows 10 来玩游戏。我最近遇到了由于严格 NAT 类型而导致的与 COD:MW 断开连接的情况,网络建议在路由器中为游戏转发一些端口,这样应该会为您提供开放 NAT 类型。如果我只运行 Windows(本机,无 KVM),我以前就这样做过,但现在当游戏在 KVM 实例上运行时,我遇到了一些麻烦。

我的路由器已将所有需要转发的端口设置为转发到我的 Linux 机器使用的物理网卡的 IP。我的 Linux PopOS 机器的 IP 是 192.168.0.106,而 Windows 实例的 IP 是 192.168.122.216,因此我尝试对所有需要转发的端口运行此命令: iptables -A FORWARD -i eth0 -p tcp --dport 3074 -d 192.168.122.216 -j ACCEPT

这对 NAT 类型仍然没有影响。

我怀疑这行不通,但是我还能做些什么来转发这台 Windows 机器的端口,Linux 实例是否甚至应该转发端口?

答案1

您使用的规则是在筛选表。它旨在允许流量以防其他因素(如默认 DROP 策略)不允许。因此,根据您的设置,可能仍需要此规则。

您实际上要做的正是您的家用路由器正在做的事情:DNAT(对数据包的目标部分进行的 NAT)。这是在纳特表和 PREROUTING 链,并将影响同一连接的所有后续数据包。由于这是在路由决策之前完成的,因此路由堆栈将只看到新的目标,该目标不再是主机,而是要路由到 Windows VM 的地址。以下是可能的命令:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3074 -j DNAT --to-destination 192.168.122.216

您应该为路由器上已经存在的“端口转发”的每个端口(以及协议 tcp 或 udp)提供一个,以便执行与它完全相同的操作,更进一步:到 VM。

相关内容