yum源安装kea
yum install epel-release
yum install kea
DEMON
ps aux| grep kea
rpm -qa kea
查看dhcpv6默认配置
cat /etc/kea/kea.conf
启动kea-dhcpv6并查看kea启动过程
systemctl start kea-dhcp6
systemctl status kea-dhcp6
systemctl -l status kea-dhcp6
通过tcpdump查看服务器数据包交互过程
tcpdump -i eth0 -w dhcp6.pcap
关闭防火墙
systemctl stop firewalld.service
注意:必须要关闭防火墙否则造成dhcpv6分配地址无法下发。
用到的文件:
/var/lib/kea/kea-leases6.csv 默认情况下存放ipv6地址以及终端的设备信息,可查看到域账号mac地址等信息。
/var/log/kea-dhcp6.log 我开的debug模式。可查看dhcp6运行状态的日志。
Centos 7 修改dns
修改/etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifcfg-rh
dns=none
手工修改 /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
服务器网卡静态ipv6配置:
[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 配置:
{
"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": 250,
# "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", /日志开启到debug级别,可以查看分配的地址信息。
"debuglevel": 99
},
{
"name": "kea-dhcp-ddns",
"output_options": [
{
"output": "/var/log/kea-ddns.log"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
如果自己网段内需要dhcpv6服务 需开通以下:
[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": 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": "192.0.2.0/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": 250,
# "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
}
]
}
}