WireRydr

已撰写评论

我实际上在 opensource.com 上注册,以便能够为这篇文章保存一条“谢谢”评论 - 对我帮助很大。

我对你的解决方案的实施做了一些更改,我将在此处指出,以防对任何人有帮助

1. 我没有编写常规的“simple/forking” systemd 服务单元,而是编写了一个“oneshot”服务。我已将其粘贴在下面。

2. 我没有让服务调用 shell 脚本,而是让它直接调用 sysctl --load=[FILE],其中 [FILE] 是我放置在 '/etc/sysctl.d' 中的本地 drop-in 文件的名称,其中包含 ipv6 禁用设置。解决方案中少一个文件是件好事。

3. 为了确保在系统启动期间不会过早尝试修复,我在服务单元文件中使用了 After = 参数,强制等待网络联机后再触发。到目前为止,这对我来说似乎有效,并且避免了任何类型的内置时间延迟的需要。

4. 我选择仅直接加载我创建的单个 IPv6 设置文件,而不是运行 sysctl --system(这会导致基本上加载所有地方的所有系统配置文件),理论是最小化此修复的影响范围是另一件好事。

这是我最终使用的 oneshot 服务单元文件(包含对您的文章的归属引用,我再次感谢您)

#################################################################################
# 文件名:/etc/systemd/system/disable_ipv6.service
# 创建者:wirerydr
# 创建日期:[2022-08-17 00:29]
# 最后修改日期:[2022-08-17 01:16]
# 描述:在启动期间完全禁用 IPv6 的 Oneshot 服务
#################################################################################
# 注意:似乎在启动期间,'/etc/sysctl.d/*.conf' 中的设置没有
# 总是应用。为了缓解这种情况,此 systemd oneshot 服务强制
# 应用设置文件 '/etc/sysctl.d/70-disable-ipv6.conf',以
# 完全禁用 IPv6。此 oneshot 服务在
# 系统启动期间调用,在达到 systemd 'network-online' 目标后。
#
# 源自 'https://open-source.net.cn/article/22/8/disable-ipv6',感谢。
#################################################################################
#
[Unit]
描述 = "在启动时完全禁用 IPv6 的 Oneshot 服务"
After = network-online.target
#
[Service]
类型 = oneshot
RemainAfterExit = yes
ExecStart =/bin/bash -c "sysctl --load=/etc/sysctl.d/70-disable-ipv6.conf"
#
[Install]
WantedBy = multi-user.target

© . All rights reserved.