我需要你的帮助。我使用 Debian 9.3.0 设置了一个网络。
这个项目的目标是,我可以在网络 B 中启动客户端。因此,我设置了一个带有 2 个 NIC 的路由器,并将它们配置为
网络 A:--------------Debian路由器:-------网络 B
40.4.200.0/24----------10.5.200.254/24-----10.5.200.0/24
dhcp.conf-->
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
#test
#Member Network A
auto enp0s25
iface enp0s25 inet static
address 40.4.200.252
netmask 255.255.255.0
gateway 40.4.200.254
#My NEW NETWORK B
auto enp16s0
iface enp16s0 inet static
address 10.5.200.254
netmask 255.255.255.0
之后我将设置 isc-dhcp-server 并对其进行配置,DHCP 也获得了 10.5.200.254。
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
INTERFACES="enp16s0";
ddns-update-style none;
option domain-name "peoplenetde.org";
option domain-name-servers 40.4.200.202, 172.29.1.10;
default-lease-time 86400 ;
max-lease-time 172800;
authoritative;
log-facility local7;
#option 66
option tftp-server-name "40.4.200.218";
#option67
option bootfile-name "smsboot\x64\wdsmgfw.efi";
allow booting;
allow bootp;
subnet 10.5.200.0 netmask 255.255.255.0 {
option domain-name-servers 40.4.200.202, 179.29.1.10;
option broadcast-address 10.5.200.255;
option subnet-mask 255.255.255.0;
option routers 10.5.200.254;
range 10.5.200.100 10.5.200.200;
group {
next-server 40.4.200.218;
filename "smsboot\x64\wdsmgfw.efi";
host ubuntu {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 10.5.200.10; }
}
}
所以我想在进入中继代理之前先使用文件名来执行此操作。
它不起作用,每次“PXE-E32:tftp 打开超时”iptables -L 都告诉我一切都是允许的。
经过大量研究之后它仍然不起作用,我直接使用中继代理进行了尝试。
但是从网络 B 中的客户端到网络 A 中的 PXE 服务器的 ping 操作成功。
所以我决定交给中继代理。
我把服务器 ip 设置为 (40.4.200.218),接口 enp16s0 设置为默认
conf 文件,并删除 dhcp.conf 中的 filenameoption,
下一个服务器选项仍在配置中。
但是现在,如果我想在网络 B 中的客户端上的任何地方进行 ping 操作,它会显示网络不可达。
如果我想通过网络启动,会出现错误:PXE-E52:已收到 proxyDHCP 提供。未收到 DHCP 提供,我不知道该怎么办。
如果你需要任何信息或其他东西,请写下来,我会发布。希望你能帮助我
顺便说一下,PXE/tftp 安装在 SCCM 上,也由他管理。
也许中继代理采用任何 DHCP 服务器,因为网络 B 中的客户端不再有任何 IP 地址。
我并不想要这个,我只希望他能中继 BOOTP。
编辑2:2018年2月27日
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
INTERFACES="enp16s0";
option domain-name "Debiann.com";
option domain-name-servers 10.5.200.254;
default-lease-time 86400 ;
max-lease-time 172800;
authoritative;
log-facility local7;
#option 66
option tftp-server-name "40.4.200.218";
#option67
allow booting;
allow bootp;
subnet 10.5.200.0 netmask 255.255.255.0 {
option domain-name-servers 10.5.200.254;
option broadcast-address 10.5.200.255;
option subnet-mask 255.255.255.0;
group {
next-server 40.4.200.218;
host ubuntu {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 10.5.200.10; }
}
}
因此“SCCM-Network”中的 DHCP 被禁用,我在新网络上安装了 dhcp-relay,conf:
# Defaults for isc-dhcp-relay initscript
# sourced by /etc/init.d/isc-dhcp-relay
# installed at /etc/default/isc-dhcp-relay by the maintainer scripts
#
# This is a POSIX shell fragment
#
# What servers should the DHCP relay forward requests to?
SERVERS="40.4.200.218"
# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests?
INTERFACES="enp16s0"
# Additional options that are passed to the DHCP relay daemon?
OPTIONS=""
如果我启动 PC 按 F12 进行网络启动:它没有获得 DHCP,因此我变成:
PXE-E53: No boot filename received
然后我回到 dhcp.conf 并再次添加带有文件名的 2 个参数,因此我的 conf 现在是:
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
INTERFACES="enp16s0";
option domain-name "Debiann.com";
option domain-name-servers 10.5.200.254;
default-lease-time 86400 ;
max-lease-time 172800;
authoritative;
log-facility local7;
#option 66
option tftp-server-name "40.4.200.218";
#option67
option bootfile-name "smsboot\x64\wdsmgfw.efi";
allow booting;
allow bootp;
subnet 10.5.200.0 netmask 255.255.255.0 {
option domain-name-servers 10.5.200.254;
option broadcast-address 10.5.200.255;
option subnet-mask 255.255.255.0;
group {
next-server 40.4.200.218;
filename "smsboot\x64\wdsmgfw.efi";
host ubuntu {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 10.5.200.10; }
}
}
现在我又出现:PXE-E32: TFTP 打开超时。
编辑3:
好的,非常感谢您的帮助!
我发现了一位遇到同样问题的人的帖子(您帮助了他):
UEFI 客户端的 DnsMasq、DHCP 代理、PXE 出现问题
我会尝试这样配置它,但有一个问题...我们公司里知道文件名的人病了...但基本上我会有一个 dhcp-boot 选项,即
dhcp-boot=smsboot\x64\wdsmgfw.efi,MUCSVCM01,40.4.200.218
以及您刚才告诉我的 3 个 pxe 服务选项?
因为这个家伙得到它是这样的:https://forums.fogproject.org/topic/8677/dnsmasq-bios-and-uefi
我的最终 dnsmasq.conf 将会像这样,因为其他人得到了 verndorclasses 和更多的 dhcp-boot 选项?
interface=enp16s0
listen-address=127.0.0.1
listen-address=10.5.200.254
local=/debrou.com/
expand-hosts
domain=debrou.com
dhcp-range=10.5.200.100,10.5.200.200,48h
dhcp-option=option:router,10.5.200.254
dhcp-option=19,1
dhcp-authoritative
dhcp-boot=smsboot\x64\wdsmgfw.efi,MUCSVCM01,40.4.200.218
# PXEClient:Arch:00000
pxe-service=X86PC, "Boot BIOS PXE", smsboot\x64\wdsmgfw,
# PXEClient:Arch:00007
pxe-service=BC_EFI, "Boot UEFI PXE-BC", smsboot\x64\wdsmgfw.efi
# PXEClient:Arch:00009
pxe-service=X86-64_EFI, "Boot UEFI PXE-64", smsboot\x64\wdsmgfw.efi
所以我拿了另一台笔记本电脑试了一下(有 uefi)同样的错误(NBP 太大)
检查了 BIOS,它也处于传统状态,关闭了传统状态,再次尝试,但它甚至没有进入启动过程(它是 hp 430 G4)其他人也有这个问题,所以我认为这不是配置错误。
答案1
如果 PXE 和 TFTP 由 SCCM 处理,那么您将创建一个与您的 DHCP 配置冲突的新 PXE 服务器。
确定 SCCM 是否确实提供 PXE/DHCP 服务,如果是,则将新网络添加到正在运行的 DHCP 服务器并在路由器上启用 IP 帮助程序服务,以便在网络之间正确转发 DHCP 广播流量。
编辑1:
提供 PXE => TFTP 服务器 + DHCP 服务器以及 PXE 参数。然后您必须确保您没有 2 个 PXE 服务器;1) SCCM 2) 新网络上的 DHCP 服务器。
如果您只想使用 SCCM 中的 TFTP 服务,那么您必须停止其 DHCP 服务,然后在新网络上添加 DHCP 服务器。
如果 DHCP 流量不需要跨越路由器边界(即 DHCP 服务器位于新的网络段上),那么您不必启动 IP 帮助服务。
编辑2:
- 如果 DHCP 服务器直接为 10.5.200.0 子网提供服务,则应避免使用 IP 助手
- PXE DHCP 配置已包含“next-server”和“filename”参数,只需避免其他 PXE 相关的 DHCP 选项(如 66/67 等)。
- 仅通过更改 DHCP 服务器不会获得更好的结果。
- 获取 Wireshark 流量捕获并在数据包级别查看客户端实际从 DHCP 服务器获取的内容。
编辑3:
启用 PXE 的 DHCP 服务器必须解析启动时声明的 PXE 架构,并相应地提供相应的 NBP。例如,对于 Dnsmasq
# PXEClient:Arch:00000
pxe-service=X86PC, "Boot BIOS PXE", bios/pxelinux
# PXEClient:Arch:00007
pxe-service=BC_EFI, "Boot UEFI PXE-BC", efi64/syslinux.efi
# PXEClient:Arch:00009
pxe-service=X86-64_EFI, "Boot UEFI PXE-64", efi64/syslinux.efi
在此示例中,我们bios/pxelinux
为 BIOS 启动 PC 和efi64/syslinux.efi
64 位 UEFI 启动 PC 提供 NBP。您必须根据具体情况调整参数。