# isc-dhcpd & failover - problem with PXE & TFTPd

## paziu

Hello,

let me start it this way: This problem drives me crazy for last few months...

the DHCPd and bind failover works very nice, I use it at home on two >>gentoo<< boxes.

it is configured to boot over iSCSI, tftp ( nfs / cifs / httpd ).

The problem appears when the primary DHCPd is off-line, or if the secondary answers to the DHCP request during the PXE init phase.

In both configurations, the the DHCPd responds with the same IP address of the TFTPd. But when the slave provides the information to the PXE boot client, the connection to the TFTPd times out, it is never able to connect to the tftp server.

In both cases all IP addresses belong to the same network. ( 10.0.0.0/24 ).

10.0.0.111:

primary system with DNSd, DHCPd, NFS, iSCSI, TFTPd....

10.0.0.112:

secondary box, DNSd, DHCPd...

both dhcpd.conf files have 10.0.0.111 as the TFTPd

when both systems are up, the responses to DHCP requests are being sent from either of the two DHCPd's

when the client receives response from 111 everything is cool, if it is from 112, the information seems to be correct, but the client is unable to connect to the TFTPd on 111.

Any ideas? & Thank you!

Mike

----------

## szatox

Such a queston screems for configs and perhaps some logs.

Results of  `grep -v '^[[:space:]]*$\|^[[:space:]]*#]'  <dhcpd config file>`  could help a lot

----------

## paziu

sorry, I should do it in the first post...

primary dhcpd.conf: ( a bit messy - pardon )

```
# include "/etc/bind/rndc.key";

ddns-updates on;

key rndc-key { algorithm hmac-md5; secret "b1ab1a";}

default-lease-time 300000;

option domain-name "home.local";

max-lease-time 600000;

ddns-update-style interim;

update-static-leases on;

allow bootp;

allow unknown-clients;

use-host-decl-names on;

log-facility syslog;

authoritative;

option space ipxe;

  option ipxe-encap-opts code 175 = encapsulate ipxe;

  option ipxe.priority code 1 = signed integer 8;

  option ipxe.keep-san code 8 = unsigned integer 8;

  option ipxe.skip-san-boot code 9 = unsigned integer 8;

  option ipxe.syslogs code 85 = string;

  option ipxe.cert code 91 = string;

  option ipxe.privkey code 92 = string;

  option ipxe.crosscert code 93 = string;

  option ipxe.no-pxedhcp code 176 = unsigned integer 8;

  option ipxe.bus-id code 177 = string;

  option ipxe.bios-drive code 189 = unsigned integer 8;

  option ipxe.username code 190 = string;

  option ipxe.password code 191 = string;

  option ipxe.reverse-username code 192 = string;

  option ipxe.reverse-password code 193 = string;

  option ipxe.version code 235 = string;

  option iscsi-initiator-iqn code 203 = string;

  option ipxe.pxeext code 16 = unsigned integer 8;

  option ipxe.iscsi code 17 = unsigned integer 8;

  option ipxe.aoe code 18 = unsigned integer 8;

  option ipxe.http code 19 = unsigned integer 8;

  option ipxe.https code 20 = unsigned integer 8;

  option ipxe.tftp code 21 = unsigned integer 8;

  option ipxe.ftp code 22 = unsigned integer 8;

  option ipxe.dns code 23 = unsigned integer 8;

  option ipxe.bzimage code 24 = unsigned integer 8;

  option ipxe.multiboot code 25 = unsigned integer 8;

  option ipxe.slam code 26 = unsigned integer 8;

  option ipxe.srp code 27 = unsigned integer 8;

  option ipxe.nbi code 32 = unsigned integer 8;

  option ipxe.pxe code 33 = unsigned integer 8;

  option ipxe.elf code 34 = unsigned integer 8;

  option ipxe.comboot code 35 = unsigned integer 8;

  option ipxe.efi code 36 = unsigned integer 8;

  option ipxe.fcoe code 37 = unsigned integer 8;

  option ipxe.vlan code 38 = unsigned integer 8;

  option ipxe.menu code 39 = unsigned integer 8;

  option ipxe.sdi code 40 = unsigned integer 8;

  option ipxe.nfs code 41 = unsigned integer 8;

  # gPXE-specific encap.

  #

  option space gpxe;

  option gpxe-encap-opts code 175 = encapsulate gpxe;

  option gpxe.priority code 1 = signed integer 8;

  option gpxe.keep-san code 8 = unsigned integer 8;

  option gpxe.no-pxedhcp code 176 = unsigned integer 8;

  option gpxe.bus-id code 177 = string;

  option gpxe.bios-drive code 189 = unsigned integer 8;

  option gpxe.username code 190 = string;

  option gpxe.password code 191 = string;

  option gpxe.reverse-username code 192 = string;

  option gpxe.reverse-password code 193 = string;

  option gpxe.version code 235 = string;

####################################################################################

failover peer "dhcp-failover" {

    primary;

    address 10.0.0.111;

    port 647;

    peer address 10.0.0.112;

    peer port 647;

    max-response-delay 30;

    max-unacked-updates 10;

    load balance max seconds 3;

    mclt 1800;

    split 128;

}

####################################################################################

subnet 10.0.0.0 netmask 255.255.255.0 {

    interface br0;

#    range 10.0.0.201 10.0.0.250;

    option subnet-mask 255.255.255.0;

    option broadcast-address 10.0.0.255;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.111;

    option domain-name "home.local";

    ddns-domainname "home.local.";

    ddns-rev-domainname "in-addr.arpa.";

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

# remove from here if no failover

  pool {

    failover peer "dhcp-failover";

    max-lease-time 600000;

    range 10.0.0.201 10.0.0.250;

  }

}

#######################################################################################

#  DNS zones

zone home.local {

  primary localhost;

  key rndc-key; 

  }

zone 0.0.10.in-addr.arpa {

  primary localhost; 

  key rndc-key; 

  }

#######################################################################################

  option iscsi-initiator-iqn code 203 = string;

host koala {

     fixed-address 10.0.0.22;

     #hardware ethernet 00:0C:29:0C:77:DD;

     # Do not wait for a ProxyDHCP repl

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala2 {

     fixed-address 10.0.0.23;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     hardware ethernet 00:0c:29:49:d7:51; # change to 2f to boot ITX

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala3w7aoe {

     fixed-address 10.0.0.24;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     hardware ethernet 00:50:56:20:1b:e2; # vmware mac ( change f0 to 00

#     hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun3"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala3w7iscsi {

     fixed-address 10.0.0.24;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     hardware ethernet f0:50:56:20:1b:e2; # vmware mac ( change f0 to 00

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.1";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun2";

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala3win2 {

     fixed-address 10.0.0.24;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:20:1b:e2; # change to 2f to boot ITX

#     hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka

     #hardware ethernet 00:1c:c0:06:75:8c; # dentysta1

     #hardware ethernet 78:2b:cb:a2:44:1f; # dell 790

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun3";

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host diablorka8 {

     fixed-address 10.0.0.25;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:20:1b:e2; # change to 2f to boot ITX

###     hardware ethernet 0f:1c:c0:f7:d7:c1; # diablotka bedroom  00:

     #hardware ethernet 78:2b:cb:a2:44:1f; # dell 790

     #hardware ethernet 00:1c:c0:06:75:8c; # dentysta1

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

#aoe

#      option root-path "aoe:e0.0";

#iscsi

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun3"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host debian721 {

     fixed-address 10.0.0.26;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     hardware ethernet 44:8a:5b:25:c7:8c; # MSI core i7 4Gen

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun4"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host debdiablo {

     fixed-address 10.0.0.26;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun4"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host tabletiscsi {

     fixed-address 10.0.0.29;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

    # hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     #hardware ethernet 40:61:86:ba:ee:65; # asus laptop no screen

#     hardware ethernet 00:0e:7b:ae:b9:5f; # kitchen tablet

     #hardware ethernet 00:50:56:2a:53:02; # vm iPXE

#     hardware ethernet 00:1a:92:10:5f:27; # shuttle_blue

####hardware ethernet 00:0c:29:55:60:22; # vm tablet-nbd-test-clone (no HDD) for testing

#     hardware ethernet c8:60:00:9f:d6:ca; # dell xps

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun5"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

}

host deb76i386 {

     fixed-address 10.0.0.27;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

    # hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     #hardware ethernet 40:61:86:ba:ee:65; # asus laptop no screen

     hardware ethernet 00:0e:7b:ae:b9:5f; # kitchen tablet

     #hardware ethernet 00:50:56:2a:53:02; # vm iPXE

#     hardware ethernet 00:1a:92:10:5f:27; # shuttle_blue

####hardware ethernet 00:0c:29:55:60:22; # vm tablet-nbd-test-clone (no HDD) for testing

#     hardware ethernet c8:60:00:9f:d6:ca; # dell xps

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun7"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

}

host xbmc-iscsi {

     fixed-address 10.0.0.29;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     #######hardware ethernet 44:8a:5b:25:c7:8c; # MSI core i7 4Gen

     hardware ethernet 00:23:7d:cc:71:6b; # hp thin

     #hardware ethernet 00:0c:29:89:a7:22; # xbmc13 VM ( end on 22 )

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun8"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host shuttle_blue {

     fixed-address 10.0.0.210;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

    # hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     #hardware ethernet 00:0e:7b:ae:b9:5f; # kitchen tablet

     # hardware ethernet 00:1a:92:10:5f:27; # shuttle_blue 

     hardware ethernet 00:00:00:10:5f:00; # DUMMY

     #hardware ethernet 00:0c:29:55:60:22; # vm tablet-nbd-test

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun6"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

}

host vostro1 {

     fixed-address 10.0.0.24;

     ######hardware ethernet 00:01:2e:35:36:56; # tablet 00:0e:7b:ae:b9:5f

     #hardware ethernet 00:0e:7b:ae:b9:5f; # tablet 00:0e:7b:ae:b9:5f

     #hardware ethernet 00:23:7d:cc:71:6b; #  hp thin1 00:23:7d:cc:71:6b

     #hardware ethernet 00:21:70:9f:81:00; #  vostro 00:21:70:9f:81:88

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

  } else {

      filename "undionly.kpxe";

  }

}

host diablotka {

    hardware ethernet 00:0e:35:ab:c7:69;

    # hardware ethernet 00:25:90:18:90:da;

    fixed-address 10.0.0.170;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

}

host xbox1 {

    hardware ethernet 7c:ed:8d:46:4b:2d;

    fixed-address 10.0.0.70;

    option routers 10.0.0.252;

    option domain-name-servers 10.0.0.252;

}

host cobalt {

    hardware ethernet 00:10:e0:00:21:12;

    fixed-address 10.0.0.8;

    option routers 10.0.0.1;

    next-server 10.0.0.111;

    option root-path "/nfsroot";

    filename "default.colo";

    option host-name "cobalt";

}

host geexbox {

    hardware ethernet 90:fb:a6:94:b5:b9; 

    fixed-address 10.0.0.177;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

}

host openelechp2 {

    hardware ethernet 00:23:7d:cc:71:6c; # change to 6b for openelechp1

    fixed-address 10.0.0.178;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.111;

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

}

host lolek2k {

    hardware ethernet 00:0c:29:31:f8:d0;

    fixed-address 10.0.0.198;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1,4.2.2.3;

}

host wl639a {

    hardware ethernet 00:20:4a:a9:f7:88;

    fixed-address 10.0.0.180;

    option routers 10.0.0.1;

    option subnet-mask 255.255.255.0;

    option broadcast-address 10.0.0.255;

}

host cortelco {

    hardware ethernet 00:11:be:01:27:2c;

    fixed-address 10.0.0.234;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

}

host nas {

   hardware ethernet 00:15:17:31:f3:b5;

   fixed-address 10.0.0.112;

   option routers 10.0.0.1;

   option domain-name-servers 10.0.0.111,10.0.0.1;

   option subnet-mask 255.255.255.0;

   option broadcast-address 10.0.0.255;

}

subnet 10.100.100.0 netmask 255.255.255.0 {

}

#new

host tinyxp {

        hardware ethernet 00:0c:29:1f:a2:e3;

        fixed-address 10.0.0.197;

        option routers 10.0.0.1;

        option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1;

        option subnet-mask 255.255.255.0;

        option broadcast-address 10.0.0.255;

}

#new

host atom2 {

        hardware ethernet 00:1A:92:10:5F:27;

   fixed-address 10.0.0.195;

        option routers 10.0.0.1;

        option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1;

        option subnet-mask 255.255.255.0;

        option broadcast-address 10.0.0.255;

}

#new

host hplj4 {

        hardware ethernet 00:30:c1:61:7b:ae;

        fixed-address 10.0.0.252;

        option routers 10.0.0.1;

        option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1;

        option subnet-mask 255.255.255.0;

        option broadcast-address 10.0.0.255;

}

#new

host SipuraSPA {

        hardware ethernet 00:0E:08:E1:AE:EE;

        fixed-address 10.0.0.251;

        option routers 10.0.0.1;

        option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1;

        option subnet-mask 255.255.255.0;

        option broadcast-address 10.0.0.255;

}

# new

host camhik171 {

        hardware ethernet 44:19:B7:02:7F:8A;

        fixed-address 10.0.0.171;

        option routers 10.0.0.1;

        option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1;

        option subnet-mask 255.255.255.0;

        option broadcast-address 10.0.0.255;

}

host mobdeb {

        hardware ethernet 08:11:96:ac:7c:dc;

        fixed-address 10.0.0.199;

        option routers 10.0.0.1;

        option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1;

        option subnet-mask 255.255.255.0;

        option broadcast-address 10.0.0.255;

}

```

secondary dhcpd.conf:

```
# include "/etc/bind/rndc.key";

ddns-updates on;

default-lease-time 300000;

option domain-name "home.local";

max-lease-time 600000;

ddns-update-style interim;

update-static-leases on;

key rndc-key { algorithm hmac-md5; secret "b1ab1a";}

deny bootp;

allow unknown-clients;

use-host-decl-names on;

log-facility syslog;

authoritative;

option space ipxe;

  option ipxe-encap-opts code 175 = encapsulate ipxe;

  option ipxe.priority code 1 = signed integer 8;

  option ipxe.keep-san code 8 = unsigned integer 8;

  option ipxe.skip-san-boot code 9 = unsigned integer 8;

  option ipxe.syslogs code 85 = string;

  option ipxe.cert code 91 = string;

  option ipxe.privkey code 92 = string;

  option ipxe.crosscert code 93 = string;

  option ipxe.no-pxedhcp code 176 = unsigned integer 8;

  option ipxe.bus-id code 177 = string;

  option ipxe.bios-drive code 189 = unsigned integer 8;

  option ipxe.username code 190 = string;

  option ipxe.password code 191 = string;

  option ipxe.reverse-username code 192 = string;

  option ipxe.reverse-password code 193 = string;

  option ipxe.version code 235 = string;

  option iscsi-initiator-iqn code 203 = string;

  # Feature indicators

  option ipxe.pxeext code 16 = unsigned integer 8;

  option ipxe.iscsi code 17 = unsigned integer 8;

  option ipxe.aoe code 18 = unsigned integer 8;

  option ipxe.http code 19 = unsigned integer 8;

  option ipxe.https code 20 = unsigned integer 8;

  option ipxe.tftp code 21 = unsigned integer 8;

  option ipxe.ftp code 22 = unsigned integer 8;

  option ipxe.dns code 23 = unsigned integer 8;

  option ipxe.bzimage code 24 = unsigned integer 8;

  option ipxe.multiboot code 25 = unsigned integer 8;

  option ipxe.slam code 26 = unsigned integer 8;

  option ipxe.srp code 27 = unsigned integer 8;

  option ipxe.nbi code 32 = unsigned integer 8;

  option ipxe.pxe code 33 = unsigned integer 8;

  option ipxe.elf code 34 = unsigned integer 8;

  option ipxe.comboot code 35 = unsigned integer 8;

  option ipxe.efi code 36 = unsigned integer 8;

  option ipxe.fcoe code 37 = unsigned integer 8;

  option ipxe.vlan code 38 = unsigned integer 8;

  option ipxe.menu code 39 = unsigned integer 8;

  option ipxe.sdi code 40 = unsigned integer 8;

  option ipxe.nfs code 41 = unsigned integer 8;

  option space gpxe;

  option gpxe-encap-opts code 175 = encapsulate gpxe;

  option gpxe.priority code 1 = signed integer 8;

  option gpxe.keep-san code 8 = unsigned integer 8;

  option gpxe.no-pxedhcp code 176 = unsigned integer 8;

  option gpxe.bus-id code 177 = string;

  option gpxe.bios-drive code 189 = unsigned integer 8;

  option gpxe.username code 190 = string;

  option gpxe.password code 191 = string;

  option gpxe.reverse-username code 192 = string;

  option gpxe.reverse-password code 193 = string;

  option gpxe.version code 235 = string;

  #

  option iscsi-initiator-iqn code 203 = string;

host koala {

     fixed-address 10.0.0.22;

     #hardware ethernet 00:0C:29:0C:77:DD;

     # Do not wait for a ProxyDHCP repl

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala2 {

     fixed-address 10.0.0.23;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     hardware ethernet 00:0c:29:49:d7:51; # change to 2f to boot ITX

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala3w7aoe {

     fixed-address 10.0.0.24;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     hardware ethernet 00:50:56:20:1b:e2; # vmware mac ( change f0 to 00

#     hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun3"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala3w7iscsi {

     fixed-address 10.0.0.24;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     hardware ethernet f0:50:56:20:1b:e2; # vmware mac ( change f0 to 00

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.1";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun2";

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host koala3win2 {

     fixed-address 10.0.0.24;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:20:1b:e2; # change to 2f to boot ITX

#     hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka

     #hardware ethernet 00:1c:c0:06:75:8c; # dentysta1

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun3";

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host diablorka8 {

     fixed-address 10.0.0.25;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:20:1b:e2; # change to 2f to boot ITX

     hardware ethernet 0f:1c:c0:f7:d7:c1; # diablotka bedroom  00:

     #hardware ethernet 00:1c:c0:06:75:8c; # dentysta1

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

#aoe

#      option root-path "aoe:e0.0";

#iscsi

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun3"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host debian721 {

     fixed-address 10.0.0.26;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun4"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host debdiablo {

     fixed-address 10.0.0.26;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

     #hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun4"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

     #filename "";

     #option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

}

host tabletiscsi {

     fixed-address 10.0.0.29;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

    # hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     #hardware ethernet 40:61:86:ba:ee:65; # asus laptop no screen

#     hardware ethernet 00:0e:7b:ae:b9:5f; # kitchen tablet

     #hardware ethernet 00:50:56:2a:53:02; # vm iPXE

#     hardware ethernet 00:1a:92:10:5f:27; # shuttle_blue

####hardware ethernet 00:0c:29:55:60:22; # vm tablet-nbd-test-clone (no HDD) for testing

#     hardware ethernet c8:60:00:9f:d6:ca; # dell xps

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun5"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

}

host deb76i386 {

     fixed-address 10.0.0.27;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

    # hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     #hardware ethernet 40:61:86:ba:ee:65; # asus laptop no screen

     hardware ethernet 00:0e:7b:ae:b9:5f; # kitchen tablet

     #hardware ethernet 00:50:56:2a:53:02; # vm iPXE

#     hardware ethernet 00:1a:92:10:5f:27; # shuttle_blue

####hardware ethernet 00:0c:29:55:60:22; # vm tablet-nbd-test-clone (no HDD) for testing

#     hardware ethernet c8:60:00:9f:d6:ca; # dell xps

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun7"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

}

host shuttle_blue {

     fixed-address 10.0.0.210;

     #hardware ethernet 00:11:2f:fb:95:ff; # change to 2f to boot ITX

    # hardware ethernet 00:50:56:2a:53:02; # vmware mac ( change f0 to 00

     #hardware ethernet 00:1c:c0:f7:d7:c1; # diablotka bedroom

     #hardware ethernet 00:0e:7b:ae:b9:5f; # kitchen tablet

     # hardware ethernet 00:1a:92:10:5f:27; # shuttle_blue 

     hardware ethernet 00:00:00:10:5f:00; # DUMMY

     #hardware ethernet 00:0c:29:55:60:22; # vm tablet-nbd-test

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

   if exists user-class and option user-class = "iPXE" {

      filename "";

      #option root-path "aoe:e0.0";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun6"; #change to lun2 for win8

      option gpxe.keep-san 1;

  } else {

      filename "undionly.kpxe";

  }

}

host vostro1 {

     fixed-address 10.0.0.24;

     ######hardware ethernet 00:01:2e:35:36:56; # tablet 00:0e:7b:ae:b9:5f

     #hardware ethernet 00:0e:7b:ae:b9:5f; # tablet 00:0e:7b:ae:b9:5f

     #hardware ethernet 00:23:7d:cc:71:6c; #  hp thin1 00:23:7d:cc:71:6b

     #hardware ethernet 00:21:70:9f:81:00; #  vostro 00:21:70:9f:81:88

     # Do not wait for a ProxyDHCP reply

     option gpxe.no-pxedhcp 1;

     next-server 10.0.0.111;

  if exists user-class and option user-class = "iPXE" {

      filename "";

      option root-path "iscsi:10.0.0.111::::iqn.2001-04.home:storage.lun1";

  } else {

      filename "undionly.kpxe";

  }

}

host diablotka {

    hardware ethernet 00:0e:35:ab:c7:69;

    # hardware ethernet 00:25:90:18:90:da;

    fixed-address 10.0.0.170;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

}

host krasnal {

    hardware ethernet f0:7b:cb:a4:da:9d;

    fixed-address 10.0.0.171;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

}

host xbox1 {

    hardware ethernet 7c:ed:8d:46:4b:2d;

    fixed-address 10.0.0.70;

    option routers 10.0.0.252;

    option domain-name-servers 10.0.0.252;

}

host cobalt {

    hardware ethernet 00:10:e0:00:21:12;

    fixed-address 10.0.0.8;

    option routers 10.0.0.1;

    next-server 10.0.0.111;

    option root-path "/nfsroot";

    filename "default.colo";

    option host-name "cobalt";

}

host geexbox {

    hardware ethernet 90:fb:a6:94:b5:b9; 

    fixed-address 10.0.0.177;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

}

host openelechp1 {

    hardware ethernet 00:23:7d:cc:71:6b; # change to 6b for openelechp1

    fixed-address 10.0.0.178;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

}

host lolek2k {

    hardware ethernet 00:0c:29:31:f8:d0;

    fixed-address 10.0.0.198;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1,4.2.2.3;

}

host wl639a {

    hardware ethernet 00:20:4a:a9:f7:88;

    fixed-address 10.0.0.180;

    option routers 10.0.0.1;

    option subnet-mask 255.255.255.0;

    option broadcast-address 10.0.0.255;

}

host cortelco {

    hardware ethernet 00:11:be:01:27:2c;

    fixed-address 10.0.0.234;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.1;

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

}

host nas {

   hardware ethernet 00:15:17:31:f3:b5;

   fixed-address 10.0.0.112;

   option routers 10.0.0.1;

   option domain-name-servers 10.0.0.111,10.0.0.1;

   option subnet-mask 255.255.255.0;

   option broadcast-address 10.0.0.255;

}

subnet 10.100.100.0 netmask 255.255.255.0 {

}

host tinyxp {

        hardware ethernet 00:0c:29:1f:a2:e3;

        fixed-address 10.0.0.197;

        option routers 10.0.0.1;

        option domain-name-servers 10.0.0.111,10.0.0.1,4.2.2.1;

        option subnet-mask 255.255.255.0;

        option broadcast-address 10.0.0.255;

}

failover peer "dhcp-failover" {

    secondary;

    address 10.0.0.112; # sec address

    port 647;

    peer address 10.0.0.111; # pri address

    peer port 647;

    max-response-delay 30;

    max-unacked-updates 10;

    load balance max seconds 3;

    mclt 1800;

#    split 128; # on primary only

}

subnet 10.0.0.0 netmask 255.255.255.0 {

    interface eth0;

#    range 10.0.0.201 10.0.0.250;

    option subnet-mask 255.255.255.0;

    option broadcast-address 10.0.0.255;

    option routers 10.0.0.1;

    option domain-name-servers 10.0.0.112,10.0.0.1,4.2.2.1,4.2.2.3;

    option domain-name "home.local";

    ddns-domainname "home.local.";

    ddns-rev-domainname "in-addr.arpa.";

    option tftp-server-name "10.0.0.111";

    filename "gpxelinux.0";

    allow unknown-clients;

  pool {

    failover peer "dhcp-failover";

    max-lease-time 600000; 

    range 10.0.0.201 10.0.0.250;

  }

}

zone home.local {

  primary 10.0.0.111; 

  key rndc-key; 

  }

zone 0.0.10.in-addr.arpa {

  primary 10.0.0.111; 

  key rndc-key; 

  }

```

----------

