Hi Joshua, thanks for the quick response.
The kea-dhcp6.conf file is in attachment.
There is no firewall in the server, when i perform a tcpdump in the
server interface it shows the dhcp packet requests, but there is no
response from the server.
There is no log when the client performs a solicit.
Best regards,
Joao Butzke.
On 03-Mar-21 12:38, Joshua Schaeffer wrote:
On 3/3/21 7:41 AM, João Butzke wrote:
First of all, the server(ubuntu 20.04) need to have an ipv6 address
on the interface?
Not necessarily. If you do not specify a unicast address in the
configuration then kea-dhcp6 will listen on the multicast address for
the VLAN that the interface resides on. The DHCPv6 multicast address
is: ff02::1:2.
if yes, the address needs to be in the pool?
Again, not necessarily. If you specify a unicast address that is not
in the same subnet as your pool then you have to relay the DHCP
requests to the server using DHCP relay.
Here is the server log when started:
naxi@dhcpv6:~/kea6$ 2021-03-02 20:42:09.551 INFO
[kea-dhcp6.hosts/6206.139941705381376] HOSTS_BACKENDS_REGISTERED the
following host backend types are available: mysql
2021-03-02 20:42:09.554 INFO [kea-dhcp6.dhcpsrv/6206.139941705381376]
DHCPSRV_CFGMGR_ADD_IFACE listening on interface ens19
2021-03-02 20:42:09.555 INFO [kea-dhcp6.dhcpsrv/6206.139941705381376]
DHCPSRV_CFGMGR_NEW_SUBNET6 a new subnet has been added to
configuration: 2804:15e4:8000::/36 with params: t1=1000, t2=2000,
preferred-lifetime=3000, valid-lifetime=4000, rapid-commit is false
2021-03-02 20:42:09.556 INFO
[kea-dhcp6.commands/6206.139941705381376] COMMAND_ACCEPTOR_START
Starting to accept connections via unix domain socket bound to
/tmp/kea6-ctrl-socket
2021-03-02 20:42:09.557 INFO [kea-dhcp6.dhcp6/6206.139941705381376]
DHCP6_CONFIG_COMPLETE DHCPv6 server has completed configuration:
added IPv6 subnets: 1; DDNS: disabled
2021-03-02 20:42:09.557 INFO [kea-dhcp6.dhcpsrv/6206.139941705381376]
DHCPSRV_MYSQL_DB opening MySQL lease database: host=localhost
name=kea password=***** port=3306 type=mysql universe=6 user=kea
2021-03-02 20:42:09.598 INFO [kea-dhcp6.hosts/6206.139941705381376]
DHCPSRV_MYSQL_HOST_DB opening MySQL hosts database: host=localhost
name=kea password=***** port=3306 type=mysql universe=6 user=kea
2021-03-02 20:42:09.651 INFO [kea-dhcp6.dhcp6/6206.139941705381376]
DHCP6_USING_SERVERID server is using server-id
00:01:00:01:27:cf:ff:37:16:41:55:fb:6b:16 and stores in the file
/usr/local/var/lib/kea/kea-dhcp6-serverid
2021-03-02 20:42:09.655 WARN [kea-dhcp6.dhcp6/6206.139941705381376]
DHCP6_MULTI_THREADING_INFO enabled: no, number of threads: 0, queue
size: 0
2021-03-02 20:42:09.655 INFO [kea-dhcp6.dhcp6/6206.139941705381376]
DHCP6_STARTED Kea DHCPv6 server version 1.8.2 started
There is no errors, but when i run a tcdump, there is no answered
dhcp requests..
I noticed you are configuring a /36. Do you have prefix delegation
configured? You should provide your configuration. Also your log only
shows up to kea starting. Are you getting any log entries when a
client performs a SOLICIT? If not then your SOLICIT is not even
getting to the server in the first place (or is being blocked by a
firewall).
--
Thanks,
Joshua Schaeffer
naxi@dhcpv6:/usr/local/etc/kea$ cat kea-dhcp6.conf
// This is a basic configuration for the Kea DHCPv6 server. Subnet declarations
// are mostly 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. There are a number of example options defined.
// These probably don't make any sense in your network. Make sure you at least
// update the following, before running this example in your network:
// - change the network interface names
// - change the subnets to match your actual network
// - change the option values to match your network
//
// This is just a very basic configuration. Kea comes with large suite (over 30)
// of configuration examples and extensive Kea User's Guide. Please refer to
// those materials to get better understanding of what this software is able to
// do. Comments in this configuration file sometimes refer to sections for more
// details. These are section numbers in Kea User's Guide. The version matching
// your software should come with your Kea package, but it is also available
// in ISC's Knowledgebase
(https://kb.isc.org/docs/kea-administrator-reference-manual; the direct link for
// the stable version is https://kea.readthedocs.io/).
//
// This configuration file contains only DHCPv6 server's configuration.
// If configurations for other Kea services are also included in this file they
// are ignored by the DHCPv6 server.
{
// DHCPv6 configuration starts here. This section will be read by DHCPv6 server
// and will be ignored by other components.
"Dhcp6": {
// Add names of your network interfaces to listen on.
"interfaces-config": {
// You typically want to put specific interface names here, e.g. eth0
// but you can also specify unicast addresses (e.g. eth0/2001:db8::1) if
// you want your server to handle unicast traffic in addition to
// multicast. (DHCPv6 is a multicast based protocol).
"interfaces": ["ens19"],
"re-detect": false
},
// Kea support control channel, which is a way to receive management
commands
// while the server is running. This is a Unix domain socket that receives
// commands formatted in JSON, e.g. config-set (which sets new
configuration),
// config-reload (which tells Kea to reload its configuration from file),
// statistic-get (to retrieve statistics) and many more. For detailed
// description, see Sections 9.12, 16 and 15.
"control-socket": {
"socket-type": "unix",
"socket-name": "/tmp/kea6-ctrl-socket"
},
// Use Memfile lease database backend to store leases in a CSV file.
// Depending on how Kea was compiled, it may also support SQL databases
// (MySQL and/or PostgreSQL) and even Cassandra. Those database backends
// require more parameters, like name, host and possibly user and password.
// There are dedicated examples for each backend. See Section 8.2.2 "Lease
// Storage" for details.
"lease-database": {
"type": "mysql",
"name": "kea",
"user": "kea",
"password": "x",
"host": "localhost",
"port": 3306
},
// Kea allows storing host reservations in a database. If your network is
// small or you have few reservations, it's probably easier to keep them
// in the configuration file. If your network is large, it's usually better
// to use database for it. To enable it, uncomment the following:
"hosts-database": {
"type": "mysql",
"name": "kea",
"user": "kea",
"password": "x",
"host": "localhost",
"port": 3306
},
// See Section 8.2.3 "Hosts storage" for details.
// 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
},
// These parameters govern global timers. Addresses will be assigned with
// preferred and valid lifetimes being 3000 and 4000, respectively. Client
// is told to start renewing after 1000 seconds. If the server does not
// respond after 2000 seconds since the lease was granted, a client is
// supposed to start REBIND procedure (emergency renewal that allows
// switching to a different server).
"renew-timer": 1000,
"rebind-timer": 2000,
"preferred-lifetime": 3000,
"valid-lifetime": 4000,
// These are global options. They are going to be sent when a client
requests
// them, unless overwritten with values in more specific scopes. The scope
// hierarchy is:
// - global
// - subnet
// - class
// - host
//
// Not all of those options make sense. Please configure only those that
// are actually useful in your network.
//
// For a complete list of options currently supported by Kea, see
// Section 8.2.9 "Standard DHCPv6 Options". Kea also supports
// vendor options (see Section 7.2.10) and allows users to define their
// own custom options (see Section 7.2.9).
"option-data": [
// When specifying options, you typically need to specify
// one of (name or code) and data. The full option specification
// covers name, code, space, csv-format and data.
// space defaults to "dhcp6" which is usually correct, unless you
// use encapsulate options. csv-format defaults to "true", so
// this is also correct, unless you want to specify the whole
// option value as long hex string. For example, to specify
// domain-name-servers you could do this:
// {
// "name": "dns-servers",
// "code": 23,
// "csv-format": "true",
// "space": "dhcp6",
// "data": "2001:db8:2::45, 2001:db8:2::100"
// }
// but it's a lot of writing, so it's easier to do this instead:
{
"name": "dns-servers",
"data": "2804:15e4:1::32:32, 2804:15e4:4::32:32"
}
// Typically people prefer to refer to options by their names, so they
// don't need to remember the code names. However, some people like
// to use numerical values. For example, DHCPv6 can optionally use
// server unicast communication, if extra option is present. Option
// "unicast" uses option code 12, so you can reference to it either
// by "name": "unicast" or "code": 12. If you enable this option,
// you really should also tell the server to listen on that address
// (see interfaces-config/interfaces list above).
# {
# "code": 12,
# "data": "2001:db8::1"
# },
// String options that have a comma in their values need to have
// it escaped (i.e. each comma is preceded by two backslashes).
// That's because commas are reserved for separating fields in
// compound options. At the same time, we need to be conformant
// with JSON spec, that does not allow "\,". Therefore the
// slightly uncommon double backslashes notation is needed.
// Legal JSON escapes are \ followed by "\/bfnrt character
// or \u followed by 4 hexadecimal numbers (currently Kea
// supports only \u0000 to \u00ff code points).
// CSV processing translates '\\' into '\' and '\,' into ','
// only so for instance '\x' is translated into '\x'. But
// as it works on a JSON string value each of these '\'
// characters must be doubled on JSON input.
# {
# "name": "new-posix-timezone",
# "data": "EST5EDT4\\,M3.2.0/02:00\\,M11.1.0/02:00"
# },
// Options that take integer values can either be specified in
// dec or hex format. Hex format could be either plain (e.g. abcd)
// or prefixed with 0x (e.g. 0xabcd).
# {
# "name": "preference",
# "data": "0xf0"
# },
// A few options are encoded in (length, string) tuples
// which can be defined using only strings as the CSV
// processing computes lengths.
# {
# "name": "bootfile-param",
# "data": "root=/dev/sda2, quiet, splash"
# }
],
// Below an example of a simple IPv6 subnet declaration. Uncomment to enable
// it. This is a list, denoted with [ ], of structures, each 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.
"subnet6": [
{
// This defines the whole subnet. Kea will use this information to
// determine where the clients are connected. This is the whole
// subnet in your network. This is mandatory parameter for each
// subnet.
"subnet": "2804:15e4:8000::/36",
// Pools define the actual part of your subnet that is governed
// by Kea. Technically this is optional parameter, but it's
// almost always needed for DHCP to do its job. If you omit it,
// clients won't be able to get addresses, unless there are
// host reservations defined for them.
# "pools": [ { "pool": "2804:15e4:8000::/36" } ],
// Kea supports prefix delegation (PD). This mechanism delegates
// whole prefixes, instead of single addresses. You need to specify
// a prefix and then size of the delegated prefixes that it will
// be split into. This example below tells Kea to use
// 2001:db8:1::/56 prefix as pool and split it into /64 prefixes.
// This will give you 256 (2^(64-56)) prefixes.
"pd-pools": [
{
"prefix": "2804:15e4:8000::",
"prefix-len": 36,
"delegated-len": 56
# "interface": "ens19"
}
],
"option-data": [
// You can specify additional options here that are subnet
// specific. Also, you can override global options here.
{
"name": "dns-servers",
"data": "2804:15e4:1::32:32, 2804:15e4:4::32:32"
}
],
// Host reservations can be defined for each subnet.
//
// Note that reservations are subnet-specific in Kea. This is
// different than ISC DHCP. Keep that in mind when migrating
// your configurations.
"reservations": [
// This is a simple host reservation. The host with DUID
matching
// the specified value will get an address of 2001:db8:1::100.
#{
# "duid": "01:02:03:04:05:0A:0B:0C:0D:0E",
# "ip-addresses": [ "2001:db8:1:0::100" ]
#},
// This is similar to the previous one, but this time the
// reservation is done based on hardware/MAC address. The server
// will do its best to extract the hardware/MAC address from
// received packets (see 'mac-sources' directive for
// details). This particular reservation also specifies two
// extra options to be available for this client. If there are
// options with the same code specified in a global, subnet or
// class scope, the values defined at host level take
// precedence.
#{
# "hw-address": "00:01:02:03:04:05",
# "ip-addresses": [ "2001:db8:1:0::101" ],
# "option-data": [
# {
# "name": "dns-servers",
# "data": "3000:1::234"
# },
# {
# "name": "nis-servers",
# "data": "3000:1::234"
# }],
// This client will be automatically added to certain
// classes.
# "client-classes": [ "special_snowflake", "office" ]
#},
// This is a bit more advanced reservation. The client with the
// specified DUID will get a reserved address, a reserved prefix
// and a hostname. This reservation is for an address that it
// not within the dynamic pool. Finally, this reservation
// features vendor specific options for CableLabs, which happen
// to use enterprise-id 4491. Those particular values will be
// returned only to the client that has a DUID matching this
// reservation.
#{
# "duid": "01:02:03:04:05:06:07:08:09:0A",
# "ip-addresses": [ "2001:db8:1:0:cafe::1" ],
# "prefixes": [ "2001:db8:2:abcd::/64" ],
# "hostname": "foo.example.com",
# "option-data": [
# {
# "name": "vendor-opts",
# "data": "4491"
# },
# {
# "name": "tftp-servers",
# "space": "vendor-4491",
# "data": "3000:1::234"
# }
# ]
#},
// This reservation is using flexible identifier. Instead of
// relying on specific field, sysadmin can define an expression
// similar to what is used for client classification,
// e.g. substring(relay[0].option[17],0,6). Then, based on the
// value of that expression for incoming packet, the reservation
// is matched. Expression can be specified either as hex or
// plain text using single quotes.
// Note: flexible identifier requires flex_id hook library to be
// loaded to work.
#{
# "flex-id": "'somevalue'",
# "ip-addresses": [ "2001:db8:1:0:cafe::2" ]
#}
]
}
// More subnets can be defined here.
// {
// "subnet": "2001:db8:2::/64",
// "pools": [ { "pool": "2001:db8:2::/80" } ]
// },
// {
// "subnet": "2001:db8:3::/64",
// "pools": [ { "pool": "2001:db8:3::/80" } ]
// },
// {
// "subnet": "2001:db8:4::/64",
// "pools": [ { "pool": "2001:db8:4::/80" } ]
// }
],
// Client-classes can be defined here. See "client-classes" in Dhcp4 for
// an example.
// Hook libraries can be defined here. See "hooks-libraries" example in
// Dhcp4.
// DDNS information (how the DHCPv6 component can reach a DDNS daemon)
// Logging configuration starts here. Kea uses different loggers to log various
// activities. For details (e.g. names of loggers), see Chapter 18.
"loggers": [{
"name": "*",
"severity": "DEBUG",
"debuglevel": 99
}
]
}
}
naxi@dhcpv6:/usr/local/etc/kea$
_______________________________________________
ISC funds the development of this software with paid support subscriptions.
Contact us at https://www.isc.org/contact/ for more information.
To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users.
Kea-users mailing list
[email protected]
https://lists.isc.org/mailman/listinfo/kea-users