![“systemctl start dhcpd.service”命令不适用于 PXE 服务器设置虚拟](https://linux22.com/image/207936/%E2%80%9Csystemctl%20start%20dhcpd.service%E2%80%9D%E5%91%BD%E4%BB%A4%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%20PXE%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE%E8%99%9A%E6%8B%9F.png)
我正在尝试在 CentOS 7 上的笔记本电脑上设置 PXE 服务器以连接到物理测试客户端,请按照以下教程进行操作: https://www.linuxtechi.com/configure-pxe-installation-server-centos-7/#comment-35567
所有配置文件和设置过程均来自该网站。在“步骤:6 启动并启用 xinetd、dhcp 和 vsftpd 服务。”上,命令:“systemctl start xinetd”和“systemctl enable xinetd”有效,但是当我运行命令:“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 -l dhcpd.service”时,我收到以下错误消息:
systemctl status -l dhcpd.service
dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2022-07-05 11:18:07 EDT; 1min 12s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Process: 11655 ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid (code=exited, status=1/FAILURE)
Main PID: 11655 (code=exited, status=1/FAILURE)
Jul 05 11:18:07 localhost.localdomain dhcpd[11655]: to which interface virbr0 is attached. **
Jul 05 11:18:07 localhost.localdomain dhcpd[11655]:
Jul 05 11:18:07 localhost.localdomain dhcpd[11655]:
Jul 05 11:18:07 localhost.localdomain dhcpd[11655]: No subnet declaration for enp0s20f0u13 (10.249.6.154).
Jul 05 11:18:07 localhost.localdomain dhcpd[11655]: ** Ignoring requests on enp0s20f0u13. If this is not what
Jul 05 11:18:07 localhost.localdomain dhcpd[11655]: you want, please write a subnet declaration
Jul 05 11:18:07 localhost.localdomain systemd[1]: dhcpd.service: main process exited, code=exited, status=1/FAILURE
Jul 05 11:18:07 localhost.localdomain systemd[1]: Failed to start DHCPv4 Server Daemon.
Jul 05 11:18:07 localhost.localdomain systemd[1]: Unit dhcpd.service entered failed state.
Jul 05 11:18:07 localhost.localdomain systemd[1]: dhcpd.service failed.
这里还有 Dhcpd.conf 文件:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
# DHCP Server Configuration file.
ddns-update-style interim;
ignore client-updates;
authoritative;
allow booting;
allow bootp;
allow unknown-clients;
# internal subnet for my DHCP Server
subnet 172.168.1.0 netmask 255.255.255.0 {
range 172.168.1.21 172.168.1.151;
option domain-name-servers 172.168.1.11;
option domain-name "pxe.example.com";
option routers 172.168.1.11;
option broadcast-address 172.168.1.255;
default-lease-time 600;
max-lease-time 7200;
# IP of PXE Server
next-server 172.168.1.11;
filename "pxelinux.0";
}
我需要在 dhcpd.conf 文件中更改哪些内容才能使命令“systemctl start dhcpd.service”起作用,以便我可以完成 PXE 服务器教程?
答案1
dhcpd
未检测到任何已配置 172.168.1.0 子网中的 IP 地址的网络接口,因此它无法确定应使用哪个网络接口来提供服务。
不,您不能使用正在开始的 DHCP 服务器为实际运行 DHCP 服务器的系统分配 IP 地址。
enp0s20f0u13
显然,您的系统有一个IP 地址为 10.249.6.154 的物理网络接口。该地址是“RFC 1918”专用 IP 地址范围,任何人都可以使用。
另一方面,您所关注的教程中使用的地址实际上已被 Microsoft 使用那么你不应该按原样复制教程中的配置,但使用私有地址范围之一或其一部分。
另外两个私有 IP 地址范围是 172.16.0.0 ... 172.31.255.255 和 192.168.0.0 ... 192.168.255.255,所以本教程的作者可能正在考虑使用其中任何一个,并设法将其混合起来?实际上有另一组较小的 IP 地址范围专门指定用于书面文档,以最大程度地减少任何人直接从教程复制配置,意外盗用实际使用的 IP 地址的可能性。
如果您计划将 PXE 服务器与笔记本电脑中的虚拟机一起使用,则应首先使用virbr0
IP 地址配置虚拟桥接口。您可以为其指定类似 192.168.1.1/24 的名称(注意:末尾的 /24 是“网络掩码 255.255.255.0”的更简短表达方式)。由于该接口将是如果您的虚拟机的默认网关 IP 地址,则不应为该virbr0
接口配置默认网关地址:您的笔记本电脑可能已经为其外部接口设置了默认网关,并且系统上的一个默认网关足以满足大多数常见情况。
配置完成后virbr0
,您可以像这样配置 DHCP 服务器:
[...]
# internal subnet for my DHCP Server
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.21 192.168.1.151;
option domain-name-servers 192.168.1.1;
option domain-name "pxe.domain.example";
# this should match the IP address of the virbr0 interface
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
# IP of PXE Server; this should also match the IP address of the virbr0 interface
next-server 192.168.1.1;
filename "pxelinux.0";
}
现在,DHCP 服务器应该检测到subnet 192.168.1.0 netmask 255.255.255.0
声明与为接口配置的 IP 地址和网络掩码匹配virbr0
,并自动开始在该接口上提供服务。
这应该允许您完成本教程,然后您就可以开始在笔记本电脑上设置虚拟机,通过 PXE 引导安装程序。
如果要以 PXE 方式启动物理机,应在没有其他 DHCP 服务器的网段中进行。如果两个 DHCP 服务器没有专门配置为相互协作,它们将竞争客户端,这可能会导致您的 PXE 引导尝试仅在某些时候无法正常工作。
(这是技术上可行设置第二个 DHCP 服务器用于 PXE 启动,而不需要修改第一个服务器的配置,但我认为这是“你应该避免的肮脏伎俩,除非你知道自己在做什么并且绝对没有办法在第一个服务器中正确执行它”地方。”)
答案2
我同意,您需要连贯地配置您的网络。如果您描述一下您的目标,它对帮助者也应该很有用。看起来您使用的是 Centos Linux,因此可以假设您可能是一位经验丰富的 Linux 用户。因此,您可以阅读其他一些系统信息来源,例如/var/log/systemlog
或/var/log/messages
。
DHCP 服务器未启动的主要原因是您已将 NIC(名为 enp0s20f0u13 的接口)配置为 IP:10.249.6.154。但是您保留了给定的示例配置,而不考虑实际的现有配置。
要配置 BootP 服务器进行 PXE 引导,您需要一起调整一些重要组件:DHCP 服务器、TFTP 服务器、Syslinux (pxelinux),可能还有域名服务器(绑定?)。对您来说,好消息是,该软件包dnsmasq
可以执行除 Syslinux 之外的所有这些功能。所以它可以让你的配置更加简单。应该注意的是,TFTP 服务器(ThinyFTP)无法提供大于 500MB 的文件,因此如果您的 ISO 映像更大,您需要使用 lpxelinux 和一些迷你 http 服务器(我使用lighttpd
)。我在这里写下有关您的项目的更多信息,如果您对解决方案感兴趣dnsmasq
,请等到第二天,因为我不在办公室,在那里我可以复制我的重要行dnsmask.conf
并给出一些其他提示。