Setting up DHCP sever using Fedora 32

I am new to ask fedora as well as using Fedora in general and am hoping someone here can assist me with what I am trying to do.

I’ve been trying to follow the documentation found here to set up a remote diskless system, https://docs.fedoraproject.org/en-US/Fedora/14/html/Storage_Administration_Guide/nfs-diskless-systems.html.

Part of this is setting up DHCP, however I’m having trouble even starting the service. I’ve looked all over for documentation to help me get this running but have had no luck.

Here is what my dhcpd.conf file looks like:

allow booting;
allow bootp;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
default-lease-time 600;
max-lease-time 7200;
}

class “pxeclients” {
match if substring(option vendor-class-identifier, 0, 9) = “PXEClient”;
next-server 192.168.5.10;
filename “linux-install/pxelinux.0”;
}

group {
host hau-1 {
hardware ethernet ac:1f:6b:9a:9d:1f;
fixed-address 192.168.0.101;
}
host hau-2 {
hardware ethernet ac:1f:6b:7f:61:1c;
fixed-address 192.168.0.102;
}
host hau-3 {
hardware ethernet ac:1f:6b:7f:61:1e;
fixed-address 192.168.0.103;
}
host hau-4 {
hardware ethernet ac:1f:6b:b5:df:e2;
fixed-address 192.168.0.104;
}
}

dhcpd.service reads:

[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
Wants=network-online.target
After=network-online.target
After=time-sync.target

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/dhcpd
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid eno1
StandardError=null

[Install]
WantedBy=multi-user.target

ifconfig outputs:

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.10 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80::52c5:4565:a24b:7e82 prefixlen 64 scopeid 0x20
ether ac:1f:6b:b0:a7:30 txqueuelen 1000 (Ethernet)
RX packets 44 bytes 10494 (10.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 132 bytes 19784 (19.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether ac:1f:6b:b0:a7:31 txqueuelen 1000 (Ethernet)
RX packets 60 bytes 11634 (11.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 90 bytes 14922 (14.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens2f4: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:07:43:46:4c:f0 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 6

ens2f4d1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:07:43:46:4c:f8 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 6

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 75 bytes 7576 (7.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 75 bytes 7576 (7.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:2c:04:b5 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

When I go to start the service I get “Redirecting to /bin/systemctl start dhcpd.service
Job for dhcpd.service failed because the control process exited with error code.
See “systemctl status dhcpd.service” and “journalctl -xe” for details.”

systemctl status dhcpd.service outputs the following:

● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/etc/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2020-09-14 15:35:49 EDT; 1min 10s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Process: 3803 ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid eno1 (co>
Main PID: 3803 (code=exited, status=1/FAILURE)
CPU: 20ms

Sep 14 15:35:49 localhost.localdomain dhcpd[3803]: have been made to the base software release in order to make
Sep 14 15:35:49 localhost.localdomain dhcpd[3803]: it work better with this distribution.
Sep 14 15:35:49 localhost.localdomain dhcpd[3803]:
Sep 14 15:35:49 localhost.localdomain dhcpd[3803]: Please report issues with this software via:
Sep 14 15:35:49 localhost.localdomain dhcpd[3803]: https://bugzilla.redhat.com/
Sep 14 15:35:49 localhost.localdomain dhcpd[3803]:
Sep 14 15:35:49 localhost.localdomain dhcpd[3803]: exiting.
Sep 14 15:35:49 localhost.localdomain systemd[1]: dhcpd.service: Main process exited, code=exited, status=1/FAILURE
Sep 14 15:35:49 localhost.localdomain systemd[1]: dhcpd.service: Failed with result ‘exit-code’.
Sep 14 15:35:49 localhost.localdomain systemd[1]: Failed to start DHCPv4 Server Daemon.

I am very new to fedora and this is my first attempt at ever setting up dhcp in Linux. So I wouldn’t be surprised if I messed up something simple like the dhcpd.conf file. Any help or recommendations would be greatly appreciated. I’ve spent more time trying to figure this out than I’d care to admit…

You journal output indicates it does not like one of your parameters. Here are a few tips::

  1. Start simple even if not what you want, verify and build from there.
  2. Use systemctl instead of service to control daemons.
  3. Use journalctl -u dhcp to view journal logs for a service
  4. You’re unit file indicates dhcpd bind only to eno1. This normally is done when trying to get multiple dhcp/dnsmasq servers to co-exist as they bind to all interfaces despite their listen directives. Make sure you only want to listen on that interface. I suspect not due to your virtual bridge.
  5. I don’t know if dnsmasq will do all you want but consider it as it’s easier.
1 Like

Thank you for your tips.

journalctl -xe returned something that caught my attention:

Sep 16 07:10:41 localhost.localdomain dhcpd[15376]: No subnet declaration for eno1 (192.168.5.10).
Sep 16 07:10:41 localhost.localdomain dhcpd[15376]: ** Ignoring requests on eno1. If this is not what
Sep 16 07:10:41 localhost.localdomain dhcpd[15376]: you want, please write a subnet declaration
Sep 16 07:10:41 localhost.localdomain dhcpd[15376]: in your dhcpd.conf file for the network segment
Sep 16 07:10:41 localhost.localdomain dhcpd[15376]: to which interface eno1 is attached. **
Sep 16 07:10:41 localhost.localdomain dhcpd[15376]:
Sep 16 07:10:41 localhost.localdomain dhcpd[15376]:
Sep 16 07:10:41 localhost.localdomain dhcpd[15376]: Not configured to listen on any interfaces!

I ran journalctl -u dhcp per your tip to see if I could get any other information, but I didn’t get anything as seen below:
– Logs begin at Fri 2020-09-11 11:58:52 EDT, end at Wed 2020-09-16 07:24:39 EDT. –
– No entries –

I’m okay with it binding only to eno1. The setup is just to have this machine connected to a switch and to have clients connected to the switch do a “diskless boot” to the host. The documentation I was following to set this up mentioned setting dhcp up this way (https://docs.fedoraproject.org/en-US/Fedora/14/html/Storage_Administration_Guide/nfs-diskless-systems.html). Will dnsmasq allow me to do what I want in this case?

I was able to figure out the issue. I made a typo in my dhcpd.conf file. I changed next-server 192.168.5.10; to next-server 192.168.0.10;. Thank you again for the tips.