У меня есть следующая лаборатория:
DHCP-СЕРВЕР [Centos 6]
/etc/dhcp/dhcpd6.conf
default-lease-time 2592000;
preferred-lifetime 604800;
option dhcp-renewal-time 3600;
option dhcp-rebinding-time 7200;
allow leasequery;
option dhcp6.info-refresh-time 21600;
dhcpv6-lease-file-name "/var/lib/dhcpd/dhcpd6.leases";
subnet6 3ffe:501:ffff:100::/64 {
}
host ipv6host {
hardware ethernet 53:54:00:70:1d:ed;
fixed-address6 3ffe:501:ffff:100::222;
if packet(0,1) = 1 { log(debug,"Request match!"); }
}
# ip -6 addr show
5: eth1.30@if3: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500
inet6 3ffe:501:ffff:100::4/64 scope global
valid_lft forever preferred_lft forever
В клиенте особой конфигурации нет. Затем, запустив dhcp-сервер, я получаю следующий вывод:
Internet Systems Consortium DHCP Server 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 0 leases to leases file.
Bound to *:547
Listening on Socket/5/eth1.30/3ffe:501:ffff:100::/64
Sending on Socket/5/eth1.30/3ffe:501:ffff:100::/64
Solicit message from fe80::5054:ff:fe70:1ded port 546, transaction ID 0xDF54D000
Request match!
Request match!
Sending Advertise to fe80::5054:ff:fe70:1ded port 546
Solicit message from fe80::5054:ff:fe70:1ded port 546, transaction ID 0xDF54D000
Request match!
Request match!
Sending Advertise to fe80::5054:ff:fe70:1ded port 546
... and more
На клиенте я получаю следующее:
dhclient -6 -d eth1
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Bound to *:546
Listening on Socket/eth1
Sending on Socket/eth1
PRC: Soliciting for leases (INIT).
XMT: Forming Solicit, 0 ms elapsed.
XMT: X-- IA_NA 00:70:1d:ed
XMT: | X-- Request renew in +3600
XMT: | X-- Request rebind in +5400
XMT: Solicit on eth1, interval 1010ms.
XMT: Forming Solicit, 1010 ms elapsed.
XMT: X-- IA_NA 00:70:1d:ed
XMT: | X-- Request renew in +3600
XMT: | X-- Request rebind in +5400
XMT: Solicit on eth1, interval 2070ms.
Как видите, похоже, что сервер получает запрос от клиента и соответствует записи хоста. я не знаю, почему клиент не получает IP.
Примечание: клиент - это виртуальная машина, а в гипервизоре виртуальный компьютер подключен к мосту с помощью интерфейса eth1.30. Трафик между узлами нормально.
Решено!
Проблема заключалась в ip6tables. Правила по умолчанию блокируют рекламу с DHCP-сервера.
service ip6tables stop
Исправил бы проблему. Взгляните на комментарии к другим ответам, потому что кажется, что диапазон, который я использовал, не подходит.
ВАЖНЫЙ. По крайней мере, с 2 ящиками Centos 6 (сервер и клиент) назначение ip с использованием MAC-адреса работает нормально.
источник: http://www.redhat.com/archives/anaconda-devel-list/2010-November/msg00172.html
В DHCPv6 клиенты больше не идентифицируются с помощью своего MAC-адреса, а с помощью DUID (который одинаков для всех интерфейсов клиента, поэтому теоретически легче идентифицировать клиента). По этой причине вы также должны поместить определение хоста в блок подсети. Система может иметь разные адреса в зависимости от интерфейса и комбинации DUID. Это пример из руководство по Linux IPv6:
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet6 2001:db8:0:1::/64 {
# Range for clients
range6 2001:db8:0:1::129 2001:db8:0:1::254;
# Range for clients requesting a temporary address
range6 2001:db8:0:1::/64 temporary;
# Additional options
option dhcp6.name-servers 2001:4860:4860::8888;
option dhcp6.domain-search "domain.example";
# Prefix range for delegation to sub-routers
prefix6 2001:db8:0:100:: 2001:db8:0:f00:: /56;
# Example for a fixed host address
host specialclient {
host-identifier option dhcp6.client-id 00:01:00:01:4a:1f:ba:e3:60:b9:1f:01:23:45;
fixed-address6 2001:db8:0:1::127;
}
}
Вы можете получить DUID клиента из журналов сервера или извлечь его из клиента. Это пример анализа файла, который dhcp6c
создает для хранения сгенерированного DUID:
hexdump -e '"%07.7_ax " 1/2 "%04x" " " 14/1 "%02x:" "\n"' /var/lib/dhcpv6/dhcp6c_duid
Все примеры основаны на примерах из как сделать.