如何将 tc qdisc 命令与特定接口永久关联?

ste*_*hak 3 networking bandwidth openvpn tc

我需要使用tc qdisc命令来限制由openvpn. 当我手动运行命令时,这很有效,但偶尔会断开或重新启动连接,这似乎会取消或停用以前应用的带宽设置。有没有办法让tc qdisc命令在特定接口上永久应用(或至少在我选择取消它之前),这样在任何时候该接口启动时,我的带宽设置都会应用?我需要像firewall-cmd永久标志这样的东西,使设置保持不变。

我目前使用的命令如下所示:

tc qdisc add dev tun0 tbf rate 1mbit latency...
Run Code Online (Sandbox Code Playgroud)

在哪里tun0创建的接口名称openvpn

cas*_*cas 5

openvpn有一个被调用的选项--up cmd,它cmd在第一次建立 VPN 连接时运行,还有一个--up-restart选项告诉openvpn--up重新启动连接时也运行命令。

您可以编写一个包含您的tc qdisc ...命令的脚本,使用 使其可执行chmod +x,然后添加--up /path/to/my/script --up-restartopenvpn命令行。

或者,cmd可以是包含整个命令及其所有参数的正确引用的字符串。例如

openvpn ...  --up 'tc qdisc ...' --up-restart ...
Run Code Online (Sandbox Code Playgroud)

这可能更简单,但脚本更灵活,并且在建立连接时可以更轻松地执行多项操作。

顺便说一句,还有一个--down cmd选项可用于在 VPN 断开连接时运行脚本或其他程序。

man openvpn有关--up--down以及相关选项的更多详细信息,请参阅。


注意:您的 Linux 发行版可能已经使用了此功能,并且可能有一个目录,您可以在其中创建一个脚本,以便在首次建立或重新启动 VPN 时自动运行。检查您的发行版的 openvpn 包的文档。如果它做了类似的事情,然后按照那里的说明进行操作。如果没有,请使用上述--up选项。