答案1
应该可以直接在 systemd 中执行此操作。
Netplan(根据您链接到的文档)将您输入的 yaml 配置渲染到配置文件中,然后将其提供给任何底层引擎,可能是 NetworkManager 或 systemd-networkd。它将这些文件放入适当的/run
目录中。
手册systemd-link
页有TCPSegmentationOffload 指令, 和一个用于 GenericSegmentationOffload。
Systemd 认为 /etc/ 中的文件具有最高优先级(高于 /run/),那么应该工作是将一个 .link 单元文件放在 中/etc/systemd/network/
,可能名为01-tso-and-gso.link
,其内容如下:
[Match]
# Set a match condition appropriate for your use case
Name=*
[Link]
TCPSegmentationOffload=false
GenericSegmentationOffload=false
我没有测试过这个;我没有简单的方法来测试它;但我最近读了很多 systemd 文档,我很确定这是你需要的。请让我知道它是否适合你。
答案2
其实并不像@Wildcard说的那么简单。首先,他的Match部分有一个错误。应该是:
[Match]
# Set a match condition appropriate for your use case
OriginalName=*
[Link]
TCPSegmentationOffload=false
GenericSegmentationOffload=false
其次,如果你将其添加为01-tso-和-gso.link在/etc/systemd/网络/它通常会弊大于利;] 这是因为 Match 规则将应用于所有接口,因此其他文件中定义的这些接口(在这种情况下是所有接口)的所有其他规则都将被忽略。这是因为:“第一个(按词汇顺序)链接文件与给定设备匹配的。请注意,系统附带一个默认文件 99-default.link。因此,任何用户提供的 .link 都应该具有词汇上更早的名称,以便完全考虑。"。因此,“好”的效果是,例如,99-default.link 文件中定义的接口 NamePolicy 不被考虑在内 - 您的接口名称在重新启动后会发生变化,这通常不是您想要的 ;]
因此,为了让事情顺利进行,正如您可能希望的那样,您应该:
- 将 [Link] 部分规则放入影响接口的每个现有 .link 文件中。这些规则位于:/usr/lib/systemd/网络,/运行/systemd/网络,/etc/systemd/网络例如,Ubuntu 中/lib/systemd/网络。
- 将 [link] 部分规则放入默认的 .link 文件中:/lib/systemd/network/99-default.link(这是在 Ubuntu 18.04 中 - 不知道其他系统中的位置)