![Ubuntu 20 LTS 永久更改网络接口的 tc qdisc 的正确方法?](https://linux22.com/image/934676/Ubuntu%2020%20LTS%20%E6%B0%B8%E4%B9%85%E6%9B%B4%E6%94%B9%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E7%9A%84%20tc%20qdisc%20%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%EF%BC%9F.png)
是否存在现有的正确方法来定义启动时网络接口的 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