1 安装

1.1 实验环境:

Windows 10 (主机)

VMWare workstation 15  (运行于主机上)

Tiny PXE Server 1.0.0.21   (官网地址,下载地址)

ESXi 6.7镜像

Syslinux 3.86

1.2 理论基础

pex工作时,客户机的网卡需要有pex的支持,目前几乎所有网卡都支持pxe,其大致的工作过程如下:
1、客户机发送DHCP广播请求
2、DHCP服务器向客户机提供可用的IP地址并告知客户机tftp服务器的地址
3、tftp向客户机提供内核,驱动及引导文件
4、通过ftp/http/nfs获得安装文件,而安装时的参数由ks.cfg来提供
这样不仅系统可以通过网络引导并安装,在安装时也没有了交互的信息,从而实现了完全的加电自检安装。

1.3 安装步骤:

1.首先解压Tiny PXE Server,在其目录下新建tftp目录。

图1.2.1

再在tftp目录下建立ISO1目录,ISO1下建立ESXi6.7(用于存放ESXi镜像,名称可改)目录和pxelinux.cfg(用于存放iso配置文件)目录。

图1.2.2

2.解压Syslinux 3.86(安装VMWare推荐此版本),将 syslinux-3.86\gpxe\gpxelinux.0 和 
syslinux-3.86\com32\menu\menu.c32 两个文件复制到 tftp\ISO1 目录下。

图1.2.3

3.将ESXi6.5安装镜像解压,全部复制到 tftp\ESXi6.7 文件夹下,

图1.2.4

将 tftp\ISO1\ESXi6.7\ISOLINUX.CFG 文件复制到 tftp\pxelinux.cfg 下,重命名为default (没有后缀名),打开default文件,定位到KERNEL和APPEND这两行:

KERNEL mboot.c32
APPEND -c boot.cfg

将 mboot.c32 和 boot.cfg 路径指向 ESXi6.7目录,修改为:

KERNEL ESXi6.5\mboot.c32
APPEND -c ESXi6.5\boot.cfg

4.在 tftp\ISO1 目录下新建ks.cfg文件,内容如下:

# Accept the VMware End User License Agreement
vmaccepteula# Set the root password for the DCUI and Tech Support Mode
rootpw password# Install on the first local disk available on machine
install --firstdisk --overwritevmfs# Set the network to DHCP on the first network adapter
network --bootproto=dhcp --device=vmnic0# Reboot after finish installation
reboot

其中  password 为EXSi 的 root密码,并且密码不要含有字符 # ,因为这是个注释符。

ks.cfg就是kickstart的脚本,可用kickstart生成,这里我们就直接使用了编辑好的脚本。

5.打开 tftp\ISO1\ESXi6.5\BOOT.CFG文件(可能需要去掉只读属性,否则不能编辑),将所有“/”去掉,在kernel这一行前增加一行:

prefix=ESXi6.7

定位到kernelopt这一行:

kernelopt=runweasel

修改为:

kernelopt=ks=http://192.168.167.1/ks.cfg

其中,IP地址为运行Tiny PXE Server的主机地址(这里可能有多个ip段,要视情况而定来选择),ks.cfg所处的文件位置与gpxelinux.0 在同一目录,以gpxelinux.0为url的根目录。

6.打开Tiny PXE Server,DHCP服务器选择VMnet8的IP地址(本人设置的VMware网络连接为HostOnly模式,为192.168.254.0段),启动文件处选择 \tftp\ISO1 目录下的 gpxelinux.0,勾选HTTPd,然后点击启动按钮 Online ,如下图所示。

图1.2.5

7.打开vmware workstation ,打开虚拟网络编辑器,将VMnet1的DHCP服务去掉勾选。

8.新建虚拟机,选择稍后安装操作系统。

图1.2.6

下一步,我们选择Linux操作系统,版本随便。

为什么不选择 WMware ESX操作系统呢,因为我测试过,Linux虚拟机是BIOS启动,而VMware ESX是UEFI 启动。由于我们前面使用的是Syslinux 3.86 的启动文件,所以 UEFI的启动模式识别不了,不能进入pxe安装(当然,如果我们不使用pxe安装,直接是虚拟机挂载安装镜像,选择linux还是 VMware ESX 都一样可以安装)

图1.2.7

内存需要分配4G以上,新建完毕后,打开 编辑虚拟机设置->处理器->虚拟化引擎,勾选  虚拟化CPU性能计数器。

图1.2.8

9.修改完毕,开启此虚拟机,开始从tftp加载文件。在Tiny PXE Server可以看到详细日志。

虚拟机开始加载文件

图1.2.9

安装进行中

图1.2.10

安装完毕后,会自动重启。

图1.2.11

正常启动后会显示web地址

图1.2.12

10.在浏览器打开web地址,root密码就是前面配置文件ks.cfg里设置的密码。

图1.2.13

1.3 注意事项:

1.注意,如果CPU没有勾选“虚拟化CPU性能计数器”,则会出现如下报错。

图1.3.1

2.密码强度不够,会出现

图1.3.2

1.4 Tiny PXE Server 日志分析

日志内容如下

14:20:49 ROOT=E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\
14:20:49 DHCPd 192.168.254.1:67 started...
14:20:49 TFPTd 192.168.254.1:69 started...
14:20:50 HTTPd:80 started...
14:20:56 DHCPd:DISCOVER received, MAC:00-0C-29-B1-DB-87, XID:2AB1DB87
14:20:57 DHCPd:OFFER sent, IP:192.168.254.2, XID:2AB1DB87
14:20:58 DHCPd:REQUEST received, MAC:00-0C-29-B1-DB-87, XID:2AB1DB87
14:20:58 DHCPd:ACK sent, IP:192.168.254.2, XID:2AB1DB87
14:20:58 TFTPd:DoReadFile:gpxelinux.0 B:1456 T:0
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/564d154b-455a-3692-7889-cf25c7b1db87 Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\564d154b-455a-3692-7889-cf25c7b1db87". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/01-00-0c-29-b1-db-87 Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\01-00-0c-29-b1-db-87". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C0A8FE02 Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C0A8FE02". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C0A8FE0 Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C0A8FE0". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C0A8FE Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C0A8FE". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C0A8F Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C0A8F". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C0A8 Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C0A8". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C0A Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C0A". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C0 Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C0". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile OpenError:pxelinux.cfg/C Cannot open file "E:\软件工具\tools\装机\tinypxeserver\tinypxeserver\tftp\ISO1\pxelinux.cfg\C". 系统找不到指定的文件。
14:20:59 TFTPd:DoReadFile:pxelinux.cfg/default B:1408 T:291
14:20:59 TFTPd:DoReadFile:menu.c32 B:1408 T:54964
14:20:59 TFTPd:DoReadFile:pxelinux.cfg/default B:1408 T:291
14:21:02 TFTPd:DoReadFile:ESXi6.7\mboot.c32 B:1408 T:90088
14:21:02 TFTPd:DoReadFile:/ESXi6.7/boot.cfg B:1408 T:2647
14:21:02 TFTPd:DoReadFile:/ESXi6.7/boot.cfg B:1408 T:2647
14:21:07 TFTPd:DoReadFile:ESXi6.7/b.b00 B:1408 T:123786
14:21:07 TFTPd:DoReadFile:ESXi6.7/b.b00 B:1408 T:123786
14:21:07 TFTPd:DoReadFile:ESXi6.7/jumpstrt.gz B:1408 T:20
14:21:07 TFTPd:DoReadFile:ESXi6.7/useropts.gz B:1408 T:20
14:21:07 TFTPd:DoReadFile:ESXi6.7/features.gz B:1408 T:20
14:21:07 TFTPd:DoReadFile:ESXi6.7/k.b00 B:1408 T:4136427
14:21:10 TFTPd:DoReadFile:ESXi6.7/chardevs.b00 B:1408 T:20095
14:21:10 TFTPd:DoReadFile:ESXi6.7/user.b00 B:1408 T:538701
14:21:11 TFTPd:DoReadFile:ESXi6.7/procfs.b00 B:1408 T:8563
14:21:11 TFTPd:DoReadFile:ESXi6.7/uc_intel.b00 B:1408 T:1253061
14:21:11 TFTPd:DoReadFile:ESXi6.7/uc_amd.b00 B:1408 T:5541
14:21:11 TFTPd:DoReadFile:ESXi6.7/vmx.v00 B:1408 T:29690463
14:21:33 TFTPd:DoReadFile:ESXi6.7/vim.v00 B:1408 T:17287552
14:21:46 TFTPd:DoReadFile:ESXi6.7/sb.v00 B:1408 T:45397296
14:22:18 TFTPd:DoReadFile:ESXi6.7/s.v00 B:1408 T:13215578
14:22:28 TFTPd:DoReadFile:ESXi6.7/bnxtnet.v00 B:1408 T:143099
14:22:28 TFTPd:DoReadFile:ESXi6.7/elx_esx_.v00 B:1408 T:1529287
14:22:29 TFTPd:DoReadFile:ESXi6.7/brcmfcoe.v00 B:1408 T:583834
14:22:29 TFTPd:DoReadFile:ESXi6.7/elxiscsi.v00 B:1408 T:135291
14:22:29 TFTPd:DoReadFile:ESXi6.7/elxnet.v00 B:1408 T:169585
14:22:30 TFTPd:DoReadFile:ESXi6.7/lpfc.v00 B:1408 T:615809
14:22:30 TFTPd:DoReadFile:ESXi6.7/i40en.v00 B:1408 T:167744
14:22:30 TFTPd:DoReadFile:ESXi6.7/igbn.v00 B:1408 T:108214
14:22:30 TFTPd:DoReadFile:ESXi6.7/ixgben.v00 B:1408 T:152447
14:22:30 TFTPd:DoReadFile:ESXi6.7/immpasst.v00 B:1408 T:1636443
14:22:31 TFTPd:DoReadFile:ESXi6.7/ipptool.v00 B:1408 T:371516
14:22:32 TFTPd:DoReadFile:ESXi6.7/pciinfo.v00 B:1408 T:916329
14:22:32 TFTPd:DoReadFile:ESXi6.7/nmlx4_co.v00 B:1408 T:152626
14:22:33 TFTPd:DoReadFile:ESXi6.7/nmlx4_en.v00 B:1408 T:158362
14:22:33 TFTPd:DoReadFile:ESXi6.7/nmlx4_rd.v00 B:1408 T:81802
14:22:33 TFTPd:DoReadFile:ESXi6.7/nmlx5_co.v00 B:1408 T:347870
14:22:33 TFTPd:DoReadFile:ESXi6.7/nmlx5_rd.v00 B:1408 T:76607
14:22:33 TFTPd:DoReadFile:ESXi6.7/misc_cni.v00 B:1408 T:5641
14:22:33 TFTPd:DoReadFile:ESXi6.7/net_bnx2.v00 B:1408 T:182846
14:22:33 TFTPd:DoReadFile:ESXi6.7/net_bnx2.v01 B:1408 T:1061935
14:22:34 TFTPd:DoReadFile:ESXi6.7/net_cnic.v00 B:1408 T:49702
14:22:34 TFTPd:DoReadFile:ESXi6.7/scsi_bnx.v00 B:1408 T:98923
14:22:34 TFTPd:DoReadFile:ESXi6.7/scsi_bnx.v01 B:1408 T:81469
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_liba.v00 B:1408 T:97488
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v00 B:1408 T:8645
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v01 B:1408 T:6648
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v02 B:1408 T:6852
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v03 B:1408 T:7546
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v04 B:1408 T:8709
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v05 B:1408 T:7410
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v06 B:1408 T:6507
14:22:34 TFTPd:DoReadFile:ESXi6.7/ata_pata.v07 B:1408 T:7860
14:22:34 TFTPd:DoReadFile:ESXi6.7/block_cc.v00 B:1408 T:24797
14:22:34 TFTPd:DoReadFile:ESXi6.7/char_ran.v00 B:1408 T:14509
14:22:34 TFTPd:DoReadFile:ESXi6.7/ehci_ehc.v00 B:1408 T:34076
14:22:34 TFTPd:DoReadFile:ESXi6.7/hid_hid.v00 B:1408 T:16987
14:22:34 TFTPd:DoReadFile:ESXi6.7/iavmd.v00 B:1408 T:52620
14:22:34 TFTPd:DoReadFile:ESXi6.7/ima_qla4.v00 B:1408 T:332225
14:22:35 TFTPd:DoReadFile:ESXi6.7/ipmi_ipm.v00 B:1408 T:10042
14:22:35 TFTPd:DoReadFile:ESXi6.7/ipmi_ipm.v01 B:1408 T:23946
14:22:35 TFTPd:DoReadFile:ESXi6.7/ipmi_ipm.v02 B:1408 T:28898
14:22:35 TFTPd:DoReadFile:ESXi6.7/iser.v00 B:1408 T:63183
14:22:35 TFTPd:DoReadFile:ESXi6.7/lpnic.v00 B:1408 T:169295
14:22:35 TFTPd:DoReadFile:ESXi6.7/lsi_mr3.v00 B:1408 T:89100
14:22:35 TFTPd:DoReadFile:ESXi6.7/lsi_msgp.v00 B:1408 T:130655
14:22:35 TFTPd:DoReadFile:ESXi6.7/lsi_msgp.v01 B:1408 T:136027
14:22:35 TFTPd:DoReadFile:ESXi6.7/lsi_msgp.v02 B:1408 T:130857
14:22:35 TFTPd:DoReadFile:ESXi6.7/misc_dri.v00 B:1408 T:368288
14:22:36 TFTPd:DoReadFile:ESXi6.7/mtip32xx.v00 B:1408 T:70842
14:22:36 TFTPd:DoReadFile:ESXi6.7/ne1000.v00 B:1408 T:179684
14:22:36 TFTPd:DoReadFile:ESXi6.7/nenic.v00 B:1408 T:69298
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_cdc_.v00 B:1408 T:6953
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_e100.v00 B:1408 T:96724
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_e100.v01 B:1408 T:110819
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_enic.v00 B:1408 T:54116
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_fcoe.v00 B:1408 T:23575
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_forc.v00 B:1408 T:38035
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_igb.v00 B:1408 T:106119
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_libf.v00 B:1408 T:24583
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_mlx4.v00 B:1408 T:113756
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_mlx4.v01 B:1408 T:68399
14:22:36 TFTPd:DoReadFile:ESXi6.7/net_nx_n.v00 B:1408 T:1379869
14:22:37 TFTPd:DoReadFile:ESXi6.7/net_tg3.v00 B:1408 T:112732
14:22:37 TFTPd:DoReadFile:ESXi6.7/net_usbn.v00 B:1408 T:17028
14:22:37 TFTPd:DoReadFile:ESXi6.7/net_vmxn.v00 B:1408 T:31372
14:22:37 TFTPd:DoReadFile:ESXi6.7/nhpsa.v00 B:1408 T:143838
14:22:37 TFTPd:DoReadFile:ESXi6.7/ntg3.v00 B:1408 T:31313
14:22:38 TFTPd:DoReadFile:ESXi6.7/nvme.v00 B:1408 T:78951
14:22:38 TFTPd:DoReadFile:ESXi6.7/nvmxnet3.v00 B:1408 T:47393
14:22:38 TFTPd:DoReadFile:ESXi6.7/nvmxnet3.v01 B:1408 T:46088
14:22:38 TFTPd:DoReadFile:ESXi6.7/ohci_usb.v00 B:1408 T:20364
14:22:38 TFTPd:DoReadFile:ESXi6.7/pvscsi.v00 B:1408 T:28304
14:22:38 TFTPd:DoReadFile:ESXi6.7/qcnic.v00 B:1408 T:80156
14:22:38 TFTPd:DoReadFile:ESXi6.7/qedentv.v00 B:1408 T:1017572
14:22:38 TFTPd:DoReadFile:ESXi6.7/qfle3.v00 B:1408 T:783811
14:22:39 TFTPd:DoReadFile:ESXi6.7/qfle3f.v00 B:1408 T:258394
14:22:39 TFTPd:DoReadFile:ESXi6.7/qfle3i.v00 B:1408 T:96688
14:22:39 TFTPd:DoReadFile:ESXi6.7/qflge.v00 B:1408 T:200092
14:22:39 TFTPd:DoReadFile:ESXi6.7/sata_ahc.v00 B:1408 T:20742
14:22:39 TFTPd:DoReadFile:ESXi6.7/sata_ata.v00 B:1408 T:12198
14:22:39 TFTPd:DoReadFile:ESXi6.7/sata_sat.v00 B:1408 T:17599
14:22:39 TFTPd:DoReadFile:ESXi6.7/sata_sat.v01 B:1408 T:10951
14:22:39 TFTPd:DoReadFile:ESXi6.7/sata_sat.v02 B:1408 T:11524
14:22:39 TFTPd:DoReadFile:ESXi6.7/sata_sat.v03 B:1408 T:8343
14:22:40 TFTPd:DoReadFile:ESXi6.7/sata_sat.v04 B:1408 T:6664
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_aac.v00 B:1408 T:53774
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_adp.v00 B:1408 T:152174
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_aic.v00 B:1408 T:99258
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_fni.v00 B:1408 T:67603
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_hps.v00 B:1408 T:65364
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_ips.v00 B:1408 T:33011
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_isc.v00 B:1408 T:11535
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_lib.v00 B:1408 T:65170
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_meg.v00 B:1408 T:28573
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_meg.v01 B:1408 T:55719
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_meg.v02 B:1408 T:26936
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_mpt.v00 B:1408 T:135719
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_mpt.v01 B:1408 T:151140
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_mpt.v02 B:1408 T:128032
14:22:40 TFTPd:DoReadFile:ESXi6.7/scsi_qla.v00 B:1408 T:77899
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_isc.v00 B:1408 T:2553
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_isc.v01 B:1408 T:2553
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_lib.v00 B:1408 T:6905
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_lib.v01 B:1408 T:6904
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_lib.v02 B:1408 T:3467
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_lib.v03 B:1408 T:3466
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_lib.v04 B:1408 T:1668
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_lib.v05 B:1408 T:1667
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_vmk.v00 B:1408 T:34029
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_vmk.v01 B:1408 T:35735
14:22:40 TFTPd:DoReadFile:ESXi6.7/shim_vmk.v02 B:1408 T:36278
14:22:41 TFTPd:DoReadFile:ESXi6.7/smartpqi.v00 B:1408 T:71856
14:22:41 TFTPd:DoReadFile:ESXi6.7/uhci_usb.v00 B:1408 T:20656
14:22:41 TFTPd:DoReadFile:ESXi6.7/usb_stor.v00 B:1408 T:41118
14:22:41 TFTPd:DoReadFile:ESXi6.7/usbcore_.v00 B:1408 T:100730
14:22:41 TFTPd:DoReadFile:ESXi6.7/vmkata.v00 B:1408 T:56222
14:22:41 TFTPd:DoReadFile:ESXi6.7/vmkfcoe.v00 B:1408 T:220011
14:22:41 TFTPd:DoReadFile:ESXi6.7/vmkplexe.v00 B:1408 T:12378
14:22:41 TFTPd:DoReadFile:ESXi6.7/vmkusb.v00 B:1408 T:282086
14:22:41 TFTPd:DoReadFile:ESXi6.7/vmw_ahci.v00 B:1408 T:77544
14:22:41 TFTPd:DoReadFile:ESXi6.7/xhci_xhc.v00 B:1408 T:75489
14:22:41 TFTPd:DoReadFile:ESXi6.7/btldr.t00 B:1408 T:939973
14:22:42 TFTPd:DoReadFile:ESXi6.7/weaselin.t00 B:1408 T:2166463
14:22:44 TFTPd:DoReadFile:ESXi6.7/esx_dvfi.v00 B:1408 T:105837
14:22:44 TFTPd:DoReadFile:ESXi6.7/esx_ui.v00 B:1408 T:3688649
14:22:46 TFTPd:DoReadFile:ESXi6.7/lsu_hp_h.v00 B:1408 T:55465
14:22:47 TFTPd:DoReadFile:ESXi6.7/lsu_lsi_.v00 B:1408 T:90618
14:22:47 TFTPd:DoReadFile:ESXi6.7/lsu_lsi_.v01 B:1408 T:182769
14:22:47 TFTPd:DoReadFile:ESXi6.7/lsu_lsi_.v02 B:1408 T:95359
14:22:47 TFTPd:DoReadFile:ESXi6.7/lsu_lsi_.v03 B:1408 T:207601
14:22:47 TFTPd:DoReadFile:ESXi6.7/native_m.v00 B:1408 T:198660
14:22:47 TFTPd:DoReadFile:ESXi6.7/qlnative.v00 B:1408 T:780848
14:22:48 TFTPd:DoReadFile:ESXi6.7/rste.v00 B:1408 T:220662
14:22:48 TFTPd:DoReadFile:ESXi6.7/vmware_e.v00 B:1408 T:42830
14:22:48 TFTPd:DoReadFile:ESXi6.7/vsan.v00 B:1408 T:7892568
14:22:54 TFTPd:DoReadFile:ESXi6.7/vsanheal.v00 B:1408 T:469690
14:22:54 TFTPd:DoReadFile:ESXi6.7/vsanmgmt.v00 B:1408 T:2854985
14:22:57 TFTPd:DoReadFile:ESXi6.7/tools.t00 B:1408 T:186316159
14:25:14 TFTPd:DoReadFile:ESXi6.7/lnvcusto.v00 B:1408 T:656
14:25:14 TFTPd:DoReadFile:ESXi6.7/xorg.v00 B:1408 T:1410491
14:25:15 TFTPd:DoReadFile:ESXi6.7/imgdb.tgz B:1408 T:211692
14:25:16 TFTPd:DoReadFile:ESXi6.7/imgpayld.tgz B:1408 T:6031327
14:25:47 DHCPd:DISCOVER received, MAC:00-0C-29-B1-DB-87, XID:64D6478
14:25:47 DHCPd:OFFER sent, IP:192.168.254.2, XID:64D6478
14:25:47 DHCPd:REQUEST received, MAC:00-0C-29-B1-DB-87, XID:64D6478
14:25:47 DHCPd:ACK sent, IP:192.168.254.2, XID:64D6478
14:26:21 HTTPd:Connect: 192.168.254.2, TID=25524
14:26:21 HTTPd:Client: 192.168.254.2 [GET] /ks.cfg
14:26:21 HTTPd:Server : Returning /ks.cfg
14:26:21 HTTPd:DisConnect: TID=25524
14:31:17 DHCPd:RELEASE received, MAC:00-0C-29-B1-DB-87, XID:CFAC9816
14:31:18 DHCPd:DISCOVER received, MAC:00-0C-29-B1-DB-87, XID:CFAC9816
14:31:18 DHCPd:OFFER sent, IP:192.168.254.2, XID:CFAC9816
14:31:18 DHCPd:REQUEST received, MAC:00-0C-29-B1-DB-87, XID:CFAC9816
14:31:18 DHCPd:ACK sent, IP:192.168.254.2, XID:CFAC9816
14:32:18 DHCPd:DISCOVER received, MAC:00-0C-29-B1-DB-87, XID:94D1533A
14:32:18 DHCPd:OFFER sent, IP:192.168.254.3, XID:94D1533A
14:32:18 DHCPd:REQUEST received, MAC:00-0C-29-B1-DB-87, XID:94D1533A
14:32:18 DHCPd:ACK sent, IP:192.168.254.3, XID:94D1533A

日志分析如下

1行 ,以ISO1目录为web根目录。

2行,启动DHCP服务,端口67.

3行,启动TFTP服务,端口69.

4行,启动HTTP服务,端口80.

5-8行,TFTP协议的交互。

9行,TFTP协议交互后,开始加载文件,首先加载的就是启动文件gpxelinux.0.

10-20行,在根目录下的pxelinux.cfg目录下寻找一系列文件,最终找到default文件,所以pxelinux.cfg这个文件夹的名称不能错。

21行,根据default文件里的设置加载 menu.c32 文件。

22行,再次加载default文件。

23行,根据default文件里的设置加载 ESXi6.7\mboot.c32 文件。(所以前面对于default的KERNEL和APPEND两行要修改路径。)

24行,根据default文件里的设置加载 /ESXi6.7/boot.cfg 文件 。(我怀疑这个文件的加载不是default里面设置的)

25行,同上。(我不知道为什么要加载两次)

26行,根据 boot.cfg 文件里的设置加载 ESXi6.7/b.b00 文件。

27行,同上。(我不知道为什么要加载两次)

28-182行,根据boot.cfg 文件里设置的modules 行而加载一系列模块,不同版本的ESXi的安装镜像,里面的模块不完全一样。

183-186行,DHCP协议又开始进行交互。

187-190行,HTTP协议交互,客户端获取到ks.cfg配置文件,开始进行自动化的安装。前面的一系列文件加载,即使直接挂载镜像来安装,步骤也差不多。如果在boot.cfg中的kernelopt行没有配置正确,则运行到此处就不能自动化配置ESXi的安装了,需手动往下一步步安装。安装完毕后,会根据ks.cfg的最后一条命令reboot进行重启。

191-199行,DHCP协议交互

2 Wireshark 抓包分析

2.1 DHCP协议

关于DHCP的基本知识,请参见文章《DHCP 协议详解》,这里不再赘述。

通过wireshark抓包整个安装过程,过滤DHCP协议如下图2.1

图2.1

注:其中最后两列,为自定义的hardware source addr 和hardware destination addr列。

首先我列出我的实验环境信息

00:50:56:C0:00:01  192.168.254.1  物理主机
00:0c:29:b1:db:87  192.168.254.3  虚拟机,客户机

2.1.1 Discover

首先来看1号数据包,

图2.1.1

客户端(00:0c:29:b1:db:87)在物理子网上发送广播来寻找可用的服务器。网络管理员可以配置一个本地路由来转发DHCP包给另一个子网上的DHCP服务器。该客户端实现生成一个目的地址为255.255.255.255或者一个子网广播地址(net.255)的UDP包。

客户端可以申请它使用的最后一个IP地址(在下面的例子里为192.168.1.100)。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。否则,就要看该服务器是授权的还是非授权的。授权服务器会拒绝请求,使得客户立刻申请一个新的IP。非授权服务器仅仅忽略掉请求,导致一个客户端请求的超时,于是客户端就会放弃此请求而去申请一个新的IP地址。

2.1.2 Offer

我们看3号数据包。

当DHCP服务器收到一个来自客户端的IP租约请求时,它会提供一个IP租约。DHCP为客户保留一个IP地址,然后通过网络单播一个DHCPOFFER消息给客户。该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP。

服务器基于在CHADDR字段指定的客户硬件地址来检查配置。这里的服务器,192.168.254.1,将IP地址指定于YIADDR字段,192.168.254.2。

2.1.3 REQUEST

我们看4号数据包。

客户端收到了3号数据包提供的一个IP租约后,它必须告诉所有其他DHCP服务器它已经接受了一个租约。因此,该客户端会发送一个DHCP Request消息,其中包含提供租约服务器IP,这里是54选项提供IP(192.168.254.1)。

当其他DHCP服务器收到了该消息之后,它们会回收所有可能已提供给该客户端的租约。然后他们把曾经给该客户保留的那个地址重新放回到可用地址池中,这样,它们就可以为其他计算机分配这个地址。不过,本环境中只有一个DHCP服务器。

任意数量的DHCP服务器都可以响应同一个IP租约请求,但是每一个客户网卡只能接受一个租约提供。

2.1.4 Acknowledge,ACK

我们来看看5号数据包。

当DHCP服务器收到来自客户端的Request消息后,它就开始了配置过程的最后阶段。这个响应阶段包括发送一个DHCPACK包给客户。这个包包含租期和客户可能请求的其他所有配置信息。这时候,TCP/IP配置过程就完成了。

该服务器响应请求并发送响应给客户。整个系统期望客户来根据选项来配置其网卡。

虽然这个包是给客户端,但是为什么是全网广播发送255.255.255.255(ff:ff:ff:ff:ff:ff)。求大神解答

2.2 TFTP协议

TFTP的基本知识可以参见我的另一篇文章《TFTP 简单文件传输协议》。

由于我们使用的是Tiny PXE Server ,它同时就启动了DHCP,TFPT,HTTP服务。所以它还包含了其他的一些协议,如ICMP,ARP等。

现在我们回到Wireshark的主界面,去掉过滤条件dhcp,展现的是所有数据包,如下图

我们可以看到首先由客户端发起名为DHCP Discover的1号包;

接着DHCP服务器192.168.254.1发出一个ICMP包,来试探192.168.254.2这个地址是否有在使用,此包没有回应的包,即 no response found !

既然没有192.168.254.2这个IP在使用,于是服务端192.168.254.1就发送一个DHCP Offer  3号包;

然后客户端发出DHCP Request  4号包;

服务端回应客户端,发出5号包DHCP ACK;

6号和7号包,是客户端发起的arp寻址,周期性的。后面的会看到许多的arp。

经过前面DHCP的交互,客户端的IP完成配置,下面开始TFTP协议的交互。

8号包,客户端发出Read Request 数据包(1),其中包含了请求的文件名gpxelinux.0,传输模式octet,块大小blksize。从UDP包角度看,该UDP包的源端口由客户端随意选择,而目标端口则是服务端的69。

9号包,服务端发出OACK包(6)(即选项确认包,Option Acknowledgement),对请求里的blksize选项进行确认。

10号包,客户端发送ACK(4)包给服务端,这个包是什么作用。和我《TFTP 简单文件传输协议》文章里记录的不太一样。特别是前面对于写请求包的回应,理论上说的是服务端发送一个ACK且block为0的包来回应。望大神指点。

11号包,服务端正式发送第一块数据包 DATA Packet(3),Block为1。

12号包,客户端发送ACK(4)包确认收到的第一块数据,所以本包的Block与收到的数据包的Block一样为1。

本实验中,gpxelinux.0文件的大小为78120字节(=1456*53+952),也就是会有完整(1456字节)的53个数据包,加最后一个结尾的数据包(952字节)。如下图

117号包,服务端发送的最后一个数据包,且Block为54,数据长度为952字节。

118号包,客户端确认最后一个数据包,完成文件gpxelinux.0的传输。

119号和120号包,又是客户端ARP协议交互。

121号包,客户端请求文件pxelinux.cfg/564d154b-455a-3692-7889-cf25c7b1db87。

其实从TFTP的基础知识里我们可以知道,Source File,Type,Option 这些都是ascii格式,所以在红框中是可以直接看到字符的。

122号包,由于没有找到改文件,服务端返回 Error包(5)。

到第489820号包,客户端确认收到最后一个文件ESXi6.7/imgpayld.tgz的最后一块数据包,就代表了所有esxi镜像文件都加载到客户端了。

虽然镜像文件传输完毕,但是,自动安装的步骤还未完成。

第489850号包~489852号包,是TCP协议的三次握手建立连接,客户端通过tcp协议访问服务端的80端口,即HTTP服务。

第489853号包~489855号包,建立TCP连接后,通过HTTP协议GET到文件/ks.cfg ,这个就是自动化安装的配置文件。(如果获取到此文件之前断掉网络,esxi的安装界面到了配置界面,无法自动进行下去,需要转为手动安装配置。)然后传输文件,最后服务端返回200确认。

第489856号包~489858号包,TCP的四次挥手,断开TCP连接。自此,esxi进入自动化安装配置过程。

最终,esxi安装完成后,客户端将会自动重启。

其实,关于TFTP的一些参数,在我们使用Tiny PXE Server软件的时候就可以配置。看看下图的一些选项,是不是和TFTP基础知识一致。

3 参考

TFTP 简单文件传输协议

https://blog.csdn.net/yetugeng/article/details/103834788

PXE 引导 ESXi 安装程序 (官方文档)

https://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.vsphere.install.doc_50%2FGUID-2F0D4696-3681-4C13-9552-5280C6406376.html

使用gPXE网络启动引导ISO和安装ESXi5
https://blog.51cto.com/virtualx/729043

PXE+VMware主机模式+KickStart脚本 自动安装ESXi 并试用WireShark抓包分析其中的协议TFTP,DHCP相关推荐

  1. php抓包分析工具下载,Wireshark(抓包分析工具) V3.2.1 32位多国语言安装版

    Wireshark是一款功能强大的抓包分析工具,该Wireshark可以轻松抓取网络数据,而且使用很简单,所以有需要的朋友赶紧下载吧! 功能介绍 1.Wireshark拥有许多强大的特性 包含有强显示 ...

  2. 网络抓包分析工具Wireshark的下载、安装和使用

    一.Wireshark下载 官网下载地址:https://www.wireshark.org/download.html,在谷歌浏览器地址栏输入官网网址 点击需要的版本就会开始下载安装包 二.Wire ...

  3. Pxe + Kickstart脚本 +VMWare NAT模式 自动安装 ESXi 6.5

    目标: 在虚拟机上测试通过PXE自动安装ESXi,为硬件安装ESXi做准备. 实验环境: Windows 10 (主机) VMWare workstation 15  (运行于主机上) Tiny PX ...

  4. Ubuntu/CentOS下使用脚本自动安装 Docker

    Ubuntu.Debian 系列安装 Docker 系统要求 Docker 支持以下版本的 Ubuntu 和 Debian 操作系统: Ubuntu Xenial 16.04 (LTS) Ubuntu ...

  5. 抓包分析,一条Linux命令实现路由器自动登录深大校园网认证(Drcom Pt版)

    先说结论,通过抓包分析简化最后可以得出,其登录过程只是一个简单的向服务器发送HTTP GET请求或HTTP POST请求.只要在路由器启动之后自动发送一段 HTTP 请求,即可实现自动登录. 对于 G ...

  6. 《云计算》-安全策略-扫描与抓包分析-使用NMAP扫描回去指定主机/网段的相关信息、使用tcpdump分析FTP访问中的明文交换信息

    3 案例3:扫描与抓包分析 3.1 问题 本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作: 使用NMAP扫描来获取指定主机/网段的相关信息 使用tcpdump分析FTP访问中的明文 ...

  7. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  8. Linux (centos) 安装anyproxy https手机设备抓包笔记

    Linux (centos) 安装anyproxy https手机设备抓包笔记  安装nodejs curl -sL https://rpm.nodesource.com/setup_14.x | b ...

  9. NMap参数抓包分析——主机发现,端口扫描,服务和版本探测

    1. NMap (1)NMap 介绍: NMap(Network Mapper)是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统 ...

最新文章

  1. PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头2
  2. 依图科技CEO朱珑:“智能密度”对AI发展意味着什么?
  3. 推荐一款超牛逼的Web SSH 客户端工具
  4. sunPKCS11加载动态库(转)
  5. 【学术相关】科技论文写作:grammerly润色工具
  6. java.sql.SQLException: Before start of result set ---错误笔记
  7. Oracle 11g 数据统计量Pending处理
  8. 漫画:大厂总提SaaS化部署,到底什么是IaaS、PaaS和SaaS?
  9. 容器编排技术 -- Kubernetes kubectl autoscale 命令详解
  10. HOG特征中的三线插值法
  11. codevs1068 乌龟棋 题解
  12. 什么软件画er图方便_ER模型怎么画?必备入门级模型图绘制软件
  13. radam+lookahead optimizer
  14. ps 去除gif水印
  15. 霍金实在论中的实践论
  16. C语言作业3-数组-2英文句子逆向输出
  17. 证明三角形sinA+sinB+sinC=4cos(A/2)cos(B/2)cos(C/2)
  18. Java课程设计说明书 捕鱼达人
  19. Python数据分析报告:北京市每月PM2.5的值和分析影响PM2.5
  20. China-Final2016K Justice Rains From Above

热门文章

  1. Unity工程文件夹里的目录结构
  2. c语言怎么编程输出相框,手把手教你学PIC单片机C语言教程第1课.PDF
  3. C语言复习---获取最大公约数(辗转相除法和更相减损法)
  4. 行·至巴黎 李宁 2020 春夏系列发布
  5. 华为账号服务内容讲解
  6. 【课程大纲】经典CANCANFD总线高级培训,以及CAN DBC/Arxml实战训练课
  7. Oracle 内置sql函数大全
  8. Java写出元旦特效代码
  9. [附源码]计算机毕业设计JAVA二手车况在线评估
  10. 计算机突然无法启动怎么办,电脑突然不能开机怎么办