Ubuntu 20 LTS 永久更改网络接口的 tc qdisc 的正确方法?

Ubuntu 20 LTS 永久更改网络接口的 tc qdisc 的正确方法?

是否存在现有的正确方法来定义启动时网络接口的 tc qdisc 设置(或一般的 tc 设置,也需要一些过滤器)或者我是否必须编写自己的 systemd 启动脚本?

我知道 sysctl net.core.default_qdisc 并且已将其默认更改为普通 prio,但面向互联网的主要界面需要更详细的设置。

由于我是 Ubuntu 和 systemd 的新手,如果没有其他办法的话,我不会介意有人共享一个在启动时运行的 systemd 脚本模板。

编辑:不知道 crontab @reboot ,可能是最简单的方法。

答案1

如果您使用netplan配置网络,则无法直接设置 qdiscs,因此您可能会发现安装networkd-dispatcher并将命令放入routable.d/或中更容易configured.d/

上游站点有更多使用信息。

答案2

因此,创建一个一次性的 systemd 启动脚本确实是最简单、最有用的答案:

# ls -l local-startup.service
-rw-rw-r-- 1 root root 378 Feb 23  2021 local-startup.service
# cat /etc/systemd/system/local-startup.service
[Unit]
Description=Run once at startup to inizialize things
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
StandardOutput=append:/tmp/local-startup.service.out
StandardError=inherit
ExecStart=-/bin/bash -x /etc/local/local-startup.service.sh

[Install]
WantedBy=multi-user.target

并且指定位置中的实际启动脚本,qdisc 更改脚本源自以下脚本:

# ls -l /etc/local/local-startup.service.sh
-rwxr-xr-x 1 root root 1512 Nov 13  2021 /etc/local/local-startup.service.sh
# cat /etc/local/local-startup.service.sh
#!/bin/bash
source /what/ever/somewhere/script.sh
# any other local startup commands in the following lines
exit 0

相关内容