有没有办法用 DSCP/ToS 标记任何特定应用程序的流量

有没有办法用 DSCP/ToS 标记任何特定应用程序的流量

我最近从 Windows 切换到 Linux (Manjaro)。

为了管理流量,我一直在使用 Windows 功能,该功能允许我指定应用程序的名称,以便其网络流量将用特定代码 (DSCP) 标记,然后我的路由器 (pfsense) 将检查它并相应地优先处理流量。

它设置了以下优先级:

  1. 线上游戏
  2. 所有未分类流量(主要是网络流量)
  3. steam/origin/windows 更新
  4. 激流

这使得我和我的兄弟可以玩在线游戏,有种子,我的父母可以随时打开 YouTube 视频,种子/更新将被路由器自动限制,在最坏的情况下,我们会在整个过程中获得 5 毫秒的抖动和额外的 10 到 20 ping。

当我考虑切换到 Linux 时,我并没有想到复制此配置会是一个问题,我本以为这是 iptables 或其他一些 Linux 防火墙的本机功能,但事实证明,虽然该功能确实存在大约在 2002/2003 年,它因损坏而被放弃,并且认为修复起来太麻烦。

iptables 确实允许您根据进程 pid 来标记流量,但这对我来说不太好,因为我需要标记应用程序发出的第一个数据包,因为 pfsense 如何对流量进行优先级分类。

因此,在几周的时间里,在致力于解决方案之前尝试不同的搜索词时,我已经通过以下选项取得了进展:

SElinux/Aparmor - 这些所做的远远超出了我想要/需要的范围

systemtap - (内核调试工具)我正准备摸索出一个脚本来制定 iptables 规则,同时从某种实时内核补丁中读取 pid/进程名称(不理想)

anfd/lpfw - 这些防火墙默认阻止所有内容,并允许您设置规则以允许基于应用程序命令名称的流量

我发布此内容是希望有人能解决这个问题,因为如果没有,我将不得不开始修改 lpfw 或 andf 以满足我的需要。

TL;DR 我想让特定的应用程序根据其命令名称对其流量进行标记(ToS/DSCP),以便我的路由器可以适当地优先考虑它们。

任何有关如何在 Linux 中复制此功能的信息都值得赞赏。

相关内容