IPV6 stateful DHCPV6 configuration under Centos 7
Yum source installation kea
Yum install epel-release
Yum install kea
DEMON
Ps aux | grep kea
Rpm-qa kea
View dhcpv6 default configuration
Cat / etc/kea/kea.conf
Start kea-dhcpv6 and view the kea startup process
Systemctl start kea-dhcp6
Systemctl status kea-dhcp6
Systemctl-l status kea-dhcp6
View the process of server packet interaction through tcpdump
Tcpdump-I eth0-w dhcp6.pcap
Turn off the firewall
Systemctl stop firewalld.service
Note: the firewall must be turned off or the dhcpv6 assigned address cannot be sent.
Files used:
/ var/lib/kea/kea-leases6.csv stores the ipv6 address and the device information of the terminal by default, and you can view the domain account mac address and other information.
/ var/log/kea-dhcp6.log the debug mode I drive. You can view the log of the running status of dhcp6.
Centos 7 modify dns
Modify / etc/NetworkManager/NetworkManager.conf
[main]
Plugins=ifcfg-rh
Dns=none
Manual modification / etc/resolv.conf
Nameserver 114.114.114.114
Nameserver 8.8.8.8
Server Nic static ipv6 configuration:
[root@localhost kea] # vi / etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=03b35ca7-4678-48ca-ab46-5782367cd56a
DEVICE=eno16777736
ONBOOT=yes
IPADDR=X.X.X.X
GATEWAY=X.X.X.X
NETMASK=X.X.X.X
IPVADDR=2001:da8:XXXX:XXXX:24::125
IPV6_DEFAULTGW=2001:da8:XXXX:XXXX:24::1
IPV6ADDR=2001:da8:XXXX:XXXX:24::125/80
Kea-dhcpv6 configuration:
{
"Dhcp6":
{
# Add names of interfaces to listen on.
"interfaces-config": {
"interfaces": ["eno16777736/2001:da8:XXXX:XXXX:24:aefd:ddb0:7d02"]
}
"option-data": [{"name": "unicast", "data": "2001:da8:XXXX:XXXX:24:aefd:ddb0:7d02"}]
# Use Memfile lease database backend to store leases in a CSV file.
# 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":
# "unwarned-reclaim-cycles": 5
#}
# 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, client is supposed
# to start REBIND procedure (emergency renewal that allows switching
# to a different server).
"preferred-lifetime": 3000
"valid-lifetime": 4000
"renew-timer": 1000
"rebind-timer": 2000
# The following list defines subnets. Uncomment to enable them.
"subnet6": [
{"subnet": "2001:da8:XXXX:XXXX:25::/80"
"pools": [{"pool": "2001:da8:XXXX:XXXX:25::/80"}]
"interface-id": "vlan25"
}
{"subnet": "2001:da8:XXXX:XXXX:26::/80"
"pools": [{"pool": "2001:da8:XXXX:XXXX:26::/80"}]
"interface-id": "vlan26"
}
# {"subnet": "2001:db8:3::/64"
# "pools": [{"pool": "2001:db8:3::/80"}]}
# {"subnet": "2001:db8:4::/64"
# "pools": [{"pool": "2001:db8:4::/80"}]}
]
}
# DHCP DDNS configuration starts here.
# 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"
}
]
"severity": "INFO"
"debuglevel": 0
}
{
"name": "kea-dhcp6"
"output_options": [
{
"output": "/ var/log/kea-dhcp6.log"
}
]
"severity": "DEBUG", / log is opened to the debug level, and you can view the assigned address information.
"debuglevel": 99
}
{
"name": "kea-dhcp-ddns"
"output_options": [
{
"output": "/ var/log/kea-ddns.log"
}
]
"severity": "INFO"
"debuglevel": 0
}
]
}
}
If you need dhcpv6 service in your IP address range, you need to activate the following:
[root@localhost kea] # cat / etc/kea/kea.conf
# This is a basic configuration for the Kea DHCPv4 and DHCPv6 servers.
# 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": []
#}
# 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":
# "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": "192.0.2.0 Universe 24"
# "pools": [{"pool": "192.0.2.1-192.0.2.200"}]}
#]
#}
# DHCPv6 configuration starts here.
"Dhcp6":
{
# Add names of interfaces to listen on.
"interfaces-config": {
"interfaces": ["eno16777736/2001:da8:XXXX:XXXX:24::125"]
}
"option-data": [{"name": "unicast", "data": "2001:da8:XXXX:XXXX:24::125"}]
# Use Memfile lease database backend to store leases in a CSV file.
# 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":
# "unwarned-reclaim-cycles": 5
#}
# 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, client is supposed
# to start REBIND procedure (emergency renewal that allows switching
# to a different server).
"preferred-lifetime": 3000
"valid-lifetime": 4000
"renew-timer": 1000
"rebind-timer": 2000
# The following list defines subnets. Uncomment to enable them.
"subnet6": [
{"subnet": "2001:da8:XXXX:XXXX:25::/80"
"pools": [{"pool": "2001:da8:XXXX:XXXX:25::/80"}]
"interface-id": "vlan25"
}
{"subnet": "2001:da8:XXXX:XXXX:24::/80"
"pools": [{"pool": "2001:da8:XXXX:XXXX:24::/80"}]
"interface": "eno16777736"
}
{"subnet": "2001:da8:XXXX:XXXX:26::/80"
"pools": [{"pool": "2001:da8:XXXX:XXXX:26::/80"}]
"interface-id": "vlan26"
}
# {"subnet": "2001:db8:3::/64"
# "pools": [{"pool": "2001:db8:3::/80"}]}
# {"subnet": "2001:db8:4::/64"
# "pools": [{"pool": "2001:db8:4::/80"}]}
]
}
# DHCP DDNS configuration starts here.
# 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"
}
]
"severity": "INFO"
"debuglevel": 0
}
{
"name": "kea-dhcp6"
"output_options": [
{
"output": "/ var/log/kea-dhcp6.log"
}
]
"severity": "DEBUG"
"debuglevel": 99
}
{
"name": "kea-dhcp-ddns"
"output_options": [
{
"output": "/ var/log/kea-ddns.log"
}
]
"severity": "INFO"
"debuglevel": 0
}
]
}
}