小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

搭建 PXE 服務(wù)器(基于 Ubuntu 22.04,支持 IPv4/6 及 Legacy/UEFI)

 新用戶9234aNkR 2024-09-04 發(fā)布于山東

基于 Ubuntu 22.04 搭建 PXE 服務(wù)器,支持 IPv4, IPv6 網(wǎng)絡(luò),支持 Legacy, UEFI 啟動模式。

一、PXE 啟動流程

PXE 啟動大致流程如下:

  1. PXE Client(客戶端)通過 DHCP 請求獲取 IP,DHCP 服務(wù)器在響應(yīng)請求時同時提供網(wǎng)絡(luò)啟動引導(dǎo)程序(Boot File)的地址(使用 TFTP 協(xié)議)。
  2. PXE Client 獲得 IP 后,訪問 Boot File 地址獲取并加載引導(dǎo)程序(Legacy 和 UEFI 的區(qū)別在于引導(dǎo)程序不同)及其配置文件。
  3. 引導(dǎo)程序根據(jù)配置文件通過 HTTP/FTP/NFS 協(xié)議獲取完整的系統(tǒng)鏡像進(jìn)行啟動。

二、配置清單

必要條件:

  • 正常的 Internet 網(wǎng)絡(luò)
  • Ubuntu 22.04 操作系統(tǒng)
  • Ubuntu 22.04 系統(tǒng) ISO 鏡像文件

核心軟件:

  • DHCP 服務(wù)器: isc-dhcp-server
  • TFTP 服務(wù)器: tftp-hpa
  • HTTP 服務(wù)器: apache2
  • RA 服務(wù)器: radvd(IPv6)

網(wǎng)絡(luò)地址:

前綴:fdb0:d7fa:87bd::/64

選擇一個 IP 作為配置使用:fdb0:d7fa:87bd::1/64

三、配置步驟

建議在配置前關(guān)閉防火墻。

sudo ufw disable

3.1 搭建 HTTP 服務(wù)器

安裝 apache2。

sudo apt install apache2

拷貝鏡像。

sudo cp <你的鏡像文件所在路徑>/ubuntu-22.04.2-desktop-amd64.iso /var/www/html/

掛載鏡像(解壓也行)。

sudo mkdir /var/www/html/Ubuntu_22.04_Desktop/
sudo mount /var/www/html/ubuntu-22.04.2-desktop-amd64.iso /var/www/html/Ubuntu_22.04_Desktop/

3.2 搭建 TFTP 服務(wù)器

安裝 tftp-hpa

sudo apt install tftpd-hpa
3.2.1 配置 Legacy PXE 啟動項

安裝 syslinux, pxelinux 并拷貝需要的文件。

# 建立 Legacy 目錄
sudo mkdir /srv/tftp/Legacy

# 安裝 syslinux pxelinux
sudo apt install syslinux pxelinux

# 拷貝文件
sudo cp /var/www/html/Ubuntu_22.04_Desktop/casper/{vmlinuz,initrd} /srv/tftp/Legacy/

sudo cp /usr/lib/syslinux/modules/bios/{ldlinux.c32,libutil.c32,menu.c32,vesamenu.c32} /srv/tftp/Legacy/

sudo cp /usr/lib/PXELINUX/{lpxelinux.0,pxelinux.0} /srv/tftp/Legacy/

創(chuàng)建 pxelinux 的配置文件。

cd /srv/tftp/Legacy

sudo mkdir pxelinux.cfg

vim pxelinux.cfg/default

編輯配置文件:

DEFAULT menu.c32
MENU TITLE ULTIMATE PXE SERVER - By Griffon - Ver 1.0
PROMPT 0
TIMEOUT 0

MENU COLOR TABMSG  37;40  #ffffffff #00000000
MENU COLOR TITLE   37;40  #ffffffff #00000000
MENU COLOR SEL      7     #ffffffff #00000000
MENU COLOR UNSEL    37;40 #ffffffff #00000000
MENU COLOR BORDER   37;40 #ffffffff #00000000

LABEL Ubuntu Desktop 22.04 ISO IPv4
    kernel /vmlinuz
    initrd /initrd
    append root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.9.1/ubuntu-22.04.2-desktop-amd64.iso

LABEL Ubuntu Desktop 22.04 ISO IPv6
    kernel /vmlinuz
    initrd /initrd
    append root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://[fdb0:d7fa:87bd::1]/ubuntu-22.04.2-desktop-amd64.iso
3.2.2 配置 UEFI PXE 啟動項

下載并拷貝需要的文件。

# 建立 UEFI 目錄
mkdir /srv/tftp/UEFI

# 拷貝文件
sudo cp /var/www/html/Ubuntu_22.04_Desktop/casper/{vmlinuz,initrd} /srv/tftp/UEFI/

# 下載并拷貝必要的文件
cd ~

# shim-signed
apt download shim-signed
dpkg -x shim-signed*deb shim
sudo cp shim/usr/lib/shim/shimx64.efi.signed.latest /srv/tftp/UEFI/bootx64.efi

# grub-efi-amd64-signed
apt download grub-efi-amd64-signed
dpkg -x grub-efi-amd64-signed*deb grub
sudo cp grub/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /srv/tftp/UEFI/grubx64.efi

# grub-common
apt download grub-common
dpkg -x grub-common*deb grub-common
sudo cp grub-common/usr/share/grub/unicode.pf2 /srv/tftp/UEFI/

創(chuàng)建配置文件。

sudo mkdir /srv/tftp/grub
sudo vim /srv/tftp/grub/grub.cfg

編輯配置文件:

        set default="0"
        set timeout=-1
       
        if loadfont unicode ; then
          set gfxmode=auto
          set locale_dir=$prefix/locale
          set lang=en_US
        fi
        terminal_output gfxterm

        set menu_color_normal=white/black
        set menu_color_highlight=black/light-gray
        if background_color 44,0,30; then
          clear
        fi

        function gfxmode {
                set gfxpayload="${1}"
                if [ "${1}" = "keep" ]; then
                        set vt_handoff=vt.handoff=7
                else
                        set vt_handoff=
                fi
        }

        set linux_gfx_mode=keep

        export linux_gfx_mode


        menuentry 'Ubuntu 22.04 IPv4' {
                gfxmode $linux_gfx_mode
                linux /UEFI/vmlinuz root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.9.1/ubuntu-22.04.2-desktop-amd64.iso
                initrd /UEFI/initrd
        }

        menuentry 'Ubuntu 22.04 IPv6' {
                gfxmode $linux_gfx_mode
                linux /UEFI/vmlinuz root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://[fdb0:d7fa:87bd::1]/ubuntu-22.04.2-desktop-amd64.iso
                initrd /UEFI/initrd
        }

3.3 搭建 DHCP 服務(wù)器

安裝 isc-dhcp-server

sudo apt install isc-dhcp-server

使用 ip a 查看網(wǎng)絡(luò)接口

vboxuser@Ubuntu-22:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:02:fa:39 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 84432sec preferred_lft 84432sec
    inet6 fe80::cd67:89ac:208:e978/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:3d:0d:a4 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::51b:be51:b6c2:43ee/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

可以看到我這臺機(jī)器上有兩張網(wǎng)卡 enp0s3enp0s8,前者用來上網(wǎng),后者用來連接局域網(wǎng)提供 PXE 服務(wù)。

先給目標(biāo)網(wǎng)卡 enp0s8 配置靜態(tài) IP。

3.3.1 配置靜態(tài) IP

使用 netplan 配置靜態(tài) IP,打開配置文件。

sudo vim /etc/netplan/01-network-manager-all.yaml

打開后的默認(rèn)配置文件如下:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

編輯配置文件內(nèi)容。

# Let NetworkManager manage all devices on this system
network:
  ethernets:
    enp0s8:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.9.1/24
        - fdb0:d7fa:87bd::1/64
  version: 2
  renderer: NetworkManager

應(yīng)用更改。

sudo netplan apply

檢查是否配置成功。

vboxuser@Ubuntu-22:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:02:fa:39 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86356sec preferred_lft 86356sec
    inet6 fe80::cd67:89ac:208:e978/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:3d:0d:a4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.1/24 brd 192.168.9.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
    inet6 fdb0:d7fa:87bd::1/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe3d:da4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3.3.2 配置 dhcpd

指定 isc-dhcp-server 要監(jiān)聽的網(wǎng)卡。打開配置文件。

sudo vim /etc/default/isc-dhcp-server

編輯內(nèi)容:

INTERFACESv4="enp0s8"
INTERFACESv6="enp0s8"

編輯 dhcpd.conf 配置文件。

sudo vim /etc/dhcp/dhcpd.conf 

添加內(nèi)容:

option arch code 93 = unsigned integer 16;
  
subnet 192.168.9.0 netmask 255.255.255.0 {
  range  192.168.9.2 192.168.9.254;
  option routers 192.168.9.1;
  next-server 192.168.9.1;
  if option arch = 00:07 {
        filename "/UEFI/bootx64.efi";
  } else {
        filename "/Legacy/pxelinux.0";
  }
}

重啟服務(wù)。

sudo systemctl restart isc-dhcp-server

檢查服務(wù)是否啟動成功。

systemctl status isc-dhcp-server

此時基于 IPv4 的 PXE 服務(wù)器已配置完成。

3.3.3 (IPv6)配置 dhcpd6

編輯 dhcpd6.conf 配置文件。

sudo vim /etc/dhcp/dhcpd6.conf 

編輯內(nèi)容:

option dhcp6.bootfile-url code 59 = string;
option dhcp6.client-arch-type code 61 = array of unsigned integer 16;

option dhcp6.name-servers fdb0:d7fa:87bd::1;

if option dhcp6.client-arch-type = 00:07 {
        option dhcp6.bootfile-url "tftp://[fdb0:d7fa:87bd::1]/UEFI/bootx64.efi";
} else {
        # Support a hypothetical BIOS system that can PXE boot over IPv6
        option dhcp6.bootfile-url "tftp://[fdb0:d7fa:87bd::1]/Legacy/pxelinux.0";
}

subnet6 fdb0:d7fa:87bd::/64 {
        range6 fdb0:d7fa:87bd::3:10 fdb0:d7fa:87bd::3:99;
        range6 fdb0:d7fa:87bd:: temporary;
}

重啟服務(wù)。

sudo systemctl restart isc-dhcp-server6

檢查服務(wù)是否啟動成功。

systemctl status isc-dhcp-server6

注意:由于 IPv6 的特性,當(dāng) dhcpd6 搭建成功后,局域網(wǎng)內(nèi)的機(jī)器能夠正確獲得 IP,但是卻無法連通。因此,還需要繼續(xù)配置 [radvd](#3.4 搭建 RA 服務(wù)器)。

3.4 (IPv6)搭建 RA 服務(wù)器

安裝 radvd。

sudo apt install radvd

創(chuàng)建配置文件。

vim /etc/radvd.conf

編輯配置文件:

interface enp0s8
{
    AdvSendAdvert on;
    prefix fdb0:d7fa:87bd::/64 {
        AdvOnLink on;
        AdvAutonomous on;
    };
    #Send DNS Server setting - assumes there is a DNS server setup at the address below
    RDNSS fdb0:d7fa:87bd::1{
    };
};

重啟 radvd 服務(wù)。

sudo systemctl restart radvd

檢查 radvd 服務(wù)狀態(tài)。

systemctl status radvd

若服務(wù)正常運(yùn)行,則此時 IPv6 網(wǎng)絡(luò)已配置完成。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多