Не может запустить dhcpd на Ubuntu с systemd

У меня есть странная проблема при выполнении dhcpd на Ubuntu (x64). Я использую systemd запускаться dhcpd на начальной загрузке и это просто выходит.

Когда я запрашиваю сервисное состояние

$ systemctl status dhcpd
dhcpd.service - dhcpcd service
 Loaded: loaded (/etc/systemd/system/dhcpd.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2016-08-16 20:37:11 UTC; 15min ago
Process: 1591 ExecStart=/sbin/dhcpd -cf /etc/dhcp/dhcpd.conf eth1 (code=exited, status=0/SUCCESS)
Main PID: 1591 (code=exited, status=0/SUCCESS)

Когда я смотрю на журнал, я не вижу ошибок также:

journalctl _PID=1591

Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Internet Systems Consortium DHCP Server 4.3.3-P1
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Internet Systems Consortium DHCP Server 4.3.3-P1
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Copyright 2004-2016 Internet Systems Consortium.
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Copyright 2004-2016 Internet Systems Consortium.
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: All rights reserved.
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: For info, please visit https://www.isc.org/software/dhcp/
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: All rights reserved.
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: For info, please visit https://www.isc.org/software/dhcp/
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Config file: /etc/dhcp/dhcpd.conf
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Config file: /etc/dhcp/dhcpd.conf
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Database file: /var/lib/dhcp/dhcpd.leases
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Database file: /var/lib/dhcp/dhcpd.leases
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: PID file: /var/run/dhcpd.pid
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: PID file: /var/run/dhcpd.pid
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Wrote 0 leases to leases file.
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Wrote 0 leases to leases file.
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Listening on LPF/eth1/08:00:27:10:48:17/192.168.0.0/24
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Listening on LPF/eth1/08:00:27:10:48:17/192.168.0.0/24
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Sending on   LPF/eth1/08:00:27:10:48:17/192.168.0.0/24
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Sending on   LPF/eth1/08:00:27:10:48:17/192.168.0.0/24
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Sending on   Socket/fallback/fallback-net
Aug 16 20:37:11 kirk.sb.computer dhcpd[1591]: Sending on   Socket/fallback/fallback-net

Похоже, что все прекрасно, но dhcpd не работает.

Мой конфигурационный файл (/etc/dhcp/dhcpd.conf) очень просто:

# dhcp server configuration file

allow bootp;  #allow bootp protocol

#define DHCP subnet
#specify /etc/spock/spock.ub as boot file
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.2 192.168.0.200;
    filename "/etc/spock/spock.ub";
}

В моем сервисном сценарии я удостоверяюсь, что dhcpd не запустится, пока сеть не произошла:

# Start and stop dhcpcd service on eth1 interface

[Unit]
Description=dhcpcd service
# Come up after networking
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
#start dhcpd on eth1
ExecStart=/sbin/dhcpd -cf /etc/dhcp/dhcpd.conf eth1

[Install]
WantedBy=multi-user.target

Это также выходит, когда я пытаюсь запустить его через systemctl start dhcpd Однако, если я выполняюсь '/sbin/dhcpd -cf /etc/dhcp/dhcpd.conf eth1' из командной строки это хорошо работает.

Какая-либо идея, почему это выходит?

4
задан 17 August 2016 в 00:19

2 ответа

ветвления dhcpd самостоятельно, таким образом, я должен был изменить сервисный тип соответственно:

[Service]
Type=forking
ExecStart=/sbin/dhcpd -cf /etc/dhcp/dhcpd.conf eth1

Теперь это работает

1
ответ дан 1 December 2019 в 10:36

Если тот сценарий должен быть, бежал за сетевым интерфейсом, полностью функционально и в состоянии соединиться с внешним миром, поскольку network-online.target предлагает затем, что Вы могли бы хотеть протестировать соединение сначала путем проверки с помощью ping-запросов Google, например.

я предлагаю, чтобы Вы создали отдельный сценарий, содержащий тест ping до Вашего /sbin/dhcpd -cf /etc/dhcp/dhcpd.conf eth1 команда, и затем выполнили тот сценарий с помощью ExecStart в сервисе.

0
ответ дан 1 December 2019 в 10:36

Другие вопросы по тегам:

Похожие вопросы: