我有一个由 Google Cloud 托管的 Debian 7 服务器,运行一个游戏服务器和一个 Rails 服务器。
Rails 服务器在端口 80 上运行,游戏服务器在端口 8000 上运行。
我想应用一个网络规则,允许游戏服务器数据包具有更高的优先级,以最大限度地减少延迟。
现在,我发现这iptables
可以帮助我:
iptables -A PREROUTING -t mangle -p tcp --dport 8000:8010 -j TOS --set-tos Minimize-Delay
但是当我检查我的规则是否已添加时:
iptables -L -vt nat
Chain PREROUTING (policy ACCEPT 877 packets, 100K bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 877 packets, 100K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 329 packets, 20395 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 329 packets, 20395 bytes)
pkts bytes target prot opt in out source destination
我没有看到我的规则。我做错了什么?而且,这是做我想做的事情的正确方法吗?
答案1
iptables -t mangle -A PREROUTING -p tcp --dport 8000:8010 -j TOS --set-tos Minimize-Delay
iptables -t nat -L -v
如果更改参数顺序,则非常明显。这些是你的命令。现在很明显,mangle
修改了一个表 ( ),然后nat
查看另一个表 ( )。因此,列表命令没有显示任何变化也就不足为奇了。
但我不希望这能带来真正的改变。也许您应该调查一下当今的路由器是否完全遵循这一点。
如果有来自游戏服务器的数据包,您可以考虑使用流量整形来延迟来自 Rails 服务器的数据包。但这个系统可能有一个非常快的界面,所以这可能不会产生很大的影响。
什么可能对您有帮助 – 但我不知道这是否以及如何可能:rails 服务器(如果当前正在运行并且只有一个虚拟 CPU 或者游戏服务器可以使用多个 CPU)应该立即由如果数据包到达游戏服务器,则内核。您可以在这里提出一个新问题。也许让游戏服务器以实时优先级运行会有所帮助。