基于 Ubuntu 22.04 搭建 PXE 做事器李月 反差,辅助 IPv4, IPv6 收集,辅助 Legacy, UEFI 启动形式。
著作目次 一、PXE 启动历程二、设立清单三、设立规范3.1 搭建 HTTP 做事器3.2 搭建 TFTP 做事器3.2.1 设立 Legacy PXE 启动项3.2.2 设立 UEFI PXE 启动项 3.3 搭建 DHCP 做事器3.3.1 设立静态 IP3.3.2 设立 dhcpd3.3.3 (IPv6)设立 dhcpd6 3.4 (IPv6)搭建 RA 做事器 一、PXE 启动历程PXE 启动约莫历程如下:
h游戏在线玩 PXE Client(客户端)通过 DHCP 苦求获取 IP,DHCP 做事器在反映苦求时同期提供收集启动指引规范(Boot File)的地址(使用 TFTP 契约)。PXE Client 得到 IP 后,造访 Boot File 地址获取并加载指引规范(Legacy 和 UEFI 的折柳在于指引规范不同)偏捏设立文献。指引规范左证设立文献通过 HTTP/FTP/NFS 契约获取完竣的系统镜像进行启动。 二、设立清单必要条款:
闲居的 Internet 收集Ubuntu 22.04 操作系统Ubuntu 22.04 系统 ISO 镜像文献中枢软件:
DHCP 做事器: isc-dhcp-serverTFTP 做事器: tftp-hpaHTTP 做事器: apache2RA 做事器: radvd(IPv6)收集地址:
IPv4: 192.168.9.1/24
IPv6: (先获取一个 ULA 前缀(点我) )
前缀:fdb0:d7fa:87bd::/64
选拔一个 IP 当作设立使用:fdb0:d7fa:87bd::1/64
三、设立规范提议在设立前关闭防火墙。
sudo ufw disable3.1 搭建 HTTP 做事器
装配 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 做事器
装配 tftp-hpa。
sudo apt install tftpd-hpa3.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/
创建 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.iso3.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/图片
创建设立文献。
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 做事器图片
装配 isc-dhcp-server
sudo apt install isc-dhcp-server
使用 ip a 稽查收集接口
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图片
不错看到我这台机器上有两张网卡 enp0s3 和 enp0s8,前者用来上网,后者用来相连局域网提供 PXE 做事。
先给方针网卡 enp0s8 设立静态 IP。
3.3.1 设立静态 IP使用 netplan 设立静态 IP,翻开设立文献。
sudo vim /etc/netplan/01-network-manager-all.yaml
翻开后的默许设立文献如下:
# Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager
裁剪设立文献践诺。
# 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
利用改革。
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 forever3.3.2 设立 dhcpd图片
指定 isc-dhcp-server 要监听的网卡。翻开设立文献。
sudo vim /etc/default/isc-dhcp-server
裁剪践诺:
INTERFACESv4="enp0s8" INTERFACESv6="enp0s8"
裁剪 dhcpd.conf 设立文献。
sudo vim /etc/dhcp/dhcpd.conf
添加践诺:
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"; } }
重启做事。
sudo systemctl restart isc-dhcp-server
检查做事是否启动奏凯。
systemctl status isc-dhcp-server
此时基于 IPv4 的 PXE 做事器已设立完成。
3.3.3 (IPv6)设立 dhcpd6裁剪 dhcpd6.conf 设立文献。
sudo vim /etc/dhcp/dhcpd6.conf
裁剪践诺:
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; }图片
重启做事。
sudo systemctl restart isc-dhcp-server6
检查做事是否启动奏凯。
systemctl status isc-dhcp-server6
堤防:由于 IPv6 的特点,当 dhcpd6 搭建奏凯后,局域网内的机器梗概正确得到 IP,然而却无法连通。因此,还需要连接设立 [radvd](#3.4 搭建 RA 做事器)。
3.4 (IPv6)搭建 RA 做事器装配 radvd。
sudo apt install radvd
创建设立文献。
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 做事。
sudo systemctl restart radvd
检查 radvd 做事情状。
systemctl status radvd
若做事闲居驱动李月 反差,则此时 IPv6 收集已设立完成。
本站仅提供存储做事,统统践诺均由用户发布,如发现存害或侵权践诺,请点击举报。