ISC-DHCP Bug Leasefile löschen

Ipv4 werden schneller und zuverlässiger verteilt. Vielleicht.

Ich glaube, dass man das eher mit einem anderen Server erreicht.

Ich glaube an die Deutsche Bank. Ein neuer, identisch konfigurierter Server wird wohl genau so gut funktionieren wie der aktuelle. Aber gut …

Neue Beschlußvorlage:

Roamen in IPv4 und IPv4 insgesamt ist tot. Wegen der „Außenwirkung“ ist es jedoch wichtig, dass dennoch (und vor allem möglichst schnell) IPv4 Adressen vergeben werden. Dazu nehmen wir einen anderen Server.

Bei Kea heißt es:

You may be wondering whether we recommend you migrate from ISC DHCP to Kea at this time.

  • Use Kea if you need higher performance
  • Use Kea if you are modernizing your infrastructure
  • Use Kea if you want a stateless DHCP architecture tied to your own provisioning system for device-specific information
  • Use Kea for your DHCP server needs

Continue to use ISC DHCP if

  • You need DHCPv4 failover (note that HA implementations of Kea are possible today using a HA database back end)
  • If you are using legacy interfaces

Da fällt die Entscheidung ja einfach (Use Kea if you need higher performance). Hoffentlich stimmt die Aussage mit der Performance noch, wenn die Software nicht auf dezidierter Hardware läuft, sondern mit einer gesunden Anzahl von anderen Anwendungen (insb. collectd, bind, …) um die Resource der Maschine kämpfen muss. Migration ist auch ein Klacks: apt-get install kea-dhcp4-server (zumindest unter ubuntu 16.04 wird dann 1.0.0-1build1 installiert.)

Passende Konfiguration müsste in 5min gemacht sein. In einer Testdomäne testen, und los!

2 „Gefällt mir“

Hier gibt es im Übrigen eine Übersicht verschiedener DHCP Server: Comparison of DHCP server software - Wikipedia Wir könnten also auch etwas in Python geschriebenes nehmen. (Nicht!) :stuck_out_tongue:

Der ISC kea scheint schon das zu sein, was wir wollen. Aktuelles Stück Software, was wohl performt und relativ flexibel ist. Und falls das nicht reicht, kann man sich eigene Hooks bauen.

Das schöne an Kea: Man kann die Konfiguration umbauen ohne das Teil neustarten zu müssen.

PS: Facebook nutzt intern auch den ISC kea.

PPS: Hier ein Artikel im Admin Magazin:

Ein Beispiel für die Leistungsfähigkeit von Kea gibt Facebook, das vom ISC-DHCPD auf Kea umgestellt hat, um der dynamischen Natur der eigenen Infrastruktur gerecht zu werden. Damit betreibt das soziale Netzwerk einen Cluster virtueller DHCP-Server, die ihre Daten aus einem gemeinsamen IP-Adressenpool beziehen und ansonsten zustandslos arbeiten. […]

1 „Gefällt mir“

Das config für die Bridge 10 auf barristan. Ein mutiger muss den isc-dhcp auf interface bat10 abstellen, und dann mal mit dieser config spielen.

{
  "valid-lifetime": 4000,
  "renew-timer": 1000,
  "rebind-timer": 2000,
  "interfaces-config": {
    "interfaces": [
      "bat10"
    ]
  },
  "lease-database": {
    "type": "memfile",
    "persist": true,
    "name": "/var/kea/dhcp4.leases"
  },
  "Logging": {
    "loggers": [
      {
        "name": "*",
        "severity": "LOCAL7"
      }
    ]
  },
  "Dhcp4": {
    "option-data": [
      {
        "name": "domain-name",
        "code": 15,
        "space": "dhcp4",
        "csv-format": true,
        "data": "ffms"
      },
      {
        "name": "interface-mtu",
        "code": 26,
        "space": "dhcp4",
        "csv-format": true,
        "data": "1280"
      },
      {
        "name": "domain-search",
        "code": 119,
        "space": "dhcp4",
        "csv-format": true,
        "data": "ffms"
      },
    ],
    "subnet4": [
      {
        "subnet": "10.43.80.0/21",
        "option-data": [
          {
            "name": "routers",
            "code": 3,
            "space": "dhcp4",
            "csv-format": true,
            "data": "10.43.80.4"
          },
          {
            "name": "domain-name-servers",
            "code": 6,
            "space": "dhcp4",
            "csv-format": true,
            "data": "10.43.80.4"
          },
        ],
        "pools": [
          {
            "pool": "10.43.85.0 10.43.87.254"
          }
        ]
      }
    ]
  }
}

Kann Spuren von Fehlern enthalten, insb. weil es nur eine 1zu1 Übertragung ist, und nicht die möglichen Korrekturen (NAK für nicht verwaltete Adressen innerhalb des subnetzes. Vielleicht verhält sich der kea abe anders.) von oben enthält.

3 „Gefällt mir“

Folgendes läuft (Hab mir zwei kvm-guests gebastelt und ausprobiert…):

# This is a basic configuration for the Kea DHCPv4 sever.
# Subnet declarations are commented out and no interfaces are listed.
# Therefore, the servers will not listen or respond to any queries.
# The basic configuration must be extended to specify interfaces on
# which the servers should listen. Also, subnets and options must be
# declared.
{

# DHCPv4 configuration starts here.
"Dhcp4":
{
# Add names of interfaces to listen on.
  "interfaces-config": {
    "interfaces": [ "ens9" ]
  },

# Use Memfile lease database backend to store leases in a CSV file.
  "lease-database": {
    "type": "memfile"
  },

# Setup reclamation of the expired leases and leases affinity.
# Expired leases will be reclaimed every 10 seconds. Every 25
# seconds reclaimed leases, which have expired more than 3600
# seconds ago, will be removed. The limits for leases reclamation
# are 100 leases or 250 ms for a single cycle. A warning message
# will be logged if there are still expired leases in the
# database after 5 consecutive reclamation cycles.
  "expired-leases-processing": {
    "reclaim-timer-wait-time": 10,
    "flush-reclaimed-timer-wait-time": 25,
    "hold-reclaimed-time": 3600,
    "max-reclaim-leases": 100,
    "max-reclaim-time": 250,
    "unwarned-reclaim-cycles": 5
  },

# Global (inherited by all subnets) lease lifetime is mandatory parameter.
  "valid-lifetime": 4000,

# Below an example of the simple subnet declaration. Uncomment to
# enable it. This is a list, denoted with [ ], of structure, denoted
# with { }. Each structure describes a single subnet and may have
# several parameters. One of those parameters is "pools" that is
# also a list of structures.
  "subnet4": [
  {    "subnet": "10.43.80.0/21",
       "option-data": [
         { "name": "routers",
           "code": 3,
           "space": "dhcp4",
           "csv-format": true,
           "data": "10.43.80.4" },
         { "name": "domain-name-servers",
           "code": 6,
           "space": "dhcp4",
           "csv-format": true,
           "data": "10.43.80.4" }
       ],
       "pools": [ { "pool": "10.43.85.0 - 10.43.87.254" } ] }
  ]
},

# Logging configuration starts here. It tells Kea servers to store
# all log messages (on severity INFO or more) in a file.
# debuglevel variable is used on DEBUG level only.
"Logging":
{
  "loggers": [
    {
      "name": "kea-dhcp4",
      "output_options": [
          {
            "output": "/var/log/kea-dhcp4.log",
            "maxver": 4,
            "maxsize": 204800,
            "flush": true
          }
      ],
      "severity": "DEBUG",
      "debuglevel": 99
    },
    {
      "name": "kea-dhcp4.leases",
      "output_options": [
         {
           "destination": "syslog",
           "output": "syslog"
         }
      ],
      "severity": "DEBUG",
      "debuglevel": 99
    }
  ]
}

}

Und, hihi, NAK für nicht verwaltete Adressen innerhalb des subnetzes. Wird bestimmt besser klappen, weil hier was default ist, was im isc-dhcp-server configuriert werden muss… Jetzt wird alles gut…

1 „Gefällt mir“

Geile Sache. Für meinen Geschmack können wir das gerne real auf einem Gateway testen. Ich würde direkt auf einem Gateway alle Domänen darüber abwickeln. Zurück können wir jederzeit.

1 „Gefällt mir“

Ich würde es direkt mit einer Database testen, also != csv.

1 „Gefällt mir“

Ist Datenbank schneller? Also ich würde mich auch noch länger mit dem Ding beschäftigen. Insbesondere was Debuggen und Loggging angeht. Im Ubuntu ist keactrl nicht paketirt. Ihr wollt also lieber ein Ding einsetzen, mit dem ihr euch noch nie beschäftigt habt, als das Problem in der Konfiguration zu fixen? Dann mal los! Bei Problemen gibt es bestimmt Hilfe im großen Forum.

1 „Gefällt mir“

+1

Robuster und schneller, zumindest bei größeren Leasefiles. das ist doch eine der (vermuteten) Ursachen für die Probleme beim ISC-DHCPd.

Wenn gewünscht: Postgres kann ich in 5 Minuten aufsetzen, da habe ich viel Übung.

KEA Doku „Larger deployments may elect to store leases in a database. Section 7.2.2.2, “Lease Database Configuration” describes this option. In typical smaller deployments though, the server will use a CSV file rather than a database to store lease information.“

2 „Gefällt mir“

Kannst du ja vielleicht schon mal in eine Ansible-Rolle gießen?

Dann wäre es ja schon zu sehen, ob das beim kea auch eine Ursache werden könnte. Ich glaube nicht, dass es sich hier um ein „Larger deployment“ handelt.

Meiner Meinung nach ist nicht die Art der Speicherung das Problem, sondern dass der ISC das synchron statt parallelisiert im Hintergrund tut.

Der sollte die Infos einfach im RAM behalten und jede oder alle fünf Minuten speichern, das würde vollkommen ausreichen.

Welche Version fahren wir den von dem ISC?

Die aus dem Debian 8 Repo.

vieleicht wären dies Parameter dann hilfreich?

Use RAM-based storageOne option we have heard of people
using is to create a RAM disk and to put the lease file on that disk.
This certainly should speed things up a bit but has the possibility of
losing the lease file and we don’t recommend it.
See https://kb.isc.org/article/AA-00275/0/Using-RAMdisks-and-other-similar-volatile-storage-for-the-leases-file.html
for a longer discussion of this option.In memory structuresWhen
the DHCP server was first written the number of leases involved in a
typical installation was somewhat smaller than it is today and the
in-memory data structures reflect that. Several of the key data
structures use a singly linked list to hold the leases and a large
amount of time is spent traversing those lists to either add or remove a
lease as it moves either from one structure to another (for example
from free to active or active to free) or within one structure (for
example from active to active due to a lease renew). As these
structures are sorted linear lists the processing time grows as the
lease pools get larger.In 4.3.3 we have added a compile time
option to process the lists in a binary fashion instead of needing to
walk them in a linear fashion. As with all of our code we have tested
this feature out and found it useful. However we have chosen
to require you to select it via a compile time option, this allows our
users to test it out in their environments and report back to us in case
there are cases we did not consider in our testing while still having
the fallback of the previous code.

–enable-binary-leases

Quelle:
https://kb.isc.org/article/AA-01283/0/DHCPv4-Server-Performance.html

Dort stehen auch noch ein paar andere Parameter an denen man schrauben kann.
Doch, wenn das hier unsere aktuelle Version ist…:

Debian -- Error

könnte es ein, das (noch) nicht alles geht.

1 „Gefällt mir“

Gibt es die neue Version irgendwo fertig? Kompilieren tut die nicht wirklich

root@parad0x ~/dhcp # make
Making all in ./bind
make[1]: Entering directory '/root/dhcp/bind9'
making all in /root/dhcp/bind/make
make[2]: Entering directory '/root/dhcp/bind9/make'
make[2]: Leaving directory '/root/dhcp/bind9/make'
making all in /root/dhcp/bind/unit
make[2]: Entering directory '/root/dhcp/bind9/unit'
make[2]: Leaving directory '/root/dhcp/bind9/unit'
making all in /root/dhcp/bind/lib
make[2]: Entering directory '/root/dhcp/bind9/lib'
making all in /root/dhcp/bind/lib/isc
make[3]: Entering directory '/root/dhcp/bind9/lib/isc'
making all in /root/dhcp/bind/lib/isc/include
make[4]: Entering directory '/root/dhcp/bind9/lib/isc/include'
making all in /root/dhcp/bind/lib/isc/include/isc
make[5]: Entering directory '/root/dhcp/bind9/lib/isc/include/isc'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isc/include/isc'
making all in /root/dhcp/bind/lib/isc/include/pk11
make[5]: Entering directory '/root/dhcp/bind9/lib/isc/include/pk11'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isc/include/pk11'
making all in /root/dhcp/bind/lib/isc/include/pkcs11
make[5]: Entering directory '/root/dhcp/bind9/lib/isc/include/pkcs11'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isc/include/pkcs11'
make[4]: Leaving directory '/root/dhcp/bind9/lib/isc/include'
making all in /root/dhcp/bind/lib/isc/unix
make[4]: Entering directory '/root/dhcp/bind9/lib/isc/unix'
making all in /root/dhcp/bind/lib/isc/unix/include
make[5]: Entering directory '/root/dhcp/bind9/lib/isc/unix/include'
making all in /root/dhcp/bind/lib/isc/unix/include/isc
make[6]: Entering directory '/root/dhcp/bind9/lib/isc/unix/include/isc'
make[6]: Leaving directory '/root/dhcp/bind9/lib/isc/unix/include/isc'
making all in /root/dhcp/bind/lib/isc/unix/include/pkcs11
make[6]: Entering directory '/root/dhcp/bind9/lib/isc/unix/include/pkcs11'
make[6]: Leaving directory '/root/dhcp/bind9/lib/isc/unix/include/pkcs11'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isc/unix/include'
make[4]: Leaving directory '/root/dhcp/bind9/lib/isc/unix'
making all in /root/dhcp/bind/lib/isc/nls
make[4]: Entering directory '/root/dhcp/bind9/lib/isc/nls'
make[4]: Leaving directory '/root/dhcp/bind9/lib/isc/nls'
making all in /root/dhcp/bind/lib/isc/pthreads
make[4]: Entering directory '/root/dhcp/bind9/lib/isc/pthreads'
making all in /root/dhcp/bind/lib/isc/pthreads/include
make[5]: Entering directory '/root/dhcp/bind9/lib/isc/pthreads/include'
making all in /root/dhcp/bind/lib/isc/pthreads/include/isc
make[6]: Entering directory '/root/dhcp/bind9/lib/isc/pthreads/include/isc'
make[6]: Leaving directory '/root/dhcp/bind9/lib/isc/pthreads/include/isc'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isc/pthreads/include'
make[4]: Leaving directory '/root/dhcp/bind9/lib/isc/pthreads'
making all in /root/dhcp/bind/lib/isc/x86_32
make[4]: Entering directory '/root/dhcp/bind9/lib/isc/x86_32'
making all in /root/dhcp/bind/lib/isc/x86_32/include
make[5]: Entering directory '/root/dhcp/bind9/lib/isc/x86_32/include'
making all in /root/dhcp/bind/lib/isc/x86_32/include/isc
make[6]: Entering directory '/root/dhcp/bind9/lib/isc/x86_32/include/isc'
make[6]: Leaving directory '/root/dhcp/bind9/lib/isc/x86_32/include/isc'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isc/x86_32/include'
make[4]: Leaving directory '/root/dhcp/bind9/lib/isc/x86_32'
make[3]: Leaving directory '/root/dhcp/bind9/lib/isc'
making all in /root/dhcp/bind/lib/isccc
make[3]: Entering directory '/root/dhcp/bind9/lib/isccc'
making all in /root/dhcp/bind/lib/isccc/include
make[4]: Entering directory '/root/dhcp/bind9/lib/isccc/include'
making all in /root/dhcp/bind/lib/isccc/include/isccc
make[5]: Entering directory '/root/dhcp/bind9/lib/isccc/include/isccc'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isccc/include/isccc'
make[4]: Leaving directory '/root/dhcp/bind9/lib/isccc/include'
make[3]: Leaving directory '/root/dhcp/bind9/lib/isccc'
making all in /root/dhcp/bind/lib/dns
make[3]: Entering directory '/root/dhcp/bind9/lib/dns'
making all in /root/dhcp/bind/lib/dns/include
make[4]: Entering directory '/root/dhcp/bind9/lib/dns/include'
making all in /root/dhcp/bind/lib/dns/include/dns
make[5]: Entering directory '/root/dhcp/bind9/lib/dns/include/dns'
make[5]: Leaving directory '/root/dhcp/bind9/lib/dns/include/dns'
making all in /root/dhcp/bind/lib/dns/include/dst
make[5]: Entering directory '/root/dhcp/bind9/lib/dns/include/dst'
make[5]: Leaving directory '/root/dhcp/bind9/lib/dns/include/dst'
make[4]: Leaving directory '/root/dhcp/bind9/lib/dns/include'
make[3]: Leaving directory '/root/dhcp/bind9/lib/dns'
making all in /root/dhcp/bind/lib/isccfg
make[3]: Entering directory '/root/dhcp/bind9/lib/isccfg'
making all in /root/dhcp/bind/lib/isccfg/include
make[4]: Entering directory '/root/dhcp/bind9/lib/isccfg/include'
making all in /root/dhcp/bind/lib/isccfg/include/isccfg
make[5]: Entering directory '/root/dhcp/bind9/lib/isccfg/include/isccfg'
make[5]: Leaving directory '/root/dhcp/bind9/lib/isccfg/include/isccfg'
make[4]: Leaving directory '/root/dhcp/bind9/lib/isccfg/include'
make[3]: Leaving directory '/root/dhcp/bind9/lib/isccfg'
making all in /root/dhcp/bind/lib/bind9
make[3]: Entering directory '/root/dhcp/bind9/lib/bind9'
making all in /root/dhcp/bind/lib/bind9/include
make[4]: Entering directory '/root/dhcp/bind9/lib/bind9/include'
making all in /root/dhcp/bind/lib/bind9/include/bind9
make[5]: Entering directory '/root/dhcp/bind9/lib/bind9/include/bind9'
make[5]: Leaving directory '/root/dhcp/bind9/lib/bind9/include/bind9'
make[4]: Leaving directory '/root/dhcp/bind9/lib/bind9/include'
make[3]: Leaving directory '/root/dhcp/bind9/lib/bind9'
making all in /root/dhcp/bind/lib/lwres
make[3]: Entering directory '/root/dhcp/bind9/lib/lwres'
making all in /root/dhcp/bind/lib/lwres/include
make[4]: Entering directory '/root/dhcp/bind9/lib/lwres/include'
making all in /root/dhcp/bind/lib/lwres/include/lwres
make[5]: Entering directory '/root/dhcp/bind9/lib/lwres/include/lwres'
make[5]: Leaving directory '/root/dhcp/bind9/lib/lwres/include/lwres'
make[4]: Leaving directory '/root/dhcp/bind9/lib/lwres/include'
making all in /root/dhcp/bind/lib/lwres/man
make[4]: Entering directory '/root/dhcp/bind9/lib/lwres/man'
make[4]: Leaving directory '/root/dhcp/bind9/lib/lwres/man'
making all in /root/dhcp/bind/lib/lwres/unix
make[4]: Entering directory '/root/dhcp/bind9/lib/lwres/unix'
making all in /root/dhcp/bind/lib/lwres/unix/include
make[5]: Entering directory '/root/dhcp/bind9/lib/lwres/unix/include'
making all in /root/dhcp/bind/lib/lwres/unix/include/lwres
make[6]: Entering directory '/root/dhcp/bind9/lib/lwres/unix/include/lwres'
make[6]: Leaving directory '/root/dhcp/bind9/lib/lwres/unix/include/lwres'
make[5]: Leaving directory '/root/dhcp/bind9/lib/lwres/unix/include'
make[4]: Leaving directory '/root/dhcp/bind9/lib/lwres/unix'
make[3]: Leaving directory '/root/dhcp/bind9/lib/lwres'
making all in /root/dhcp/bind/lib/irs
make[3]: Entering directory '/root/dhcp/bind9/lib/irs'
making all in /root/dhcp/bind/lib/irs/include
make[4]: Entering directory '/root/dhcp/bind9/lib/irs/include'
making all in /root/dhcp/bind/lib/irs/include/irs
make[5]: Entering directory '/root/dhcp/bind9/lib/irs/include/irs'
make[5]: Leaving directory '/root/dhcp/bind9/lib/irs/include/irs'
make[4]: Leaving directory '/root/dhcp/bind9/lib/irs/include'
make[3]: Leaving directory '/root/dhcp/bind9/lib/irs'
making all in /root/dhcp/bind/lib/tests
make[3]: Entering directory '/root/dhcp/bind9/lib/tests'
making all in /root/dhcp/bind/lib/tests/include
make[4]: Entering directory '/root/dhcp/bind9/lib/tests/include'
making all in /root/dhcp/bind/lib/tests/include/tests
make[5]: Entering directory '/root/dhcp/bind9/lib/tests/include/tests'
make[5]: Leaving directory '/root/dhcp/bind9/lib/tests/include/tests'
make[4]: Leaving directory '/root/dhcp/bind9/lib/tests/include'
make[3]: Leaving directory '/root/dhcp/bind9/lib/tests'
making all in /root/dhcp/bind/lib/samples
make[3]: Entering directory '/root/dhcp/bind9/lib/samples'
make[3]: Leaving directory '/root/dhcp/bind9/lib/samples'
make[2]: Leaving directory '/root/dhcp/bind9/lib'
making all in /root/dhcp/bind/bin
make[2]: Entering directory '/root/dhcp/bind9/bin'
making all in /root/dhcp/bind/bin/named
make[3]: Entering directory '/root/dhcp/bind9/bin/named'
making all in /root/dhcp/bind/bin/named/unix
make[4]: Entering directory '/root/dhcp/bind9/bin/named/unix'
make[4]: Leaving directory '/root/dhcp/bind9/bin/named/unix'
make[3]: Leaving directory '/root/dhcp/bind9/bin/named'
making all in /root/dhcp/bind/bin/rndc
make[3]: Entering directory '/root/dhcp/bind9/bin/rndc'
make[3]: Leaving directory '/root/dhcp/bind9/bin/rndc'
making all in /root/dhcp/bind/bin/dig
make[3]: Entering directory '/root/dhcp/bind9/bin/dig'
make[3]: Leaving directory '/root/dhcp/bind9/bin/dig'
making all in /root/dhcp/bind/bin/delv
make[3]: Entering directory '/root/dhcp/bind9/bin/delv'
make[3]: Leaving directory '/root/dhcp/bind9/bin/delv'
making all in /root/dhcp/bind/bin/dnssec
make[3]: Entering directory '/root/dhcp/bind9/bin/dnssec'
make[3]: Leaving directory '/root/dhcp/bind9/bin/dnssec'
making all in /root/dhcp/bind/bin/tools
make[3]: Entering directory '/root/dhcp/bind9/bin/tools'
make[3]: Leaving directory '/root/dhcp/bind9/bin/tools'
making all in /root/dhcp/bind/bin/tests
make[3]: Entering directory '/root/dhcp/bind9/bin/tests'
making all in /root/dhcp/bind/bin/tests/atomic
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/atomic'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/atomic'
making all in /root/dhcp/bind/bin/tests/db
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/db'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/db'
making all in /root/dhcp/bind/bin/tests/dst
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/dst'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/dst'
making all in /root/dhcp/bind/bin/tests/master
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/master'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/master'
making all in /root/dhcp/bind/bin/tests/mem
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/mem'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/mem'
making all in /root/dhcp/bind/bin/tests/hashes
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/hashes'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/hashes'
making all in /root/dhcp/bind/bin/tests/names
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/names'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/names'
making all in /root/dhcp/bind/bin/tests/net
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/net'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/net'
making all in /root/dhcp/bind/bin/tests/rbt
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/rbt'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/rbt'
making all in /root/dhcp/bind/bin/tests/resolver
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/resolver'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/resolver'
making all in /root/dhcp/bind/bin/tests/sockaddr
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/sockaddr'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/sockaddr'
making all in /root/dhcp/bind/bin/tests/tasks
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/tasks'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/tasks'
making all in /root/dhcp/bind/bin/tests/timers
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/timers'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/timers'
making all in /root/dhcp/bind/bin/tests/system
make[4]: Entering directory '/root/dhcp/bind9/bin/tests/system'
making all in /root/dhcp/bind/bin/tests/system/builtin
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/builtin'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/builtin'
making all in /root/dhcp/bind/bin/tests/system/dlzexternal
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/dlzexternal'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/dlzexternal'
making all in /root/dhcp/bind/bin/tests/system/dyndb
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/dyndb'
making all in /root/dhcp/bind/bin/tests/system/dyndb/driver
make[6]: Entering directory '/root/dhcp/bind9/bin/tests/system/dyndb/driver'
make[6]: Leaving directory '/root/dhcp/bind9/bin/tests/system/dyndb/driver'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/dyndb'
making all in /root/dhcp/bind/bin/tests/system/filter-aaaa
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/filter-aaaa'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/filter-aaaa'
making all in /root/dhcp/bind/bin/tests/system/geoip
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/geoip'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/geoip'
making all in /root/dhcp/bind/bin/tests/system/lwresd
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/lwresd'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/lwresd'
making all in /root/dhcp/bind/bin/tests/system/pipelined
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/pipelined'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/pipelined'
making all in /root/dhcp/bind/bin/tests/system/resolver
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/resolver'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/resolver'
making all in /root/dhcp/bind/bin/tests/system/rndc
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/rndc'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/rndc'
making all in /root/dhcp/bind/bin/tests/system/rpz
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/rpz'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/rpz'
making all in /root/dhcp/bind/bin/tests/system/rsabigexponent
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/rsabigexponent'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/rsabigexponent'
making all in /root/dhcp/bind/bin/tests/system/statistics
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/statistics'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/statistics'
making all in /root/dhcp/bind/bin/tests/system/tkey
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/tkey'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/tkey'
making all in /root/dhcp/bind/bin/tests/system/tsiggss
make[5]: Entering directory '/root/dhcp/bind9/bin/tests/system/tsiggss'
make[5]: Leaving directory '/root/dhcp/bind9/bin/tests/system/tsiggss'
make[4]: Leaving directory '/root/dhcp/bind9/bin/tests/system'
make[3]: Leaving directory '/root/dhcp/bind9/bin/tests'
making all in /root/dhcp/bind/bin/nsupdate
make[3]: Entering directory '/root/dhcp/bind9/bin/nsupdate'
make[3]: Leaving directory '/root/dhcp/bind9/bin/nsupdate'
making all in /root/dhcp/bind/bin/check
make[3]: Entering directory '/root/dhcp/bind9/bin/check'
make[3]: Leaving directory '/root/dhcp/bind9/bin/check'
making all in /root/dhcp/bind/bin/confgen
make[3]: Entering directory '/root/dhcp/bind9/bin/confgen'
making all in /root/dhcp/bind/bin/confgen/unix
make[4]: Entering directory '/root/dhcp/bind9/bin/confgen/unix'
make[4]: Leaving directory '/root/dhcp/bind9/bin/confgen/unix'
make[3]: Leaving directory '/root/dhcp/bind9/bin/confgen'
making all in /root/dhcp/bind/bin/python
make[3]: Entering directory '/root/dhcp/bind9/bin/python'
making all in /root/dhcp/bind/bin/python/isc
make[4]: Entering directory '/root/dhcp/bind9/bin/python/isc'
making all in /root/dhcp/bind/bin/python/isc/tests
make[5]: Entering directory '/root/dhcp/bind9/bin/python/isc/tests'
make[5]: Leaving directory '/root/dhcp/bind9/bin/python/isc/tests'
make[4]: Leaving directory '/root/dhcp/bind9/bin/python/isc'
make[3]: Leaving directory '/root/dhcp/bind9/bin/python'
make[2]: Leaving directory '/root/dhcp/bind9/bin'
making all in /root/dhcp/bind/doc
make[2]: Entering directory '/root/dhcp/bind9/doc'
making all in /root/dhcp/bind/doc/arm
make[3]: Entering directory '/root/dhcp/bind9/doc/arm'
make[3]: Leaving directory '/root/dhcp/bind9/doc/arm'
making all in /root/dhcp/bind/doc/misc
make[3]: Entering directory '/root/dhcp/bind9/doc/misc'
make[3]: Leaving directory '/root/dhcp/bind9/doc/misc'
making all in /root/dhcp/bind/doc/xsl
make[3]: Entering directory '/root/dhcp/bind9/doc/xsl'
make[3]: Leaving directory '/root/dhcp/bind9/doc/xsl'
making all in /root/dhcp/bind/doc/doxygen
make[3]: Entering directory '/root/dhcp/bind9/doc/doxygen'
make[3]: Leaving directory '/root/dhcp/bind9/doc/doxygen'
making all in /root/dhcp/bind/doc/tex
make[3]: Entering directory '/root/dhcp/bind9/doc/tex'
make[3]: Leaving directory '/root/dhcp/bind9/doc/tex'
make[2]: Leaving directory '/root/dhcp/bind9/doc'
make[1]: Leaving directory '/root/dhcp/bind9'
Making all in includes
make[1]: Entering directory '/root/dhcp/includes'
make  all-am
make[2]: Entering directory '/root/dhcp/includes'
make[2]: Leaving directory '/root/dhcp/includes'
make[1]: Leaving directory '/root/dhcp/includes'
Making all in tests
make[1]: Entering directory '/root/dhcp/tests'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/root/dhcp/tests'
Making all in common
make[1]: Entering directory '/root/dhcp/common'
Making all in .
make[2]: Entering directory '/root/dhcp/common'
gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I../bind/include -MT alloc.o -MD -MP -MF .deps/alloc.Tpo -c -o alloc.o alloc.c
In file included from ../includes/dhcpd.h:91:0,
                 from alloc.c:29:
../includes/omapip/isclib.h:51:24: fatal error: isc/buffer.h: Datei oder Verzeichnis nicht gefunden
 #include <isc/buffer.h>
                        ^
compilation terminated.
Makefile:456: recipe for target 'alloc.o' failed
make[2]: *** [alloc.o] Error 1
make[2]: Leaving directory '/root/dhcp/common'
Makefile:519: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/root/dhcp/common'
Makefile:437: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

Wenn ich mir das hier so durchlese, muss ich jetzt im bind rumpatchen, damit ich den ISC kompilieren kann? Das Zeug, was die Entwickler hatten, will ich auch.

RAM disk hatten wir schon, auch so gruseliger Workaround.

Deswegen war meine Frage nach der Version :slight_smile:

Jo, war auch nur ein weitere Vorschlag

Binary search tree vs single linked list sollte in unserem Kontext (up to 10000 leases) schon einen signifikanten unterschied machen; wenn es wirklich die Stelle ist, die das Teil so ausbremst.


Trotz aller (notwendigen) Überlegungen, was die Performance des daemons angeht, sollten wir paulinsches aussagen beachten und schauen, dass die Server ein NAK senden, anstatt nichts zu tun, wenn ein DHCPREQUEST zwar eine Adresse aus dem Subnet aber außerhalb des IP Ranges des DHCP Servers kommt.