// This is an example configuration file for DHCPv6 server in Kea. // It demonstrates an advanced feature called shared network. Typically, for // each physical link there is one IPv6 subnet that the server is expected // to manage. However, in some cases there is a need to configure more subnets // in the same physical location. This may sound odd, as IPv6 is not expected // to run out of addresses. However, due to vast address space some deployments // experiment with various addressing schemes and later find out that the // initial proposal was not best and way to migrate to something else. { "Dhcp6": { // Kea is told to listen on eth0 interface only. "interfaces-config": { "interfaces": [ "eth0" ] }, // You also need to tell where to store lease information. // memfile is the backend that is easiest to set up. "lease-database": { "type": "memfile", "lfc-interval": 3600 }, // It is likely that in your network you'll have a mix of regular, // "plain" subnets and shared networks. It is perfectly valid to mix // them in the same config file. // This is regular subnet. It's not part of any shared-network. "subnet6": [ { "id": 1, "pools": [ { "pool": "2001:db8:2::/80" } ], "subnet": "2001:db8:2::/64", "interface": "eth0" } ], // Hhe shared networks definition starts here. shared-networks can // contain a list of shared networks. There are many parameters // that can be specified here, so this example may be overwhelming // at first, but the only mandatory parameter for each shared // network is name. It must be unique. Typically, each shared // network also needs to have at least two subnets to be functional, // but if you really want to, you can define a degraded shared // network that has 1 or even 0 subnets. This may come in handy // when migrating between regular subnets and shared networks // or when debugging a problem. It is not recommended to use // 1 subnet per shared network, as there is extra processing // overhead for shared networks. "shared-networks": [ { "interface": "eth1", // Similar to regular subnets, it is forbidden to define both // interface and interface-id at the same time. That's because // interface parameter expresses physical network interface // for links available locally and interface-id identifies // values inserted by relays, which are only used for // remote traffic. A shared network cannot be both direct // and relayed. // "interface-id": "content of the option", // Other parameters defined here will be inherited by the // subnets. "name": "frog", "option-data": [ ], "preferred-lifetime": 200, "rapid-commit": true, "rebind-timer": 150, "relay": { "ip-address": "2001:db8::1" }, "renew-timer": 100, // "reservation-mode": "all", // It is replaced by the "reservations-global", // "reservations-in-subnet", and "reservations-out-of-pool" // parameters. // Specify whether the server should look up global reservations. "reservations-global": false, // Specify whether the server should look up in-subnet reservations. "reservations-in-subnet": true, // Specify whether the server can assume that all reserved addresses // are out-of-pool. // Ignored when reservations-in-subnet is false. // If specified, it is inherited by "subnet6" levels. "reservations-out-of-pool": false, // List of subnets belonging to this particular shared-network // start here. "subnet6": [ // This is the first subnet. { "preferred-lifetime": 30, "rapid-commit": false, "rebind-timer": 20, // It is possible to override some values here. "relay": { "ip-address": "2001:db8:1::123" }, "renew-timer": 10, // "reservation-mode": "all", // It is replaced by the "reservations-global", // "reservations-in-subnet", and "reservations-out-of-pool" // parameters. // Specify whether the server should look up global reservations. "reservations-global": false, // Specify whether the server should look up in-subnet reservations. "reservations-in-subnet": true, // Specify whether the server can assume that all reserved addresses // are out-of-pool. // Ignored when reservations-in-subnet is false. "reservations-out-of-pool": false, "id": 2, "subnet": "2001:db8:1::/64", "pools": [ { "pool": "2001:db8:1:0:abcd::/80" } ], "valid-lifetime": 40 }, // This is the second subnet. { "preferred-lifetime": 30, "pools": [ { "pool": "3000:db8::/64" } ], "rapid-commit": false, "rebind-timer": 20, "relay": { "ip-address": "3000::1" }, "renew-timer": 10, // "reservation-mode": "all", // It is replaced by the "reservations-global", // "reservations-in-subnet", and "reservations-out-of-pool" // parameters. // Specify whether the server should look up global reservations. "reservations-global": false, // Specify whether the server should look up in-subnet reservations. "reservations-in-subnet": true, // Specify whether the server can assume that all reserved addresses // are out-of-pool. // Ignored when reservations-in-subnet is false. "reservations-out-of-pool": false, "id": 3, "subnet": "3000::/16", "valid-lifetime": 40 } ], "valid-lifetime": 300 } ] } }