Назад | Перейти на главную страницу

isc-dhcp-server раздает IP-адреса из неправильного пула

Возникает странная проблема, когда isc-dhcp-server (isc-dhcpd-4.3.3 - ubuntu 16.04) передает клиентам IP-адреса из неправильного пула.

Моя конфигурация немного странная, поскольку мне нужно определить много подсетей / 31 (из-за того, как построена моя сеть), а DHCP-сервер должен выделять последний IP-адрес в / 31.

У меня также есть несколько классов, соответствующих идентификатору поставщика.

Конфиг:

option space JNPR;
option JNPR.image-file-name code 0 = text;
option JNPR.config-file-name code 1 = text;
option JNPR.image-file-type code 2 = text;
option JNPR.transfer-mode code 3 = text;
option JNPR-encapsulation code 43 = encapsulate JNPR;

class "arista" {
  match if option vendor-class-identifier ~~ "^Arista.*";
  option bootfile-name "http://10.1.1.1/arista/arista-ztp.sh";
}

class "juniper-ex" {
  match if option vendor-class-identifier ~~ "^Juniper-ex.*";
  option tftp-server-name "ztp";
  option tftp-server-name "10.1.1.1";
  option JNPR.transfer-mode "http";
  option JNPR.config-file-name "/junos/junos-ztp.sh";
}

class "juniper-qfx" {
  match if option vendor-class-identifier ~~ "^Juniper-qfx.*";
  option tftp-server-name "ztp";
  option tftp-server-name "10.1.1.1";
  option JNPR.transfer-mode "http";
  option JNPR.config-file-name "/junos/junos-ztp.sh";
}


shared-network ztp {

  subnet 10.250.138.0 netmask 255.255.255.240 {
    option routers 10.250.138.1;
    option subnet-mask 255.255.255.240;
  }
  subnet 10.255.4.0 netmask 255.255.255.254 {
    option routers 10.255.4.0;
    option subnet-mask 255.255.255.254;
  }
  subnet 10.255.4.2 netmask 255.255.255.254 {
    option routers 10.255.4.2;
    option subnet-mask 255.255.255.254;
  }
  subnet 10.255.4.4 netmask 255.255.255.254 {
    option routers 10.255.4.4;
    option subnet-mask 255.255.255.254;
  }


  pool {
    allow members of "arista";
    range 10.250.138.2 10.250.138.6;
 }

  pool {
    allow members of "juniper-ex";
    allow members of "juniper-qfx";
    range 10.255.4.1;
  }

  pool {
    allow members of "juniper-ex";
    allow members of "juniper-qfx";
    range 10.255.4.3;
  }

  pool {
    allow members of "juniper-ex";
    allow members of "juniper-qfx";
    range 10.255.4.5;
  }

Итак, я вижу, что сервер, кажется, назначает IP-адреса случайным образом, а не на основе исходного IP-адреса запроса. Вот фрагмент из tcpdump:

10.1.1.1.67 > 10.255.4.0.67: [bad udp cksum 0xecd5 -> 0xf491!] BOOTP/DHCP, Reply, length 353, hops 1, xid 0x2ca232f2, Flags [Broadcast] (0x8000)
      Your-IP 10.255.4.3
      Server-IP 10.1.1.1
      Gateway-IP 10.255.4.0

это должно было назначить 10.255.4.1

иногда это срабатывает, но довольно случайно ... Есть идеи ?? Спасибо