在返回数据包上设置流量类别

Juz*_*zer 10 iptables qos

我有一个网络拓扑:

Server <-> router1 <-> router2 <-> router3 <-> edgeRouter <-> "internet"
Run Code Online (Sandbox Code Playgroud)

所有路由器都基于linux,并支持iptables。

服务器使用 iptables ( --set class X:Y)设置流量类,路由器根据设置的类进行一些“路由”。(类取决于原始应用程序)。

边缘路由器通过我们的 ISP 将数据包转发到互联网,并接收返回(回复)数据包。收到的回复当然没有设置流量类。

是否可以iptables在边缘路由器(mangle 或类似的东西)上使用规则来跟踪返回数据包(NAT 样式,来自“ESTABLISHED”连接的数据包)并将返回的数据包标记为与原始数据包具有相同的流量类别包?在边缘路由器上启用 NAT 不是问题。

TLDR:如何使用 iptables 对同一连接的与出口具有相同类的入口数据包进行分类。

小智 0

由于您的出口数据包具有基于应用程序的类别集(并且我猜测每个应用程序都使用一组特定的 TCP/UDP 端口),因此您可以根据这些端口对传入数据包进行重新分类。

例如。在 EdgeRouter 上重新分类已建立的(出站)HTTP 会话:

iptables -t mangle -A INPUT -i [WANIF] -m state --state ESTABLISHED,RELATED -p tcp -m tcp --sport 80 -j DSCP --set-dscp-class cs3
Run Code Online (Sandbox Code Playgroud)

注意:可能需要使用 FORWARD 表而不是 INPUT ...

但是 - 要跟踪出口数据包,确定它们在出去时具有什么类别,然后将同一类别应用于同一流的入口数据包 - 仍然是可能的,但工作量很大,并且可能需要与 conntrack 接口的自定义网络过滤器模块。