在 Astra Linux 1.3 上运行,我的 dhcp 服务 (isc-dhcp-server) 现在配置良好,可以按预期工作,但有一点细微差别 - 它仅在启动时工作,但系统不会在启动时运行它。这样做sudo update-rc.d isc-dhcp-server defaults
没有帮助。可以通过这种方式将其他服务添加到自动启动中(并从中移除),因为这是基于 SysV 的系统固有的。我必须做什么才能让它运行?谢谢。
PS
uname -a
给出
3.2.0-27-通用
重启后sudo service --status-all
,
[ - ] isc-dhcp 服务器
答案1
我使用过Ubuntu Server 18.04
,也遇到过类似的问题:isc-dhcp-server
无法自动启动。对我来说,问题出在服务被禁用;执行后sudo systemctl enable isc-dhcp-server
问题就解决了。
答案2
正如 ivanivan 所说,守护进程没有启动,因为所有网络接口都已关闭。所以我决定在它们启动后再次调用启动脚本。我的系统使用 wicd 作为网络管理器,它可以在网络状态发生变化时调用一些脚本。
有点像 hack,但确实有效。我已将脚本放入 /etc/wicd/scripts/postconnect :
sleep 60
/etc/init.d/isc-dhcp-server start
瞧,守护进程按预期启动了。
注意:sleep 60
这是必需的,因为网络在脚本调用后 60 秒才开始工作。
答案3
上述两个答案都不适用于我,因此我也做了一些修改 - 我编辑/etc/init.d/isc-dhcp-server
并在脚本中的命令sleep 20
开头添加了一个,因此进行了更改,使其看起来像以下内容:start
case "$1" in
start)
sleep 20 # <--- added this line (without the comment)
test_config
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
--exec /usr/sbin/dhcpd -- \
-q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES
sleep 2
if check_status -q; then
log_end_msg 0
else
log_failure_msg "check syslog for diagnostics."
log_end_msg 1
exit 1
fi
;;
现在它可以工作了(当然,最初需要延迟 20 秒)。
答案4
我遇到了同样的问题。解决了在必需项上添加 network.target 的问题。
请注意,isc-dhcp-server.service
已配置仅需要 network-online.target。我看到了关于man systemd.special
此问题的非常令人困惑的解释...
因此,我只需添加选项,重新加载 systemdsystemctl daemon-reload
并重新启动 Linux,就可以正常工作了...
# Provides: isc-dhcp-server
# Required-Start: $remote_fs $network $syslog network.target
# Required-Stop: $remote_fs $network $syslog network.target
#