±¾ÆÚΪ¡°·þÎñPGµç¾º¹ÙÍø²Ù×÷ϵͳ³£¼ûÎÊÌâ½âÎö¡±ÏµÁб¨µÀµÚʮһÆÚ£¬½éÉÜÔÚPXE°²×°ÏµÍ³Ê±ÈçºÎͨ¹ýtcpdump·ÖÎö°²×°¹ý³ÌÖеÄÍøÂç´«Êä½»»¥¡£
ÎÊÌâÃèÊö
ÔÚPXE£¨Ô¤Æô¶¯Ö´Ðл·¾³£©²¿Êð²Ù×÷ϵͳµÄ¹ý³ÌÖУ¬³£Òò»·¾³ÅäÖò»µ±µ¼Ö°²×°³öÏÖÎÊÌâ¡£ÀýÈ磺ϵͳ¼ÓÔØ½×¶ÎÒì³£½øÈëGRUBÃüÁîÐнçÃæ£¬ÖÂʹ°²×°½ø³ÌÎÞ·¨¼ÌÐø¡£

ͼ1£ºÏµÍ³°²×°½øÈëgrub
±¾ÎĽ«½éÉÜÈçºÎͨ¹ýʹÓÃtcpdump×¥°üµÄ·½Ê½£¬×·×Ù²¢·ÖÎö´ËÀàÎÊÌâµÄ¸ù±¾ÔÒò¡£
PXE°²×°Á÷³Ì
ÔÚPXEϵͳ°²×°Á÷³ÌÖУ¬¿Í»§¶ËµÄ³õʼ»¯Óë°²×°Îļþ»ñÈ¡×ñÑÑϽ÷µÄ½»»¥»úÖÆ£º
(1)Íø¿¨³õʼ»¯£º¿Í»§¶Ë¾ÓÉÖ§³ÖPXE¹¦ÄܵÄÍø¿¨½øÐÐϵͳÒýµ¼£¬¼¤»îÍøÂçÆô¶¯Á÷³Ì¡£
(2)µØÖ·Óë×ÊÔ´¶¨Î»£º¿Í»§¶Ëͨ¹ýDHCPÐÒ鶯̬»ñÈ¡IPµØÖ·£¬²¢»ñÈ¡NBP£¨Network Boot Program£©ÎļþµÄÃû³Æ¼°´æ´¢Â·¾¶£¬Íê³ÉÍøÂç×ÊԴѰַ¡£
(3)ºËÐijÌÐòÏÂÔØ£ºÒÀ¾ÝÆô¶¯Ä£Ê½²îÒ죬¿Í»§¶Ëͨ¹ýTFTPÐÒé´Ó·þÎñPGµç¾º¹ÙÍø¶ËÏÂÔØ¶ÔÓ¦NBPÎļþ£¬Legacyģʽµ÷ÓÃpxelinux.0£¬UEFIģʽÔò²ÉÓÃBOOTX64.EFI»ògrubx64.efiµÈÊÊÅäÎļþ¡£
(4)ÅäÖÃÎļþ¼ÓÔØ£ºÖ´ÐÐNBPÎļþºó£¬¿Í»§¶ËÔÙ´Îͨ¹ýTFTPÐÒéÏÂÔØÆô¶¯ÅäÖÃÎļþ£¬LegacyģʽʹÓÃdefaultÅäÖã¬UEFIģʽÔòµ÷ÓÃgrub.cfgÎļþ½øÐÐϵͳÆô¶¯²ÎÊýÅäÖá£
(5)ºËÐÄ×é¼þ¼ÓÔØ£º¸ù¾ÝÓû§Ñ¡¶¨µÄ²Ù×÷ϵͳ°æ±¾£¬¿Í»§¶Ë´Ó·þÎñ¶Ë»ñÈ¡¶ÔÓ¦µÄvmlinuzÄÚºËÎļþÓëinitrd³õʼ»¯¾µÏñ£¬Íê³ÉϵͳÄں˻·¾³´î½¨¡£
(6)°²×°Îļþ´«Ê䣺¿Í»§¶Ëͨ¹ýNFS¡¢FTP»òHTTPµÈÐÒ飬ÅúÁ¿ÏÂÔØ²Ù×÷ϵͳ°²×°Îļþ£¬Õýʽ´¥·¢ÏµÍ³°²×°Á÷³Ì¡£

ͼ2£º PXE°²×°Á÷³Ì
´ÓÉÏÊöÁ÷³Ì¿É¼û£¬PXEϵͳ°²×°¹ý³ÌÉæ¼°´Ó·þÎñ¶Ë»ñÈ¡DHCPµØÖ·¡¢ÏÂÔØNBPÎļþ¡¢¼ÓÔØÅäÖÃÎļþ¼°´«ÊäÄÚºËÓë³õʼ»¯¾µÏñµÈ¹Ø¼ü»·½Ú¡£ÄÇô£¬ÈçºÎÓÐЧÑéÖ¤ÕâЩÎļþµÄÏÂÔØ¹ý³ÌÊÇ·ñÕý³££¬Êý¾Ý´«ÊäÊÇ·ñÍêÕûÄØ£¿
½ÓÏÂÀ´£¬½«Îª´ó¼ÒÏêϸ½éÉÜÈçºÎͨ¹ý×¥°ü·½·¨·ÖÎöPXEÕû¸öÆô¶¯¹ý³Ì¡£
×¥°ü¹¤¾ß×¼±¸
1.tcpdump¹¤¾ß½éÉÜ
tcpdumpÊÇÒ»¿î¹¦ÄÜÇ¿´óÇҹ㷺ӦÓõÄÃüÁîÐÐÍøÂç×¥°ü¹¤¾ß¡£¸Ã¹¤¾ß¿Éʵʱ¼àÌýÖ¸¶¨ÍøÂç½Ó¿ÚµÄÊý¾ÝÁ÷£¬¾«×¼²¶»ñTCP¡¢UDP¡¢ICMPµÈ¸÷ÀàÍøÂçÐÒéÊý¾Ý°ü£¬²¢ÒÔ±ê×¼»¯¸ñʽ³ÊÏÖÊý¾Ý½»»¥Ï¸½Ú£¬ÎªÍøÂç¹ÜÀíÔ±¹¹½¨ÁËϵͳ»¯µÄ¹ÊÕÏÕï¶ÏÓëÁ÷Á¿·ÖÎöÌåϵ¡£
ÎÒÃÇ¿ÉÒÔÔÚPXE·þÎñ¶ËʹÓÃtcpdumpץȡPXE°²×°¹ý³ÌÖеÄÍøÂçÊý¾Ý°ü£¬´Ó¶ø·ÖÎö¸÷Îļþ´«Êä¹ý³Ì¡£ÒÔÏÂÊǾßÌåµÄ°²×°ºÍʹÓ÷½·¨£º
£¨1£©Í¨¹ýyum°²×°tcpdumpÈí¼þ°ü
# yum install tcpdump
£¨2£©Ö´ÐÐÈçÏÂÃüÁʼץ°ü
# tcpdump -i net -s0 -w pxe.cap
ÆäÖУº
net£ºÌṩPXE·þÎñ¶ËÌṩ·þÎñµÄÍøÂç½Ó¿ÚÃû³Æ
-s0£º²¶»ñÍêÕûÊý¾Ý°ü£¬²»ÏÞÖÆ³¤¶È
-w pxe.cap£º½«²¶»ñµ½µÄÊý¾Ý±£´æµ½pxe.capÎļþÖÐ
£¨3£©µ±¿Í»§¶Ëͨ¹ýPXE½øÐÐϵͳ°²×°²¢³öÏÖÎÊÌâʱ£¬¿ÉÒÔÔÚ·þÎñ¶ËÍ£Ö¹tcpdumpµÄ×¥°ü²Ù×÷£¬´ËʱÉú³ÉµÄpxe.capÎļþ½«ÍêÕû¼Ç¼±¾´ÎPXE°²×°¹ý³ÌÖеÄËùÓÐÍøÂç´«ÊäÊý¾Ý°ü£¬¿É½èÖúWireshark¹¤¾ß¶ÔÆäÖеľßÌåÐÅÏ¢½øÐÐÉî¶È·ÖÎö¡£
2.Wireshark¹¤¾ß½éÉÜ
Wireshark×÷Ϊ¿ªÔ´ÍøÂçÐÒé·ÖÎöÁìÓòµÄ±ê¸Ë¹¤¾ß£¬±»¹ã·ºÓ¦ÓÃÓÚÍøÂç¹ÊÕÏÅŲ顢°²È«É󼯼°ÐÒ鿪·¢µÈרҵ³¡¾°¡£ÔÚWiresharkµÄÖ÷½çÃæÖУ¬²¶»ñµÄÍøÂ籨ÎÄͨ¹ýÈý¸öºËÐÄÇøÓò½øÐпÉÊÓ»¯³ÊÏÖ£º
Êý¾Ý°üÁбí
ÒÔʱ¼äÖá˳ÐòչʾËùÓв¶»ñµÄÊý¾Ý°ü£¬°üº¬Ô´µØÖ·¡¢Ä¿±êµØÖ·¡¢ÐÒéÀàÐ͵ȹؼüÐÅÏ¢¡£
Êý¾Ý°üÏêÇé
¶ÔÑ¡ÖÐÊý¾Ý°ü½øÐзֲã½âÎö£¬´ÓÊý¾ÝÁ´Â·²ãµ½Ó¦ÓòãչʾÐÒé×ֶεľßÌåÄÚÈÝ¡£
Êý¾Ý°ü×Ö½ÚÁ÷
ÒÔÊ®Áù½øÖƺÍASCIIÂëÐÎʽ³ÊÏÖÊý¾Ý°üµÄÔʼ×Ö½ÚÊý¾Ý£¬±ãÓڵײãÊý¾ÝУÑé¡£

ͼ3£º wireshark½çÃæ
3.ͨ¹ýWireshark½âÎötcpdump×¥µÄÊý¾Ý°ü
£¨1£©ÔÚWindows²Ù×÷ϵͳ»·¾³Ï£¬Æô¶¯Wireshark¹¤¾ß²¢µ¼Èë֮ǰץȡµÄpxe.capÊý¾Ý°üÎļþ¡£

ͼ4£º wireshark´ò¿ªÎļþ
£¨2£©¸ù¾ÝPXEϵͳ°²×°Á÷³Ì£¬¿Í»§¶Ë³õʼ»¯½×¶ÎÐèͨ¹ýDHCPÐÒéÍê³ÉIPµØÖ·»ñÈ¡¡£Í¨¹ýWireshark·ÖÎö²¶»ñµÄÍøÂ籨ÎÄ£¬¿ÉÍêÕû³ÊÏÖÕâÒ»µØÖ··ÖÅä¹ý³ÌµÄ±ê×¼½»»¥Ê±Ðò£º
DHCP Discover ->DHCP Offer ->DHCP Request -> DHCP ACK
ÆäÖÐ
DHCP Discover
¿Í»§¶Ë¹ã²¥Ñ°Ö·±¨ÎÄ£¬ËÑË÷ÍøÂçÖеĿÉÓÃDHCP·þÎñPGµç¾º¹ÙÍø
DHCP Offer
DHCP·þÎñPGµç¾º¹ÙÍøÏìÓ¦¿Í»§¶ËÇëÇó£¬Ìṩ¿ÉÓÃIPµØÖ·¼°ÅäÖòÎÊý
DHCP Request
¿Í»§¶ËÏòÄ¿±ê·þÎñPGµç¾º¹ÙÍø·¢ËÍIPµØÖ·ÇëÇóÈ·ÈÏ
DHCP ACK
DHCP·þÎñPGµç¾º¹ÙÍøÈ·ÈÏ·ÖÅ䣬ÕýʽÏ·¢IPµØÖ·¼°Ïà¹ØÅäÖÃÐÅÏ¢
ͨ¹ý½âÎöDHCP ACK±¨ÎÄ£¬¿É»ñÈ¡ÒÔϹؼüÅäÖòÎÊý£º
¿Í»§¶ËIPµØÖ·£º192.168.91.128
Next Server
µØÖ·£º192.168.91.128£¨Ö¸ÏòTFTP·þÎñPGµç¾º¹ÙÍø£©
ÆäÖÐNext Server×Ö¶ÎÃ÷È·Á˺óÐøPXEÒýµ¼ÎļþµÄ»ñȡĿ±ê£¬¼´TFTP·þÎñµÄ·ÃÎʵØÖ·¡£

ͼ5£º wireshark½âÎöTFTP·þÎñPGµç¾º¹ÙÍøµØÖ·ÐÅÏ¢
£¨3£©¼ì²éPXE°²×°¹ý³ÌÖУ¬´«ÊäµÄ¸÷Îļþ°ü´«ÊäÇé¿ö¡£
´ÓÊý¾Ý°üÖп´µ½£¬¿Í»§¶Ëͨ¹ýTFTP·þÎñPGµç¾º¹ÙÍø¶ÁÈ¡µÄNBPÎļþµÄ×Ü´óСÊÇtsize: 955632×Ö½Ú£¬Ã¿´Î´«ÊäµÄ¿é´óСΪblksize: 1468×Ö½Ú¡£

ͼ6£º wireshark½âÎöNBPÎļþ´óС
ÔÚTFTPÐÒé´«Êä¹ý³ÌÖУ¬¿Éͨ¹ý½âÎöÊý¾Ý°üÖеÄ[last]±ê¼Ç¡£¸Ã±ê¼Ç±íÃ÷NBPÎļþÊý¾ÝÁ÷ÒÑÍêÕû½ÓÊÕ£¬´Ëʱ¿Éͨ¹ýÒÔϲ½ÖèPGµç¾º¹ÙÍøÊµ¼Ê´«Êä´óС£º
NBP´óС= blksize ¡Á (×ܰüÊý- 1) +Ä©°üblksize
ʵ¼ÊPGµç¾º¹ÙÍøµÃ³ö£º
NBPÎļþ´óС= 1468 ¡Á (651 - 1) + 1432 = 955632×Ö½Ú
½«PGµç¾º¹ÙÍøµÃ³öµÄʵ¼ÊÎļþ´óСÓëTFTPÐÒéÖÐÉùÃ÷µÄÎļþ´óС£¨tsize=955632×Ö½Ú£©½øÐбȶÔÑéÖ¤£º
ÈôÁ½ÕßÊýÖµÍêȫһÖ£¬¿ÉÅж¨ÍøÂç´«Êä¹ý³ÌÖÐδ·¢ÉúÊý¾Ý°ü¶ªÊ§£¬ÎļþÍêÕûÐԵõ½±£ÕÏ£»
ÈôPGµç¾º¹ÙÍøÖµÓëÉùÃ÷Öµ´æÔÚ²îÒ죬Ôò±íÃ÷NBPÎļþ´«Êä²»ÍêÕû£¬Ðè½øÒ»²½ÅŲ鴫Êä¹ý³ÌÖÐÊÇ·ñ´æÔÚÊý¾Ý°ü¶ªÊ§»òÖØ´«Òì³£¡£

ͼ7£º wireshark½âÎö´«ÊäNBPÎļþ×îºóÒ»¸ö°üÐÅÏ¢
µ±NBPÎļþ¼ÓÔØÍê³Éºó£¬ÏµÍ³½«·¢Æð¶Ôgrub.cfgÅäÖÃÎļþµÄÇëÇó¡£¶ÔÓÚÆäËûÎļþµÄÍêÕûÐÔÑéÖ¤£¬¿Éͨ¹ýÊý¾Ý°üÎļþÖеĴ«ÊäÊý¾Ý½øÐÐPGµç¾º¹ÙÍø£¬ÒÔÈ·ÈÏÎļþ´«Êä¹ý³ÌÖÐÊÇ·ñ´æÔÚȱʧ¡£
´Ó²¶»ñµÄÊý¾Ý°üÖпɼû£¬grub.cfgµÄ¼ÓÔØÂ·¾¶ÎªTFTP·þÎñÖеÄÏà¶Ô·¾¶pxelinuxĿ¼¡£

ͼ8£º wireshark½âÎögrub.cfgÐÅÏ¢
¸ù¾Ýgrub.cfgÅäÖÃÎļþµÄÒýµ¼¹æÔò£¬ÏµÍ³½«ÒÀ´Î·¢Æð¶ÔÄÚºËÎļþvmlinuzºÍ³õʼ»¯¾µÏñÎļþinitrdµÄ¼ÓÔØÇëÇó£¬ÕâÁ½¸öÎļþÓÃÓÚ¹¹½¨Æô¶¯°²×°³ÌÐòËùÐèµÄÄÚ´æÔËÐл·¾³¡£

ͼ9£º wireshark½âÎövmlinuzÐÅÏ¢

ͼ10£º wireshark½âÎöinitrdÐÅÏ¢
£¨4£©µ±ÄÚ´æÏµÍ³¾µÏñÎļþinitrd´«ÊäÍê³Éºó£¬ÏµÍ³½«¿ªÊ¼ÏÂÔØ°²×°¹ý³ÌÖÐËùÐèµÄinstall.imgÎļþ¼°¸÷ÀàÈí¼þ°üÎļþ¡£

ͼ11£º wireshark½âÎöinstall.imgÐÅÏ¢
¸ù¾Ý¿Í»§¶ËPXE°²×°¹ý³ÌµÄ±¨´íÐÅÏ¢£¬ÒÔ¼°tcpdump×¥µ½µÄÍøÂçÊý¾Ý°ü´«Êä¹ý³Ì£¬¿ÉÒÔ·ÖÎöPXE´«Êä¹ý³ÌÖУ¬¸÷°²×°ÅäÖÃÎļþµÄÍêÕûÐÔ£¬¶¨Î»ÎÊÌâÔÒò¡£
ÎÊÌâ·ÖÎö
»Øµ½ÎÄÕ¿ªÆªÌá¼°µÄ¹ÊÕϳ¡¾°£ºµ±¿Í»§¶Ëͨ¹ýPXEÆô¶¯Ê±£¬ÏµÍ³Î´ÄÜÕý³£½øÈë°²×°½çÃæ£¬Í£ÖÍÔÚGRUBÃüÁîÐн»»¥×´Ì¬£º

ͼ12£ºpxe°²×°ÏµÍ³½øÈëgrub½çÃæ
ͨ¹ýtcpdump×¥°ü·ÖÎö£¬¿´µ½¿Í»§¶ËÔÚ´ÓPXE·þÎñ¶Ë¶ÁÈ¡pxelinux/grubx64.efiÎļþʱ£¬³öÏÖÁË¡°File not found¡±µÄ±¨´íÐÅÏ¢£º

ͼ13£ºwireshark½âÎö´íÎóÔÒò
ËùÒÔÔì³É¸ÃÎÊÌâµÄÔÒòÊÇ£ºÓÉÓÚPXE·þÎñ¶Ëȱʧgrubx64.efiÎļþ£¬¿Í»§¶ËÔÚPXEÆô¶¯¹ý³ÌÖÐÎÞ·¨»ñÈ¡±ØÒªµÄÒýµ¼³ÌÐò£¬½ø¶øÖÂʹºóÐø°²×°Á÷³ÌÎÞ·¨Õý³£Æô¶¯¡£
½â¾ö·½·¨
ÔÚPXE·þÎñ¶Ë£¬½«ÏµÍ³¾µÏñÖеÄgrubx64.efiÎļþ¸´ÖÆÖÁ/var/lib/tftpboot/pxelinuxĿ¼£¬²¢Îª¸ÃÎļþÉèÖÿɶÁȨÏÞ¡£
×ܽá
PXE°²×°¹ÊÕÏ´ó¶àÔ´ÓÚÍøÂç½»»¥Òì³££¬ÓÃtcpdump+Wireshark·ÖÎöʱ£¬¼ÇסÈý¸ö¹Ø¼üµã£º
(1)¶ÔÓ¦Á÷³Ì£º½«Êý¾Ý°üÓëPXEµÄ6²½Á÷³Ì¶ÔÓ¦£¬¶¨Î»¿¨¿Ç»·½Ú£»
(2)¹Ø×¢ÐÒé£ºÖØµã¼ì²éDHCP£¨µØÖ··ÖÅ䣩ºÍTFTP£¨Îļþ´«Ê䣩µÄ½»»¥Ï¸½Ú£»
(3)ÑéÖ¤ÍêÕûÐÔ£ºÍ¨¹ýÎļþ´óС¡¢±¨´íÐÅÏ¢ÅжÏÊÇ·ñΪÎļþȱʧ»ò´«ÊäÒì³£¡£
ÕÆÎÕÕâÌ×·½·¨£¬ÎÞÂÛÓöµ½IP·ÖÅäʧ°Ü¡¢Òýµ¼Îļþ¶ªÊ§»¹ÊÇÍøÂ綪°ü£¬¶¼ÄÜ¿ìËÙ¶¨Î»ÎÊÌ⣬ÈÃPXE°²×°Ð§ÂÊ·±¶£¡
²úÆ·ÏÂÔØ
²úÆ·¼¤»î
ÊÛǰ×Éѯ
ÊÛºó·þÎñ
»Øµ½¶¥²¿
ÊÛǰ×Éѯ
ÊÛºó·þÎñ