是否存在现有的正确方法来定义启动时网络接口的 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