advanced.json 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. // This is an example configuration file for DHCPv4 server in Kea.
  2. // It covers some of the more advanced features. This file may not be coherent
  3. // as its main purpose is to demonstrate the features. They don't necessarily
  4. // have to make sense used together.
  5. // The new parser supports 3 comment styles:
  6. // This is C++ style.
  7. # This is a bash style.
  8. /* This is a C style comment. */
  9. /* C style comment
  10. can span
  11. multiple lines */
  12. { "Dhcp4":
  13. {
  14. // Kea is told to listen on ethX interface only.
  15. "interfaces-config": {
  16. "interfaces": [ "ethX" ],
  17. // This specifies what type of socket Kea uses. Currently supported
  18. // are 'raw' (which is the default) and 'udp'. Raw has the benefit
  19. // of receiving all traffic every time and a downside of bypassing
  20. // all firewall rules and having marginally bigger performance impact.
  21. // 'udp' is generally better if you have only relayed traffic. Kea
  22. // than opens up normal UDP socket and the kernel does all the
  23. // Ethernet/IP stack processing.
  24. "dhcp-socket-type": "udp",
  25. // Typically the DHCP server will send its response back on the same
  26. // interface the query came in. This is the default ("same-as-inbound").
  27. // However, sometimes it is useful to have the ability to send the
  28. // packet as plain UDP packet and let the kernel and the routing tables
  29. // determine the right interface ("use-routing"). This option only works
  30. // for "dhcp-socket-type" set to "udp" and is ignored otherwise.
  31. "outbound-interface": "use-routing",
  32. // This makes interfaces to be re-detected at each (re-)configuration.
  33. // By default it is true.
  34. "re-detect": true
  35. },
  36. // Option 43 last resort definition can make well-formed messages
  37. // to be rejected because they use not compatible "raw" value,
  38. // and different vendors may define different sub-options.
  39. // The option definition should be applied to avoid these problems,
  40. // for instance by defining at the global scope the option as binary.
  41. // In client-classes the option may be redefined as carrying vendor
  42. // dependent sub-options.
  43. "option-def": [ {
  44. "name": "vendor-encapsulated-options",
  45. "code": 43,
  46. "type": "binary"
  47. } ],
  48. // We need to specify the the database used to store leases. As of
  49. // September 2016, four database backends are supported: MySQL,
  50. // PostgreSQL, Cassandra, and the in-memory database, Memfile.
  51. // We'll use memfile because it doesn't require any prior set up.
  52. // For memfile, it's important to always specify lfc-interval, so
  53. // the lease file would not grow without bounds and be sanitized
  54. // once per hour.
  55. "lease-database": {
  56. "type": "memfile",
  57. "lfc-interval": 3600
  58. },
  59. // This defines a control socket. If defined, Kea will open a UNIX socket
  60. // and will listen for incoming commands. See section 15 of the Kea User's
  61. // Guide for list of supported commands.
  62. "control-socket": {
  63. "socket-type": "unix",
  64. "socket-name": "/tmp/kea4-ctrl-socket"
  65. },
  66. // Addresses will be assigned with a lifetime of 4000 seconds.
  67. // The client is told to start renewing after 1000 seconds. If the server
  68. // does not respond within 2000 seconds of the lease being granted, client
  69. // is supposed to start REBIND procedure (emergency renewal that allows
  70. // switching to a different server).
  71. "valid-lifetime": 4000,
  72. "renew-timer": 1000,
  73. "rebind-timer": 2000,
  74. // RFC6842 says that the server is supposed to echo back client-id option.
  75. // However, some older clients do not support this and are getting confused
  76. // when they get their own client-id. Kea can disable RFC6842 support.
  77. "echo-client-id": false,
  78. // Some clients don't use stable client identifier, but rather
  79. // generate them during each boot. This may cause a client that
  80. // reboots frequently to get multiple leases, which may not be
  81. // desirable. As such, sometimes admins prefer to tell their DHCPv4
  82. // server to ignore client-id value altogether and rely exclusively
  83. // on MAC address. This is a parameter that is defined globally, but
  84. // can be overridden on a subnet level.
  85. "match-client-id": true,
  86. // The following list defines subnets. Each subnet consists of at
  87. // least subnet and pool entries. One extra feature that requires some
  88. // explanation is user-context. This is a structure that you can define
  89. // in subnets and pools. It is parsed by Kea, but not used directly.
  90. // It is intended to keep anything you may want to put there - comments,
  91. // extra designations, floor or department names etc. These structures
  92. // will be made available to Kea hooks.
  93. "subnet4": [
  94. {
  95. "pools": [ {
  96. "pool": "192.0.2.1 - 192.0.2.200",
  97. "user-context": { "info": "what a large pool" }
  98. } ],
  99. "subnet": "192.0.2.0/24",
  100. "user-context": {
  101. "comment": "Our first subnet!"
  102. }
  103. },
  104. {
  105. // This particular subnet has match-client-id value changed.
  106. // This causes Kea to ignore client-id values in this subnet
  107. // and rely exclusively on MAC addresses.
  108. "pools": [ { "pool": "192.0.3.100 - 192.0.3.200" } ],
  109. "subnet": "192.0.3.0/24",
  110. "match-client-id": false
  111. },
  112. {
  113. "pools": [ { "pool": "192.0.4.1 - 192.0.4.254" } ],
  114. "subnet": "192.0.4.0/24",
  115. // Sometimes the relay may use an IPv4 address that does
  116. // not match the subnet. This is discouraged, but there are
  117. // valid cases when it makes sense. One case is when there
  118. // is a shared subnet.
  119. "relay": {
  120. "ip-address": "192.168.1.1"
  121. }
  122. }
  123. ]
  124. },
  125. // The following configures logging. It assumes that messages with
  126. // at least informational level (info, warn, error and fatal) should
  127. // be logged to stdout.
  128. "Logging": {
  129. "loggers": [
  130. {
  131. "name": "kea-dhcp4",
  132. "output_options": [
  133. {
  134. "output": "stdout",
  135. // Several additional parameters are possible in addition
  136. // to the typical output. Flush determines whether logger
  137. // flushes output to a file. Maxsize determines maximum
  138. // filesize before the file is being rotated. maxver
  139. // specifies the maximum number of rotated files being
  140. // kept.
  141. "flush": true,
  142. "maxsize": 204800,
  143. "maxver": 4
  144. }
  145. ],
  146. "severity": "INFO"
  147. }
  148. ]
  149. }
  150. }