從其他網路中的 PXE 伺服器透過 Debian 路由器啟動

從其他網路中的 PXE 伺服器透過 Debian 路由器啟動

我需要你的幫助。我使用 Debian 9.3.0 設定了網路。

這個專案的目標是我可以啟動網路 B 中的客戶端。

網路 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中的filename選項,

下一個伺服器選項仍在配置中。

但現在,如果我想在網路 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-網路」中的 DHCP 被停用,我在新網路 conf 上安裝了 dhcp-relay :

# 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-service 選項?

因為這裡的這個人是這樣的: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 Helper 服務,以便在網路之間正確轉送 DHCP 廣播流量。

編輯1:

提供 PXE => TFTP 伺服器 + DHCP 伺服器以及 PXE 參數。然後你必須確保你沒有 2 台 PXE 伺服器; 1) SCCM 2) 新網路上的 DHCP 伺服器。

如果您只想使用 SCCM 的 TFTP 服務,則必須停止其 DHCP 服務,然後在新網路上新增 DHCP 伺服器。

如果 DHCP 流量不需要跨越路由器邊界(即 DHCP 伺服器位於新網段),則您不必啟動 IP 幫助程式服務。

編輯2:

  1. 如果 DHCP 伺服器直接為 10.5.200.0 子網路提供服務,則應避免使用 IP Helpers
  2. PXE DHCP 設定包含「下一個伺服器」和「檔案名稱」參數,只需避免其他 PXE 相關的 DHCP 選項,如 66/67 等。
  3. 僅透過更改 DHCP 伺服器不會獲得更好的結果。
  4. 取得 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.efi64 位元 UEFI 開機 PC 提供 NBP。您必須考慮您的特定場景來調整參數。

相關內容