[Kea-users] PXE booting to PHP file and on commit, release, expiry

Christoffer Jönsson bonchen at imap.cc
Wed Sep 14 16:31:33 UTC 2016


Hi there.

I have tried to find the ID using tcpdump on my dhcp server running 
openbsd. But I only get some kind useless output.
Have tried these commands:

tcpdump -lenx -s 1500 -i vio1 port bootps or port bootpc:

    18:15:39.199104 36:39:31:35:37:30 ff:ff:ff:ff:ff:ff 0800 450:
    0.0.0.0.68 > 255.255.255.255.67: xid:0x9f31e34 secs:14 vend-rfc1048
    DHCP:REQUEST MSZ:1472 T93:0 T94:1.2.1
    VC:80.88.69.67.108.105.101.110.116.58.65.114.99.104.58.48.48.48.48.48.58.85.78.68.73.58.48.48.50.48.48.49
    T77:1766873157
    PR:SM+DG+NS+LOG+HN+DN+RP+VO+VC+TFTP+BF+119+128+129+130+131+132+133+134+135+175+203
    T175:177.5.1.26.244.16.0.235.3.1.0.0.23.1.1.34.1.1.19.1.1.17.1.1.39.1.1.25.1.1.16.1.2.33.1.1.21.1.1.24.1.1.18.1.1
    CID:1.54.57.49.53.55.48
    T97:0.210.70.225.140.162.19.12.66.131.81.115.228.78.228.23.33
    SID:10.0.0.1 RQ:10.0.0.180

    *very long hex*

    18:15:39.199613 36:34:36:65:61:31 36:39:31:35:37:30 0800 342:
    10.0.0.181.67 > 10.0.0.180.68: xid:0x9f31e34 secs:14 Y:10.0.0.180
    S:10.0.0.9 sname "fw" file "http://10.0.0.9/tftp/boot.php"
    vend-rfc1048 DHCP:ACK SID:10.0.0.1 LT:7200 SM:255.255.255.0
    DG:10.0.0.1 NS:10.0.0.23,10.0.0.1 HN:"in-cc01" DN:"chrjsn.se" [tos 0x10]

    *very long hex*


  tcpdump -vlenxx -i vio1 -s 1500  port bootps or port bootpc:

    18:22:21.568888 36:39:31:35:37:30 ff:ff:ff:ff:ff:ff 0800 450:
    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] xid:0x47cead35 secs:14
    vend-rfc1048 DHCP:REQUEST MSZ:1472 T93:0 T94:1.2.1
    VC:80.88.69.67.108.105.101.110.116.58.65.114.99.104.58.48.48.48.48.48.58.85.78.68.73.58.48.48.50.48.48.49
    T77:1766873157
    PR:SM+DG+NS+LOG+HN+DN+RP+VO+VC+TFTP+BF+119+128+129+130+131+132+133+134+135+175+203
    T175:177.5.1.26.244.16.0.235.3.1.0.0.23.1.1.34.1.1.19.1.1.17.1.1.39.1.1.25.1.1.16.1.2.33.1.1.21.1.1.24.1.1.18.1.1
    CID:1.54.57.49.53.55.48
    T97:0.210.70.225.140.162.19.12.66.131.81.115.228.78.228.23.33
    SID:10.0.0.1 RQ:10.0.0.180 (ttl 64, id 873, len 436)

    *very long hex*

    18:22:21.569432 36:34:36:65:61:31 36:39:31:35:37:30 0800 342:
    10.0.0.181.67 > 10.0.0.180.68: [udp sum ok] xid:0x47cead35 secs:14
    Y:10.0.0.180 S:10.0.0.9 sname "fw" file
    "http://10.0.0.9/tftp/boot.php" vend-rfc1048 DHCP:ACK SID:10.0.0.1
    LT:7200 SM:255.255.255.0 DG:10.0.0.1 NS:10.0.0.23,10.0.0.1
    HN:"in-cc01" DN:"chrjsn.se" [tos 0x10] (ttl 128, id 0, len 328)

    *very long hex*

tcpdump -i vio1 -s 1500 -vvv port bootps or port bootpc also gives 
similar results.

But from what I've read from tcpdumps on google, the ID changes for 
different hardware.
Isn't there a way to simply check if undionly.kpxe is loaded and then 
load the PHP?

"if not exists gpxe.bus-id" worked for all devices and also with ipxe.

Thanks!
>
> Hi Chris,
>
> 'd-i' is the DHCP signature of the preseed Debian Installer (hence, 
> 'd-i'). I've only ever used iPXE, I've never used gPXE before it, so 
> yeah, a couple of minutes with tcpdump to inspect the ID it's sending 
> in the option string should help you along; once you have that ID 
> field, change the test condition in the second stanza and you should 
> be good to go.
>
> BTW the problem you're encountering with the looping boot process is 
> one that affected ISC DHCP in a similar way, you just have to tune the 
> conditions the DHCP server uses to distinguish the state of the 
> booting client in order to direct it where you want to go. ... or 
> flash iPXE on the firmware of all your servers hahaha :-)
>
> cheers,
> Klaus
>
> On Tue, Sep 13, 2016 at 9:29 AM, Christoffer Jönsson <bonchen at imap.cc 
> <mailto:bonchen at imap.cc>> wrote:
>
>
>
>     On 2016-09-12 22:58, Klaus Steden wrote:
>>
>>     I don't know about updating PowerDNS, but I suspect you'll have
>>     to write a plugin. As for the designated boot menu, you can still
>>     do that, although the syntax is different.
>>
>>     This snippet below -should- do more or less what you're doing
>>     with vanilla ISC DHCP:
>>
>>     -- cut --
>>       "client-classes": [
>>         {
>>             "name": "bootstrap",
>>             "test" : "option[60].exists
>>             "option-data": [
>>               {
>>                 "name": "boot-file-name",
>>                 "data": "ipxe/undionly.kpxe"
>>               }
>>             ]
>>         },
>>         {
>>             "name": "preseed",
>>             "test": "option[60].hex == 'd-i'",
>>             "option-data": [
>>               {
>>                   "data" : "http://10.0.0.9/tftp/boot.php
>>     <http://10.0.0.9/tftp/boot.php>",
>>                   "name" : "boot-file-name"
>>                }
>>             ]
>>          }
>>       ],
>>     -- cut --
>>
>>     You're probably going to have to tune that a bit, but this is the
>>     approach I'm using to manage both server and switch booting, and
>>     it works well.
>>
>>     hth,
>>     Klaus
>>
>>     On Mon, Sep 12, 2016 at 11:57 AM, Christoffer Jönsson
>>     <bonchen at imap.cc <mailto:bonchen at imap.cc>> wrote:
>>
>>         Hello again!
>>
>>         Since the 1.1 release i decided to try and migrate from
>>         isc-dhcp. And there is a few things I have questions about.
>>
>>         For years I have been using a python script to feed my
>>         PowerDNS it's records using this:
>>
>>         on commit {
>>                         set ClientIP = binary-to-ascii(10, 8, ".",
>>         leased-address);
>>                         set ClientMac = binary-to-ascii(16, 8, ":",
>>         substring(hardware, 1, 6));
>>                         log(concat("Commit: IP: ", ClientIP, " Mac:
>>         ", ClientMac, "Hostname: ", option host-name));
>>                         execute("/etc/pdns/dhcp-event", "commit",
>>         ClientIP, ClientMac, option host-name);
>>         }
>>
>>         Is it still possible to call and external script?
>>
>>         At the same time I've been using a php file that loads the
>>         designated boot menu for the booted mac-address:
>>
>>         subnet 10.0.0.0 netmask 255.255.255.0 {
>>         [...]
>>
>>         if not exists gpxe.bus-id {
>>             filename "undionly.kpxe";
>>         } else {
>>             filename "http://10.0.0.9/tftp/boot.php";
>>         }
>>         [...]
>>         }
>>
>>         I'm not sure I can still use this line of code?
>>
>>         Thanks in advance!
>>         _______________________________________________
>>         Kea-users mailing list
>>         Kea-users at lists.isc.org <mailto:Kea-users at lists.isc.org>
>>         https://lists.isc.org/mailman/listinfo/kea-users
>>         <https://lists.isc.org/mailman/listinfo/kea-users>
>>
>>
>
>
>     _______________________________________________
>     Kea-users mailing list
>     Kea-users at lists.isc.org <mailto:Kea-users at lists.isc.org>
>     https://lists.isc.org/mailman/listinfo/kea-users
>     <https://lists.isc.org/mailman/listinfo/kea-users>
>
>
>
>
> _______________________________________________
> Kea-users mailing list
> Kea-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/kea-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/kea-users/attachments/20160914/7d65de8d/attachment.htm>


More information about the Kea-users mailing list